Merge pull request #8801 from danfaizer/devel

Corrected VM metadata obtention between Abiquo versions
This commit is contained in:
James Cammarata 2014-09-02 10:58:35 -05:00
commit eb8de9646c
2 changed files with 34 additions and 4 deletions

View file

@ -1,23 +1,48 @@
# Ansible external inventory script settings for Abiquo # Ansible external inventory script settings for Abiquo
# #
# Define an Abiquo user with access to Abiquo API which will be used to
# perform required queries to obtain infromation to generate the Ansible
# inventory output.
#
[auth] [auth]
apiuser = admin apiuser = admin
apipass = xabiquo apipass = xabiquo
# Specify Abiquo API version in major.minor format and the access URI to
# API endpoint. Tested versions are: 2.6 , 3.0 and 3.1
# To confirm that your box haves access to Abiquo API you can perform a
# curl command, replacing with suitable values, similar to this:
# curl -X GET https://192.168.2.100/api/login -u admin:xabiquo
#
[api] [api]
uri = http://192.168.2.211:80/api version = 3.0
uri = https://192.168.2.100/api
# You probably won't need to modify login preferences, but just in case # You probably won't need to modify login preferences, but just in case
login_path = /login login_path = /login
login_type = application/vnd.abiquo.user+json login_type = application/vnd.abiquo.user+json
# To avoid performing excessive calls to Abiquo API you can define a
# cache for the plugin output. Within the time defined in seconds, latest
# output will be reused. After that time, the cache will be refreshed.
#
[cache] [cache]
cache_max_age = 30 cache_max_age = 30
cache_dir = /var/tmp cache_dir = /tmp
[defaults] [defaults]
# Depending in your Abiquo environment, you may want to use only public IP
# addresses (if using public cloud providers) or also private IP addresses.
# You can set this with public_ip_only configuration.
public_ip_only = false public_ip_only = false
# default_net_interface only is used if public_ip_only = false # default_net_interface only is used if public_ip_only = false
# If public_ip_only is set to false, you can choose default nic to obtain
# IP address to define the host.
default_net_interface = nic0 default_net_interface = nic0
# Only deployed VM are added to output # Only deployed VM are displayed in the plugin output.
deployed_only = true deployed_only = true
# Define if VM metadata is obtained from Abiquo API.
get_metadata = false get_metadata = false

View file

@ -167,7 +167,12 @@ def generate_inv_from_api(enterprise_entity,config):
meta_entity = next(link for link in (vmcollection['links']) if (link['rel']=='metadata')) meta_entity = next(link for link in (vmcollection['links']) if (link['rel']=='metadata'))
try: try:
metadata = api_get(meta_entity,config) metadata = api_get(meta_entity,config)
inventory['_meta']['hostvars'][vm_nic] = metadata['metadata']['metadata'] if (config.getfloat("api","version") >= 3.0):
vm_metadata = metadata['metadata']
else:
vm_metadata = metadata['metadata']['metadata']
if not vm_metadata is None:
inventory['_meta']['hostvars'][vm_nic] = vm_metadata
except Exception, e: except Exception, e:
pass pass