Add scenario which updates GlusterFS
Change-Id: Id441641455029c185bbee7f8ba07c6f357609c9c
diff --git a/tcp_tests/tests/system/test_update.py b/tcp_tests/tests/system/test_update.py
index 4ec04b0..9796ade 100644
--- a/tcp_tests/tests/system/test_update.py
+++ b/tcp_tests/tests/system/test_update.py
@@ -137,6 +137,92 @@
@pytest.mark.grab_versions
@pytest.mark.parametrize("_", [settings.ENV_NAME])
@pytest.mark.run_mcp_update
+ def test_update_glusterfs(self, salt_actions, reclass_actions,
+ show_step, _):
+ """ Upgrade GlusterFS
+ Scenario:
+ 1. In infra/init.yml in Reclass, add the glusterfs_version parameter
+ 2. Start linux.system.repo state
+ 3. Start "update-glusterfs" job
+ 4. Check version for GlusterFS servers
+ 5. Check version for GlusterFS clients
+
+ """
+ salt = salt_actions
+ reclass = reclass_actions
+ jenkins_creds = salt.get_cluster_jenkins_creds()
+ jenkins_url = jenkins_creds.get('url')
+ jenkins_user = jenkins_creds.get('user')
+ jenkins_pass = jenkins_creds.get('pass')
+
+ def has_only_similar(param_by_nodes):
+ """
+ :param param_by_nodes: dict
+ :return: bool, True if all items in the dict have similar keys
+ """
+ params = list(param_by_nodes.values())
+
+ def are_similar(x): return x == params[0]
+
+ return all(map(are_similar, params)),
+ # ############## Change reclass ######################################
+ show_step(1)
+ reclass.add_key(
+ "parameters._param.linux_system_repo_mcp_glusterfs_version_number",
+ "5",
+ "cluster/*/infra/init.yml"
+ )
+ # ################# Run linux.system state ###########################
+ show_step(2)
+ salt.enforce_state("*", "linux.system.repo")
+
+ # ############## Start deploy-upgrade-galera job #####################
+ show_step(3)
+ jenkins_build_timeout = 40 * 60
+ job_name = 'update-glusterfs'
+
+ update_glusterfs = run_jenkins_job.run_job(
+ host=jenkins_url,
+ username=jenkins_user,
+ password=jenkins_pass,
+ build_timeout=jenkins_build_timeout,
+ verbose=False,
+ job_name=job_name)
+
+ (description, stages) = get_jenkins_job_stages.get_deployment_result(
+ host=jenkins_url,
+ username=jenkins_user,
+ password=jenkins_pass,
+ job_name=job_name,
+ build_number='lastBuild')
+
+ LOG.info(description)
+ LOG.info('\n'.join(stages))
+
+ assert update_glusterfs == 'SUCCESS', "{0}\n{1}".format(
+ description, '\n'.join(stages))
+
+ # ################ Check GlusterFS version for servers ##############
+ show_step(4)
+ gluster_server_versions_by_nodes = salt.cmd_run(
+ "I@glusterfs:server",
+ "glusterd --version|head -n1")[0]
+
+ assert has_only_similar(gluster_server_versions_by_nodes),\
+ gluster_server_versions_by_nodes
+
+ # ################ Check GlusterFS version for clients ##############
+ show_step(5)
+ gluster_client_versions_by_nodes = salt.cmd_run(
+ "I@glusterfs:client",
+ "glusterfs --version|head -n1")[0]
+
+ assert has_only_similar(gluster_client_versions_by_nodes), \
+ gluster_client_versions_by_nodes
+
+ @pytest.mark.grab_versions
+ @pytest.mark.parametrize("_", [settings.ENV_NAME])
+ @pytest.mark.run_mcp_update
def test_update_galera(self, salt_actions, reclass_actions, show_step, _):
""" Upgrade Galera automatically
@@ -150,6 +236,7 @@
"""
salt = salt_actions
reclass = reclass_actions
+ jenkins_creds = salt.get_cluster_jenkins_creds()
# ################### Enable pipeline #################################
show_step(1)
reclass.add_class(
@@ -172,15 +259,13 @@
salt.enforce_state("dbs*", "linux.system.repo")
salt.enforce_state("cfg*", "salt.master")
- jenkins_creds = salt.get_cluster_jenkins_creds()
-
# #################### Login Jenkins on cid01 node ###################
show_step(6)
jenkins_url = jenkins_creds.get('url')
jenkins_user = jenkins_creds.get('user')
jenkins_pass = jenkins_creds.get('pass')
- jenkins_build_timeout = 40*60
+ jenkins_build_timeout = 40 * 60
job_name = 'deploy-upgrade-galera'
job_parameters = {
'INTERACTIVE': 'false'