new: Added FreeBSD support to ConfigDrive

This commit is contained in:
Joseph Bajin 2014-08-18 10:32:54 -04:00
parent 51b07dca16
commit f511595680
2 changed files with 24 additions and 5 deletions

View File

@ -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

View File

@ -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: