VMware: fix inventory plugin (#56431)

* Fixed regression introduced in #56071
* Added test to check if hostvars are populated
* Fix toml installation logic

Fixes: #56413

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
This commit is contained in:
Abhijeet Kasurde 2019-05-15 19:45:50 +05:30 committed by Gonéri Le Bouder
parent 3b08e75eb2
commit 8ce09a0057
3 changed files with 35 additions and 18 deletions

View file

@ -448,7 +448,7 @@ class InventoryModule(BaseInventoryPlugin, Cacheable):
'customValue', 'customValue',
] ]
field_mgr = [] field_mgr = []
if self.content.customFieldsManager: if self.pyv.content.customFieldsManager:
field_mgr = self.pyv.content.customFieldsManager.field field_mgr = self.pyv.content.customFieldsManager.field
for vm_prop in vm_properties: for vm_prop in vm_properties:

View file

@ -11,7 +11,9 @@ export ANSIBLE_CONFIG=ansible.cfg
export VMWARE_SERVER="${VCENTER_HOST}" export VMWARE_SERVER="${VCENTER_HOST}"
export VMWARE_USERNAME="${VMWARE_USERNAME:-user}" export VMWARE_USERNAME="${VMWARE_USERNAME:-user}"
export VMWARE_PASSWORD="${VMWARE_PASSWORD:-pass}" export VMWARE_PASSWORD="${VMWARE_PASSWORD:-pass}"
port=5000
VMWARE_CONFIG=test-config.vmware.yaml VMWARE_CONFIG=test-config.vmware.yaml
inventory_cache="$(pwd)/inventory_cache"
cat > "$VMWARE_CONFIG" <<VMWARE_YAML cat > "$VMWARE_CONFIG" <<VMWARE_YAML
plugin: vmware_vm_inventory plugin: vmware_vm_inventory
@ -25,9 +27,9 @@ cleanup() {
if [ -f "${VMWARE_CONFIG}" ]; then if [ -f "${VMWARE_CONFIG}" ]; then
rm -f "${VMWARE_CONFIG}" rm -f "${VMWARE_CONFIG}"
fi fi
if [ -d "$(pwd)/inventory_cache" ]; then if [ -d "${inventory_cache}" ]; then
echo "Removing $(pwd)/inventory_cache" echo "Removing ${inventory_cache}"
rm -rf "$(pwd)/inventory_cache" rm -rf "${inventory_cache}"
fi fi
echo "Done" echo "Done"
exit 0 exit 0
@ -38,33 +40,42 @@ trap cleanup INT TERM EXIT
echo "DEBUG: Using ${VCENTER_HOST} with username ${VMWARE_USERNAME} and password ${VMWARE_PASSWORD}" echo "DEBUG: Using ${VCENTER_HOST} with username ${VMWARE_USERNAME} and password ${VMWARE_PASSWORD}"
echo "Kill all previous instances" echo "Kill all previous instances"
curl "http://${VCENTER_HOST}:5000/killall" > /dev/null 2>&1 curl "http://${VCENTER_HOST}:${port}/killall" > /dev/null 2>&1
echo "Start new VCSIM server" echo "Start new VCSIM server"
curl "http://${VCENTER_HOST}:5000/spawn?datacenter=1&cluster=1&folder=0" > /dev/null 2>&1 curl "http://${VCENTER_HOST}:${port}/spawn?datacenter=1&cluster=1&folder=0" > /dev/null 2>&1
echo "Debugging new instances" echo "Debugging new instances"
curl "http://${VCENTER_HOST}:5000/govc_find" curl "http://${VCENTER_HOST}:${port}/govc_find"
# Get inventory # Get inventory
ansible-inventory -i ${VMWARE_CONFIG} --list ansible-inventory -i ${VMWARE_CONFIG} --list
# Get inventory using YAML
ansible-inventory -i ${VMWARE_CONFIG} --list --yaml
# Install TOML for --toml
${PYTHON} -m pip install toml
# Get inventory using TOML
ansible-inventory -i ${VMWARE_CONFIG} --list --toml
echo "Check if cache is working for inventory plugin" echo "Check if cache is working for inventory plugin"
ls "$(pwd)/inventory_cache/vmware_vm_*" > /dev/null 2>&1 if [ ! -n "$(find "${inventory_cache}" -maxdepth 1 -name 'vmware_vm_inventory_*' -print -quit)" ]; then
if [ $? -ne 0 ]; then
echo "Cache directory not found. Please debug" echo "Cache directory not found. Please debug"
exit 1 exit 1
fi fi
echo "Cache is working" echo "Cache is working"
# Get inventory using YAML
ansible-inventory -i ${VMWARE_CONFIG} --list --yaml
# Install TOML for --toml
${PYTHON} -m pip freeze | grep toml > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Installing TOML package"
${PYTHON} -m pip install toml
else
echo "TOML package already exists, skipping installation"
fi
# Get inventory using TOML
ansible-inventory -i ${VMWARE_CONFIG} --list --toml
if [ $? -ne 0 ]; then
echo "Inventory plugin failed to list inventory host using --toml, please debug"
exit 1
fi
# Test playbook with given inventory # Test playbook with given inventory
ansible-playbook -i ${VMWARE_CONFIG} test_vmware_vm_inventory.yml --connection=local "$@" ansible-playbook -i ${VMWARE_CONFIG} test_vmware_vm_inventory.yml --connection=local "$@"

View file

@ -16,3 +16,9 @@
with_items: with_items:
- all - all
- otherGuest - otherGuest
- name: Check if Hostname and other details are populated in hostvars
assert:
that:
- hostvars[item].name is defined
with_items: "{{ groups['all'] }}"