summaryrefslogtreecommitdiff
path: root/cloudinit/config/cc_disk_setup.py
diff options
context:
space:
mode:
authorScott Moser <smoser@brickies.net>2017-04-28 09:23:25 -0400
committerScott Moser <smoser@brickies.net>2017-05-17 12:03:03 -0400
commit31b6f173280fcc8e9be2732ae2e9b6f6c89679d4 (patch)
treeb14140dc4c5e904da17cf82b81c7e1b5fcceb918 /cloudinit/config/cc_disk_setup.py
parentf4d3ca43d8a8b1da136c9c07fa9cd0a08c5e3dba (diff)
downloadvyos-cloud-init-31b6f173280fcc8e9be2732ae2e9b6f6c89679d4.tar.gz
vyos-cloud-init-31b6f173280fcc8e9be2732ae2e9b6f6c89679d4.zip
Azure: fix reformatting of ephemeral disks on resize to large types.
Large instance types have a different disk format on the newly partitioned ephemeral drive. So we have to adjust the logic in the Azure datasource to recognize that a disk with 2 partitions and an empty ntfs filesystem on the second one is acceptable. This also adjusts the datasources's builtin fs_setup config to remove the 'replace_fs' entry. This entry was previously ignored, and confusing. I've clarified the doc on that also. LP: #1686514
Diffstat (limited to 'cloudinit/config/cc_disk_setup.py')
-rw-r--r--cloudinit/config/cc_disk_setup.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/cloudinit/config/cc_disk_setup.py b/cloudinit/config/cc_disk_setup.py
index 6f827ddc..29eb5dd8 100644
--- a/cloudinit/config/cc_disk_setup.py
+++ b/cloudinit/config/cc_disk_setup.py
@@ -68,6 +68,9 @@ specified using ``filesystem``.
Using ``overwrite: true`` for filesystems is dangerous and can lead to data
loss, so double check the entry in ``fs_setup``.
+.. note::
+ ``replace_fs`` is ignored unless ``partition`` is ``auto`` or ``any``.
+
**Internal name:** ``cc_disk_setup``
**Module frequency:** per instance
@@ -127,7 +130,7 @@ def handle(_name, cfg, cloud, log, _args):
log.debug("Partitioning disks: %s", str(disk_setup))
for disk, definition in disk_setup.items():
if not isinstance(definition, dict):
- log.warn("Invalid disk definition for %s" % disk)
+ log.warning("Invalid disk definition for %s" % disk)
continue
try:
@@ -144,7 +147,7 @@ def handle(_name, cfg, cloud, log, _args):
update_fs_setup_devices(fs_setup, cloud.device_name_to_device)
for definition in fs_setup:
if not isinstance(definition, dict):
- log.warn("Invalid file system definition: %s" % definition)
+ log.warning("Invalid file system definition: %s" % definition)
continue
try:
@@ -199,8 +202,13 @@ def update_fs_setup_devices(disk_setup, tformer):
definition['_origname'] = origname
definition['device'] = tformed
- if part and 'partition' in definition:
- definition['_partition'] = definition['partition']
+ if part:
+ # In origname with <dev>.N, N overrides 'partition' key.
+ if 'partition' in definition:
+ LOG.warning("Partition '%s' from dotted device name '%s' "
+ "overrides 'partition' key in %s", part, origname,
+ definition)
+ definition['_partition'] = definition['partition']
definition['partition'] = part
@@ -849,7 +857,8 @@ def mkfs(fs_cfg):
# Check to see if the fs already exists
LOG.debug("Checking device %s", device)
check_label, check_fstype, _ = check_fs(device)
- LOG.debug("Device %s has %s %s", device, check_label, check_fstype)
+ LOG.debug("Device '%s' has check_label='%s' check_fstype=%s",
+ device, check_label, check_fstype)
if check_label == label and check_fstype == fs_type:
LOG.debug("Existing file system found at %s", device)