summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@brickies.net>2017-01-10 11:25:33 -0500
committerScott Moser <smoser@brickies.net>2017-01-10 11:25:33 -0500
commit2b7724e003174029b716993c99ca8dc333a016e7 (patch)
treee4a9b66e747fa653b4568e385e3dfedeb9da823c
parent2f37bf611eede21b38591a3ce35a73db8e13951e (diff)
downloadcloud-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/changelog9
-rw-r--r--debian/patches/lp-1551419-azure-handle-flipped-uuid-endianness.patch61
-rw-r--r--debian/patches/series1
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