[libvirt] [PATCH] esx: Implement esxDomainGetMetadata for VIR_DOMAIN_METADATA_DESCRIPTION

--- src/esx/esx_driver.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index b23e7f6..f53b9c4 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -5211,6 +5211,52 @@ no_memory: #undef MATCH + +static char * +esxDomainGetMetadata(virDomainPtr domain, int type, + const char *uri ATTRIBUTE_UNUSED, + unsigned int flags) +{ + char *result = NULL; + esxPrivate *priv = domain->conn->privateData; + esxVI_String *propertyNameList = NULL; + esxVI_ObjectContent *virtualMachine = NULL; + + if (flags != VIR_DOMAIN_AFFECT_LIVE) { + virReportError(VIR_ERR_INVALID_ARG, _("unsupported flags: (0x%x)"), flags); + return NULL; + } + + if (type != VIR_DOMAIN_METADATA_DESCRIPTION) { + virReportError(VIR_ERR_NO_DOMAIN_METADATA, "%s", + _("Requested metadata element is not supported")); + return NULL; + } + + if (esxVI_EnsureSession(priv->primary) < 0) { + return NULL; + } + + if (esxVI_String_AppendValueToList(&propertyNameList, + "summary.config.annotation") < 0 || + esxVI_LookupVirtualMachineByUuid(priv->primary, domain->uuid, + propertyNameList, &virtualMachine, + esxVI_Occurrence_RequiredItem) < 0 || + esxVI_GetStringValue(virtualMachine, "summary.config.annotation", + &result, esxVI_Occurrence_RequiredItem) < 0 || + VIR_STRDUP(result, result) < 0) { + goto cleanup; + } + + cleanup: + esxVI_String_Free(&propertyNameList); + esxVI_ObjectContent_Free(&virtualMachine); + + return result; +} + + + static virDriver esxDriver = { .no = VIR_DRV_ESX, .name = "ESX", @@ -5288,6 +5334,7 @@ static virDriver esxDriver = { .domainSnapshotHasMetadata = esxDomainSnapshotHasMetadata, /* 0.9.13 */ .domainSnapshotDelete = esxDomainSnapshotDelete, /* 0.8.0 */ .connectIsAlive = esxConnectIsAlive, /* 0.9.8 */ + .domainGetMetadata = esxDomainGetMetadata, /* 1.0.6 */ }; -- 1.7.9.5

On 05/18/2013 04:00 PM, Matthias Bolte wrote:
--- src/esx/esx_driver.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+)
diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index b23e7f6..f53b9c4 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -5211,6 +5211,52 @@ no_memory: #undef MATCH
+ +static char * +esxDomainGetMetadata(virDomainPtr domain, int type, + const char *uri ATTRIBUTE_UNUSED, + unsigned int flags) +{ + char *result = NULL; + esxPrivate *priv = domain->conn->privateData; + esxVI_String *propertyNameList = NULL; + esxVI_ObjectContent *virtualMachine = NULL; + + if (flags != VIR_DOMAIN_AFFECT_LIVE) { + virReportError(VIR_ERR_INVALID_ARG, _("unsupported flags: (0x%x)"), flags); + return NULL; + }
Are you intentionally rejecting VIR_DOMAIN_AFFECT_CURRENT? ACK if you can answer why or fix that. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
participants (2)
-
Eric Blake
-
Matthias Bolte