[libvirt] [PATCH 10/11] storage: Improve the pool auth type parsing and formating

Osier Yang jyang at redhat.com
Tue May 28 06:39:41 UTC 2013


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 a876332..bc8ca33 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -94,6 +94,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);
 
@@ -709,11 +713,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);
@@ -1162,7 +1163,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",
@@ -1175,7 +1177,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 b52cdc4..06cd5c0 100644
--- a/src/conf/storage_conf.h
+++ b/src/conf/storage_conf.h
@@ -143,7 +143,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