diff options
Diffstat (limited to 'cloudinit/sources/helpers/azure.py')
| -rw-r--r-- | cloudinit/sources/helpers/azure.py | 26 | 
1 files changed, 16 insertions, 10 deletions
| diff --git a/cloudinit/sources/helpers/azure.py b/cloudinit/sources/helpers/azure.py index d90c22fd..018cac6d 100644 --- a/cloudinit/sources/helpers/azure.py +++ b/cloudinit/sources/helpers/azure.py @@ -197,6 +197,21 @@ class WALinuxAgentShim(object):              self.openssl_manager.clean_up()      @staticmethod +    def get_ip_from_lease_value(lease_value): +        unescaped_value = lease_value.replace('\\', '') +        if len(unescaped_value) > 4: +            hex_string = '' +            for hex_pair in unescaped_value.split(':'): +                if len(hex_pair) == 1: +                    hex_pair = '0' + hex_pair +                hex_string += hex_pair +            packed_bytes = struct.pack( +                '>L', int(hex_string.replace(':', ''), 16)) +        else: +            packed_bytes = unescaped_value.encode('utf-8') +        return socket.inet_ntoa(packed_bytes) + +    @staticmethod      def find_endpoint():          LOG.debug('Finding Azure endpoint...')          content = util.load_file('/var/lib/dhcp/dhclient.eth0.leases') @@ -206,16 +221,7 @@ class WALinuxAgentShim(object):                  value = line.strip(' ').split(' ', 2)[-1].strip(';\n"')          if value is None:              raise Exception('No endpoint found in DHCP config.') -        if ':' in value: -            hex_string = '' -            for hex_pair in value.split(':'): -                if len(hex_pair) == 1: -                    hex_pair = '0' + hex_pair -                hex_string += hex_pair -            value = struct.pack('>L', int(hex_string.replace(':', ''), 16)) -        else: -            value = value.encode('utf-8') -        endpoint_ip_address = socket.inet_ntoa(value) +        endpoint_ip_address = WALinuxAgentShim.get_ip_from_lease_value(value)          LOG.debug('Azure endpoint found at %s', endpoint_ip_address)          return endpoint_ip_address | 
