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:
Cole Robinson
2019-05-13 20:13:42 -04:00
parent 569533b187
commit c85bb61559
4 changed files with 20 additions and 12 deletions

View File

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

View File

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

View File

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

View File

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