new: Added FreeBSD support to ConfigDrive
This commit is contained in:
parent
51b07dca16
commit
f511595680
@ -37,7 +37,9 @@ DEFAULT_METADATA = {
|
||||
VALID_DSMODES = ("local", "net", "pass", "disabled")
|
||||
FS_TYPES = ('vfat', 'iso9660')
|
||||
LABEL_TYPES = ('config-2',)
|
||||
OPTICAL_DEVICES = tuple(('/dev/sr%s' % i for i in range(0, 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 DataSourceConfigDrive(openstack.SourceMixin, sources.DataSource):
|
||||
@ -70,7 +72,15 @@ class DataSourceConfigDrive(openstack.SourceMixin, sources.DataSource):
|
||||
if not found:
|
||||
for dev in find_candidate_devs():
|
||||
try:
|
||||
results = util.mount_cb(dev, read_config_drive)
|
||||
# Set mtype if freebsd and turn off sync
|
||||
if dev.startswith("/dev/cd"):
|
||||
mtype = "cd9660"
|
||||
sync = False
|
||||
else:
|
||||
mtype = None
|
||||
sync = True
|
||||
results = util.mount_cb(dev, read_config_drive, mtype=mtype,
|
||||
sync=sync)
|
||||
found = dev
|
||||
except openstack.NonReadable:
|
||||
pass
|
||||
|
@ -1294,12 +1294,16 @@ def ensure_dir(path, mode=None):
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
def unmounter(umount):
|
||||
def unmounter(umount, lazy_support=True):
|
||||
try:
|
||||
yield umount
|
||||
finally:
|
||||
if umount:
|
||||
umount_cmd = ["umount", '-l', umount]
|
||||
# Do not use Lazy Mode on some systems (freebsd)
|
||||
if lazy_support:
|
||||
umount_cmd = ["umount", '-l', umount]
|
||||
else:
|
||||
umount_cmd = ["umount", umount]
|
||||
subp(umount_cmd)
|
||||
|
||||
|
||||
@ -1382,7 +1386,12 @@ def mount_cb(device, callback, data=None, rw=False, mtype=None, sync=True):
|
||||
# Be nice and ensure it ends with a slash
|
||||
if not mountpoint.endswith("/"):
|
||||
mountpoint += "/"
|
||||
with unmounter(umount):
|
||||
# Set lazy_support to false if FreeBSD
|
||||
if device.startswith("/dev/cd"):
|
||||
lazy_support = False
|
||||
else:
|
||||
lazy_support = True
|
||||
with unmounter(umount,lazy_support):
|
||||
if data is None:
|
||||
ret = callback(mountpoint)
|
||||
else:
|
||||
|
Loading…
x
Reference in New Issue
Block a user