diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c index e00c66c25553aa236f99de8ab5507ce129f1887c..3bb5610d2fea3e72f60b39f1d8447eed08ffbc5a 100644 --- a/src/vmware/vmware_conf.c +++ b/src/vmware/vmware_conf.c @@ -35,6 +35,10 @@ #include "vmware_conf.h" #include "virstring.h" +VIR_ENUM_IMPL(vmwareDriver, VMWARE_DRIVER_LAST, + "player", + "ws"); + /* Free all memory associated with a vmware_driver structure */ void vmwareFreeDriver(struct vmware_driver *driver) @@ -141,7 +145,7 @@ vmwareLoadDomains(struct vmware_driver *driver) ctx.parseFileName = vmwareCopyVMXFileName; cmd = virCommandNewArgList(VMRUN, "-T", - driver->type == TYPE_PLAYER ? "player" : "ws", + vmwareDriverTypeToString(driver->type), "list", NULL); virCommandSetOutputBuffer(cmd, &outbuf); if (virCommandRun(cmd, NULL) < 0) @@ -221,8 +225,9 @@ vmwareExtractVersion(struct vmware_driver *driver) int ret = -1; virCommandPtr cmd; char * outbuf = NULL; - const char * bin = (driver->type == TYPE_PLAYER) ? "vmplayer" : "vmware"; - const char * pattern = (driver->type == TYPE_PLAYER) ? + const char * bin = (driver->type == VMWARE_DRIVER_PLAYER) ? + "vmplayer" : "vmware"; + const char * pattern = (driver->type == VMWARE_DRIVER_PLAYER) ? "VMware Player " : "VMware Workstation "; cmd = virCommandNewArgList(bin, "-v", NULL); diff --git a/src/vmware/vmware_conf.h b/src/vmware/vmware_conf.h index 6666eafaf72660a0b132efc6cb8e911e178e5c14..978f22bb57afe0c38e8fe49b3c492d89d03cd3ea 100644 --- a/src/vmware/vmware_conf.h +++ b/src/vmware/vmware_conf.h @@ -1,5 +1,6 @@ /*---------------------------------------------------------------------------*/ /* Copyright 2010, diateam (www.diateam.net) + * Copyright (c) 2013, Doug Goldstein (cardoe@cardoe.com) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -30,8 +31,14 @@ # define VIR_FROM_THIS VIR_FROM_VMWARE # define PROGRAM_SENTINEL ((char *)0x1) -# define TYPE_PLAYER 0 -# define TYPE_WORKSTATION 1 +enum vmwareDriverType { + VMWARE_DRIVER_PLAYER = 0, /* VMware Player */ + VMWARE_DRIVER_WORKSTATION = 1, /* VMware Workstation */ + + VMWARE_DRIVER_LAST, /* required last item */ +}; + +VIR_ENUM_DECL(vmwareDriver) struct vmware_driver { virMutex lock; diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c index 74591d6f8e73a1c10157fdbe66f4c444c4a59896..9d674b61a37059ba90e4cd45894e1daeb05ae3a7 100644 --- a/src/vmware/vmware_driver.c +++ b/src/vmware/vmware_driver.c @@ -35,8 +35,6 @@ #include "vmware_driver.h" #include "virstring.h" -static const char *vmw_types[] = { "player", "ws" }; - static void vmwareDriverLock(struct vmware_driver *driver) { @@ -133,7 +131,7 @@ vmwareConnectOpen(virConnectPtr conn, goto cleanup; driver->type = STRNEQ(conn->uri->scheme, "vmwareplayer") ? - TYPE_WORKSTATION : TYPE_PLAYER; + VMWARE_DRIVER_WORKSTATION : VMWARE_DRIVER_PLAYER; if (!(driver->domains = virDomainObjListNew())) goto cleanup; @@ -202,7 +200,8 @@ vmwareUpdateVMStatus(struct vmware_driver *driver, virDomainObjPtr vm) int newState; int ret = -1; - cmd = virCommandNewArgList(VMRUN, "-T", vmw_types[driver->type], + cmd = virCommandNewArgList(VMRUN, "-T", + vmwareDriverTypeToString(driver->type), "list", NULL); virCommandSetOutputBuffer(cmd, &outbuf); if (virCommandRun(cmd, NULL) < 0) @@ -256,7 +255,7 @@ vmwareStopVM(struct vmware_driver *driver, PROGRAM_SENTINEL, "soft", NULL }; - vmwareSetSentinal(cmd, vmw_types[driver->type]); + vmwareSetSentinal(cmd, vmwareDriverTypeToString(driver->type)); vmwareSetSentinal(cmd, ((vmwareDomainPtr) vm->privateData)->vmxPath); if (virRun(cmd, NULL) < 0) { @@ -284,7 +283,7 @@ vmwareStartVM(struct vmware_driver *driver, virDomainObjPtr vm) return -1; } - vmwareSetSentinal(cmd, vmw_types[driver->type]); + vmwareSetSentinal(cmd, vmwareDriverTypeToString(driver->type)); vmwareSetSentinal(cmd, vmxPath); if (!((vmwareDomainPtr) vm->privateData)->gui) vmwareSetSentinal(cmd, NOGUI); @@ -451,7 +450,7 @@ vmwareDomainSuspend(virDomainPtr dom) }; int ret = -1; - if (driver->type == TYPE_PLAYER) { + if (driver->type == VMWARE_DRIVER_PLAYER) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("vmplayer does not support libvirt suspend/resume" " (vmware pause/unpause) operation ")); @@ -468,7 +467,7 @@ vmwareDomainSuspend(virDomainPtr dom) goto cleanup; } - vmwareSetSentinal(cmd, vmw_types[driver->type]); + vmwareSetSentinal(cmd, vmwareDriverTypeToString(driver->type)); vmwareSetSentinal(cmd, ((vmwareDomainPtr) vm->privateData)->vmxPath); if (virDomainObjGetState(vm, NULL) != VIR_DOMAIN_RUNNING) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -500,7 +499,7 @@ vmwareDomainResume(virDomainPtr dom) }; int ret = -1; - if (driver->type == TYPE_PLAYER) { + if (driver->type == VMWARE_DRIVER_PLAYER) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("vmplayer does not support libvirt suspend/resume " "(vmware pause/unpause) operation ")); @@ -517,7 +516,7 @@ vmwareDomainResume(virDomainPtr dom) goto cleanup; } - vmwareSetSentinal(cmd, vmw_types[driver->type]); + vmwareSetSentinal(cmd, vmwareDriverTypeToString(driver->type)); vmwareSetSentinal(cmd, ((vmwareDomainPtr) vm->privateData)->vmxPath); if (virDomainObjGetState(vm, NULL) != VIR_DOMAIN_PAUSED) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -562,7 +561,7 @@ vmwareDomainReboot(virDomainPtr dom, unsigned int flags) } vmxPath = ((vmwareDomainPtr) vm->privateData)->vmxPath; - vmwareSetSentinal(cmd, vmw_types[driver->type]); + vmwareSetSentinal(cmd, vmwareDriverTypeToString(driver->type)); vmwareSetSentinal(cmd, vmxPath); if (vmwareUpdateVMStatus(driver, vm) < 0)