提交 523c6908 编写于 作者: J John Ferlan

storage: Introduce virStoragePoolSaveConfig

https://bugzilla.redhat.com/show_bug.cgi?id=1160926

Introduce the ability to save a configuration of a persistent configuration
that may be changed by storage pool backend activity, such as start or stop
上级 5b226fcd
...@@ -1884,14 +1884,33 @@ virStoragePoolLoadAllConfigs(virStoragePoolObjListPtr pools, ...@@ -1884,14 +1884,33 @@ virStoragePoolLoadAllConfigs(virStoragePoolObjListPtr pools,
} }
int int
virStoragePoolObjSaveDef(virStorageDriverStatePtr driver, virStoragePoolSaveConfig(const char *configFile,
virStoragePoolObjPtr pool,
virStoragePoolDefPtr def) virStoragePoolDefPtr def)
{ {
char uuidstr[VIR_UUID_STRING_BUFLEN]; char uuidstr[VIR_UUID_STRING_BUFLEN];
char *xml; char *xml;
int ret = -1; int ret = -1;
if (!(xml = virStoragePoolDefFormat(def))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to generate XML"));
return -1;
}
virUUIDFormat(def->uuid, uuidstr);
ret = virXMLSaveFile(configFile,
virXMLPickShellSafeComment(def->name, uuidstr),
"pool-edit", xml);
VIR_FREE(xml);
return ret;
}
int
virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
virStoragePoolObjPtr pool,
virStoragePoolDefPtr def)
{
if (!pool->configFile) { if (!pool->configFile) {
if (virFileMakePath(driver->configDir) < 0) { if (virFileMakePath(driver->configDir) < 0) {
virReportSystemError(errno, virReportSystemError(errno,
...@@ -1912,19 +1931,7 @@ virStoragePoolObjSaveDef(virStorageDriverStatePtr driver, ...@@ -1912,19 +1931,7 @@ virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
} }
} }
if (!(xml = virStoragePoolDefFormat(def))) { return virStoragePoolSaveConfig(pool->configFile, def);
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to generate XML"));
return -1;
}
virUUIDFormat(def->uuid, uuidstr);
ret = virXMLSaveFile(pool->configFile,
virXMLPickShellSafeComment(def->name, uuidstr),
"pool-edit", xml);
VIR_FREE(xml);
return ret;
} }
int int
......
...@@ -360,6 +360,8 @@ virStoragePoolObjPtr ...@@ -360,6 +360,8 @@ virStoragePoolObjPtr
virStoragePoolObjAssignDef(virStoragePoolObjListPtr pools, virStoragePoolObjAssignDef(virStoragePoolObjListPtr pools,
virStoragePoolDefPtr def); virStoragePoolDefPtr def);
int virStoragePoolSaveConfig(const char *configDir,
virStoragePoolDefPtr def);
int virStoragePoolObjSaveDef(virStorageDriverStatePtr driver, int virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
virStoragePoolObjPtr pool, virStoragePoolObjPtr pool,
virStoragePoolDefPtr def); virStoragePoolDefPtr def);
......
...@@ -753,6 +753,7 @@ virStoragePoolObjLock; ...@@ -753,6 +753,7 @@ virStoragePoolObjLock;
virStoragePoolObjRemove; virStoragePoolObjRemove;
virStoragePoolObjSaveDef; virStoragePoolObjSaveDef;
virStoragePoolObjUnlock; virStoragePoolObjUnlock;
virStoragePoolSaveConfig;
virStoragePoolSourceAdapterTypeFromString; virStoragePoolSourceAdapterTypeFromString;
virStoragePoolSourceAdapterTypeToString; virStoragePoolSourceAdapterTypeToString;
virStoragePoolSourceClear; virStoragePoolSourceClear;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册