From cc9b7996e542640bb19365822344298a04b18e44 Mon Sep 17 00:00:00 2001 From: Paula Gombar Date: Wed, 18 Nov 2020 12:24:33 -0800 Subject: [PATCH 1/3] update array.tostring() and json.loads without encoding for py3.9 --- azurelinuxagent/common/osutil/bigip.py | 7 ++++++- azurelinuxagent/common/osutil/default.py | 6 +++++- tests/protocol/test_imds.py | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/azurelinuxagent/common/osutil/bigip.py b/azurelinuxagent/common/osutil/bigip.py index 61d3c695f911..ceadf8ca2066 100644 --- a/azurelinuxagent/common/osutil/bigip.py +++ b/azurelinuxagent/common/osutil/bigip.py @@ -280,7 +280,12 @@ class BigIpOSUtil(DefaultOSUtil): if retsize == (expected * struct_size): logger.warn(('SIOCGIFCONF returned more than {0} up ' 'network interfaces.'), expected) - sock = buff.tostring() + try: + # Python 3.9 removed the tostring() method on arrays, tobytes() is the new alias + sock = buff.tostring() + except AttributeError: + sock = buff.tobytes() + for i in range(0, struct_size * expected, struct_size): iface = self._format_single_interface_name(sock, i) diff --git a/azurelinuxagent/common/osutil/default.py b/azurelinuxagent/common/osutil/default.py index 521776818e64..6179061756e3 100644 --- a/azurelinuxagent/common/osutil/default.py +++ b/azurelinuxagent/common/osutil/default.py @@ -758,7 +758,11 @@ class DefaultOSUtil(object): logger.warn(('SIOCGIFCONF returned more than {0} up ' 'network interfaces.'), expected) - ifconf_buff = buff.tostring() + try: + # Python 3.9 removed the tostring() method on arrays, tobytes() is the new alias + ifconf_buff = buff.tostring() + except AttributeError: + ifconf_buff = buff.tobytes() ifaces = {} for i in range(0, array_size, struct_size): diff --git a/tests/protocol/test_imds.py b/tests/protocol/test_imds.py index a730ded03525..47462fd25ac3 100644 --- a/tests/protocol/test_imds.py +++ b/tests/protocol/test_imds.py @@ -109,7 +109,7 @@ class TestImds(AgentTestCase): "zone": "In" }''' - data = json.loads(s, encoding='utf-8') + data = json.loads(s) compute_info = imds.ComputeInfo() set_properties("compute", compute_info, data) @@ -258,7 +258,7 @@ class TestImds(AgentTestCase): "version": "{3}" }}'''.format(publisher, offer, sku, version) - data = json.loads(s, encoding='utf-8') + data = json.loads(s) compute_info = imds.ComputeInfo() set_properties("compute", compute_info, data) -- 2.26.2