From da93b886f28f3818cb11a5a35fae37abe2ebb988 Mon Sep 17 00:00:00 2001 From: Vijaykumar Date: Mon, 13 Feb 2012 14:54:42 +0530 Subject: Geo-replication library and gluster installation. * Geo-replication library function in glusterutils * A new section in configuration file for geo-rep * In gluster installation , changing libexecdir to /usr/local/libexec in configuration. * Removed some unwanted code. * handling to have a geo-rep session locally also. Change-Id: Ifcf00b73ed933077640113ce0528b39bdad55999 Signed-off-by: Vijaykumar Signed-off-by: root --- libs/globals/testenv.py | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) (limited to 'libs/globals/testenv.py') diff --git a/libs/globals/testenv.py b/libs/globals/testenv.py index e5d1b6b..68e27c3 100644 --- a/libs/globals/testenv.py +++ b/libs/globals/testenv.py @@ -19,6 +19,7 @@ class TestEnv(): self._clients = {} self._mountdevices = {} self._mounts = {} + self._slaves = {} self._gluster_download_paths = [] self._active_volume = None @@ -47,6 +48,9 @@ class TestEnv(): ['client', 'dir', 'device', 'type', 'logfile', 'options']) + self._slave_tuple = namedtuple('slave', + ['hostname','path','volumename']) + def addExportdir(self, key, dir_, **arguments): """ """ @@ -162,6 +166,7 @@ class TestEnv(): else: return return_brick_obj + hostname_value = brick_obj.hostname serverkey = re.split("\.", hostname_value, maxsplit=1)[0] server_obj = self.getServer(serverkey) @@ -484,3 +489,77 @@ class TestEnv(): else: host_obj = self.getClient(hostkey) return host_obj + + def addSlave(self, key, hostname, path, **arguments): + """ + To add slaves for geo-replication defined + config file + """ + volumename = None + if(arguments.has_key('volumename') and arguments['volumename']): + volumename = arguments['volumename'] + + slave_obj = self._slave_tuple(hostname, path, volumename) + self._slaves[key] = slave_obj + + def getSlave(self, slavekey): + """ + to getback the slave object for the + required slave + """ + return_slave_obj = None + newhostname = newpath = '' + + if self._slaves.has_key(slavekey): + slave_obj = self._slaves[slavekey] + else: + return return_slave_obj + + hostname_value = slave_obj.hostname + serverkey = re.split("\.", hostname_value, maxsplit=1)[0] + server_obj = self.getServer(serverkey) + if server_obj: + newhostname = server_obj.hostname + else: + return return_brick_obj + + path_value = slave_obj.path + if re.match("^\/", path_value): + newpath = path_value + else: + exportdir_obj = self.getExportdir(path_value) + if exportdir_obj: + newpath = exportdir_obj.dir + else: + slave_obj = None + return return_slave_obj + + return_slave_obj = slave_obj._replace(hostname=newhostname, + path=newpath) + + return return_slave_obj + + def getSlaves(self): + """ + To get the slave objects of all the slaves defined in + configuration file + """ + return_slaves = {} + + for slavekey in self._slaves.keys(): + return_slaves[slavekey] = self.getslave(slavekey) + + return return_slaves + + def getRawSlave(self, slavekey): + slave_obj = None + if self._slaves.has_key(slavekey): + slave_obj = self._slaves[slavekey] + return slave_obj + + def getSlaveKeys(self): + """ + """ + slave_keys = [] + slave_keys.extend(self._slaves.keys()) + return slave_keys -- cgit