[Libvirt-cim] [PATCH] [TEST] #2 Adding cim_state_change() to VirtCIM class of vxml

Kaitlin Rupert kaitlin at linux.vnet.ibm.com
Wed Nov 19 21:47:13 UTC 2008


Deepti B. Kalakeri wrote:
> # HG changeset patch
> # User Deepti B. Kalakeri<deeptik at linux.vnet.ibm.com
> # Date 1227103041 28800
> # Node ID 6b81367e87d574d3352f2752a4d303ff155367fd
> # Parent  78b18dc8cbfccff5b50c8c7228ca3a7396facc61
> [TEST] #2 Adding cim_state_change() to VirtCIM class of vxml.
> 
> Changes:
> --------
> Updates from Patch 1 to 2:
> --------------------------
> Removed the get_cs_instance() fn.
> Declared VS states and TIME values in const.py.
> Added cim_start(), cim_reboot(), cim_pause(), cim_suspend() fn's.
> 
> 
> Patch 1:
> --------
> cim_state_change() fn can be used to start/reboot/suspend the domain.
> The function verifies that the state of the domain is changed by calling poll_for_state_change().
> Included poll_for_state_change(), .get_cs_instance() fn in the vxml since including it from common_util
> was causing a circular chain and was failing.
> 
> Right now the cim_state_change() just returns the the status, Can modify to return the domain if req.
> 
> Signed-off-by: Deepti B. Kalakeri <deeptik at linux.vnet.ibm.com>
> 
> diff -r 78b18dc8cbfc -r 6b81367e87d5 suites/libvirt-cim/cimtest/ComputerSystem/05_activate_defined_start.py

> -# Success: 
> -# if  
> -# From state == 3
> -# To state == 2
> -# Enabled_state == RequestedState
> +        # Success: 
> +        # if  
> +        # From state == 3
> +        # To state == 2
> +        # Enabled_state == RequestedState

Since the test doesn't really specify the requested state values by 
number, I'd remove this comment or update it to make it more meaningful.

Something like:  From state == defined  To state == running or something 
similar.

> diff -r 78b18dc8cbfc -r 6b81367e87d5 suites/libvirt-cim/lib/XenKvmLib/const.py
> --- a/suites/libvirt-cim/lib/XenKvmLib/const.py	Thu Nov 13 21:42:27 2008 -0800
> +++ b/suites/libvirt-cim/lib/XenKvmLib/const.py	Wed Nov 19 05:57:21 2008 -0800
> @@ -30,6 +30,16 @@ platform_sup = ["Xen", "KVM", "XenFV"]
>  platform_sup = ["Xen", "KVM", "XenFV"]
> 
>  VIRSH_ERROR_DEFINE = "Failed to define a domain with the name %s from virsh"
> +
> +#CIM values for VS State transitions
> +CIM_START      = 2
> +CIM_DEFINE     = 3
> +CIM_SUSPEND    = 6
> +CIM_PAUSE      = 9
> +CIM_REBOOT     = 10
> +

The supported CIM states are:

         CIM_STATE_ENABLED      = 2,
         CIM_STATE_DISABLED     = 3,
         CIM_STATE_SHUTDOWN     = 4,
         CIM_STATE_NOCHANGE     = 5,
         CIM_STATE_SUSPENDED    = 6,
         CIM_STATE_PAUSED       = 9,
         CIM_STATE_REBOOT       = 10,
         CIM_STATE_RESET        = 11,

You'll should update the list with those that are missing.

We don't currently support NOCHANGE or SUSPENDED, but all others are.

> +# Default TimeoutPeriod param for CS.RequestedStateChange()
> +TIME           = "00000000000000.000000:000"
> 
>  # vxml.NetXML
>  default_bridge_name = 'testbridge'

Nice - I like having all of these defined in one place.  Good idea. =)

> diff -r 78b18dc8cbfc -r 6b81367e87d5 suites/libvirt-cim/lib/XenKvmLib/vxml.py

> +
> +    def cim_start(self, server, virt, domain_name, 
> +                  req_time=const.TIME, poll_time=30):
> +        return self.cim_state_change(server, virt, domain_name, 
> +                                     const.CIM_START, req_time, poll_time)
> +
> +    def cim_pause(self, server, virt, domain_name, 
> +                    req_time=const.TIME, poll_time=30):
> +        return self.cim_state_change(server, virt, domain_name,
> +                                     const.CIM_PAUSE, req_time, poll_time)
> +        
> +    def cim_reboot(self, server, virt, domain_name, 
> +                   req_time=const.TIME, poll_time=30):
> +        return self.cim_state_change(server, virt, domain_name, 
> +                                     const.CIM_REBOOT, req_time, poll_time)
> +
> +    def cim_suspend(self, server, virt, domain_name, 
> +                    req_time=const.TIME, poll_time=30):
> +        return self.cim_state_change(server, virt, domain_name, 
> +                                     const.CIM_SUSPEND, req_time, poll_time)
> +
> +

Can you also add cim_shutdown(), cim_disable(), cim_no_state_change(), 
and cim_reset()?

This looks really good - thanks Deepti!

-- 
Kaitlin Rupert
IBM Linux Technology Center
kaitlin at linux.vnet.ibm.com




More information about the Libvirt-cim mailing list