]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Introduce virDomainObjGetOneDefState
authorPeter Krempa <pkrempa@redhat.com>
Wed, 14 Sep 2016 05:22:40 +0000 (07:22 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 21 Sep 2016 14:32:36 +0000 (16:32 +0200)
Return whether the live or persistent definition was returned. Sometimes
it's necessary to base the decisions on this.

src/conf/domain_conf.c
src/conf/domain_conf.h
src/libvirt_private.syms

index a70be319891ec5e174a6aed964c599bb003d91c1..ea246b0e6d0ca30d9687932666d0b6a9144e0e3f 100644 (file)
@@ -3118,22 +3118,25 @@ virDomainObjGetDefs(virDomainObjPtr vm,
 
 
 /**
- * virDomainObjGetOneDef:
+ * virDomainObjGetOneDefState:
  *
  * @vm: Domain object
  * @flags: for virDomainModificationImpact
+ * @live: set to true if live config was returned (may be omitted)
  *
  * Helper function to resolve @flags and return the correct domain pointer
  * object. This function returns one of @vm->def or @vm->persistentDef
- * according to @flags. This helper should be used only in APIs that guarantee
+ * according to @flags. @live is set to true if the live vm config will be
+ * returned. This helper should be used only in APIs that guarantee
  * that @flags contains exactly one of VIR_DOMAIN_AFFECT_LIVE or
  * VIR_DOMAIN_AFFECT_CONFIG and not both.
  *
  * Returns the correct definition pointer or NULL on error.
  */
 virDomainDefPtr
-virDomainObjGetOneDef(virDomainObjPtr vm,
-                      unsigned int flags)
+virDomainObjGetOneDefState(virDomainObjPtr vm,
+                           unsigned int flags,
+                           bool *live)
 {
     if (flags & VIR_DOMAIN_AFFECT_LIVE && flags & VIR_DOMAIN_AFFECT_CONFIG) {
             virReportInvalidArg(ctl, "%s",
@@ -3146,6 +3149,13 @@ virDomainObjGetOneDef(virDomainObjPtr vm,
     if (virDomainObjUpdateModificationImpact(vm, &flags) < 0)
         return NULL;
 
+    if (live) {
+        if (flags & VIR_DOMAIN_AFFECT_LIVE)
+            *live = true;
+        else
+            *live = false;
+    }
+
     if (virDomainObjIsActive(vm) && flags & VIR_DOMAIN_AFFECT_CONFIG)
         return vm->newDef;
     else
@@ -3153,6 +3163,28 @@ virDomainObjGetOneDef(virDomainObjPtr vm,
 }
 
 
+/**
+ * virDomainObjGetOneDef:
+ *
+ * @vm: Domain object
+ * @flags: for virDomainModificationImpact
+ *
+ * Helper function to resolve @flags and return the correct domain pointer
+ * object. This function returns one of @vm->def or @vm->persistentDef
+ * according to @flags. This helper should be used only in APIs that guarantee
+ * that @flags contains exactly one of VIR_DOMAIN_AFFECT_LIVE or
+ * VIR_DOMAIN_AFFECT_CONFIG and not both.
+ *
+ * Returns the correct definition pointer or NULL on error.
+ */
+virDomainDefPtr
+virDomainObjGetOneDef(virDomainObjPtr vm,
+                      unsigned int flags)
+{
+    return virDomainObjGetOneDefState(vm, flags, NULL);
+}
+
+
 static int
 virDomainDeviceCCWAddressIsValid(virDomainDeviceCCWAddressPtr addr)
 {
index f43fcc89007393c712ca789004bbd5c3c8188d68..d4a84c371838a39d3525301a4fb85ccbd4beb4da 100644 (file)
@@ -2592,6 +2592,9 @@ int virDomainObjGetDefs(virDomainObjPtr vm,
                         unsigned int flags,
                         virDomainDefPtr *liveDef,
                         virDomainDefPtr *persDef);
+virDomainDefPtr virDomainObjGetOneDefState(virDomainObjPtr vm,
+                                           unsigned int flags,
+                                           bool *state);
 virDomainDefPtr virDomainObjGetOneDef(virDomainObjPtr vm, unsigned int flags);
 
 virDomainDefPtr virDomainDefCopy(virDomainDefPtr src,
index 562a3d97775cb47677d0f7d10e5c3ef0c639ef21..03b0865ff82f14ec37768641de99360caed63260 100644 (file)
@@ -417,6 +417,7 @@ virDomainObjFormat;
 virDomainObjGetDefs;
 virDomainObjGetMetadata;
 virDomainObjGetOneDef;
+virDomainObjGetOneDefState;
 virDomainObjGetPersistentDef;
 virDomainObjGetShortName;
 virDomainObjGetState;