]> xenbits.xensource.com Git - libvirt.git/commitdiff
virDomainCreateXML: support new flag
authorEric Blake <eblake@redhat.com>
Tue, 25 May 2010 17:13:13 +0000 (11:13 -0600)
committerEric Blake <eblake@redhat.com>
Tue, 8 Jun 2010 21:35:55 +0000 (15:35 -0600)
* include/libvirt/libvirt.h.in (virDomainCreateFlags): Add
VIR_DOMAIN_START_PAUSED.
* src/libvirt.c (virDomainCreateXML): Update documentation.
* src/lxc/lxc_driver.c (lxcDomainCreateAndStart): Reject new flag
as unimplemented.
* src/opennebula/one_driver.c (oneDomainCreateAndStart):
Likewise.
* src/openvz/openvz_driver.c (openvzDomainCreateXML): Likewise.
* src/phyp/phyp_driver.c (phypDomainCreateAndStart): Likewise.
* src/qemu/qemu_driver.c (qemudDomainCreate): Likewise.
* src/test/test_driver.c (testDomainCreateXML): Likewise.
* src/uml/uml_driver.c (umlDomainCreate): Likewise.
* src/vbox/vbox_tmpl.c (vboxDomainCreateXML): Likewise.
* src/xen/xend_internal.c (xenDaemonCreateXML): Likewise.
* src/xenapi/xenapi_driver.c (xenapiDomainCreateXML): Likewise.

12 files changed:
include/libvirt/libvirt.h.in
src/libvirt.c
src/lxc/lxc_driver.c
src/opennebula/one_driver.c
src/openvz/openvz_driver.c
src/phyp/phyp_driver.c
src/qemu/qemu_driver.c
src/test/test_driver.c
src/uml/uml_driver.c
src/vbox/vbox_tmpl.c
src/xen/xend_internal.c
src/xenapi/xenapi_driver.c

index 19d5205885c18e0a6ffaf7e48e0a34dc031863e0..81bfa1a8796fb00f573be72ce52bf7279c8ffd23 100644 (file)
@@ -121,7 +121,8 @@ typedef virDomainInfo *virDomainInfoPtr;
  * Domain.
  */
 typedef enum {
-     VIR_DOMAIN_NONE = 0
+    VIR_DOMAIN_NONE         = 0,      /* Default behavior */
+    VIR_DOMAIN_START_PAUSED = 1 << 0, /* Launch guest in paused state */
 } virDomainCreateFlags;
 
 
index 9d42c76ef124a0449dbccef8897b3c494225786d..2754fd03174fdc678ac0847d725e2847f94c2ced 100644 (file)
@@ -1917,7 +1917,7 @@ virDomainGetConnect (virDomainPtr dom)
  * virDomainCreateXML:
  * @conn: pointer to the hypervisor connection
  * @xmlDesc: string containing an XML description of the domain
- * @flags: callers should always pass 0
+ * @flags: bitwise-or of supported virDomainCreateFlags
  *
  * Launch a new guest domain, based on an XML description similar
  * to the one returned by virDomainGetXMLDesc()
index 14a8b2abaa331c7de76315a269c52e7f832995a9..c3f65cb9b21510361d14f57b9a4e61fedeb45521 100644 (file)
@@ -1,4 +1,5 @@
 /*
+ * Copyright (C) 2010 Red Hat, Inc.
  * Copyright IBM Corp. 2008
  *
  * lxc_driver.c: linux container driver functions
@@ -1404,7 +1405,7 @@ cleanup:
  * lxcDomainCreateAndStart:
  * @conn: pointer to connection
  * @xml: XML definition of domain
- * @flags: Unused
+ * @flags: Must be 0 for now
  *
  * Creates a domain based on xml and starts it
  *
@@ -1413,13 +1414,15 @@ cleanup:
 static virDomainPtr
 lxcDomainCreateAndStart(virConnectPtr conn,
                         const char *xml,
-                        unsigned int flags ATTRIBUTE_UNUSED) {
+                        unsigned int flags) {
     lxc_driver_t *driver = conn->privateData;
     virDomainObjPtr vm = NULL;
     virDomainDefPtr def;
     virDomainPtr dom = NULL;
     virDomainEventPtr event = NULL;
 
+    virCheckFlags(0, NULL);
+
     lxcDriverLock(driver);
     if (!(def = virDomainDefParseString(driver->caps, xml,
                                         VIR_DOMAIN_XML_INACTIVE)))
index acd52c2c95ef88fa62f6bec18cc3602ac249fac8..fd99f0b2e51c13f07164c63df2dcf0b6c5331a8e 100644 (file)
@@ -1,5 +1,7 @@
 /*---------------------------------------------------------------------------*/
-/* Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
+/*
+ * Copyright (C) 2010 Red Hat, Inc.
+ * Copyright 2002-2009, Distributed Systems Architecture Group, Universidad
  * Complutense de Madrid (dsa-research.org)
  *
  * This library is free software; you can redistribute it and/or
@@ -435,13 +437,15 @@ return_point:
 static virDomainPtr
 oneDomainCreateAndStart(virConnectPtr conn,
                         const char *xml,
-                        unsigned int flags ATTRIBUTE_UNUSED) {
+                        unsigned int flags) {
     one_driver_t *driver = conn->privateData;
     virDomainObjPtr vm = NULL;
     virDomainDefPtr def;
     virDomainPtr dom = NULL;
     int oneid;
 
+    virCheckFlags(0, NULL);
+
     oneDriverLock(driver);
     if (!(def = virDomainDefParseString(driver->caps, xml,
                                         VIR_DOMAIN_XML_INACTIVE)))
index ce159d0084f0de00885e1948e39a989bda8f3f9b..2dd27d9af796dfd0eecf1514f08309cb9d084793 100644 (file)
@@ -873,7 +873,7 @@ cleanup:
 
 static virDomainPtr
 openvzDomainCreateXML(virConnectPtr conn, const char *xml,
-                      unsigned int flags ATTRIBUTE_UNUSED)
+                      unsigned int flags)
 {
     struct openvz_driver *driver =  conn->privateData;
     virDomainDefPtr vmdef = NULL;
@@ -881,6 +881,8 @@ openvzDomainCreateXML(virConnectPtr conn, const char *xml,
     virDomainPtr dom = NULL;
     const char *progstart[] = {VZCTL, "--quiet", "start", PROGRAM_SENTINAL, NULL};
 
+    virCheckFlags(0, NULL);
+
     openvzDriverLock(driver);
     if ((vmdef = virDomainDefParseString(driver->caps, xml,
                                          VIR_DOMAIN_XML_INACTIVE)) == NULL)
index f8bea421e63006ac46dd7d2285c62c29d56507a8..0f4bc20028eadc066fc23e24c36fdb4200034195 100644 (file)
@@ -1397,7 +1397,7 @@ phypDomainDestroy(virDomainPtr dom)
 static virDomainPtr
 phypDomainCreateAndStart(virConnectPtr conn,
                          const char *xml,
-                         unsigned int flags ATTRIBUTE_UNUSED)
+                         unsigned int flags)
 {
 
     ConnectionData *connection_data = conn->networkPrivateData;
@@ -1410,6 +1410,8 @@ phypDomainCreateAndStart(virConnectPtr conn,
     unsigned int i = 0;
     char *managed_system = phyp_driver->managed_system;
 
+    virCheckFlags(0, NULL);
+
     if (!(def = virDomainDefParseString(phyp_driver->caps, xml,
                                         VIR_DOMAIN_XML_SECURE)))
         goto err;
index 77a956258d221f42380e1102a331ecd1e11a5c86..11bd2c2e477e3c4020aac4f1a4ab473a75478595 100644 (file)
@@ -4181,13 +4181,15 @@ static int qemudNumDomains(virConnectPtr conn) {
 }
 
 static virDomainPtr qemudDomainCreate(virConnectPtr conn, const char *xml,
-                                      unsigned int flags ATTRIBUTE_UNUSED) {
+                                      unsigned int flags) {
     struct qemud_driver *driver = conn->privateData;
     virDomainDefPtr def;
     virDomainObjPtr vm = NULL;
     virDomainPtr dom = NULL;
     virDomainEventPtr event = NULL;
 
+    virCheckFlags(0, NULL);
+
     qemuDriverLock(driver);
     if (!(def = virDomainDefParseString(driver->caps, xml,
                                         VIR_DOMAIN_XML_INACTIVE)))
index 395c8c9b07a31525292e89f33b08b8758bc614b1..5b8105df1e16d941323d9ee0e3eb1291180122bd 100644 (file)
@@ -1287,7 +1287,7 @@ cleanup:
 
 static virDomainPtr
 testDomainCreateXML(virConnectPtr conn, const char *xml,
-                      unsigned int flags ATTRIBUTE_UNUSED)
+                      unsigned int flags)
 {
     testConnPtr privconn = conn->privateData;
     virDomainPtr ret = NULL;
@@ -1295,6 +1295,8 @@ testDomainCreateXML(virConnectPtr conn, const char *xml,
     virDomainObjPtr dom = NULL;
     virDomainEventPtr event = NULL;
 
+    virCheckFlags(0, NULL);
+
     testDriverLock(privconn);
     if ((def = virDomainDefParseString(privconn->caps, xml,
                                        VIR_DOMAIN_XML_INACTIVE)) == NULL)
index c6d8b65b4434f69dc74dea29bb1a6da06a430a18..31112115c129a84ccc248d257f16649d08623561 100644 (file)
@@ -1262,12 +1262,14 @@ static int umlNumDomains(virConnectPtr conn) {
     return n;
 }
 static virDomainPtr umlDomainCreate(virConnectPtr conn, const char *xml,
-                                      unsigned int flags ATTRIBUTE_UNUSED) {
+                                      unsigned int flags) {
     struct uml_driver *driver = conn->privateData;
     virDomainDefPtr def;
     virDomainObjPtr vm = NULL;
     virDomainPtr dom = NULL;
 
+    virCheckFlags(0, NULL);
+
     umlDriverLock(driver);
     if (!(def = virDomainDefParseString(driver->caps, xml,
                                         VIR_DOMAIN_XML_INACTIVE)))
index f70f3b39348f1af5905bdff2b73ca8e851a3893d..1372f963840cd97ce56bb9022abca9bf0670bdf4 100644 (file)
@@ -991,7 +991,7 @@ cleanup:
 }
 
 static virDomainPtr vboxDomainCreateXML(virConnectPtr conn, const char *xml,
-                                        unsigned int flags ATTRIBUTE_UNUSED) {
+                                        unsigned int flags) {
     /* VirtualBox currently doesn't have support for running
      * virtual machines without actually defining them and thus
      * for time being just define new machine and start it.
@@ -1000,7 +1000,11 @@ static virDomainPtr vboxDomainCreateXML(virConnectPtr conn, const char *xml,
      * change this behaviour to the expected one.
      */
 
-    virDomainPtr dom = vboxDomainDefineXML(conn, xml);
+    virDomainPtr dom;
+
+    virCheckFlags(0, NULL);
+
+    dom = vboxDomainDefineXML(conn, xml);
     if (dom == NULL)
         return NULL;
 
index 51cad92af56bfb02bc1d9d99ca38296c047c50f8..a22d32b71c21f2202396f3db9a7c583763040b1d 100644 (file)
@@ -3788,7 +3788,7 @@ xenDaemonLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
  */
 static virDomainPtr
 xenDaemonCreateXML(virConnectPtr conn, const char *xmlDesc,
-                     unsigned int flags ATTRIBUTE_UNUSED)
+                     unsigned int flags)
 {
     int ret;
     char *sexpr;
@@ -3796,6 +3796,8 @@ xenDaemonCreateXML(virConnectPtr conn, const char *xmlDesc,
     xenUnifiedPrivatePtr priv;
     virDomainDefPtr def;
 
+    virCheckFlags(0, NULL);
+
     priv = (xenUnifiedPrivatePtr) conn->privateData;
 
     if (!(def = virDomainDefParseString(priv->caps,
index 7ef03cb2f69fe8fab31459b57e21e91fb3f82021..e3bcb63465ef0cc98e2324688ab382e8a2c1f9d0 100644 (file)
@@ -479,7 +479,7 @@ xenapiNumOfDomains (virConnectPtr conn)
 static virDomainPtr
 xenapiDomainCreateXML (virConnectPtr conn,
                        const char *xmlDesc,
-                       unsigned int flags ATTRIBUTE_UNUSED)
+                       unsigned int flags)
 {
     xen_vm_record *record = NULL;
     xen_vm vm = NULL;
@@ -489,6 +489,8 @@ xenapiDomainCreateXML (virConnectPtr conn,
     if (!caps)
         return NULL;
 
+    virCheckFlags(0, NULL);
+
     virDomainDefPtr defPtr = virDomainDefParseString(caps, xmlDesc, flags);
     createVMRecordFromXml(conn, defPtr, &record, &vm);
     virDomainDefFree(defPtr);