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:
parent
3b08e75eb2
commit
8ce09a0057
3 changed files with 35 additions and 18 deletions
|
@ -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:
|
||||||
|
|
|
@ -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 "$@"
|
||||||
|
|
|
@ -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'] }}"
|
||||||
|
|
Loading…
Reference in a new issue