diff options
author | tod-uma <tod.detre@maine.edu> | 2018-07-18 18:09:16 +0200 |
---|---|---|
committer | Abhijeet Kasurde <akasurde@redhat.com> | 2018-07-18 18:09:16 +0200 |
commit | 1a0330488f49a4ba36eeb41c8f1f91d228045caf (patch) | |
tree | fdfc54156240163e44284b463e2886e2a10eeabb /contrib | |
parent | Update Openstack dynamic inventory reference (#41459) (diff) | |
download | ansible-1a0330488f49a4ba36eeb41c8f1f91d228045caf.tar.xz ansible-1a0330488f49a4ba36eeb41c8f1f91d228045caf.zip |
VMware: blacklist custom fields in vmware_inventory.py (#36877)
* Provide the ability to blacklist custom fields from having groups created for them.
* Updated configuration parameter name
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/inventory/vmware_inventory.ini | 7 | ||||
-rwxr-xr-x | contrib/inventory/vmware_inventory.py | 10 |
2 files changed, 16 insertions, 1 deletions
diff --git a/contrib/inventory/vmware_inventory.ini b/contrib/inventory/vmware_inventory.ini index 859f42ca30..bdffd4c2b9 100644 --- a/contrib/inventory/vmware_inventory.ini +++ b/contrib/inventory/vmware_inventory.ini @@ -93,6 +93,13 @@ password=vmware # vmware_tag_ prefix is the default and consistent with ec2_tag_ #custom_field_group_prefix = vmware_tag_ +# You can blacklist custom fields so that they are not included in the +# groupby_custom_field option. This is useful when you have custom fields that +# have values that are unique to individual hosts. Timestamps for example. +# The groupby_custom_field_excludes option should be a comma separated list of custom +# field keys to be blacklisted. +#groupby_custom_field_excludes=<custom_field_1>,<custom_field_2>,<custom_field_3> + # The script attempts to recurse into virtualmachine objects and serialize # all available data. The serialization is comprehensive but slow. If the # vcenter environment is large and the desired properties are known, create diff --git a/contrib/inventory/vmware_inventory.py b/contrib/inventory/vmware_inventory.py index 855c46778d..844abab4d9 100755 --- a/contrib/inventory/vmware_inventory.py +++ b/contrib/inventory/vmware_inventory.py @@ -99,6 +99,7 @@ class VMWareInventory(object): host_filters = [] skip_keys = [] groupby_patterns = [] + groupby_custom_field_excludes = [] safe_types = [bool, str, float, None] + list(integer_types) iter_types = [dict, list] @@ -230,6 +231,7 @@ class VMWareInventory(object): 'groupby_patterns': '{{ guest.guestid }},{{ "templates" if config.template else "guests"}}', 'lower_var_keys': True, 'custom_field_group_prefix': 'vmware_tag_', + 'groupby_custom_field_excludes': '', 'groupby_custom_field': False} } @@ -304,8 +306,12 @@ class VMWareInventory(object): groupby_pattern += "}}" self.groupby_patterns.append(groupby_pattern) self.debugl('groupby patterns are %s' % self.groupby_patterns) + temp_groupby_custom_field_excludes = config.get('vmware', 'groupby_custom_field_excludes') + self.groupby_custom_field_excludes = [x.strip('"') for x in [y.strip("'") for y in temp_groupby_custom_field_excludes.split(",")]] + self.debugl('groupby exclude strings are %s' % self.groupby_custom_field_excludes) + # Special feature to disable the brute force serialization of the - # virtulmachine objects. The key name for these properties does not + # virtual machine objects. The key name for these properties does not # matter because the values are just items for a larger list. if config.has_section('properties'): self.guest_props = [] @@ -496,6 +502,8 @@ class VMWareInventory(object): for tv in v['customvalue']: newkey = None field_name = self.custom_fields[tv['key']] if tv['key'] in self.custom_fields else tv['key'] + if field_name in self.groupby_custom_field_excludes: + continue values = [] keylist = map(lambda x: x.strip(), tv['value'].split(',')) for kl in keylist: |