From 896b84bfbe7e2e1cf5dd3f9246ead98d85fbe356 Mon Sep 17 00:00:00 2001 From: Rowin Andruscavage <8740187+MTN-RowinAndruscavage@users.noreply.github.com> Date: Tue, 25 Jun 2019 03:10:13 -0700 Subject: [PATCH] VMware: Python3 migrations for vmware_inventory.py (#47538) * Sort and pretty print json output and cache file * Enable Python3 test for vmware_inventory.py Fixes: #46727 Signed-off-by: Rowin Andruscavage <8740187+MTN-RowinAndruscavage@users.noreply.github.com> Signed-off-by: Abhijeet Kasurde --- contrib/inventory/vmware_inventory.py | 12 ++++++------ test/integration/targets/vmware_inventory/aliases | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/contrib/inventory/vmware_inventory.py b/contrib/inventory/vmware_inventory.py index 2f5e4a8d074..e6407bcbce6 100755 --- a/contrib/inventory/vmware_inventory.py +++ b/contrib/inventory/vmware_inventory.py @@ -153,7 +153,7 @@ class VMWareInventory(object): try: text = str(text) except UnicodeEncodeError: - text = text.encode('ascii', 'ignore') + text = text.encode('utf-8') print('%s %s' % (datetime.datetime.now(), text)) def show(self): @@ -187,14 +187,14 @@ class VMWareInventory(object): def write_to_cache(self, data): ''' Dump inventory to json file ''' - with open(self.cache_path_cache, 'wb') as f: - f.write(json.dumps(data)) + with open(self.cache_path_cache, 'w') as f: + f.write(json.dumps(data, indent=2)) def get_inventory_from_cache(self): ''' Read in jsonified inventory ''' jdata = None - with open(self.cache_path_cache, 'rb') as f: + with open(self.cache_path_cache, 'r') as f: jdata = f.read() return json.loads(jdata) @@ -391,7 +391,7 @@ class VMWareInventory(object): instances = [x for x in instances if x.name == self.args.host] instance_tuples = [] - for instance in sorted(instances): + for instance in instances: if self.guest_props: ifacts = self.facts_from_proplist(instance) else: @@ -693,7 +693,7 @@ class VMWareInventory(object): if vobj.isalnum(): rdata = vobj else: - rdata = vobj.decode('ascii', 'ignore') + rdata = vobj.encode('utf-8').decode('utf-8') elif issubclass(type(vobj), bool) or isinstance(vobj, bool): rdata = vobj elif issubclass(type(vobj), integer_types) or isinstance(vobj, integer_types): diff --git a/test/integration/targets/vmware_inventory/aliases b/test/integration/targets/vmware_inventory/aliases index 2695eb81662..0c9c2f70c00 100644 --- a/test/integration/targets/vmware_inventory/aliases +++ b/test/integration/targets/vmware_inventory/aliases @@ -1,6 +1,5 @@ shippable/vcenter/group1 cloud/vcenter -skip/python3 destructive needs/file/contrib/inventory/vmware_inventory.py needs/file/contrib/inventory/vmware_inventory.ini