Align patching tests with Fuel 6.1

Make necessary changes in tests to be able
to run them on Fuel 6.1 iso.
Also change parser for erratum.yaml, so it
recognize new modified format.

Change-Id: I6c8299aa6bda1fad1fb1f8c26338a86bf7c709ae
Implements: blueprint mos-patching-tests
This commit is contained in:
Artem Panchenko 2015-04-02 17:09:01 +03:00
parent 214258fcb1
commit 8bf792578b
3 changed files with 28 additions and 24 deletions

View File

@ -29,7 +29,6 @@ from proboscis.asserts import assert_not_equal
from proboscis.asserts import assert_true
from fuelweb_test import settings
from fuel_actions import CobblerActions
patching_validation_schema = {
@ -76,11 +75,10 @@ def map_test():
errata = get_errata(path=settings.PATCHING_APPLY_TESTS,
bug_id=settings.PATCHING_BUG_ID)
verify_errata(errata)
if 'pkgs' in errata.keys():
if settings.OPENSTACK_RELEASE_CENTOS in settings.OPENSTACK_RELEASE:
settings.PATCHING_PKGS = set(errata['pkgs']['centos'])
else:
settings.PATCHING_PKGS = set(errata['pkgs']['ubuntu'])
if 'fixed-pkgs' in errata.keys():
distro = settings.OPENSTACK_RELEASE.lower()
settings.PATCHING_PKGS = set([re.split('=|<|>', package)[0] for package
in errata['fixed-pkgs'][distro]])
available_packages = set()
for repo in settings.PATCHING_MIRRORS:
available_packages.update(get_repository_packages(repo))
@ -209,14 +207,6 @@ def get_packages_tests(packages):
return packages_tests
def enable_local_dns_resolving(environment):
admin_remote = environment.d_env.get_admin_remote()
router_ip = environment.d_env.router()
# Add router IP to the DNS servers list on master node
fuel_cobbler_actions = CobblerActions(admin_remote=admin_remote)
fuel_cobbler_actions.add_dns_upstream_server(router_ip)
def mirror_remote_repository(admin_remote, remote_repo_url, local_repo_path):
repo_url = urlparse(remote_repo_url)
cut_dirs = len(repo_url.path.strip('/').split('/'))
@ -250,8 +240,8 @@ def connect_slaves_to_repo(environment, nodes, repo_name):
master_ip=environment.get_admin_node_ip(), repo_name=repo_name)
if settings.OPENSTACK_RELEASE == settings.OPENSTACK_RELEASE_UBUNTU:
cmds = [
"sed -e '$adeb {repourl} /' -i /etc/apt/sources.list".format(
repourl=repourl),
"sed -e '$adeb {repourl} /' -i /etc/apt/sources.list.d/mos.list".
format(repourl=repourl),
"apt-key add <(curl -s '{repourl}/Release.key')".format(
repourl=repourl),
"apt-get update"
@ -405,7 +395,7 @@ def validate_fix_apply_step(apply_step, environment, slaves):
def get_errata(path, bug_id):
scenario_path = '{0}/bugs/{1}/errata.yaml'.format(path, bug_id)
scenario_path = '{0}/bugs/{1}/erratum.yaml'.format(path, bug_id)
if 'http' in urlparse(settings.PATCHING_APPLY_TESTS):
return yaml.load(urlopen(scenario_path).read())
elif os.path.isdir(settings.PATCHING_APPLY_TESTS):
@ -468,8 +458,3 @@ def apply_patches(environment, slaves):
def verify_fix(environment, slaves):
run_actions(environment, slaves, action_type='verify-scenario')
class ApplyPatchActions(object):
def __init__(self):
pass

View File

@ -29,6 +29,7 @@ from fuelweb_test.helpers.decorators import retry
from fuelweb_test.helpers.decorators import upload_manifests
from fuelweb_test.helpers.eb_tables import Ebtables
from fuelweb_test.helpers.fuel_actions import AdminActions
from fuelweb_test.helpers.fuel_actions import CobblerActions
from fuelweb_test.helpers.fuel_actions import NailgunActions
from fuelweb_test.helpers.fuel_actions import PostgresActions
from fuelweb_test.helpers import multiple_networks_hacks
@ -55,6 +56,10 @@ class EnvironmentModel(object):
def postgres_actions(self):
return PostgresActions(self.d_env.get_admin_remote())
@property
def cobbler_actions(self):
return CobblerActions(self.d_env.get_admin_remote())
@property
def admin_node_ip(self):
return self.fuel_web.admin_node_ip
@ -511,3 +516,9 @@ class EnvironmentModel(object):
return self.postgres_actions.run_query(
db='nailgun',
query="select master_node_uid from master_node_settings limit 1;")
@logwrap
def enable_local_dns_resolving(self):
router_ip = self.d_env.router()
# Add router IP to the DNS servers list on master node
self.cobbler_actions.add_dns_upstream_server(router_ip)

View File

@ -12,6 +12,8 @@
# License for the specific language governing permissions and limitations
# under the License.
import time
from proboscis import test
from proboscis.asserts import assert_is_not_none
@ -70,7 +72,7 @@ class PatchingTests(TestBasic):
# Run Rally benchmarks, coming soon...
# Step #3
patching.enable_local_dns_resolving(self.env)
self.env.enable_local_dns_resolving()
# Step #4
patching_repos = patching.add_remote_repositories(self.env)
@ -92,7 +94,13 @@ class PatchingTests(TestBasic):
patching.verify_fix(self.env, slaves)
# Step #9
self.fuel_web.run_ostf(cluster_id=cluster_id)
# If OSTF fails (sometimes services aren't ready after
# slaves nodes reboot) sleep 5 minutes and try again
try:
self.fuel_web.run_ostf(cluster_id=cluster_id)
except AssertionError:
time.sleep(300)
self.fuel_web.run_ostf(cluster_id=cluster_id)
# Step #10
# Run Rally benchmarks, compare new results with previous,