summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cloudinit/sources/helpers/azure.py2
-rw-r--r--tests/unittests/test_datasource/test_azure_helper.py10
2 files changed, 10 insertions, 2 deletions
diff --git a/cloudinit/sources/helpers/azure.py b/cloudinit/sources/helpers/azure.py
index 281d733e..33003da0 100644
--- a/cloudinit/sources/helpers/azure.py
+++ b/cloudinit/sources/helpers/azure.py
@@ -233,7 +233,7 @@ class WALinuxAgentShim(object):
hex_string += hex_pair
value = struct.pack('>L', int(hex_string.replace(':', ''), 16))
else:
- value = value.encode('utf-8')
+ value = value.replace('\\', '').encode('utf-8')
endpoint_ip_address = socket.inet_ntoa(value)
LOG.debug('Azure endpoint found at %s', endpoint_ip_address)
return endpoint_ip_address
diff --git a/tests/unittests/test_datasource/test_azure_helper.py b/tests/unittests/test_datasource/test_azure_helper.py
index a5228870..68af31cd 100644
--- a/tests/unittests/test_datasource/test_azure_helper.py
+++ b/tests/unittests/test_datasource/test_azure_helper.py
@@ -97,7 +97,8 @@ class TestFindEndpoint(TestCase):
if not use_hex:
ip_address_repr = struct.pack(
'>L', int(ip_address_repr.replace(':', ''), 16))
- ip_address_repr = '"{0}"'.format(ip_address_repr.decode('utf-8'))
+ ip_address_repr = '"{0}"'.format(
+ ip_address_repr.decode('utf-8').replace('"', '\\"'))
return '\n'.join([
'lease {',
' interface "eth0";',
@@ -125,6 +126,13 @@ class TestFindEndpoint(TestCase):
self.assertEqual(ip_address,
azure_helper.WALinuxAgentShim.find_endpoint())
+ def test_packed_string_with_escaped_quote(self):
+ ip_address = '100.72.34.108'
+ file_content = self._build_lease_content(ip_address, use_hex=False)
+ self.load_file.return_value = file_content
+ self.assertEqual(ip_address,
+ azure_helper.WALinuxAgentShim.find_endpoint())
+
def test_latest_lease_used(self):
ip_addresses = ['4.3.2.1', '98.76.54.32']
file_content = '\n'.join([self._build_lease_content(ip_address)