[Libvirt-cim] [PATCH] [TEST] Add NETNS toggle to const.py; update LXC define system bits

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Wed Oct 8 19:59:59 UTC 2008


# HG changeset patch
# User Kaitlin Rupert <karupert at us.ibm.com>
# Date 1223495957 25200
# Node ID c2c64b0ee95d55ac09375f0a3518d60fd569ee7d
# Parent  98c505b354576e9150943b9f7f1bfd4a70347dab
[TEST] Add NETNS toggle to const.py; update LXC define system bits.

Added LXC_netns_support to const.py - right now, this is hardcoded to False.  In the future, this will dynamically detect whether the kernel supports NETNS (which is needed to create containers guests with network support).

Cleanup default_vssd_rasd_str() so that class_dasd() is used to create a Disk RASD for LXC guests, as well as KVM/Xen.

On undefine/destroy of LXC guests, don't remove the file at LXC_init_path

Extend LXCXML to subclass VirtCIM - this allows cim_define() to be called for LXC guests.

Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>

diff -r 98c505b35457 -r c2c64b0ee95d suites/libvirt-cim/lib/XenKvmLib/const.py
--- a/suites/libvirt-cim/lib/XenKvmLib/const.py	Tue Oct 07 02:42:02 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/const.py	Wed Oct 08 12:59:17 2008 -0700
@@ -85,6 +85,7 @@
 LXC_default_mp = '/tmp'
 LXC_default_source = '/tmp/lxc_files'
 LXC_default_mac = '11:22:33:aa:bb:cc'
+LXC_netns_support = False  
 
 parser = OptionParser()
 parser.add_option("-i", "--ip", dest="ip", default="localhost",
diff -r 98c505b35457 -r c2c64b0ee95d suites/libvirt-cim/lib/XenKvmLib/vsms.py
--- a/suites/libvirt-cim/lib/XenKvmLib/vsms.py	Tue Oct 07 02:42:02 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/vsms.py	Wed Oct 08 12:59:17 2008 -0700
@@ -241,30 +241,25 @@
     class_vssd = get_vssd_class(virt)
     vssd = class_vssd(name=dom_name, virt=virt)
 
-    # LXC only takes disk and memory device for now.
-    # Only disk __init__ takes different params.
-    if virt == 'LXC':
-        d = LXC_DiskResourceAllocationSettingData(
-                mountpoint=const.LXC_default_mp,
-                source=const.LXC_default_source, name=dom_name)
-    else:
-        class_dasd = get_dasd_class(virt)
-        if virt == 'KVM':
-            disk_dev = 'hda'
-            disk_source = const.KVM_disk_path
-        elif virt == 'XenFV':
-            disk_dev = 'hda'
-            disk_source = const.XenFV_disk_path
-        d = class_dasd(
-                    dev=disk_dev, 
-                    source=disk_source,
-                    name=dom_name)
+    class_dasd = get_dasd_class(virt)
+    if virt == 'KVM':
+        disk_dev = 'hda'
+        disk_source = const.KVM_disk_path
+    elif virt == 'XenFV':
+        disk_dev = 'hda'
+        disk_source = const.XenFV_disk_path
+    elif virt == 'LXC':
+        disk_dev = const.LXC_default_mp
+        disk_source = const.LXC_default_source
+    d = class_dasd(disk_dev, disk_source, dom_name)
     
     class_masd = get_masd_class(virt)
     m = class_masd(
                 megabytes=mem_mb,
                 mallocunits=malloc_units,
                 name=dom_name)
+
+    # LXC only takes disk and memory device for now.
     if virt == 'LXC':
         return vssd.mof(), [d.mof(), m.mof()]
     
diff -r 98c505b35457 -r c2c64b0ee95d suites/libvirt-cim/lib/XenKvmLib/vxml.py
--- a/suites/libvirt-cim/lib/XenKvmLib/vxml.py	Tue Oct 07 02:42:02 2008 -0700
+++ b/suites/libvirt-cim/lib/XenKvmLib/vxml.py	Wed Oct 08 12:59:17 2008 -0700
@@ -328,8 +328,6 @@
         return self.run(ip, 'define', self.xml_string)
 
     def undefine(self, ip):
-        if os.path.exists(const.LXC_init_path):
-            os.remove(const.LXC_init_path)
         return self.run(ip, 'undefine', self.dname)
 
     def start(self, ip):
@@ -339,8 +337,6 @@
         return self.run(ip, 'stop', self.dname)        
 
     def destroy(self, ip):
-        if os.path.exists(const.LXC_init_path):
-            os.remove(const.LXC_init_path)
         return self.run(ip, 'destroy', self.dname)
 
     def create(self, ip):
@@ -471,9 +467,7 @@
         self.virt = virt
         self.domain_name = dom_name
         self.vssd = vsms.get_vssd_class(virt)(name=dom_name, virt=virt)
-        self.dasd = vsms.get_dasd_class(virt)(dev=disk_dev,
-                                              source=disk_source,
-                                              name=dom_name)
+        self.dasd = vsms.get_dasd_class(virt)(disk_dev, disk_source, dom_name)
         self.nasd = vsms.get_nasd_class(virt)(type=net_type, 
                                               mac=net_mac,
                                               name=dom_name,
@@ -487,8 +481,11 @@
     def cim_define(self, ip, ref_conf=None):
         service = vsms.get_vsms_class(self.virt)(ip)
         sys_settings = str(self.vssd)
-        res_settings = [str(self.dasd), str(self.nasd),
-                        str(self.pasd), str(self.masd)]
+        if self.virt == 'LXC' and const.LXC_netns_support is False:
+            res_settings = [str(self.dasd), str(self.pasd), str(self.masd)]
+        else:
+            res_settings = [str(self.dasd), str(self.nasd),
+                            str(self.pasd), str(self.masd)]
 
         if ref_conf is None:
              ref_conf = ' '
@@ -683,7 +680,7 @@
     def set_vbridge(self, ip, net_name):
         return self._set_vbridge(ip, 'XenFV', net_name)
 
-class LXCXML(VirtXML):
+class LXCXML(VirtXML, VirtCIM):
 
     def __init__(self, test_dom=const.default_domname,
                        mem=const.default_memory,
@@ -693,6 +690,9 @@
                        net_name=const.default_network_name,
                        tty=const.LXC_default_tty):
         VirtXML.__init__(self, 'lxc', test_dom, set_uuid(), mem, vcpus)
+        VirtCIM.__init__(self, 'LXC', test_dom, const.LXC_default_mp,
+                         const.LXC_default_source, ntype, net_name, mac, vcpus,
+                         mem, const.default_mallocunits)
         self._os(const.LXC_init_path)
         self._devices(mac, ntype, net_name, const.LXC_default_tty)
         self.create_lxc_file(CIM_IP, const.LXC_init_path)
@@ -704,8 +704,12 @@
 
     def _devices(self, net_mac, net_type, net_name, tty_set):
         devices = self.get_node('/domain/devices')
-        self.set_interface_details(devices, net_mac, net_type, net_name, 'LXC')
-        interface = self.add_sub_node(devices, 'console', tty = tty_set)
+      
+        if const.LXC_netns_support is True:
+            self.set_interface_details(devices, net_mac, net_type, 
+                                       net_name, 'LXC')
+
+        self.add_sub_node(devices, 'console', tty = tty_set)
 
     def create_lxc_file(self, ip, lxc_file):
         try:




More information about the Libvirt-cim mailing list