[Libvirt-cim] [PATCH] (#3) Add a new OperatingStatus state and map them all to libvirt states

Deepti B Kalakeri deeptik at linux.vnet.ibm.com
Tue Aug 18 11:45:47 UTC 2009



Richard Maciel wrote:
> # HG changeset patch
> # User Richard Maciel <rmaciel at linux.vnet.ibm.com>
> # Date 1250185820 10800
> # Node ID edde8b4607e96d45d2c784070c84143be4d57fef
> # Parent  69ee9e708fe8fb2f5af562fdc412290e30fa41e7
> (#3) Add a new OperatingStatus state and map them all to libvirt states
>
> OperatingStatus state added:
> STARTED
>
> #2:
>   Fixed patch submission date
>
> #3:
>   Previous patches were setting the wrong provider variable (OperationalStatus).
>
> Signed-off-by: Richard Maciel <rmaciel at linux.vnet.ibm.com>
>
> diff -r 69ee9e708fe8 -r edde8b4607e9 src/Virt_ComputerSystem.c
> --- a/src/Virt_ComputerSystem.c	Thu Aug 13 13:51:34 2009 -0300
> +++ b/src/Virt_ComputerSystem.c	Thu Aug 13 14:50:20 2009 -0300
> @@ -187,6 +187,54 @@
>          }
>  }
>
> +static uint16_t state_lv_to_cim_oings(const char lv_state, const bool migrating)
> +{
> +        enum CIM_oping_status {
> +                CIM_OPING_STATUS_UNKNOWN = 0,
> +                CIM_OPING_STATUS_NOT_AVAILABLE = 1,
> +                CIM_OPING_STATUS_SERVICING = 2,
>   
What does SERVICING Mean ?
> +                CIM_OPING_STATUS_STARTING = 3,
> +                CIM_OPING_STATUS_STOPPING = 4,
>   
Whats the difference between STOPPED and STOPPING ?
> +                CIM_OPING_STATUS_STOPPED = 5,
> +                CIM_OPING_STATUS_ABORTED = 6,
> +                CIM_OPING_STATUS_DORMANT = 7,
> +                CIM_OPING_STATUS_COMPLETED = 8,
> +                CIM_OPING_STATUS_MIGRATING = 9,
> +                CIM_OPING_STATUS_EMIGRATING = 10,
>   
When does the VM go to CIM_OPING_STATUS_EMIGRATING state ?
> +                CIM_OPING_STATUS_IMMIGRATING = 11,
>   
When does the VM go to CIM_OPING_STATUS_IMMIGRATING state ?
> +                CIM_OPING_STATUS_SNAPSHOTTING = 12,
> +                CIM_OPING_STATUS_SHUTTING_DOWN = 13,
> +                CIM_OPING_STATUS_IN_TEST = 14,
> +                CIM_OPING_STATUS_TRANSITIONING = 15,
>   
Also,CIM_OPING_STATUS_IN_TEST , CIM_OPING_STATUS_TRANSITIONING?
> +                CIM_OPING_STATUS_IN_SERVICE = 16,
>   
Which SERVICE does the VM will be in to use the 
CIM_OPING_STATUS_IN_SERVICE State ?
> +                CIM_OPING_STATUS_STARTED = 32768,
> +        };
>   
Not all of these states used as of now in libvirt-cim providers aint ?
> +
> +        
> +        if (migrating)
> +                return CIM_OPING_STATUS_MIGRATING;
> +
> +        switch (lv_state) {
> +        case VIR_DOMAIN_NOSTATE:
> +        case VIR_DOMAIN_SHUTDOWN:
> +        case VIR_DOMAIN_SHUTOFF:
> +                return CIM_OPING_STATUS_STOPPED;
> +
> +        case VIR_DOMAIN_CRASHED:
> +                return CIM_OPING_STATUS_ABORTED;
> +
> +        case VIR_DOMAIN_RUNNING:
> +                return CIM_OPING_STATUS_STARTED;
> +
> +        case VIR_DOMAIN_BLOCKED:
> +        case VIR_DOMAIN_PAUSED:
> +                return CIM_OPING_STATUS_DORMANT;
> +
> +        default:
> +                return CIM_OPING_STATUS_UNKNOWN;
> +        }
> +}
> +
>  static uint16_t state_lv_to_cim_os(const char lv_state)
>  {
>          enum CIM_op_status {
> @@ -268,9 +316,11 @@
>          uint16_t health_state;
>          uint16_t req_state;
>          uint16_t op_status;
> +        uint16_t oping_status;
>          CMPIArray *array;
>          CMPIStatus s;
>          struct infostore_ctx *infostore = NULL;
> +        bool migrating = false;
>
>          ret = virDomainGetInfo(dom, &info);
>          if (ret != 0) 
> @@ -298,6 +348,14 @@
>                        (CMPIValue *)&array, CMPI_uint16A);
>
>          infostore = infostore_open(dom);
> +
> +        if (infostore != NULL) 
> +                migrating = infostore_get_bool(infostore, "migrating");
> +
> +        oping_status = state_lv_to_cim_oings((const int)info.state, migrating);
> +        CMSetProperty(instance, "OperatingStatus",
> +                      (CMPIValue *)&oping_status, CMPI_uint16);
> +
>          if (infostore != NULL)
>                  req_state = (uint16_t)infostore_get_u64(infostore, "reqstate");
>          else
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
>   

-- 
Thanks and Regards,
Deepti B. Kalakeri
IBM Linux Technology Center
deeptik at linux.vnet.ibm.com




More information about the Libvirt-cim mailing list