Add cli component tests on role
- Add test on deleting role - Add test on create role with primary=true - Add test on update role with incorrect values Change-Id: I2ce20b8fe096039cc85ce35496d0c56bd81a41a6 Closes-Bug: #1528903
This commit is contained in:
parent
58d6ff81ac
commit
7318310db0
11
fuelweb_test/config_templates/create_primary_role.yaml
Normal file
11
fuelweb_test/config_templates/create_primary_role.yaml
Normal file
@ -0,0 +1,11 @@
|
||||
meta:
|
||||
conflicts:
|
||||
- controller
|
||||
- compute
|
||||
description: New role
|
||||
has_primary: true
|
||||
name: Test primary role
|
||||
name: test-primary-role
|
||||
volumes_roles_mapping:
|
||||
- allocate_size: min
|
||||
id: os
|
@ -14,7 +14,7 @@
|
||||
|
||||
import os
|
||||
from proboscis import test
|
||||
from proboscis.asserts import assert_equal
|
||||
from proboscis.asserts import assert_equal, assert_true
|
||||
|
||||
from fuelweb_test.helpers.decorators import log_snapshot_after_test
|
||||
from fuelweb_test.helpers.utils import run_on_remote
|
||||
@ -155,3 +155,186 @@ class CommandLineRoleTests(test_cli_base.CommandLine):
|
||||
"We shouldn't be able to assign controller and"
|
||||
" compute node to node id {}".format(node_ids[1]))
|
||||
self.env.make_snapshot("cli_create_role")
|
||||
|
||||
@test(depends_on=[SetupEnvironment.prepare_slaves_3],
|
||||
groups=["cli_create_role_with_has_primary"])
|
||||
@log_snapshot_after_test
|
||||
def cli_create_role_with_has_primary(self):
|
||||
"""Create new role using Fuel CLI
|
||||
|
||||
Scenario:
|
||||
1. Revert snapshot "ready_with_3_slaves"
|
||||
2. Upload new role yaml to master
|
||||
3. Upload yaml to nailgun using Fuel CLI
|
||||
4. Create new cluster
|
||||
5. Try to create node with new role
|
||||
|
||||
Duration 20m
|
||||
"""
|
||||
self.show_step(1, initialize=True)
|
||||
self.env.revert_snapshot("ready_with_3_slaves")
|
||||
node_ids = [self.fuel_web.get_nailgun_node_by_devops_node(
|
||||
self.env.d_env.nodes().slaves[slave_id])['id']
|
||||
for slave_id in range(3)]
|
||||
release_id = self.fuel_web.get_releases_list_for_os(
|
||||
release_name=OPENSTACK_RELEASE)[0]
|
||||
templates_path = os.path.join(
|
||||
'{0}/fuelweb_test/config_templates/'.format(os.environ.get(
|
||||
"WORKSPACE", "./")), 'create_primary_role.yaml')
|
||||
self.show_step(2)
|
||||
if os.path.exists(templates_path):
|
||||
self.ssh_manager.upload_to_remote(self.ssh_manager.admin_ip,
|
||||
templates_path, '/tmp')
|
||||
self.show_step(3)
|
||||
self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd='fuel role --rel {} --create --file'
|
||||
' /tmp/create_primary_role.yaml'.format(release_id))
|
||||
|
||||
with self.env.d_env.get_admin_remote() as remote:
|
||||
|
||||
if NEUTRON_SEGMENT_TYPE:
|
||||
nst = '--nst={0}'.format(NEUTRON_SEGMENT_TYPE)
|
||||
else:
|
||||
nst = ''
|
||||
self.show_step(4)
|
||||
cmd = ('fuel env create --name={0} --release={1} '
|
||||
'{2} --json'.format(self.__class__.__name__,
|
||||
release_id, nst))
|
||||
env_result = run_on_remote(remote, cmd, jsonify=True)
|
||||
cluster_id = env_result['id']
|
||||
self.show_step(5)
|
||||
cmd = ('fuel --env-id={0} node set --node {1}'
|
||||
' --role=test-primary-role'.format(cluster_id,
|
||||
node_ids[0]))
|
||||
result = remote.execute(cmd)
|
||||
assert_equal(result['exit_code'], 0,
|
||||
"Can't assign new role"
|
||||
" to node id {}".format(node_ids[0]))
|
||||
self.env.make_snapshot("cli_create_role_with_has_primary")
|
||||
|
||||
@test(depends_on=[SetupEnvironment.prepare_slaves_3],
|
||||
groups=["cli_delete_role"])
|
||||
@log_snapshot_after_test
|
||||
def cli_delete_role(self):
|
||||
"""Delete role using Fuel CLI
|
||||
|
||||
Scenario:
|
||||
1. Revert snapshot "ready_with_3_slaves"
|
||||
2. Upload new role yaml to master
|
||||
3. Upload yaml to nailgun using Fuel CLI
|
||||
4. Check new role exists
|
||||
5. Create new cluster
|
||||
6. Create node with controller, compute
|
||||
7. Delete new role
|
||||
8. Try to delete controller role and check it's impossible
|
||||
|
||||
Duration 20m
|
||||
"""
|
||||
self.show_step(1, initialize=True)
|
||||
self.env.revert_snapshot("ready_with_3_slaves")
|
||||
node_ids = [self.fuel_web.get_nailgun_node_by_devops_node(
|
||||
self.env.d_env.nodes().slaves[slave_id])['id']
|
||||
for slave_id in range(3)]
|
||||
release_id = self.fuel_web.get_releases_list_for_os(
|
||||
release_name=OPENSTACK_RELEASE)[0]
|
||||
templates_path = os.path.join(
|
||||
'{0}/fuelweb_test/config_templates/'.format(os.environ.get(
|
||||
"WORKSPACE", "./")), 'create_role.yaml')
|
||||
self.show_step(2)
|
||||
if os.path.exists(templates_path):
|
||||
self.ssh_manager.upload_to_remote(self.ssh_manager.admin_ip,
|
||||
templates_path, '/tmp')
|
||||
self.show_step(3)
|
||||
self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd='fuel role --rel {} --create --file'
|
||||
' /tmp/create_role.yaml'.format(release_id))
|
||||
result = self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd='fuel role --rel {}'.format(release_id))['stdout']
|
||||
self.show_step(4)
|
||||
roles = [i.strip() for i in result]
|
||||
assert_true('test-role' in roles,
|
||||
"role is not in the list {}".format(roles))
|
||||
|
||||
with self.env.d_env.get_admin_remote() as remote:
|
||||
if NEUTRON_SEGMENT_TYPE:
|
||||
nst = '--nst={0}'.format(NEUTRON_SEGMENT_TYPE)
|
||||
else:
|
||||
nst = ''
|
||||
self.show_step(5)
|
||||
cmd = ('fuel env create --name={0} --release={1} '
|
||||
'{2} --json'.format(self.__class__.__name__,
|
||||
release_id, nst))
|
||||
env_result = run_on_remote(remote, cmd, jsonify=True)
|
||||
cluster_id = env_result['id']
|
||||
self.show_step(6)
|
||||
cmd = ('fuel --env-id={0} node set --node {1}'
|
||||
' --role=controller'.format(cluster_id, node_ids[0]))
|
||||
result = remote.execute(cmd)
|
||||
assert_equal(result['exit_code'], 0,
|
||||
"Can't assign controller and"
|
||||
" compute node to node id {}".format(node_ids[0]))
|
||||
|
||||
self.show_step(7)
|
||||
cmd = ('fuel role --rel {} --delete'
|
||||
' --role test-role'.format(release_id))
|
||||
result = remote.execute(cmd)
|
||||
assert_equal(result['exit_code'], 0,
|
||||
"Can't delete role, result is {}".format(result))
|
||||
|
||||
result = self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd='fuel role --rel {}'.format(release_id))['stdout']
|
||||
roles = [i.strip() for i in result]
|
||||
assert_true('test-role' not in roles,
|
||||
"role is not in the list {}".format(roles))
|
||||
cmd = ('fuel role --rel {} --delete'
|
||||
' --role controller'.format(release_id))
|
||||
result = remote.execute(cmd)
|
||||
self.show_step(8)
|
||||
assert_equal(result['exit_code'], 1,
|
||||
"Controller role shouldn't be able to be deleted")
|
||||
|
||||
self.env.make_snapshot("cli_delete_role")
|
||||
|
||||
@test(depends_on=[SetupEnvironment.prepare_slaves_3],
|
||||
groups=["cli_incorrect_update_role"])
|
||||
@log_snapshot_after_test
|
||||
def cli_incorrect_update_role(self):
|
||||
"""Update controller role using Fuel CLI
|
||||
|
||||
Scenario:
|
||||
1. Revert snapshot "ready_with_3_slaves"
|
||||
2. Download controller role yaml to master
|
||||
3. Modify "id" section to incorrect value
|
||||
4. Upload changes using Fuel CLI
|
||||
5. Check that error message was got
|
||||
|
||||
Duration 20m
|
||||
"""
|
||||
self.show_step(1, initialize=True)
|
||||
self.env.revert_snapshot("ready_with_3_slaves")
|
||||
release_id = self.fuel_web.get_releases_list_for_os(
|
||||
release_name=OPENSTACK_RELEASE)[0]
|
||||
|
||||
self.show_step(2)
|
||||
self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd='fuel role --rel {} --role controller --file'
|
||||
' /tmp/controller.yaml'.format(release_id))
|
||||
|
||||
self.show_step(3)
|
||||
self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd="sed -i -r 's/id: os/id: blabla/' /tmp/controller.yaml")
|
||||
|
||||
self.show_step(4)
|
||||
self.show_step(5)
|
||||
self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd='fuel role --rel {} --role controller --update --file'
|
||||
' /tmp/controller.yaml'.format(release_id),
|
||||
assert_ec_equal=[1])
|
||||
self.env.make_snapshot("cli_incorrect_update_role")
|
||||
|
Loading…
Reference in New Issue
Block a user