[Libvirt-cim] [PATCH] Set default VM autostart value

Chip Vincent cvincent at linux.vnet.ibm.com
Thu Jul 29 15:03:22 UTC 2010


+1

Sharad Mishra wrote:
> # HG changeset patch
> # User Sharad Mishra <snmishra at us.ibm.com>
> # Date 1279843221 25200
> # Node ID d054bf0cab617f6ea47604d6bca11261961a1e73
> # Parent  10160de3a1384c2c3dd9ac95d4aec3e3bece3050
> Set default VM autostart value.
>
> This patch fixes the issue of no default showing up for VMs that were created without autostart flag.
>
> Signed-off-by: Sharad Mishra <snmishra at us.ibm.com>
>
> diff -r 10160de3a138 -r d054bf0cab61 libxkutil/device_parsing.h
> --- a/libxkutil/device_parsing.h	Thu Jul 15 15:37:05 2010 -0700
> +++ b/libxkutil/device_parsing.h	Thu Jul 22 17:00:21 2010 -0700
> @@ -135,6 +135,7 @@
>          char *name;
>          char *typestr; /*xen, kvm, etc */
>          char *uuid;
> +        int autostart;
>          char *bootloader;
>          char *bootloader_args;
>          char *clock;
> diff -r 10160de3a138 -r d054bf0cab61 schema/ComputerSystem.mof
> --- a/schema/ComputerSystem.mof	Thu Jul 15 15:37:05 2010 -0700
> +++ b/schema/ComputerSystem.mof	Thu Jul 22 17:00:21 2010 -0700
> @@ -11,7 +11,7 @@
>     string UUID;
>
>     [Description("Flag to set VM autostart.")]
> -   boolean autoStart;
> +   string autoStart;
>
>  };
>
> @@ -27,7 +27,7 @@
>     string UUID;
>
>     [Description("Flag to set VM autostart.")]
> -   boolean autoStart;
> +   string autoStart;
>
>  };
>
> @@ -43,7 +43,7 @@
>     string UUID;
>
>     [Description("Flag to set VM autostart.")]
> -   boolean autoStart;
> +   string autoStart;
>
>  };
>
> diff -r 10160de3a138 -r d054bf0cab61 src/Virt_ComputerSystem.c
> --- a/src/Virt_ComputerSystem.c	Thu Jul 15 15:37:05 2010 -0700
> +++ b/src/Virt_ComputerSystem.c	Thu Jul 22 17:00:21 2010 -0700
> @@ -65,6 +65,33 @@
>          return 1;
>  }
>
> +/* Set the "autoStart" property of an instance from a domain */
> +static int set_autostart_from_dom(virDomainPtr dom, 
> +                                  CMPIInstance *instance, 
> +                                  struct domain *dominfo)
> +{
> +        int autoFlag = 0;
> +        char autovalue[16];
> +
> +        if((virDomainGetAutostart(dom, &autoFlag)) == -1) {
> +                CU_DEBUG("Could not read autostart value from xml");
> +        } else {
> +                CU_DEBUG("Autostart for current domain is set to %d", 
> +                         autoFlag);
> +                dominfo->autostart = autoFlag;
> +        }
> +
> +        if(autoFlag)
> +                strcpy(autovalue, "enable");
> +        else
> +                strcpy(autovalue, "disable");
> +
> +        CMSetProperty(instance, "autoStart",
> +                      (CMPIValue *)autovalue, CMPI_chars);
> +
> +        return 1;
> +}
> +
>  /* Set the "UUID" property of an instance from a domain */
>  static int set_uuid_from_dom(virDomainPtr dom, 
>                               CMPIInstance *instance, 
> @@ -499,6 +526,15 @@
>                  goto out;
>          }
>
> +        if (!set_autostart_from_dom(dom, instance, domain)) {
> +                virt_set_status(broker, &s,
> +                                CMPI_RC_ERR_FAILED,
> +                                virDomainGetConnect(dom),
> +                                "Unable to get domain autostart flag");
> +
> +                goto out;
> +        }
> +
>          if (!set_uuid_from_dom(dom, instance, &uuid)) {
>                  virt_set_status(broker, &s,
>                                  CMPI_RC_ERR_FAILED,
> diff -r 10160de3a138 -r d054bf0cab61 src/Virt_VirtualSystemManagementService.c
> --- a/src/Virt_VirtualSystemManagementService.c	Thu Jul 15 15:37:05 2010 -0700
> +++ b/src/Virt_VirtualSystemManagementService.c	Thu Jul 22 17:00:21 2010 -0700
> @@ -1356,7 +1356,8 @@
>          virDomainPtr dom;
>          const char *name;
>          CMPIInstance *inst = NULL;
> -        bool autoStartFlag = false;
> +        const char *autoStartFlag = NULL;
> +        int autoflag;
>
>          conn = connect_by_classname(_BROKER, CLASSNAME(ref), s);
>          if (conn == NULL) {
> @@ -1374,9 +1375,14 @@
>                  goto out;
>          }
>
> -        if (cu_get_bool_prop(inst, "autoStart", &autoStartFlag) != CMPI_RC_OK)
> -                autoStartFlag = false;
> -        if(virDomainSetAutostart(dom, (autoStartFlag) ? 1 : 0) == -1)
> +        if (cu_get_str_prop(inst, "autoStart", &autoStartFlag) != CMPI_RC_OK)
> +                autoStartFlag = strdup("disable");
> +        
> +        if (STREQ(autoStartFlag, "enable"))
> +                autoflag = 1;
> +        else
> +                autoflag = 0;	
> +        if((virDomainSetAutostart(dom, autoflag)) == -1)
>                  CU_DEBUG("Failed to set autostart flag.");
>
>          name = virDomainGetName(dom);
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
>   


-- 
Chip Vincent
Open Virtualization, Linux Technology Center
IBM Systems & Technology Group
phone: 919-254-4482, T/L 444-4482
email: cvincent at us.ibm.com




More information about the Libvirt-cim mailing list