]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
parallels: Introduce parallelsDomObjFromDomain()
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 22 Apr 2015 16:10:50 +0000 (18:10 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 23 Apr 2015 12:21:42 +0000 (14:21 +0200)
This function is practically copied over from qemu driver. Its
only purpose in life is to lookup a domain object and print an
error if no object is found.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/parallels/parallels_utils.c
src/parallels/parallels_utils.h

index 8a3caa4864cd35c2d156aed56b3eec4ba3a8a926..ff9d47d9d8bd6b3ee18d5fae439906da37c51203 100644 (file)
 #include "virjson.h"
 #include "parallels_utils.h"
 #include "virstring.h"
+#include "datatypes.h"
 
 #define VIR_FROM_THIS VIR_FROM_PARALLELS
 
+/**
+ * parallelsDomObjFromDomain:
+ * @domain: Domain pointer that has to be looked up
+ *
+ * This function looks up @domain and returns the appropriate virDomainObjPtr
+ * that has to be unlocked by virObjectUnlock().
+ *
+ * Returns the domain object without incremented reference counter which is locked
+ * on success, NULL otherwise.
+ */
+virDomainObjPtr
+parallelsDomObjFromDomain(virDomainPtr domain)
+{
+    virDomainObjPtr vm;
+    parallelsConnPtr privconn = domain->conn->privateData;
+    char uuidstr[VIR_UUID_STRING_BUFLEN];
+
+    vm = virDomainObjListFindByUUID(privconn->domains, domain->uuid);
+    if (!vm) {
+        virUUIDFormat(domain->uuid, uuidstr);
+        virReportError(VIR_ERR_NO_DOMAIN,
+                       _("no domain with matching uuid '%s' (%s)"),
+                       uuidstr, domain->name);
+        return NULL;
+    }
+
+    return vm;
+
+}
+
+
 static int
 parallelsDoCmdRun(char **outbuf, const char *binary, va_list list)
 {
index 4797794661db672414c0530532480f27480d1e92..8bbfe8588e9a96400a6dc4662bf36ba3bfe3146d 100644 (file)
@@ -91,6 +91,8 @@ virDrvOpenStatus parallelsNetworkOpen(virConnectPtr conn, unsigned int flags);
 int parallelsNetworkClose(virConnectPtr conn);
 extern virNetworkDriver parallelsNetworkDriver;
 
+virDomainObjPtr parallelsDomObjFromDomain(virDomainPtr domain);
+
 virJSONValuePtr parallelsParseOutput(const char *binary, ...)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_SENTINEL;
 char * parallelsGetOutput(const char *binary, ...)