Add testcase for 'fuel-createmirror' to thread_2

- Add testcase 'deploy_multiple_services_local_mirror', where
  added more services to check more package dependencies during
  deploy;
- Move replacing of default repositories from 'empty' to 'ready'
  snapshot, to have a clear Fuel admin node with defaults in 'empty'
- Add a new test group 'prepare_release' that can be used instead
  of 'setup' to get Fuel admin node with customized settings;
- Remove excess calls for replace repositories from create_cluster()

Change-Id: Iace5351df4f5cb1a3e0c56dade96fd1a2dd7de24
Closes-Bug:#1463793
This commit is contained in:
Dennis Dmitriev 2015-07-22 23:55:30 +03:00
parent f86f249a21
commit 481fde2f8e
3 changed files with 111 additions and 20 deletions

View File

@ -467,20 +467,6 @@ class FuelWebClient(object):
hpv_data = attributes['editable']['common']['use_vcenter']
hpv_data['value'] = True
if (help_data.OPENSTACK_RELEASE_UBUNTU in
help_data.OPENSTACK_RELEASE and
'repo_setup' in attributes['editable']):
repos_attr = attributes['editable']['repo_setup']['repos']
repos_attr['value'] = self.replace_ubuntu_repos(repos_attr)
elif (help_data.OPENSTACK_RELEASE_CENTOS in
help_data.OPENSTACK_RELEASE and
'repo_setup' in attributes['editable']):
repos_attr = attributes['editable']['repo_setup']['repos']
repos_attr['value'] = self.replace_centos_repos(repos_attr)
logger.debug("Try to update cluster "
"with next attributes {0}".format(attributes))
self.client.update_cluster_attributes(cluster_id, attributes)
@ -636,6 +622,16 @@ class FuelWebClient(object):
self.report_centos_repos(repos)
return repos
def report_repos(self, cluster_id, release=help_data.OPENSTACK_RELEASE):
"""Show list of reposifories for specified cluster"""
attributes = self.client.get_cluster_attributes(cluster_id)
repos_attr = attributes['editable']['repo_setup']['repos']
if help_data.OPENSTACK_RELEASE_UBUNTU in release:
self.report_ubuntu_repos(repos_attr['value'])
else:
self.report_centos_repos(repos_attr['value'])
def report_ubuntu_repos(self, repos):
for x, rep in enumerate(repos):
logger.info(

View File

@ -57,10 +57,6 @@ class SetupEnvironment(TestBasic):
self.check_run("empty")
with timestat("setup_environment", is_uniq=True):
self.env.setup_environment()
if REPLACE_DEFAULT_REPOS:
self.fuel_web.replace_default_repos()
self.env.make_snapshot("empty", is_make=True)
@test(groups=["setup_master_custom_manifests"])
@ -78,9 +74,11 @@ class SetupEnvironment(TestBasic):
"""
self.check_run("empty_custom_manifests")
self.env.setup_environment(custom=True, build_images=True)
if REPLACE_DEFAULT_REPOS:
self.fuel_web.replace_default_repos()
self.env.make_snapshot("empty_custom_manifests", is_make=True)
@test(depends_on=[setup_master])
@test(depends_on=[setup_master], groups=["prepare_release"])
@log_snapshot_after_test
def prepare_release(self):
"""Prepare master node
@ -96,7 +94,8 @@ class SetupEnvironment(TestBasic):
self.env.revert_snapshot("empty", skip_timesync=True)
self.fuel_web.get_nailgun_version()
if REPLACE_DEFAULT_REPOS:
self.fuel_web.replace_default_repos()
self.env.make_snapshot("ready", is_make=True)
@test(depends_on=[prepare_release],

View File

@ -30,6 +30,7 @@ from fuelweb_test.helpers import os_actions
from fuelweb_test.settings import CLASSIC_PROVISIONING
from fuelweb_test.settings import DEPLOYMENT_MODE
from fuelweb_test.settings import NODE_VOLUME_SIZE
from fuelweb_test.settings import NEUTRON_SEGMENT_TYPE
from fuelweb_test.settings import OPENSTACK_RELEASE
from fuelweb_test.settings import OPENSTACK_RELEASE_UBUNTU
from fuelweb_test.tests.base_test_case import SetupEnvironment
@ -499,6 +500,101 @@ class MultiroleComputeCinder(TestBasic):
self.env.make_snapshot("deploy_multirole_compute_cinder")
@test(groups=["thread_2"])
class MultiroleMultipleServices(TestBasic):
"""MultiroleMultipleServices.""" # TODO documentation
@test(depends_on=[SetupEnvironment.setup_master],
groups=["deploy_multiple_services_local_mirror"])
@log_snapshot_after_test
def deploy_multiple_services_local_mirror(self):
"""Deploy cluster with multiple services using local mirror
Scenario:
1. Revert snapshot 'empty' with default set of repositories
2. Bootstrap 5 slave nodes
3. Run 'fuel-createmirror' to replace default repositories
with local mirrors
4. Create cluster with many components to check as many
packages in local mirrors have correct dependences
5. Deploy cluster
Duration 50m
"""
self.env.revert_snapshot("empty")
self.env.bootstrap_nodes(self.env.d_env.nodes().slaves[:5])
logger.info("Executing 'fuel-createmirror' on Fuel admin node")
with self.env.d_env.get_admin_remote() as remote:
# TODO(ddmitriev):Enable debug via argument for 'fuel-createmirror'
# when bug#1458469 fixed.
if OPENSTACK_RELEASE_UBUNTU in OPENSTACK_RELEASE:
cmd = ("sed -i 's/DEBUG=\"no\"/DEBUG=\"yes\"/' {}"
.format('/etc/fuel-createmirror/ubuntu.cfg'))
remote.execute(cmd)
else:
# CentOS is not supported yet, see bug#1467403
pass
result = remote.execute('fuel-createmirror')
logger.debug("'fuel-createmirror' [stdout]:\n{}"
.format(''.join(result['stdout'])))
logger.debug("'fuel-createmirror' [stderr]:\n{}"
.format(''.join(result['stderr'])))
assert_true(result['exit_code'] == 0,
"Executing 'fuel-createmirror' on admin node failed "
"with the ['exit_code']='{0}'. Please inspect "
"'sys_test.log' for more details."
.format(result['exit_code']))
# Check if there all repos were replaced with local mirrors
ubuntu_id = self.fuel_web.client.get_release_id(
release_name=OPENSTACK_RELEASE_UBUNTU)
ubuntu_release = self.fuel_web.client.get_release(ubuntu_id)
ubuntu_meta = ubuntu_release["attributes_metadata"]
repos_ubuntu = ubuntu_meta["editable"]["repo_setup"]["repos"]['value']
remote_repos = []
for repo_value in repos_ubuntu:
if (self.fuel_web.admin_node_ip not in repo_value['uri'] and
'{settings.MASTER_IP}' not in repo_value['uri']):
remote_repos.append({repo_value['name']: repo_value['uri']})
assert_true(not remote_repos,
"Some repositories weren't replaced with local mirrors: "
"{0}".format(remote_repos))
cluster_id = self.fuel_web.create_cluster(
name=self.__class__.__name__,
mode=DEPLOYMENT_MODE,
settings={
"net_provider": 'neutron',
"net_segment_type": NEUTRON_SEGMENT_TYPE,
'sahara': True,
'murano': True,
'ceilometer': True,
'volumes_lvm': True,
'volumes_ceph': False,
'images_ceph': True,
'osd_pool_size': "3"
}
)
self.fuel_web.update_nodes(
cluster_id,
{
'slave-01': ['controller', 'ceph-osd'],
'slave-02': ['compute', 'ceph-osd'],
'slave-03': ['cinder', 'ceph-osd'],
'slave-04': ['mongo'],
'slave-05': ['mongo']
}
)
self.fuel_web.report_repos(cluster_id)
# (ddmitriev): No additional checks is required after deploy,
# just make sure that all components are installed from the
# local mirrors without any dependency errors or missing packages.
self.fuel_web.deploy_cluster_wait(cluster_id)
@test(groups=["thread_2"])
class FloatingIPs(TestBasic):
"""FloatingIPs.""" # TODO documentation