summaryrefslogtreecommitdiffstats
path: root/libs/globals/testenv.py
diff options
context:
space:
mode:
Diffstat (limited to 'libs/globals/testenv.py')
-rw-r--r--libs/globals/testenv.py79
1 files changed, 79 insertions, 0 deletions
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