summaryrefslogtreecommitdiff
path: root/virtManager
diff options
context:
space:
mode:
authorChen Hanxiao <chenhanxiao@cn.fujitsu.com>2014-02-21 05:13:11 -0500
committerCole Robinson <crobinso@redhat.com>2014-02-24 21:37:13 -0500
commit08daebe1aa8490ef8347b35ddb007a35e3aef042 (patch)
treef1512ecd96b1ff76b9e764b5819de52ef576bc6b /virtManager
parent49cbc20b12ff989f0302d50e968533a9db2f7eba (diff)
downloadvirt-manager-08daebe1aa8490ef8347b35ddb007a35e3aef042.tar.gz
details: add UI interface for LXC user namespace
We could config user namespace for LXC container in details->overview page. Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Diffstat (limited to 'virtManager')
-rw-r--r--virtManager/details.py60
1 files changed, 59 insertions, 1 deletions
diff --git a/virtManager/details.py b/virtManager/details.py
index 72e79da5..e9132b8f 100644
--- a/virtManager/details.py
+++ b/virtManager/details.py
@@ -51,6 +51,7 @@ from virtinst import VirtualRNGDevice
EDIT_TITLE,
EDIT_MACHTYPE,
EDIT_DESC,
+EDIT_IDMAP,
EDIT_VCPUS,
EDIT_CPUSET,
@@ -103,7 +104,7 @@ EDIT_FS,
EDIT_HOSTDEV_ROMBAR,
-) = range(1, 42)
+) = range(1, 43)
# Columns in hw list model
@@ -579,6 +580,13 @@ class vmmDetails(vmmGObjectUI):
"on_overview_name_changed": lambda *x: self.enable_apply(x, EDIT_NAME),
"on_overview_title_changed": lambda *x: self.enable_apply(x, EDIT_TITLE),
"on_machine_type_changed": lambda *x: self.enable_apply(x, EDIT_MACHTYPE),
+ "on_idmap_uid_start_changed": lambda *x: self.enable_apply(x, EDIT_IDMAP),
+ "on_idmap_uid_target_changed": lambda *x: self.enable_apply(x, EDIT_IDMAP),
+ "on_idmap_uid_count_changed": lambda *x: self.enable_apply(x, EDIT_IDMAP),
+ "on_idmap_gid_start_changed": lambda *x: self.enable_apply(x, EDIT_IDMAP),
+ "on_idmap_gid_target_changed": lambda *x: self.enable_apply(x, EDIT_IDMAP),
+ "on_idmap_gid_count_changed": lambda *x: self.enable_apply(x, EDIT_IDMAP),
+ "on_config_idmap_check_toggled": self.config_idmap_enable,
"on_config_vcpus_changed": self.config_vcpus_changed,
"on_config_maxvcpus_changed": self.config_maxvcpus_changed,
@@ -1600,6 +1608,16 @@ class vmmDetails(vmmGObjectUI):
if edittype not in self.active_edits:
self.active_edits.append(edittype)
+ # Idmap
+ def config_idmap_enable(self, src):
+ do_enable = src.get_active()
+ self.widget("idmap-spin-grid").set_sensitive(do_enable)
+ self.config_idmap_changed()
+
+ def config_idmap_changed(self, ignore=None):
+ self.enable_apply(EDIT_IDMAP)
+
+
# Memory
def config_get_maxmem(self):
return uiutil.spin_get_helper(self.widget("config-maxmem"))
@@ -1955,6 +1973,23 @@ class vmmDetails(vmmGObjectUI):
add_define(self.vm.define_description, desc)
add_hotplug(self.vm.hotplug_description, desc)
+ if self.edited(EDIT_IDMAP):
+ enable_idmap = self.widget("config-idmap-checkbutton").get_active()
+ if enable_idmap:
+ uid_start = self.widget("uid-start").get_text().strip()
+ uid_target = self.widget("uid-target").get_text().strip()
+ uid_count = self.widget("uid-count").get_text().strip()
+ gid_start = self.widget("gid-start").get_text().strip()
+ gid_target = self.widget("gid-target").get_text().strip()
+ gid_count = self.widget("gid-count").get_text().strip()
+
+ idmap_list = [uid_start, uid_target, uid_count, gid_start,
+ gid_target, gid_count]
+ else:
+ idmap_list = None
+
+ add_define(self.vm.define_idmap, idmap_list)
+
return self._change_config_helper(df, da, hf, ha)
# CPUs
@@ -2439,6 +2474,29 @@ class vmmDetails(vmmGObjectUI):
if machtype is not None:
uiutil.set_combo_entry(self.widget("machine-type"), machtype)
+ # User namespace idmap setting
+ is_container = self.vm.is_container()
+ self.widget("config-idmap-expander").set_visible(is_container)
+
+ self.widget("uid-start").set_text('0')
+ self.widget("uid-target").set_text('1000')
+ self.widget("uid-count").set_text('10')
+ self.widget("gid-start").set_text('0')
+ self.widget("gid-target").set_text('1000')
+ self.widget("gid-count").set_text('10')
+
+ IdMap = self.vm.get_idmap()
+ show_config = IdMap.uid_start is not None
+
+ self.widget("config-idmap-checkbutton").set_active(show_config)
+ self.widget("idmap-spin-grid").set_sensitive(show_config)
+ if show_config:
+ Name = ["uid-start", "uid-target", "uid-count",
+ "gid-start", "gid-target", "gid-count"]
+ for name in Name:
+ IdMap_proper = getattr(IdMap, name.replace("-", "_"))
+ self.widget(name).set_value(int(IdMap_proper))
+
def refresh_inspection_page(self):
inspection_supported = self.config.support_inspection
uiutil.set_grid_row_visible(self.widget("details-overview-error"),