[libvirt] [PATCH 12/13] esx: Destroy virtual machine on a vCenter if available

Daniel Veillard veillard at redhat.com
Thu Dec 17 10:00:37 UTC 2009


On Sun, Dec 13, 2009 at 12:20:49AM +0100, Matthias Bolte wrote:
> If a virtual machine is destroyed on a ESX server then immediately
> undefining this virtual machine on a vCenter may fail, because the
> vCenter has not been informed about the status change yet. Therefore,
> destroy a virtual machine on a vCenter if available, so the vCenter
> is up-to-date when the virtual machine should be undefined.
> ---
>  src/esx/esx_driver.c |   20 +++++++++++++-------
>  1 files changed, 13 insertions(+), 7 deletions(-)
> 
> diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c
> index 98b8e91..7792291 100644
> --- a/src/esx/esx_driver.c
> +++ b/src/esx/esx_driver.c
> @@ -1499,21 +1499,28 @@ esxDomainDestroy(virDomainPtr domain)
>  {
>      int result = 0;
>      esxPrivate *priv = (esxPrivate *)domain->conn->privateData;
> +    esxVI_Context *ctx = NULL;
>      esxVI_ObjectContent *virtualMachine = NULL;
>      esxVI_String *propertyNameList = NULL;
>      esxVI_VirtualMachinePowerState powerState;
>      esxVI_ManagedObjectReference *task = NULL;
>      esxVI_TaskInfoState taskInfoState;
>  
> -    if (esxVI_EnsureSession(domain->conn, priv->host) < 0) {
> +    if (priv->vCenter != NULL) {
> +        ctx = priv->vCenter;
> +    } else {
> +        ctx = priv->host;
> +    }
> +
> +    if (esxVI_EnsureSession(domain->conn, ctx) < 0) {
>          goto failure;
>      }
>  
>      if (esxVI_String_AppendValueToList(domain->conn, &propertyNameList,
>                                         "runtime.powerState") < 0 ||
>          esxVI_LookupVirtualMachineByUuidAndPrepareForTask
> -          (domain->conn, priv->host, domain->uuid, propertyNameList,
> -           &virtualMachine, priv->autoAnswer) < 0 ||
> +          (domain->conn, ctx, domain->uuid, propertyNameList, &virtualMachine,
> +           priv->autoAnswer) < 0 ||
>          esxVI_GetVirtualMachinePowerState(domain->conn, virtualMachine,
>                                            &powerState) < 0) {
>          goto failure;
> @@ -1525,11 +1532,10 @@ esxDomainDestroy(virDomainPtr domain)
>          goto failure;
>      }
>  
> -    if (esxVI_PowerOffVM_Task(domain->conn, priv->host, virtualMachine->obj,
> +    if (esxVI_PowerOffVM_Task(domain->conn, ctx, virtualMachine->obj,
>                                &task) < 0 ||
> -        esxVI_WaitForTaskCompletion(domain->conn, priv->host, task,
> -                                    domain->uuid, priv->autoAnswer,
> -                                    &taskInfoState) < 0) {
> +        esxVI_WaitForTaskCompletion(domain->conn, ctx, task, domain->uuid,
> +                                    priv->autoAnswer, &taskInfoState) < 0) {
>          goto failure;
>      }
>  

  Okay, similar, c.f. my question on previous patch :-)

   ACK

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list