diff options
author | Avra Sengupta <asengupt@redhat.com> | 2013-07-10 17:32:41 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2013-07-26 13:19:18 -0700 |
commit | 5757ed2727990fd2c3aaff420003638f1eec6b92 (patch) | |
tree | 6cb26130cc08b04cf85b467d03146d2c21ba1f80 /geo-replication | |
parent | b13c483dca20e4015b958f8959328e665a357f60 (diff) |
glusterd/cli changes for distributed geo-rep
Commands:
gluster system:: execute gsec_create
gluster volume geo-rep <master> <slave-url> create [push-pem] [force]
gluster volume geo-rep <master> <slave-url> start [force]
gluster volume geo-rep <master> <slave-url> stop [force]
gluster volume geo-rep <master> <slave-url> delete
gluster volume geo-rep <master> <slave-url> config
gluster volume geo-rep <master> <slave-url> status
The geo-replication is distributed. The session will be created, and
gsyncd will be spawned on all relevant nodes, instead of only one
node.
geo-rep: Collecting status detail related data
Added persistent store for saving information about
TotalFilesSynced, TotalSyncTime, TotalBytesSynced
Changes in the status information in socket:
Existing(Ex):
FilesSynced=2;BytesSynced=2507;Uptime=00:26:01;
New(Ex):
FilesSynced=2;BytesSynced=2507;Uptime=00:26:01;SyncTime=0.69978;
TotalSyncTime=2.890044;TotalFilesSynced=6;TotalBytesSynced=143640;
Persistent details stored in
/var/lib/glusterd/geo-replication/${mastervol}/${eSlave}-detail.status
Change-Id: I1db7fc13ffca2e415c05200b0109b1254067f111
BUG: 847839
Original Author: Avra Sengupta <asengupt@redhat.com>
Original Author: Venky Shankar <vshankar@redhat.com>
Original Author: Aravinda VK <avishwan@redhat.com>
Original Author: Amar Tumballi <amarts@redhat.com>
Original Author: Csaba Henk <csaba@redhat.com>
Signed-off-by: Avra Sengupta <asengupt@redhat.com>
Reviewed-on: http://review.gluster.org/5132
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Tested-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'geo-replication')
-rw-r--r-- | geo-replication/src/Makefile.am | 6 | ||||
-rw-r--r-- | geo-replication/src/gsyncd.c | 6 | ||||
-rw-r--r-- | geo-replication/src/peer_add_secret_pub | 3 | ||||
-rw-r--r-- | geo-replication/src/peer_add_secret_pub.in | 9 | ||||
-rw-r--r-- | geo-replication/syncdaemon/README.md | 2 | ||||
-rw-r--r-- | geo-replication/syncdaemon/gsyncd.py | 7 | ||||
-rw-r--r-- | geo-replication/syncdaemon/resource.py | 1 |
7 files changed, 21 insertions, 13 deletions
diff --git a/geo-replication/src/Makefile.am b/geo-replication/src/Makefile.am index 6feeda8e68c..324d8869f8b 100644 --- a/geo-replication/src/Makefile.am +++ b/geo-replication/src/Makefile.am @@ -3,9 +3,9 @@ gsyncddir = $(libexecdir)/glusterfs gsyncd_SCRIPTS = gverify.sh peer_add_secret_pub peer_gsec_create -# peer_gsec_create is not added to EXTRA_DIST as it's derived -# from a .in file -EXTRA_DIST = gverify.sh peer_add_secret_pub +# peer_gsec_create and peer_add_secret_pub are not added to +# EXTRA_DIST as it's derived from a .in file +EXTRA_DIST = gverify.sh gsyncd_PROGRAMS = gsyncd diff --git a/geo-replication/src/gsyncd.c b/geo-replication/src/gsyncd.c index 68446d9ad34..0830e7f9bcc 100644 --- a/geo-replication/src/gsyncd.c +++ b/geo-replication/src/gsyncd.c @@ -37,7 +37,7 @@ #define _GLUSTERD_CALLED_ "_GLUSTERD_CALLED_" #define _GSYNCD_DISPATCHED_ "_GSYNCD_DISPATCHED_" -#define GSYNCD_CONF "geo-replication/gsyncd.conf" +#define GSYNCD_CONF_TEMPLATE "geo-replication/gsyncd_template.conf" #define GSYNCD_PY "gsyncd.py" #define RSYNC "rsync" @@ -127,11 +127,11 @@ invoke_gsyncd (int argc, char **argv) gluster_workdir_len = len - 1; if (gluster_workdir_len) { - if (gluster_workdir_len + 1 + strlen (GSYNCD_CONF) + 1 > + if (gluster_workdir_len + 1 + strlen (GSYNCD_CONF_TEMPLATE) + 1 > PATH_MAX) goto error; config_file[gluster_workdir_len] = '/'; - strcat (config_file, GSYNCD_CONF); + strcat (config_file, GSYNCD_CONF_TEMPLATE); } else goto error; diff --git a/geo-replication/src/peer_add_secret_pub b/geo-replication/src/peer_add_secret_pub deleted file mode 100644 index 1ce040d4419..00000000000 --- a/geo-replication/src/peer_add_secret_pub +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -cat $1 >> ~/.ssh/authorized_keys diff --git a/geo-replication/src/peer_add_secret_pub.in b/geo-replication/src/peer_add_secret_pub.in new file mode 100644 index 00000000000..c036cf33416 --- /dev/null +++ b/geo-replication/src/peer_add_secret_pub.in @@ -0,0 +1,9 @@ +#!/bin/bash + +if [ ! -d ~/.ssh ]; then + mkdir ~/.ssh; + chmod 700 ~/.ssh + chown root:root ~/.ssh +fi + +cat "$GLUSTERD_WORKING_DIR"/geo-replication/common_secret.pem.pub >> ~/.ssh/authorized_keys diff --git a/geo-replication/syncdaemon/README.md b/geo-replication/syncdaemon/README.md index 0eb15fa7170..67f346ace5a 100644 --- a/geo-replication/syncdaemon/README.md +++ b/geo-replication/syncdaemon/README.md @@ -39,7 +39,7 @@ The config file format matches the following syntax: <option2>: <value2> # comment -By default (unless specified by the option `-c`), gsyncd looks for config file at _conf/gsyncd.conf_ +By default (unless specified by the option `-c`), gsyncd looks for config file at _conf/gsyncd_template.conf_ in the source tree. USAGE diff --git a/geo-replication/syncdaemon/gsyncd.py b/geo-replication/syncdaemon/gsyncd.py index ad498c39cdc..67ba0737087 100644 --- a/geo-replication/syncdaemon/gsyncd.py +++ b/geo-replication/syncdaemon/gsyncd.py @@ -346,10 +346,9 @@ def main_i(): for name in rmap[x]: for j in range(3): namedict[mods[j](name)] = pa[j][i] - if x.scheme == 'gluster': - namedict[name + 'vol'] = x.volume + namedict[name + 'vol'] = x.volume if not 'config_file' in rconf: - rconf['config_file'] = os.path.join(os.path.dirname(sys.argv[0]), "conf/gsyncd.conf") + rconf['config_file'] = os.path.join(os.path.dirname(sys.argv[0]), "conf/gsyncd_template.conf") gcnf = GConffile(rconf['config_file'], canon_peers, defaults.__dict__, opts.__dict__, namedict) checkpoint_change = False @@ -399,6 +398,8 @@ def main_i(): if getattr(gconf, 'state_socket_unencoded', None): cleanup_paths.append(gconf.state_socket_unencoded) + cleanup_paths.append(rconf['config_file'][:-11] + "*"); + # Cleanup changelog working dirs if getattr(gconf, 'working_dir', None): try: diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py index 52989fe28cc..4b0183b981d 100644 --- a/geo-replication/syncdaemon/resource.py +++ b/geo-replication/syncdaemon/resource.py @@ -1056,6 +1056,7 @@ class SSH(AbstractUrl, SlaveRemote): self.remote_addr, inner_url = sup(self, path, '^((?:%s@)?%s):(.+)' % tuple([ r.pattern for r in (UserRX, HostRX) ])) self.inner_rsc = parse_url(inner_url) + self.volume = inner_url[1:] @staticmethod def parse_ssh_address(addr): |