summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajesh Amaravathi <rajesh@redhat.com>2012-02-21 13:39:29 +0530
committerVijay Bellur <vijay@gluster.com>2012-02-21 03:19:02 -0800
commit0344a8a12e7675bee24c770d71eff52db6b2d128 (patch)
treef3213af53d3434813c1c3919428d5af802f224f7
parent6a6abb5367f46bab4a7363db9e181c845a334cdb (diff)
glusterd/auth: 3.2.x compatibility
volumes created with GlusterFS 3.2.x will be compatible with GlusterFS 3.3 w.r.t auth.allow enhancements Change-Id: I615e46d648e1270a7b856cd71fab24cfe791ddb8 BUG: 795634 Signed-off-by: Rajesh Amaravathi <rajesh@redhat.com> Reviewed-on: http://review.gluster.com/2779 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Krishnan Parthasarathi <kp@gluster.com> Reviewed-by: Vijay Bellur <vijay@gluster.com>
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-handshake.c3
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-store.c24
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c26
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-volgen.c71
4 files changed, 72 insertions, 52 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handshake.c b/xlators/mgmt/glusterd/src/glusterd-handshake.c
index dd41330b628..64945a716c4 100644
--- a/xlators/mgmt/glusterd/src/glusterd-handshake.c
+++ b/xlators/mgmt/glusterd/src/glusterd-handshake.c
@@ -89,6 +89,9 @@ build_volfile_path (const char *volname, char *path,
goto out;
}
+ if (!glusterd_auth_get_username (volinfo))
+ trusted_str = NULL;
+
ret = snprintf (path, path_len, "%s/vols/%s/%s.vol",
priv->workdir, volinfo->volname, volname);
if (ret == -1)
diff --git a/xlators/mgmt/glusterd/src/glusterd-store.c b/xlators/mgmt/glusterd/src/glusterd-store.c
index 900c12a82da..56b75ec90f3 100644
--- a/xlators/mgmt/glusterd/src/glusterd-store.c
+++ b/xlators/mgmt/glusterd/src/glusterd-store.c
@@ -566,6 +566,8 @@ void _storeopts (dict_t *this, char *key, data_t *value, void *data)
int32_t
glusterd_volume_exclude_options_write (int fd, glusterd_volinfo_t *volinfo)
{
+ char *str = NULL;
+
GF_ASSERT (fd > 0);
GF_ASSERT (volinfo);
@@ -631,15 +633,23 @@ glusterd_volume_exclude_options_write (int fd, glusterd_volinfo_t *volinfo)
if (ret)
goto out;
- ret = glusterd_store_save_value (fd, GLUSTERD_STORE_KEY_USERNAME,
- glusterd_auth_get_username (volinfo));
- if (ret)
+ str = glusterd_auth_get_username (volinfo);
+ if (str) {
+ ret = glusterd_store_save_value (fd,
+ GLUSTERD_STORE_KEY_USERNAME,
+ str);
+ if (ret)
goto out;
+ }
- ret = glusterd_store_save_value (fd, GLUSTERD_STORE_KEY_PASSWORD,
- glusterd_auth_get_password (volinfo));
- if (ret)
- goto out;
+ str = glusterd_auth_get_password (volinfo);
+ if (str) {
+ ret = glusterd_store_save_value (fd,
+ GLUSTERD_STORE_KEY_PASSWORD,
+ str);
+ if (ret)
+ goto out;
+ }
out:
if (ret)
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index 117e5e8f3a8..f122acbf6ce 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -584,7 +584,6 @@ char *
glusterd_auth_get_username (glusterd_volinfo_t *volinfo) {
GF_ASSERT (volinfo);
- GF_ASSERT (volinfo->auth.username);
return volinfo->auth.username;
}
@@ -593,7 +592,6 @@ char *
glusterd_auth_get_password (glusterd_volinfo_t *volinfo) {
GF_ASSERT (volinfo);
- GF_ASSERT (volinfo->auth.password);
return volinfo->auth.password;
}
@@ -2118,28 +2116,20 @@ glusterd_import_volinfo (dict_t *vols, int count,
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "volume%d.username", count);
ret = dict_get_str (vols, key, &str);
- if (ret) {
- snprintf (msg, sizeof (msg),
- "%s missing in payload for %s",
- key, volname);
- goto out;
+ if (!ret) {
+ ret = glusterd_auth_set_username (new_volinfo, str);
+ if (ret)
+ goto out;
}
- ret = glusterd_auth_set_username (new_volinfo, str);
- if (ret)
- goto out;
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "volume%d.password", count);
ret = dict_get_str (vols, key, &str);
- if (ret) {
- snprintf (msg, sizeof (msg),
- "%s missing in payload for %s",
- key, volname);
- goto out;
+ if (!ret) {
+ ret = glusterd_auth_set_password (new_volinfo, str);
+ if (ret)
+ goto out;
}
- ret = glusterd_auth_set_password (new_volinfo, str);
- if (ret)
- goto out;
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "volume%d.transport_type", count);
diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c
index 9bd1a2d1b14..bc856bebfaf 100644
--- a/xlators/mgmt/glusterd/src/glusterd-volgen.c
+++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c
@@ -1552,6 +1552,8 @@ server_graph_builder (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
int ret = 0;
char *xlator = NULL;
char *loglevel = NULL;
+ char *username = NULL;
+ char *password = NULL;
char index_basepath[PATH_MAX] = {0};
char key[1024] = {0};
@@ -1635,6 +1637,10 @@ server_graph_builder (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
ret = pump = 0;
if (ret)
return -1;
+
+ username = glusterd_auth_get_username (volinfo);
+ password = glusterd_auth_get_password (volinfo);
+
if (pump) {
txl = first_of (graph);
@@ -1647,15 +1653,17 @@ server_graph_builder (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
if (NULL == ptranst)
return -1;
- ret = xlator_set_option (rbxl, "username",
- glusterd_auth_get_username (volinfo));
- if (ret)
- return -1;
+ if (username) {
+ ret = xlator_set_option (rbxl, "username", username);
+ if (ret)
+ return -1;
+ }
- ret = xlator_set_option (rbxl, "password",
- glusterd_auth_get_password (volinfo));
- if (ret)
- return -1;
+ if (password) {
+ ret = xlator_set_option (rbxl, "password", password);
+ if (ret)
+ return -1;
+ }
ret = xlator_set_option (rbxl, "transport-type", ptranst);
GF_FREE (ptranst);
@@ -1702,21 +1710,24 @@ server_graph_builder (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
if (ret)
return -1;
- memset (key, 0, sizeof (key));
- snprintf (key, sizeof (key), "auth.login.%s.allow", path);
- ret = xlator_set_option (xl, key,
- glusterd_auth_get_username (volinfo));
- if (ret)
- return -1;
+ if (username) {
+ memset (key, 0, sizeof (key));
+ snprintf (key, sizeof (key), "auth.login.%s.allow", path);
- memset (key, 0, sizeof (key));
- snprintf (key, sizeof (key), "auth.login.%s.password",
- glusterd_auth_get_username (volinfo));
+ ret = xlator_set_option (xl, key, username);
+ if (ret)
+ return -1;
+ }
- ret = xlator_set_option (xl, key,
- glusterd_auth_get_password (volinfo));
- if (ret)
- return -1;
+ if (password) {
+ memset (key, 0, sizeof (key));
+ snprintf (key, sizeof (key), "auth.login.%s.password",
+ username);
+
+ ret = xlator_set_option (xl, key, password);
+ if (ret)
+ return -1;
+ }
ret = volgen_graph_set_options_generic (graph, set_dict,
(xlator && loglevel) ? (void *)set_dict : volinfo,
@@ -2099,14 +2110,20 @@ volgen_graph_build_clients (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
if (!ret && client_type == GF_CLIENT_TRUSTED) {
str = glusterd_auth_get_username (volinfo);
- ret = xlator_set_option (xl, "username", str);
- if (ret)
- goto out;
+ if (str) {
+ ret = xlator_set_option (xl, "username",
+ str);
+ if (ret)
+ goto out;
+ }
str = glusterd_auth_get_password (volinfo);
- ret = xlator_set_option (xl, "password", str);
- if (ret)
- goto out;
+ if (str) {
+ ret = xlator_set_option (xl, "password",
+ str);
+ if (ret)
+ goto out;
+ }
}
i++;