[Libvirt-cim] [PATCH] Fix behavior of calling RequestStateChange() with DISABLED state
Richard Maciel
rmaciel at linux.vnet.ibm.com
Mon Aug 10 17:21:55 UTC 2009
+1
On 08/07/2009 07:57 PM, Kaitlin Rupert wrote:
> # HG changeset patch
> # User Kaitlin Rupert<karupert at us.ibm.com>
> # Date 1249685637 25200
> # Node ID b3412cf292d12512a3c6c6f9e266cfbaaa437fef
> # Parent 2cb7c25bb35e7cb7b532ed78a43a3f27cb9fcf4f
> Fix behavior of calling RequestStateChange() with DISABLED state...
>
> According to the CIM_EnabledLogicalElement mof, a disabled request should
> immediately disconnect the guest. Currently, the provider calls a shutdown.
>
> This patch changes the behavior so that DISABLED calls virDomainDestroy() and
> SHUTDOWN continues to call virDomainShutdown() as expected.
>
> Signed-off-by: Kaitlin Rupert<karupert at us.ibm.com>
>
> diff -r 2cb7c25bb35e -r b3412cf292d1 src/Virt_ComputerSystem.c
> --- a/src/Virt_ComputerSystem.c Thu Aug 06 16:53:24 2009 -0700
> +++ b/src/Virt_ComputerSystem.c Fri Aug 07 15:53:57 2009 -0700
> @@ -943,16 +943,41 @@
> switch (info->state) {
> case VIR_DOMAIN_RUNNING:
> case VIR_DOMAIN_BLOCKED:
> - CU_DEBUG("Stop domain");
> + CU_DEBUG("Disable domain");
> + if (virDomainDestroy(dom) != 0)
> + virt_set_status(_BROKER,&s,
> + CMPI_RC_ERR_FAILED,
> + virDomainGetConnect(dom),
> + "Unable to disable domain");
> + break;
> + default:
> + CU_DEBUG("Cannot go to disabled state from %i", info->state);
> + cu_statusf(_BROKER,&s,
> + CMPI_RC_ERR_FAILED,
> + "Invalid state transition");
> + };
> +
> + return s;
> +}
> +
> +static CMPIStatus state_change_shutdown(virDomainPtr dom, virDomainInfoPtr info)
> +{
> + CMPIStatus s = {CMPI_RC_OK, NULL};
> +
> + info->state = adjust_state_xen(dom, info->state);
> +
> + switch (info->state) {
> + case VIR_DOMAIN_RUNNING:
> + case VIR_DOMAIN_BLOCKED:
> + CU_DEBUG("Shudown domain");
> if (virDomainShutdown(dom) != 0)
> virt_set_status(_BROKER,&s,
> CMPI_RC_ERR_FAILED,
> virDomainGetConnect(dom),
> - "Unable to stop domain");
> + "Unable to shutdown domain");
> break;
> default:
> - CU_DEBUG("Cannot go to disabled/shutdown state from %i",
> - info->state);
> + CU_DEBUG("Cannot go to shutdown state from %i", info->state);
> cu_statusf(_BROKER,&s,
> CMPI_RC_ERR_FAILED,
> "Invalid state transition");
> @@ -1067,8 +1092,10 @@
>
> if (state == CIM_STATE_ENABLED)
> s = state_change_enable(dom,&info);
> - else if ((state == CIM_STATE_DISABLED) || (state == CIM_STATE_SHUTDOWN))
> + else if (state == CIM_STATE_DISABLED)
> s = state_change_disable(dom,&info);
> + else if (state == CIM_STATE_SHUTDOWN)
> + s = state_change_shutdown(dom,&info);
> else if (state == CIM_STATE_PAUSED)
> s = state_change_pause(dom,&info);
> else if (state == CIM_STATE_REBOOT)
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
--
Richard Maciel, MSc
IBM Linux Technology Center
rmaciel at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list