From b291cb5e90194615f07bbb42aed4ad0b2f6156ac Mon Sep 17 00:00:00 2001 From: Roman Bogorodskiy Date: Sun, 6 Apr 2014 10:07:58 +0400 Subject: [PATCH] bhyve: add domain metadata support Implement domainSetMetadata and domainGetMetadata driver calls. --- src/bhyve/bhyve_driver.c | 65 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index e48528f475..7187202dad 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -801,6 +801,69 @@ bhyveDomainOpenConsole(virDomainPtr dom, return ret; } +static int +bhyveDomainSetMetadata(virDomainPtr dom, + int type, + const char *metadata, + const char *key, + const char *uri, + unsigned int flags) +{ + bhyveConnPtr privconn = dom->conn->privateData; + virDomainObjPtr vm; + virCapsPtr caps = NULL; + int ret = -1; + + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG, -1); + + if (!(vm = bhyveDomObjFromDomain(dom))) + return -1; + + if (virDomainSetMetadataEnsureACL(dom->conn, vm->def, flags) < 0) + goto cleanup; + + if (!(caps = bhyveDriverGetCapabilities(privconn))) + goto cleanup; + + ret = virDomainObjSetMetadata(vm, type, metadata, key, uri, caps, + privconn->xmlopt, BHYVE_CONFIG_DIR, flags); + + cleanup: + virObjectUnref(caps); + virObjectUnlock(vm); + return ret; +} + +static char * +bhyveDomainGetMetadata(virDomainPtr dom, + int type, + const char *uri, + unsigned int flags) +{ + bhyveConnPtr privconn = dom->conn->privateData; + virDomainObjPtr vm; + virCapsPtr caps = NULL; + char *ret = NULL; + + if (!(vm = bhyveDomObjFromDomain(dom))) + return NULL; + + if (virDomainGetMetadataEnsureACL(dom->conn, vm->def) < 0) + goto cleanup; + + if (!(caps = bhyveDriverGetCapabilities(privconn))) + goto cleanup; + + ret = virDomainObjGetMetadata(vm, type, uri, caps, + privconn->xmlopt, flags); + + cleanup: + virObjectUnref(caps); + virObjectUnlock(vm); + return ret; +} + static int bhyveNodeGetCPUStats(virConnectPtr conn, int cpuNum, @@ -1067,6 +1130,8 @@ static virDriver bhyveDriver = { .domainGetAutostart = bhyveDomainGetAutostart, /* 1.2.4 */ .domainSetAutostart = bhyveDomainSetAutostart, /* 1.2.4 */ .domainOpenConsole = bhyveDomainOpenConsole, /* 1.2.4 */ + .domainSetMetadata = bhyveDomainSetMetadata, /* 1.2.4 */ + .domainGetMetadata = bhyveDomainGetMetadata, /* 1.2.4 */ .nodeGetCPUStats = bhyveNodeGetCPUStats, /* 1.2.2 */ .nodeGetMemoryStats = bhyveNodeGetMemoryStats, /* 1.2.2 */ .nodeGetInfo = bhyveNodeGetInfo, /* 1.2.3 */ -- GitLab