]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
conf: Introduce virStoragePoolSaveState
authorErik Skultety <eskultet@redhat.com>
Thu, 2 Apr 2015 14:41:51 +0000 (16:41 +0200)
committerErik Skultety <eskultet@redhat.com>
Fri, 3 Apr 2015 08:34:07 +0000 (10:34 +0200)
Introduce virStoragePoolSaveState to properly format the state XML in
the same manner as virStoragePoolDefFormat, except for adding a
<poolstate> ... </poolstate> around the definition. This is similar to
virNetworkObjFormat used to save the live/active network information.

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

index 1df3750f36aae1f612a93f8ade5efa251aaa0264..2a424a71b9f33b1e33b52a693075084454b1e4f9 100644 (file)
@@ -1927,6 +1927,40 @@ static int virStoragePoolSaveXML(const char *path,
 }
 
 
+int
+virStoragePoolSaveState(const char *stateFile,
+                        virStoragePoolDefPtr def)
+{
+    virBuffer buf = VIR_BUFFER_INITIALIZER;
+    int ret = -1;
+    char *xml;
+
+    virBufferAddLit(&buf, "<poolstate>\n");
+    virBufferAdjustIndent(&buf, 2);
+
+    if (virStoragePoolDefFormatBuf(&buf, def) < 0)
+        goto error;
+
+    virBufferAdjustIndent(&buf, -2);
+    virBufferAddLit(&buf, "</poolstate>\n");
+
+    if (virBufferCheckError(&buf) < 0)
+        goto error;
+
+    if (!(xml = virBufferContentAndReset(&buf)))
+        goto error;
+
+    if (virStoragePoolSaveXML(stateFile, def, xml))
+        goto error;
+
+    ret = 0;
+
+ error:
+    VIR_FREE(xml);
+    return ret;
+}
+
+
 int
 virStoragePoolSaveConfig(const char *configFile,
                          virStoragePoolDefPtr def)
index 4584075ce6b6f0f3e869f7322923f8f50054250e..edcdaed9224373cbbc6206e08e9c8b8940d8a480 100644 (file)
@@ -371,6 +371,8 @@ virStoragePoolObjPtr
 virStoragePoolObjAssignDef(virStoragePoolObjListPtr pools,
                            virStoragePoolDefPtr def);
 
+int virStoragePoolSaveState(const char *stateFile,
+                            virStoragePoolDefPtr def);
 int virStoragePoolSaveConfig(const char *configDir,
                              virStoragePoolDefPtr def);
 int virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
index 36797c55b5e221dfc6f9897d12431f6452f13f89..9f82926747266aa2933d44befbd334722ab77d8b 100644 (file)
@@ -824,6 +824,7 @@ virStoragePoolObjRemove;
 virStoragePoolObjSaveDef;
 virStoragePoolObjUnlock;
 virStoragePoolSaveConfig;
+virStoragePoolSaveState;
 virStoragePoolSourceAdapterTypeFromString;
 virStoragePoolSourceAdapterTypeToString;
 virStoragePoolSourceClear;