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")
|
VALID_DSMODES = ("local", "net", "pass", "disabled")
|
||||||
FS_TYPES = ('vfat', 'iso9660')
|
FS_TYPES = ('vfat', 'iso9660')
|
||||||
LABEL_TYPES = ('config-2',)
|
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):
|
class DataSourceConfigDrive(openstack.SourceMixin, sources.DataSource):
|
||||||
@ -70,7 +72,15 @@ class DataSourceConfigDrive(openstack.SourceMixin, sources.DataSource):
|
|||||||
if not found:
|
if not found:
|
||||||
for dev in find_candidate_devs():
|
for dev in find_candidate_devs():
|
||||||
try:
|
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
|
found = dev
|
||||||
except openstack.NonReadable:
|
except openstack.NonReadable:
|
||||||
pass
|
pass
|
||||||
|
@ -1294,12 +1294,16 @@ def ensure_dir(path, mode=None):
|
|||||||
|
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def unmounter(umount):
|
def unmounter(umount, lazy_support=True):
|
||||||
try:
|
try:
|
||||||
yield umount
|
yield umount
|
||||||
finally:
|
finally:
|
||||||
if umount:
|
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)
|
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
|
# Be nice and ensure it ends with a slash
|
||||||
if not mountpoint.endswith("/"):
|
if not mountpoint.endswith("/"):
|
||||||
mountpoint += "/"
|
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:
|
if data is None:
|
||||||
ret = callback(mountpoint)
|
ret = callback(mountpoint)
|
||||||
else:
|
else:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user