virt-install should copy libvirt storage pool auth element and all source hosts to domain xml
--
Regards,
Rauno Väli
OYE Network Ltd.
From 609bab7bee2da878fbbaf5fa8b313a38dd1aa6e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rauno=20V=C3=A4li?= <rauno@xxxxxxxxxxxxxx> Date: Fri, 26 Jan 2018 12:27:20 +0200 Subject: [PATCH 1/1] virt-install should copy auth element from libvirt storage pool configuration and add all hosts provided --- virtinst/devicedisk.py | 33 +++++++++++++++++++++++++++++++++ virtinst/storage.py | 6 +++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/virtinst/devicedisk.py b/virtinst/devicedisk.py index 73ccb5d..f486f1d 100644 --- a/virtinst/devicedisk.py +++ b/virtinst/devicedisk.py @@ -89,6 +89,12 @@ def _is_dir_searchable(uid, username, path): return bool(re.search("user:%s:..x" % username, out)) +class _Host(XMLBuilder): + _XML_PROP_ORDER = ["name", "port"] + _XML_ROOT_NAME = "host" + + name = XMLProperty("./@name") + port = XMLProperty("./@port", is_int=True) class _DiskSeclabel(XMLBuilder): """ @@ -473,6 +479,7 @@ class VirtualDisk(VirtualDevice): "driver_cache", "driver_discard", "driver_detect_zeroes", "driver_io", "error_policy", "_source_file", "_source_dev", "_source_dir", + "auth_username", "auth_secret_type", "auth_secret_uuid", "source_volume", "source_pool", "source_protocol", "source_name", "source_host_name", "source_host_port", "source_host_transport", "source_host_socket", @@ -587,6 +594,24 @@ class VirtualDisk(VirtualDevice): source_pool = XMLProperty("./source/@pool") source_volume = XMLProperty("./source/@volume") + auth_username = XMLProperty("./auth/@username") + auth_secret_type = XMLProperty("./auth/secret/@type") + auth_secret_uuid = XMLProperty("./auth/secret/@uuid") + + def add_host_obj(self, obj): + self.add_child(obj) + + def add_host(self, target, name, port=None): + obj = _Host(self.conn) + obj.name = name + obj.port = port + self.add_child(obj) + + def remove_host(self, obj): + self.remove_child(obj) + + hosts = XMLChildProperty(_Host, relative_xpath="./source") + source_name = XMLProperty("./source/@name") source_protocol = XMLProperty("./source/@protocol") # Technically multiple host lines can be listed @@ -617,9 +642,17 @@ class VirtualDisk(VirtualDevice): def _set_source_network_from_storage(self, volxml, poolxml): self.source_protocol = poolxml.type + logging.debug("disk.set_vol_object: poolxml=\n%s", + dir(poolxml)) + if poolxml.auth_type: + self.auth_username = poolxml.auth_username + self.auth_secret_type = poolxml.auth_type + self.auth_secret_uuid = poolxml.auth_secret_uuid if poolxml.hosts: self.source_host_name = poolxml.hosts[0].name self.source_host_port = poolxml.hosts[0].port + for host in poolxml.hosts: + self.add_host(self.hosts, host.name, host.port) path = "" if poolxml.source_name: diff --git a/virtinst/storage.py b/virtinst/storage.py index babec2f..f601bd3 100644 --- a/virtinst/storage.py +++ b/virtinst/storage.py @@ -390,7 +390,7 @@ class StoragePool(_StorageObject): "format", "hosts", "_source_dir", "_source_adapter", "_source_device", "source_name", "target_path", - "permissions"] + "permissions", "auth"] _source_dir = XMLProperty("./source/dir/@path") @@ -413,6 +413,10 @@ class StoragePool(_StorageObject): default_cb=_default_source_name, doc=_("Name of the Volume Group")) + auth_type = XMLProperty("./source/auth/@type") + auth_username = XMLProperty("./source/auth/@username") + auth_secret_uuid = XMLProperty("./source/auth/secret/@uuid") + target_path = XMLProperty("./target/path", default_cb=_get_default_target_path) -- 2.7.4
_______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list