virt-install should copy libvirt storage pool auth element and all source hosts to domain xml

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux