[libvirt] [PATCH v2 7/7] storage: Improve the pool auth type parsing and formatting

John Ferlan jferlan at redhat.com
Tue Jul 9 19:10:51 UTC 2013


From: Osier Yang <jyang at redhat.com>

Use the helpers Type{From,To}String instead.
---
 src/conf/storage_conf.c | 17 ++++++++++-------
 src/conf/storage_conf.h |  3 +++
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index ba71f42..edec86b 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -95,6 +95,10 @@ VIR_ENUM_IMPL(virStoragePoolSourceAdapterType,
               VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_LAST,
               "default", "scsi_host", "fc_host")
 
+VIR_ENUM_IMPL(virStoragePoolAuthType,
+              VIR_STORAGE_POOL_AUTH_LAST,
+              "none", "chap", "ceph")
+
 typedef const char *(*virStorageVolFormatToString)(int format);
 typedef int (*virStorageVolFormatFromString)(const char *format);
 typedef const char *(*virStorageVolFeatureToString)(int feature);
@@ -713,11 +717,8 @@ virStoragePoolDefParseSource(xmlXPathContextPtr ctxt,
     if (authType == NULL) {
         source->authType = VIR_STORAGE_POOL_AUTH_NONE;
     } else {
-        if (STREQ(authType, "chap")) {
-            source->authType = VIR_STORAGE_POOL_AUTH_CHAP;
-        } else if (STREQ(authType, "ceph")) {
-            source->authType = VIR_STORAGE_POOL_AUTH_CEPHX;
-        } else {
+        if ((source->authType =
+             virStoragePoolAuthTypeTypeFromString(authType)) < 0) {
             virReportError(VIR_ERR_XML_ERROR,
                            _("unknown auth type '%s'"),
                            authType);
@@ -1175,7 +1176,8 @@ virStoragePoolSourceFormat(virBufferPtr buf,
     }
 
     if (src->authType == VIR_STORAGE_POOL_AUTH_CHAP) {
-        virBufferAsprintf(buf,"    <auth type='chap' username='%s'",
+        virBufferAsprintf(buf,"    <auth type='%s' username='%s'",
+                          virStoragePoolAuthTypeTypeToString(src->authType),
                           src->auth.chap.login);
         if (src->auth.chap.type == VIR_STORAGE_POOL_AUTH_CHAP_PLAIN_PASSWORD) {
             virBufferAsprintf(buf, " passwd='%s'/>\n",
@@ -1188,7 +1190,8 @@ virStoragePoolSourceFormat(virBufferPtr buf,
     }
 
     if (src->authType == VIR_STORAGE_POOL_AUTH_CEPHX) {
-        virBufferAsprintf(buf,"    <auth type='ceph' username='%s'\n",
+        virBufferAsprintf(buf,"    <auth type='%s' username='%s'\n",
+                          virStoragePoolAuthTypeTypeToString(src->authType),
                           src->auth.cephx.username);
         virStoragePoolAuthDefFormat(buf, src->auth.cephx.secret);
         virBufferAddLit(buf,"    </auth>\n");
diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h
index 233340e..601f68b 100644
--- a/src/conf/storage_conf.h
+++ b/src/conf/storage_conf.h
@@ -146,7 +146,10 @@ enum virStoragePoolAuthType {
     VIR_STORAGE_POOL_AUTH_NONE,
     VIR_STORAGE_POOL_AUTH_CHAP,
     VIR_STORAGE_POOL_AUTH_CEPHX,
+
+    VIR_STORAGE_POOL_AUTH_LAST,
 };
+VIR_ENUM_DECL(virStoragePoolAuthType)
 
 typedef struct _virStoragePoolAuthSecret virStoragePoolAuthSecret;
 typedef virStoragePoolAuthSecret *virStoragePoolAuthSecretPtr;
-- 
1.8.1.4




More information about the libvir-list mailing list