summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cns-libs/cnslibs/cns/cns_baseclass.py25
-rw-r--r--cns-libs/cnslibs/common/heketi_libs.py22
-rw-r--r--cns-libs/cnslibs/common/heketi_ops.py141
-rw-r--r--tests/cns_tests_sample_config.yml2
4 files changed, 133 insertions, 57 deletions
diff --git a/cns-libs/cnslibs/cns/cns_baseclass.py b/cns-libs/cnslibs/cns/cns_baseclass.py
index 641ae276..5a9106a5 100644
--- a/cns-libs/cnslibs/cns/cns_baseclass.py
+++ b/cns-libs/cnslibs/cns/cns_baseclass.py
@@ -64,21 +64,22 @@ class CnsBaseClass(unittest.TestCase):
cls.executor_port = g.config['cns']['executor_port']
# Initializes heketi config variables
- cls.heketi_client_node = (g.config['cns']['heketi_config']
- ['heketi_client_node'])
- cls.heketi_server_url = (g.config['cns']['heketi_config']
- ['heketi_server_url'])
- cls.gluster_servers = g.config['gluster_servers'].keys()
- cls.gluster_servers_info = g.config['gluster_servers']
- cls.topo_info = g.config['cns']['trusted_storage_pool_list']
- cls.heketi_ssh_key = g.config['cns']['heketi_config']['heketi_ssh_key']
- cls.heketi_config_file = (g.config['cns']['heketi_config']
- ['heketi_config_file'])
+ heketi_config = g.config['cns']['heketi_config']
+ cls.heketi_client_node = heketi_config['heketi_client_node']
+ cls.heketi_server_url = heketi_config['heketi_server_url']
+ cls.heketi_cli_user = heketi_config['heketi_cli_user']
+ cls.heketi_cli_key = heketi_config['heketi_cli_key']
+ cls.heketi_ssh_key = heketi_config['heketi_ssh_key']
+ cls.heketi_config_file = heketi_config['heketi_config_file']
cls.heketi_volume = {}
cls.heketi_volume['size'] = g.config['cns']['heketi_volume']['size']
cls.heketi_volume['name'] = g.config['cns']['heketi_volume']['name']
- cls.heketi_volume['expand_size'] = (g.config['cns']['heketi_volume']
- ['expand_size'])
+ cls.heketi_volume['expand_size'] = (
+ g.config['cns']['heketi_volume']['expand_size'])
+
+ cls.gluster_servers = g.config['gluster_servers'].keys()
+ cls.gluster_servers_info = g.config['gluster_servers']
+ cls.topo_info = g.config['cns']['trusted_storage_pool_list']
# Constructs topology info dictionary
cls.topology_info = OrderedDict()
diff --git a/cns-libs/cnslibs/common/heketi_libs.py b/cns-libs/cnslibs/common/heketi_libs.py
index 79fcd69a..5101ae25 100644
--- a/cns-libs/cnslibs/common/heketi_libs.py
+++ b/cns-libs/cnslibs/common/heketi_libs.py
@@ -43,16 +43,17 @@ class HeketiBaseClass(unittest.TestCase):
cls.executor = g.config['cns']['executor']
cls.executor_user = g.config['cns']['executor_user']
cls.executor_port = g.config['cns']['executor_port']
- cls.heketi_client_node = (g.config['cns']['heketi_config']
- ['heketi_client_node'])
- cls.heketi_server_url = (g.config['cns']['heketi_config']
- ['heketi_server_url'])
+
+ heketi_config = g.config['cns']['heketi_config']
+ cls.heketi_client_node = heketi_config['heketi_client_node']
+ cls.heketi_server_url = heketi_config['heketi_server_url']
+ cls.heketi_cli_user = heketi_config['heketi_cli_user']
+ cls.heketi_cli_key = heketi_config['heketi_cli_key']
cls.gluster_servers = g.config['gluster_servers'].keys()
cls.gluster_servers_info = g.config['gluster_servers']
cls.topo_info = g.config['cns']['trusted_storage_pool_list']
- cls.heketi_ssh_key = g.config['cns']['heketi_config']['heketi_ssh_key']
- cls.heketi_config_file = (g.config['cns']['heketi_config']
- ['heketi_config_file'])
+ cls.heketi_ssh_key = heketi_config['heketi_ssh_key']
+ cls.heketi_config_file = heketi_config['heketi_config_file']
cls.heketi_volume = {
'size': g.config['cns']['heketi_volume']['size'],
'name': g.config['cns']['heketi_volume']['name'],
@@ -181,7 +182,10 @@ class HeketiClientSetupBaseClass(HeketiBaseClass):
# Exports heketi cli server
heketi_url = cls.heketi_server_url
- if not export_heketi_cli_server(cls.heketi_client_node,
- heketi_cli_server=heketi_url):
+ if not export_heketi_cli_server(
+ cls.heketi_client_node,
+ heketi_cli_server=heketi_url,
+ heketi_cli_user=cls.heketi_cli_user,
+ heketi_cli_key=cls.heketi_cli_key):
raise ExecutionError("Failed to export heketi cli server on %s"
% cls.heketi_client_node)
diff --git a/cns-libs/cnslibs/common/heketi_ops.py b/cns-libs/cnslibs/common/heketi_ops.py
index e11e7521..f2473d66 100644
--- a/cns-libs/cnslibs/common/heketi_ops.py
+++ b/cns-libs/cnslibs/common/heketi_ops.py
@@ -194,7 +194,9 @@ def enable_heketi_service(heketi_client_node):
def export_heketi_cli_server(heketi_client_node,
heketi_cli_server=("http://heketi-storage-" +
"project.cloudapps." +
- "mystorage.com")):
+ "mystorage.com"),
+ heketi_cli_user=None,
+ heketi_cli_key=None):
"""Exports given HEKETI_CLI_SERVER in given node.
Args:
@@ -221,6 +223,10 @@ def export_heketi_cli_server(heketi_client_node,
"""
cmd = "export HEKETI_CLI_SERVER=%s" % heketi_cli_server
+ if heketi_cli_user:
+ cmd += "\nexport HEKETI_CLI_USER=%s" % heketi_cli_user
+ if heketi_cli_key is not None:
+ cmd += "\nexport HEKETI_CLI_KEY='%s'" % heketi_cli_key
return g.run(heketi_client_node, cmd)
@@ -353,6 +359,13 @@ def _set_heketi_global_flags(heketi_server_url, **kwargs):
json_arg = "--json" if json else ""
secret_arg = "--secret %s" % secret if secret else ""
user_arg = "--user %s" % user if user else ""
+ if not user_arg:
+ heketi_cli_user = g.config['cns']['heketi_config']['heketi_cli_user']
+ if heketi_cli_user:
+ user_arg = "--user %s" % heketi_cli_user
+ heketi_cli_key = g.config['cns']['heketi_config']['heketi_cli_key']
+ if heketi_cli_key is not None:
+ secret_arg = "--secret '%s'" % heketi_cli_key
return (heketi_server_url, json_arg, secret_arg, user_arg)
@@ -436,6 +449,14 @@ def heketi_volume_create(heketi_client_node, heketi_server_url, size,
heketi_volume_create(heketi_client_node, heketi_server_url, size)
"""
+ if not kwargs.get('user'):
+ heketi_cli_user = g.config['cns']['heketi_config']['heketi_cli_user']
+ if heketi_cli_user:
+ kwargs['user'] = heketi_cli_user
+ heketi_cli_key = g.config['cns']['heketi_config']['heketi_cli_key']
+ if heketi_cli_key is not None:
+ kwargs['secret'] = heketi_cli_key
+
heketi_server_url = (heketi_server_url if heketi_server_url else ("http:" +
"//heketi-storage-project.cloudapps.mystorage.com"))
@@ -473,8 +494,8 @@ def heketi_volume_create(heketi_client_node, heketi_server_url, size,
% float(kwargs.get("snapshot_factor"))
if kwargs.get("snapshot_factor") else "")
json_arg = "--json" if kwargs.get("json") else ""
- secret_arg = "--secret %s" % secret if kwargs.get("secret") else ""
- user_arg = "--user %s" % user if kwargs.get("user") else ""
+ secret_arg = "--secret %s" % kwargs.get("secret") if kwargs.get("secret") else ""
+ user_arg = "--user %s" % kwargs.get("user") if kwargs.get("user") else ""
if mode == 'cli':
cmd = ("heketi-cli -s %s volume create --size=%s %s %s %s %s %s %s "
@@ -503,12 +524,10 @@ def heketi_volume_create(heketi_client_node, heketi_server_url, size,
g.log.info("Volume creation is successfull using heketi")
else:
kwargs['size'] = int(size)
- test_server = heketi_server_url
- if 'secret' not in kwargs.keys():
- kwargs['secret'] = "My Secret"
try:
- conn = HeketiClient(test_server, "admin", kwargs['secret'])
- kwargs.pop("secret", None)
+ user = kwargs.pop('user', 'admin')
+ admin_key = kwargs.pop('secret', 'My Secret')
+ conn = HeketiClient(heketi_server_url, user, admin_key)
volume_create_info = conn.volume_create(kwargs)
except:
g.log.error("Failed to create volume using heketi")
@@ -567,7 +586,9 @@ def heketi_volume_info(heketi_client_node, heketi_server_url, volume_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
volume_info = conn.volume_info(volume_id)
if volume_info is None:
return False
@@ -636,7 +657,9 @@ def heketi_volume_expand(heketi_client_node, heketi_server_url, volume_id,
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
vol_req = {}
vol_req['expand_size'] = int(expand_size)
volume_expand_info = conn.volume_expand(volume_id, vol_req)
@@ -694,7 +717,9 @@ def heketi_volume_delete(heketi_client_node, heketi_server_url, volume_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
ret = conn.volume_delete(volume_id)
except:
g.log.error("Failed to do volume delete using heketi")
@@ -752,7 +777,9 @@ def heketi_volume_list(heketi_client_node, heketi_server_url, mode='cli',
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
volume_list = conn.volume_list()
except:
g.log.error("Failed to do volume list using heketi")
@@ -848,7 +875,9 @@ def hello_heketi(heketi_client_node, heketi_server_url, mode='cli', **kwargs):
return False
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
ret = conn.hello()
except:
g.log.error("Failed to execute heketi hello command")
@@ -924,7 +953,9 @@ def heketi_cluster_create(heketi_client_node, heketi_server_url,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
cluster_req = {}
cluster_req["block"] = block_arg
cluster_req["file"] = file_arg
@@ -978,7 +1009,9 @@ def heketi_cluster_delete(heketi_client_node, heketi_server_url, cluster_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
ret = conn.cluster_delete(cluster_id)
except:
g.log.error("Failed to do volume delete using heketi")
@@ -1030,7 +1063,9 @@ def heketi_cluster_info(heketi_client_node, heketi_server_url, cluster_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
cluster_info = conn.cluster_info(cluster_id)
except:
g.log.error("Failed to get cluster info using heketi")
@@ -1083,7 +1118,9 @@ def heketi_cluster_list(heketi_client_node, heketi_server_url, mode='cli',
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
cluster_list = conn.cluster_list()
except:
g.log.error("Failed to do cluster list using heketi")
@@ -1144,7 +1181,9 @@ def heketi_device_add(heketi_client_node, heketi_server_url, device_name,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
device_req = {}
device_req["name"] = device_name
device_req["node"] = node_id
@@ -1205,7 +1244,9 @@ def heketi_device_delete(heketi_client_node, heketi_server_url, device_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
device = conn.device_delete(device_id)
except:
g.log.error("Failed to do device delete using heketi")
@@ -1263,7 +1304,9 @@ def heketi_device_disable(heketi_client_node, heketi_server_url, device_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
device = conn.device_disable(device_id)
except:
g.log.error("Failed to do device disable using heketi")
@@ -1321,7 +1364,9 @@ def heketi_device_enable(heketi_client_node, heketi_server_url, device_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
device = conn.device_enable(device_id)
except:
g.log.error("Failed to do device enable using heketi")
@@ -1379,7 +1424,9 @@ def heketi_device_info(heketi_client_node, heketi_server_url, device_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
cluster_info = conn.device_info(device_id)
except:
g.log.error("Failed to get device info using heketi")
@@ -1437,7 +1484,9 @@ def heketi_device_remove(heketi_client_node, heketi_server_url, device_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
device = conn.device_remove(device_id)
except:
g.log.error("Failed to do device remove using heketi")
@@ -1500,7 +1549,9 @@ def heketi_node_add(heketi_client_node, heketi_server_url, zone, cluster_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
node_req = {}
node_req["zone"] = int(zone)
node_req["cluster"] = cluster_id
@@ -1558,7 +1609,9 @@ def heketi_node_delete(heketi_client_node, heketi_server_url, node_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
device = conn.node_delete(node_id)
except:
g.log.error("Failed to do node delete using heketi")
@@ -1611,7 +1664,9 @@ def heketi_node_disable(heketi_client_node, heketi_server_url, node_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
node = conn.device_disable(node_id)
except:
g.log.error("Failed to do node disable using heketi")
@@ -1664,7 +1719,9 @@ def heketi_node_enable(heketi_client_node, heketi_server_url, node_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
device = conn.node_enable(node_id)
except:
g.log.error("Failed to do node enable using heketi")
@@ -1717,7 +1774,9 @@ def heketi_node_info(heketi_client_node, heketi_server_url, node_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
node_info = conn.node_info(node_id)
except:
g.log.error("Failed to get node info using heketi")
@@ -1770,7 +1829,9 @@ def heketi_node_remove(heketi_client_node, heketi_server_url, node_id,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
node = conn.node_remove(node_id)
except:
g.log.error("Failed to do node remove using heketi")
@@ -1818,7 +1879,9 @@ def heketi_node_list(heketi_client_node, heketi_server_url, mode='cli',
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
node_list = conn.node_list()
except:
g.log.error("Failed to get node list using heketi")
@@ -1873,7 +1936,9 @@ def heketi_blockvolume_info(heketi_client_node, heketi_server_url,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
block_volume_info = conn.blockvolume_info(block_volume_id)
if block_volume_info is None:
return False
@@ -1970,10 +2035,10 @@ def heketi_blockvolume_create(heketi_client_node, heketi_server_url, size,
else:
kwargs['size'] = int(size)
- if 'secret' not in kwargs.keys():
- kwargs['secret'] = "My Secret"
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
block_volume_create_info = conn.blockvolume_create(**kwargs)
except:
g.log.error("Failed to do blockvolume create using heketi")
@@ -2027,7 +2092,9 @@ def heketi_blockvolume_delete(heketi_client_node, heketi_server_url,
return out
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
return conn.blockvolume_delete(block_volume_id)
except:
g.log.error("Failed to do blockvolume delete using heketi")
@@ -2080,7 +2147,9 @@ def heketi_blockvolume_list(heketi_client_node, heketi_server_url, mode='cli',
else:
try:
- conn = HeketiClient(heketi_server_url, "admin", admin_key)
+ user = user.split(' ')[-1] if user else 'admin'
+ admin_key = admin_key.split('t ')[-1] if admin_key else admin_key
+ conn = HeketiClient(heketi_server_url, user, admin_key)
return conn.blockvolume_list()
except:
g.log.error("Failed to do blockvolume list using heketi")
diff --git a/tests/cns_tests_sample_config.yml b/tests/cns_tests_sample_config.yml
index 9b46365f..b77be3fa 100644
--- a/tests/cns_tests_sample_config.yml
+++ b/tests/cns_tests_sample_config.yml
@@ -74,6 +74,8 @@ cns:
heketi_config:
heketi_client_node:
heketi_server_url: "http://heketi-storage-project.cloudapps.mystorage.com"
+ heketi_cli_user: "admin"
+ heketi_cli_key: "admin"
heketi_ssh_key: "/etc/heketi/heketi_key"
heketi_config_file: "/etc/heketi/heketi.json"
heketi_volume: