[libvirt] [PATCH 3/6] conf: Introduce virStoragePoolSaveState

Erik Skultety eskultet at redhat.com
Thu Apr 2 10:10:37 UTC 2015


Properly format storage pool state XML.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1177733
---
 src/conf/storage_conf.c  | 35 +++++++++++++++++++++++++++++++++++
 src/conf/storage_conf.h  |  4 +++-
 src/libvirt_private.syms |  1 +
 3 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 73b937e..ee564f2 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -1928,6 +1928,41 @@ static int virStoragePoolSaveXML(const char *path,
 
     return ret;
 }
+
+
+int virStoragePoolSaveState(const char *stateFile,
+                            virStoragePoolDefPtr def)
+{
+    virBuffer buf = VIR_BUFFER_INITIALIZER;
+    int ret = -1;
+    char *xml;
+
+    virBufferAddLit(&buf, "<poolstatus>\n");
+    virBufferAdjustIndent(&buf, 2);
+
+    if (virStoragePoolDefFormatBuf(&buf, def) < 0)
+        goto error;
+
+    virBufferAdjustIndent(&buf, -2);
+    virBufferAddLit(&buf, "</poolstatus>\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)
diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h
index 4584075..da378b7 100644
--- a/src/conf/storage_conf.h
+++ b/src/conf/storage_conf.h
@@ -371,7 +371,9 @@ virStoragePoolObjPtr
 virStoragePoolObjAssignDef(virStoragePoolObjListPtr pools,
                            virStoragePoolDefPtr def);
 
-int virStoragePoolSaveConfig(const char *configDir,
+int virStoragePoolSaveState(const char *stateFile,
+                            virStoragePoolDefPtr def);
+int virStoragePoolSaveConfig(const char *configFile,
                              virStoragePoolDefPtr def);
 int virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
                              virStoragePoolObjPtr pool,
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 9e71b1a..56acb01 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -813,6 +813,7 @@ virStoragePoolObjRemove;
 virStoragePoolObjSaveDef;
 virStoragePoolObjUnlock;
 virStoragePoolSaveConfig;
+virStoragePoolSaveState;
 virStoragePoolSourceAdapterTypeFromString;
 virStoragePoolSourceAdapterTypeToString;
 virStoragePoolSourceClear;
-- 
1.9.3




More information about the libvir-list mailing list