mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
devices: char: Wire up seclabels in CharSource
And expose the config options on the command line for all CharSource users
This commit is contained in:
@@ -263,7 +263,12 @@
|
||||
<source mode="connect" host="0.0.0.0" service="1234"/>
|
||||
</parallel>
|
||||
<parallel type="unix">
|
||||
<source mode="bind" path="/tmp/foo-socket"/>
|
||||
<source mode="bind" path="/tmp/foo-socket">
|
||||
<seclabel model="none" relabel="no"/>
|
||||
<seclabel model="dac" relabel="yes">
|
||||
<label>foobar</label>
|
||||
</seclabel>
|
||||
</source>
|
||||
</parallel>
|
||||
<console type="pty">
|
||||
<target type="virtio"/>
|
||||
|
||||
@@ -519,7 +519,7 @@ c.add_compare(""" \
|
||||
--serial tcp,host=:2222,mode=bind,protocol=telnet,log_file=/tmp/foo.log,log_append=yes \
|
||||
--serial nmdm,source.master=/dev/foo1,source.slave=/dev/foo2 \
|
||||
--parallel udp,host=0.0.0.0:1234,bind_host=127.0.0.1:1234 \
|
||||
--parallel unix,path=/tmp/foo-socket \
|
||||
--parallel unix,path=/tmp/foo-socket,source.seclabel0.model=none,source.seclabel1.model=dac,source.seclabel1.relabel=yes,source.seclabel1.label=foobar,source.seclabel.relabel=no \
|
||||
--channel pty,target_type=guestfwd,target_address=127.0.0.1:10000 \
|
||||
--channel pty,target_type=virtio,name=org.linux-kvm.port1 \
|
||||
--console pty,target_type=virtio \
|
||||
|
||||
@@ -1294,10 +1294,10 @@ class VirtCLIParser(metaclass=_InitClass):
|
||||
num = int(reg.groups()[0])
|
||||
|
||||
if can_edit:
|
||||
while len(getattr(inst, list_propname)) < (num + 1):
|
||||
getattr(inst, list_propname).add_new()
|
||||
while len(util.get_prop_path(inst, list_propname)) < (num + 1):
|
||||
util.get_prop_path(inst, list_propname).add_new()
|
||||
try:
|
||||
return getattr(inst, list_propname)[num]
|
||||
return util.get_prop_path(inst, list_propname)[num]
|
||||
except IndexError:
|
||||
if not can_edit:
|
||||
return None
|
||||
@@ -2474,7 +2474,7 @@ def _add_device_boot_order_arg(cls):
|
||||
cls.add_arg("boot.order", "boot.order", cb=cls.set_boot_order_cb)
|
||||
|
||||
|
||||
def _add_device_seclabel_args(cls, list_propname):
|
||||
def _add_device_seclabel_args(cls, list_propname, prefix=""):
|
||||
def seclabel_find_inst_cb(c, *args, **kwargs):
|
||||
# pylint: disable=protected-access
|
||||
cliarg = "seclabel" # seclabel[0-9]*
|
||||
@@ -2482,12 +2482,12 @@ def _add_device_seclabel_args(cls, list_propname):
|
||||
return cb(*args, **kwargs)
|
||||
|
||||
# DeviceDisk.seclabels properties
|
||||
cls.add_arg("source.seclabel[0-9]*.model", "model",
|
||||
find_inst_cb=seclabel_find_inst_cb)
|
||||
cls.add_arg("source.seclabel[0-9]*.relabel", "relabel", is_onoff=True,
|
||||
find_inst_cb=seclabel_find_inst_cb)
|
||||
cls.add_arg("source.seclabel[0-9]*.label", "label", can_comma=True,
|
||||
cls.add_arg(prefix + "source.seclabel[0-9]*.model", "model",
|
||||
find_inst_cb=seclabel_find_inst_cb)
|
||||
cls.add_arg(prefix + "source.seclabel[0-9]*.relabel", "relabel",
|
||||
is_onoff=True, find_inst_cb=seclabel_find_inst_cb)
|
||||
cls.add_arg(prefix + "source.seclabel[0-9]*.label", "label",
|
||||
can_comma=True, find_inst_cb=seclabel_find_inst_cb)
|
||||
|
||||
|
||||
def _add_char_source_args(cls, prefix=""):
|
||||
@@ -2517,6 +2517,7 @@ def _add_char_source_args(cls, prefix=""):
|
||||
_add_arg("source.mode", "source.mode")
|
||||
_add_arg("source.master", "source.master")
|
||||
_add_arg("source.slave", "source.slave")
|
||||
_add_device_seclabel_args(cls, "source.seclabels", prefix=prefix)
|
||||
_add_arg("protocol.type", "source.protocol")
|
||||
_add_arg("log.file", "source.log_file")
|
||||
_add_arg("log.append", "source.log_append", is_onoff=True)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# This work is licensed under the GNU GPLv2 or later.
|
||||
# See the COPYING file in the top-level directory.
|
||||
|
||||
from .device import Device
|
||||
from .device import Device, DeviceSeclabel
|
||||
from ..xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
|
||||
from .. import util
|
||||
|
||||
@@ -36,6 +36,8 @@ class CharSource(XMLBuilder):
|
||||
def set_friendly_host(self, val):
|
||||
_set_host_helper(self, "host", "service", val)
|
||||
|
||||
seclabels = XMLChildProperty(DeviceSeclabel)
|
||||
|
||||
host = XMLProperty("./@host")
|
||||
service = XMLProperty("./@service", is_int=True)
|
||||
path = XMLProperty("./@path")
|
||||
|
||||
Reference in New Issue
Block a user