Merge "Add test for detached tags" into stable/newton

This commit is contained in:
Jenkins 2017-04-03 13:32:36 +00:00 committed by Gerrit Code Review
commit c7e4ca4f21
1 changed files with 95 additions and 0 deletions

View File

@ -24,6 +24,7 @@ from fuelweb_test.helpers.decorators import log_snapshot_after_test
from fuelweb_test.tests.base_test_case import SetupEnvironment
from fuelweb_test.tests.base_test_case import TestBasic
from fuelweb_test.helpers.checkers import check_response_code
from fuelweb_test.helpers.utils import pretty_log
@test(groups=["test_tags"])
@ -335,3 +336,97 @@ class TagsCRUD(TestBasic):
rabbitmq_ctl_nodes)
assert_equal(rabbitmq_nodes, rabbitmq_ctl_nodes, err_msg)
self.env.make_snapshot("separate_rabbit_via_role")
@test(depends_on=[SetupEnvironment.prepare_slaves_9],
groups=["separate_all_via_role"])
@log_snapshot_after_test
def separate_all_via_role(self):
"""Deploy cluster with detached 4 services via tags
Scenario:
1. Remove rabbit, neutron, database and keystone tags from
controller role
2. Create new roles with all mentioned above tags
3. Create cluster
4. Add 1 nodes per each role: controller, compute, cinder,
all created at step 2 custom roles
5. Verify networks
6. Deploy the cluster
7. Verify networks
8. Run OSTF
Duration 120m
"""
self.env.revert_snapshot("ready_with_9_slaves")
role_template = {
"meta": {
"group": "base",
"description": "Separated {tag} from controller role",
"weight": 100,
"tags": [],
"update_required": [],
"name": ""
},
"name": "",
"volumes_roles_mapping": [{
"id": "os",
"allocate_size": "min"
}]
}
detachable_tags = ["rabbitmq", "database", "neutron", "keystone"]
update_required_roles = ["controller"]
update_required_roles.extend(detachable_tags)
custom_roles = []
for tag in detachable_tags:
logger.info("Generating role data for tag {tag}".format(tag=tag))
current_role = deepcopy(role_template)
current_role["meta"]["description"] = current_role["meta"][
"description"].format(tag=tag)
current_role["meta"]["tags"] = [tag]
current_role["meta"]["update_required"] = update_required_roles
current_role["meta"]["name"] = tag
current_role["name"] = tag
logger.debug(
"API data for tag {tag}:\n"
"{role_data}".format(tag=tag,
role_data=pretty_log(
current_role)))
custom_roles.append(current_role)
rel_id = self.nailgun.get_release_id()
self.show_step(1)
controller_role = self.nailgun.get_role_data(rel_id, 'controller')
for tag in detachable_tags:
controller_role['meta']['tags'].remove(tag)
self.nailgun.update_role_data(rel_id, 'controller', controller_role)
self.show_step(2)
for role in custom_roles:
self.nailgun.add_new_role(rel_id, role)
self.show_step(3)
self.create_cluster()
self.show_step(4)
nodes = {
'slave-01': ['controller'],
'slave-02': ['cinder'],
'slave-03': ['compute']
}
for i, role in enumerate(custom_roles, start=4):
nodes['slave-0{}'.format(i)] = [role['name']]
self.update_nodes(nodes)
self.show_step(5)
self.verify_networks()
self.show_step(6)
self.deploy_cluster(check_services=False)
self.show_step(7)
self.verify_networks()
self.show_step(8)
self.run_ostf(should_fail=1, failed_tests=['Check pacemaker status'])