[Kimchi-devel] [PATCH 1/3] probe that libvirt support to change a live VM network source

Sheldon shaohef at linux.vnet.ibm.com
Fri May 9 15:45:52 UTC 2014


On 05/09/2014 11:41 PM, shaohef at linux.vnet.ibm.com wrote:
> From: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>
> This is a good feature to user, but it is not supported by low version
> libvirt.
>
> So we need to probe it.
>
> Signed-off-by: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
> ---
>   src/kimchi/featuretests.py | 43 ++++++++++++++++++++++++++++++++++++++++++-
>   src/kimchi/model/config.py |  3 +++
>   2 files changed, 45 insertions(+), 1 deletion(-)
>
> diff --git a/src/kimchi/featuretests.py b/src/kimchi/featuretests.py
> index 5192361..6eb29f4 100644
> --- a/src/kimchi/featuretests.py
> +++ b/src/kimchi/featuretests.py
> @@ -62,8 +62,25 @@ SIMPLE_VM_XML = """
>       <type arch='x86_64' machine='pc'>hvm</type>
>       <boot dev='hd'/>
>     </os>
> +  <devices>
> +   %s
> +  </devices>
>   </domain>"""
>
> +SIMPLE_NETWORK_XML = """
> +<network>
> +  <name>%s</name>
> +</network>
> +"""
> +
> +VM_IFACE_XML = """
> +<interface type='network'>
> +  <mac address='52:54:00:12:34:56'/>
> +  <source network='%s'/>
> +  <model type='rtl8139'/>
> +</interface>
> +"""
> +
>   SCSI_FC_XML = """
>   <pool type='scsi'>
>     <name>TEST_SCSI_FC_POOL</name>
> @@ -196,7 +213,7 @@ class FeatureTests(object):
>               rollback.prependDefer(FeatureTests.enable_screen_error_logging)
>               conn = libvirt.open('qemu:///system')
>               rollback.prependDefer(conn.close)
> -            dom = conn.defineXML(SIMPLE_VM_XML)
> +            dom = conn.defineXML(SIMPLE_VM_XML % "")
>               rollback.prependDefer(dom.undefine)
>               try:
>                   dom.setMetadata(libvirt.VIR_DOMAIN_METADATA_ELEMENT,
> @@ -206,3 +223,27 @@ class FeatureTests(object):
>                   return True
>               except libvirt.libvirtError:
>                   return False
> +
> +    @staticmethod
> +    def change_live_vm_network():
> +        with RollbackContext() as rollback:
> +            FeatureTests.disable_screen_error_logging()
> +            rollback.prependDefer(FeatureTests.enable_screen_error_logging)
> +            conn = libvirt.open('qemu:///system')
> +            rollback.prependDefer(conn.close)
> +            net1_name = "isolated_test_net1"
> +            net2_name = "isolated_test_net2"
> +            net1 = conn.networkCreateXML(SIMPLE_NETWORK_XML % net1_name)
> +            rollback.prependDefer(net1.destroy)
> +            net2 = conn.networkCreateXML(SIMPLE_NETWORK_XML % net2_name)
> +            rollback.prependDefer(net2.destroy)
> +            iface1_xml = VM_IFACE_XML % net1_name
> +            iface2_xml = VM_IFACE_XML % net2_name
> +            dom = conn.createXML(SIMPLE_VM_XML % iface1_xml, flags=0)
> +            rollback.prependDefer(dom.destroy)
> +            try:
> +                dom.updateDeviceFlags(iface2_xml,
> +                                      libvirt.VIR_DOMAIN_AFFECT_LIVE)
> +                return True
> +            except libvirt.libvirtError:
> +                return False
> diff --git a/src/kimchi/model/config.py b/src/kimchi/model/config.py
> index 0ef0855..88ab681 100644
> --- a/src/kimchi/model/config.py
> +++ b/src/kimchi/model/config.py
> @@ -54,6 +54,7 @@ class CapabilitiesModel(object):
>           self.libvirt_stream_protocols = []
>           self.fc_host_support = False
>           self.metadata_support = False
> +        self.change_live_vm_network = False
>
>           # Subscribe function to set host capabilities to be run when cherrypy
>           # server is up
> @@ -67,6 +68,8 @@ class CapabilitiesModel(object):
>           self.nfs_target_probe = FeatureTests.libvirt_support_nfs_probe()
>           self.fc_host_support = FeatureTests.libvirt_support_fc_host()
>           self.metadata_support = FeatureTests.has_metadata_support()
> +        self.change_live_vm_network = FeatureTests.change_live_vm_network()
> +
please remove this line.
>
>           self.libvirt_stream_protocols = []
>           for p in ['http', 'https', 'ftp', 'ftps', 'tftp']:


-- 
Thanks and best regards!

Sheldon Feng(冯少合)<shaohef at linux.vnet.ibm.com>
IBM Linux Technology Center




More information about the Kimchi-devel mailing list