summaryrefslogtreecommitdiffstats
path: root/nova/virt/disk/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'nova/virt/disk/api.py')
-rw-r--r--nova/virt/disk/api.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/nova/virt/disk/api.py b/nova/virt/disk/api.py
index fd0eec79d..f1f60414b 100644
--- a/nova/virt/disk/api.py
+++ b/nova/virt/disk/api.py
@@ -106,6 +106,26 @@ def extend(image, size):
utils.execute('resize2fs', image, check_exit_code=False)
+def bind(src, target, instance_name):
+ """Bind device to a filesytem"""
+ if src:
+ utils.execute('touch', target, run_as_root=True)
+ utils.execute('mount', '-o', 'bind', src, target,
+ run_as_root=True)
+ s = os.stat(src)
+ cgroup_info = "c %s:%s rwm" % (os.major(s.st_rdev),
+ os.minor(s.st_rdev))
+ cgroups_path = \
+ "/sys/fs/cgroup/devices/sysdefault/libvirt/lxc/%s/devices.allow" \
+ % instance_name
+ utils.execute('echo', '>', cgroup_info, cgroups_path, run_as_root=True)
+
+
+def unbind(target):
+ if target:
+ utils.execute('umount', target, run_as_root=True)
+
+
class _DiskImage(object):
"""Provide operations on a disk image file."""