diff options
author | Scott Moser <smoser@brickies.net> | 2017-01-10 11:25:33 -0500 |
---|---|---|
committer | Scott Moser <smoser@brickies.net> | 2017-01-10 11:25:33 -0500 |
commit | 2b7724e003174029b716993c99ca8dc333a016e7 (patch) | |
tree | e4a9b66e747fa653b4568e385e3dfedeb9da823c | |
parent | 2f37bf611eede21b38591a3ce35a73db8e13951e (diff) | |
download | cloud-init-git-2b7724e003174029b716993c99ca8dc333a016e7.tar.gz |
Import version 0.7.5-0ubuntu1.17ubuntu/0.7.5-0ubuntu1.17
Imported using git-import-dsc
-rw-r--r-- | debian/changelog | 9 | ||||
-rw-r--r-- | debian/patches/lp-1551419-azure-handle-flipped-uuid-endianness.patch | 61 | ||||
-rw-r--r-- | debian/patches/series | 1 |
3 files changed, 71 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog index 79301732..225baf3b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +cloud-init (0.7.5-0ubuntu1.17) trusty; urgency=medium + + * Microsoft Azure: + - d/patches/lp-1551419-azure-handle-flipped-uuid-endianness.patch: Handle + cases where the endianness of the DMI UUID used for the instance ID has + changed since last boot.(LP: #1551419) + + -- Daniel Watkins <daniel.watkins@canonical.com> Wed, 02 Mar 2016 14:23:18 +0000 + cloud-init (0.7.5-0ubuntu1.16) trusty; urgency=medium * Joyent Smart DataOS: diff --git a/debian/patches/lp-1551419-azure-handle-flipped-uuid-endianness.patch b/debian/patches/lp-1551419-azure-handle-flipped-uuid-endianness.patch new file mode 100644 index 00000000..90c46562 --- /dev/null +++ b/debian/patches/lp-1551419-azure-handle-flipped-uuid-endianness.patch @@ -0,0 +1,61 @@ +--- a/cloudinit/sources/DataSourceAzure.py ++++ b/cloudinit/sources/DataSourceAzure.py +@@ -256,11 +256,57 @@ + return len(fnmatch.filter(os.listdir(mp), '*[!cdrom]*')) + + ++def _batch_gen(data, batch_size): ++ # Generate batches of batch_size from data ++ for i in range(0, len(data), batch_size): ++ yield data[i:i+batch_size] ++ ++ ++def _get_reversed_endianness_uuid(uuid): ++ uuid_parts = uuid.split('-') ++ for part_number in [0, 1, 2]: ++ original_part = uuid_parts[part_number] ++ hex_bytes = _batch_gen(original_part, 2) ++ reversed_endianness_part = ''.join(reversed(list(hex_bytes))) ++ uuid_parts[part_number] = reversed_endianness_part ++ return '-'.join(uuid_parts) ++ ++ ++def _get_last_boot_instance_uuid(): ++ return util.read_file_or_url( ++ '/var/lib/cloud/data/instance-id').contents.strip() ++ ++ + def get_instance_id(): + """ + Read the instance ID from dmi data ++ ++ If the reported UUID is the previous instance ID with endianness changed ++ (as per LP #1551419), then that previous instance ID will be used. + """ +- return util.read_dmi_data('system-uuid') ++ reported_instance_uuid = util.read_dmi_data('system-uuid') ++ LOG.debug('Reported instance UUID: %s', reported_instance_uuid) ++ if not os.path.exists('/var/lib/cloud/data/instance-id'): ++ LOG.debug('No last-boot instance ID') ++ # This is first boot of a fresh instance ++ return reported_instance_uuid ++ last_boot_instance_uuid = _get_last_boot_instance_uuid() ++ LOG.debug('Current instance UUID: %s', last_boot_instance_uuid) ++ if last_boot_instance_uuid == reported_instance_uuid: ++ LOG.debug('Reported UUID is unchanged') ++ return reported_instance_uuid ++ reversed_endianness_uuid = _get_reversed_endianness_uuid( ++ reported_instance_uuid) ++ LOG.debug('Reported instance UUID with reversed endianness: %s', ++ reversed_endianness_uuid) ++ if last_boot_instance_uuid == reversed_endianness_uuid: ++ # The endianness of the instance UUID has changed, keep using the ++ # last_boot UUID ++ LOG.debug('Reported UUID is last-boot UUID with endianness reversed;' ++ ' continuing to use last-boot instance ID') ++ return last_boot_instance_uuid ++ LOG.debug('Reported UUID is different; using it as instance ID.') ++ return reported_instance_uuid + + + def find_fabric_formatted_ephemeral_part(): diff --git a/debian/patches/series b/debian/patches/series index 0e299668..01704796 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -20,3 +20,4 @@ lp-1177432-same-archives-as-ubuntu-server.patch lp-1506244-azure-ssh-key-values.patch lp-1506187-azure_use_unique_vm_id.patch lp-1540965-SmartOS-Add-support-for-Joyent-LX-Brand-Zones.patch +lp-1551419-azure-handle-flipped-uuid-endianness.patch |