Add ability to append suffix to host names for Cloudforms Inventory (#33565)
* Add ability to append suffix to host names for Cloudforms Inventory Allows for use of a suffix that will be appended to host names returned from Cloudforms API if that suffix is not present. For example with a suffix of 'example.org', the following results would be shown for a particular Cloudforms host name: someexample -> someexample.example.org someexample.example.org -> someexample.example.org The main use-case for this is when Cloudforms has short names rather than FQDN and there is a desire to to use the FQDN as the name. * Add example line into Cloudforms INI file * Clarify that leading fullstop needed * Add validation to ensure leading fullstop for suffix
This commit is contained in:
parent
217ff4498c
commit
a7e27b74c9
2 changed files with 15 additions and 0 deletions
|
@ -27,6 +27,10 @@ clean_group_keys = True
|
|||
# Explode tags into nested groups / subgroups
|
||||
nest_tags = False
|
||||
|
||||
# If set, ensure host name are suffixed with this value
|
||||
# Note: This suffix *must* include the leading '.' as it is appended to the hostname as is
|
||||
# suffix = .example.org
|
||||
|
||||
[cache]
|
||||
|
||||
# Maximum time to trust the cache in seconds
|
||||
|
|
|
@ -29,6 +29,7 @@ from time import time
|
|||
import requests
|
||||
from requests.auth import HTTPBasicAuth
|
||||
import warnings
|
||||
from ansible.errors import AnsibleError
|
||||
|
||||
try:
|
||||
import json
|
||||
|
@ -174,6 +175,13 @@ class CloudFormsInventory(object):
|
|||
else:
|
||||
self.cloudforms_nest_tags = False
|
||||
|
||||
if config.has_option('cloudforms', 'suffix'):
|
||||
self.cloudforms_suffix = config.get('cloudforms', 'suffix')
|
||||
if self.cloudforms_suffix[0] != '.':
|
||||
raise AnsibleError('Leading fullstop is required for Cloudforms suffix')
|
||||
else:
|
||||
self.cloudforms_suffix = None
|
||||
|
||||
# Ansible related
|
||||
try:
|
||||
group_patterns = config.get('ansible', 'group_patterns')
|
||||
|
@ -280,6 +288,9 @@ class CloudFormsInventory(object):
|
|||
print("Updating cache...")
|
||||
|
||||
for host in self._get_hosts():
|
||||
if self.cloudforms_suffix is not None and not host['name'].endswith(self.cloudforms_suffix):
|
||||
host['name'] = host['name'] + self.cloudforms_suffix
|
||||
|
||||
# Ignore VMs that are not powered on
|
||||
if host['power_state'] != 'on':
|
||||
if self.args.debug:
|
||||
|
|
Loading…
Reference in a new issue