![Scott Little](/assets/img/avatar_default.png)
Create new directories: ceph config config-files filesystem kernel kernel/kernel-modules ldap logging strorage-drivers tools utilities virt Retire directories: connectivity core devtools support extended Delete two packages: tgt irqbalance Relocated packages: base/ dhcp initscripts libevent lighttpd linuxptp memcached net-snmp novnc ntp openssh pam procps sanlock shadow sudo systemd util-linux vim watchdog ceph/ python-cephclient config/ facter puppet-4.8.2 puppet-modules filesystem/ e2fsprogs nfs-utils nfscheck kernel/ kernel-std kernel-rt kernel/kernel-modules/ mlnx-ofa_kernel ldap/ nss-pam-ldapd openldap logging/ syslog-ng logrotate networking/ lldpd iproute mellanox python-ryu mlx4-config python/ python-2.7.5 python-django python-gunicorn python-setuptools python-smartpm python-voluptuous security/ shim-signed shim-unsigned tboot strorage-drivers/ python-3parclient python-lefthandclient virt/ cloud-init libvirt libvirt-python qemu tools/ storage-topology vm-topology utilities/ tis-extensions namespace-utils nova-utils update-motd Change-Id: I37ade764d873c701b35eac5881eb40412ba64a86 Story: 2002801 Task: 22687 Signed-off-by: Scott Little <scott.little@windriver.com>
75 lines
2.6 KiB
Diff
75 lines
2.6 KiB
Diff
---
|
|
cloudinit/sources/DataSourceConfigDrive.py | 39 ++++++++++++++++++++---------
|
|
1 file changed, 27 insertions(+), 12 deletions(-)
|
|
|
|
--- a/cloudinit/sources/DataSourceConfigDrive.py
|
|
+++ b/cloudinit/sources/DataSourceConfigDrive.py
|
|
@@ -40,6 +40,12 @@ DEFAULT_METADATA = {
|
|
"instance-id": DEFAULT_IID,
|
|
}
|
|
VALID_DSMODES = ("local", "net", "pass", "disabled")
|
|
+FS_TYPES = ('vfat', 'iso9660')
|
|
+LABEL_TYPES = ('config-2',)
|
|
+POSSIBLE_MOUNTS = ('sr', 'cd')
|
|
+OPTICAL_DEVICES = tuple(('/dev/%s%s' % (z, i) for z in POSSIBLE_MOUNTS
|
|
+ for i in range(0, 2)))
|
|
+
|
|
|
|
|
|
class ConfigDriveHelper(object):
|
|
@@ -250,7 +256,7 @@ class BrokenConfigDriveDir(Exception):
|
|
pass
|
|
|
|
|
|
-def find_candidate_devs():
|
|
+def find_candidate_devs(probe_optical=True):
|
|
"""Return a list of devices that may contain the config drive.
|
|
|
|
The returned list is sorted by search order where the first item has
|
|
@@ -268,12 +274,20 @@ def find_candidate_devs():
|
|
"""
|
|
|
|
# Query optical drive to get it in blkid cache for 2.6 kernels
|
|
- util.find_devs_with(path="/dev/sr0")
|
|
- util.find_devs_with(path="/dev/sr1")
|
|
-
|
|
- by_fstype = (util.find_devs_with("TYPE=vfat") +
|
|
- util.find_devs_with("TYPE=iso9660"))
|
|
- by_label = util.find_devs_with("LABEL=config-2")
|
|
+ if probe_optical:
|
|
+ for device in OPTICAL_DEVICES:
|
|
+ try:
|
|
+ util.find_devs_with(path=device)
|
|
+ except util.ProcessExecutionError:
|
|
+ pass
|
|
+
|
|
+ by_fstype = []
|
|
+ for fs_type in FS_TYPES:
|
|
+ by_fstype.extend(util.find_devs_with("TYPE=%s" % (fs_type)))
|
|
+
|
|
+ by_label = []
|
|
+ for label in LABEL_TYPES:
|
|
+ by_label.extend(util.find_devs_with("LABEL=%s" % (label)))
|
|
|
|
# give preference to "last available disk" (vdb over vda)
|
|
# note, this is not a perfect rendition of that.
|
|
@@ -282,12 +296,13 @@ def find_candidate_devs():
|
|
|
|
# combine list of items by putting by-label items first
|
|
# followed by fstype items, but with dupes removed
|
|
- combined = (by_label + [d for d in by_fstype if d not in by_label])
|
|
-
|
|
- # We are looking for block device (sda, not sda1), ignore partitions
|
|
- combined = [d for d in combined if not util.is_partition(d)]
|
|
+ candidates = (by_label + [d for d in by_fstype if d not in by_label])
|
|
|
|
- return combined
|
|
+ # We are looking for a block device or partition with necessary label or
|
|
+ # an unpartitioned block device (ex sda, not sda1)
|
|
+ devices = [d for d in candidates
|
|
+ if d in by_label or not util.is_partition(d)]
|
|
+ return devices
|
|
|
|
|
|
def read_config_drive_dir(source_dir):
|