Add option to setup centos master node in get_ready_setup method
1) Need to use fuel-devops >=3.0.0 2) Need to use centos_master.yaml devops template 3) export CENTOS_MASTER=True environment variable 4) provide path to CENTOS_CLOUD_IMAGE_PATH, FUEL_RELEASE_PATH and EXTRA_DEB_REPOS Change-Id: I1542c2238abc364713f02e4bca6ec7646883bf78 Closes-Bug: #1592419
This commit is contained in:
parent
b5049d4306
commit
60246f9cd9
|
@ -51,6 +51,11 @@ Fuel Actions
|
||||||
.. automodule:: fuelweb_test.helpers.fuel_actions
|
.. automodule:: fuelweb_test.helpers.fuel_actions
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
Fuel Release Hacks
|
||||||
|
------------------
|
||||||
|
.. automodule:: fuelweb_test.helpers.fuel_release_hacks
|
||||||
|
:members:
|
||||||
|
|
||||||
Granular Deployment Checkers
|
Granular Deployment Checkers
|
||||||
----------------------------
|
----------------------------
|
||||||
.. automodule:: fuelweb_test.helpers.granular_deployment_checkers
|
.. automodule:: fuelweb_test.helpers.granular_deployment_checkers
|
||||||
|
|
|
@ -17,14 +17,19 @@
|
||||||
from six.moves import xrange
|
from six.moves import xrange
|
||||||
# pylint: enable=redefined-builtin
|
# pylint: enable=redefined-builtin
|
||||||
|
|
||||||
|
from devops.helpers.helpers import wait
|
||||||
|
|
||||||
from fuelweb_test import logger
|
from fuelweb_test import logger
|
||||||
from fuelweb_test import settings
|
from fuelweb_test import settings
|
||||||
|
from fuelweb_test.helpers.fuel_release_hacks import install_mos_repos
|
||||||
from fuelweb_test.helpers.decorators import create_diagnostic_snapshot
|
from fuelweb_test.helpers.decorators import create_diagnostic_snapshot
|
||||||
from fuelweb_test.helpers.utils import TimeStat
|
from fuelweb_test.helpers.utils import TimeStat
|
||||||
from fuelweb_test.tests.base_test_case import TestBasic as Basic
|
from fuelweb_test.tests.base_test_case import TestBasic as Basic
|
||||||
|
|
||||||
from system_test.core.discover import load_yaml
|
from system_test.core.discover import load_yaml
|
||||||
|
|
||||||
|
from gates_tests.helpers import exceptions
|
||||||
|
|
||||||
|
|
||||||
class Manager(Basic):
|
class Manager(Basic):
|
||||||
"""Manager class for tests."""
|
"""Manager class for tests."""
|
||||||
|
@ -189,21 +194,48 @@ class Manager(Basic):
|
||||||
if 'devops_settings' in config['template']:
|
if 'devops_settings' in config['template']:
|
||||||
self._devops_config = config
|
self._devops_config = config
|
||||||
|
|
||||||
def get_ready_setup(self):
|
def get_ready_setup(self, centos=settings.CENTOS_MASTER_NODE):
|
||||||
"""Create virtual environment and install Fuel master node."""
|
"""Create virtual environment and install Fuel master node.
|
||||||
|
"""
|
||||||
|
|
||||||
logger.info("Getting ready setup")
|
logger.info("Getting ready setup")
|
||||||
if self.check_run("empty"):
|
if self.check_run("empty"):
|
||||||
self.env.revert_snapshot("empty")
|
self.env.revert_snapshot("empty")
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
with TimeStat("setup_environment", is_uniq=True):
|
if centos:
|
||||||
self.env.setup_environment()
|
""" Need to export CENTOS_CLOUD_IMAGE_PATH,
|
||||||
self.fuel_post_install_actions()
|
FUEL_RELEASE_PATH and EXTRA_DEB_REPOS environment variables"""
|
||||||
|
if not settings.EXTRA_DEB_REPOS:
|
||||||
|
raise exceptions.FuelQAVariableNotSet(
|
||||||
|
settings.EXTRA_DEB_REPOS,
|
||||||
|
"deb mos repo for building cluster")
|
||||||
|
|
||||||
self.env.make_snapshot("empty", is_make=True)
|
with TimeStat("centos_setup_environment", is_uniq=True):
|
||||||
self.env.resume_environment()
|
admin = self.env.d_env.nodes().admin
|
||||||
return True
|
self.env.d_env.start([admin])
|
||||||
|
logger.info("Waiting for Centos node to start up")
|
||||||
|
wait(lambda: admin.driver.node_active(admin), 60)
|
||||||
|
logger.info("Waiting for Centos node ssh ready")
|
||||||
|
self.env.wait_for_provisioning()
|
||||||
|
hostname = ''.join((settings.FUEL_MASTER_HOSTNAME,
|
||||||
|
settings.DNS_SUFFIX))
|
||||||
|
install_mos_repos()
|
||||||
|
self.centos_setup_fuel(hostname)
|
||||||
|
self.fuel_post_install_actions(
|
||||||
|
force_ssl=settings.FORCE_HTTPS_MASTER_NODE)
|
||||||
|
|
||||||
|
self.env.make_snapshot("empty", is_make=True)
|
||||||
|
self.env.resume_environment()
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
with TimeStat("setup_environment", is_uniq=True):
|
||||||
|
self.env.setup_environment()
|
||||||
|
self.fuel_post_install_actions()
|
||||||
|
|
||||||
|
self.env.make_snapshot("empty", is_make=True)
|
||||||
|
self.env.resume_environment()
|
||||||
|
return True
|
||||||
|
|
||||||
def get_ready_release(self):
|
def get_ready_release(self):
|
||||||
"""Make changes in release configuration."""
|
"""Make changes in release configuration."""
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
# Copyright 2016 Mirantis, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from fuelweb_test import logger
|
||||||
|
from fuelweb_test import settings
|
||||||
|
from fuelweb_test.helpers.ssh_manager import SSHManager
|
||||||
|
|
||||||
|
from gates_tests.helpers import exceptions
|
||||||
|
|
||||||
|
|
||||||
|
def install_mos_repos():
|
||||||
|
"""
|
||||||
|
Upload and install fuel-release packet with mos-repo description
|
||||||
|
and install necessary packets for packetary Fuel installation
|
||||||
|
:return: nothing
|
||||||
|
"""
|
||||||
|
logger.info("upload fuel-release packet")
|
||||||
|
if not settings.FUEL_RELEASE_PATH:
|
||||||
|
raise exceptions.FuelQAVariableNotSet('FUEL_RELEASE_PATH', '/path')
|
||||||
|
try:
|
||||||
|
ssh = SSHManager()
|
||||||
|
pack_path = '/tmp/'
|
||||||
|
full_pack_path = os.path.join(pack_path,
|
||||||
|
'fuel-release*.noarch.rpm')
|
||||||
|
ssh.upload_to_remote(
|
||||||
|
ip=ssh.admin_ip,
|
||||||
|
source=settings.FUEL_RELEASE_PATH.rstrip('/'),
|
||||||
|
target=pack_path)
|
||||||
|
|
||||||
|
except Exception:
|
||||||
|
logger.exception("Could not upload package")
|
||||||
|
raise
|
||||||
|
|
||||||
|
logger.debug("setup MOS repositories")
|
||||||
|
cmd = "rpm -ivh {}".format(full_pack_path)
|
||||||
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
||||||
|
|
||||||
|
cmd = "yum install -y fuel-setup"
|
||||||
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
|
@ -710,3 +710,5 @@ FUEL_RELEASE_PATH = os.environ.get("FUEL_RELEASE_PATH")
|
||||||
S3_API_CLIENT = os.environ.get("S3_API_CLIENT", "s3cmd")
|
S3_API_CLIENT = os.environ.get("S3_API_CLIENT", "s3cmd")
|
||||||
|
|
||||||
MASTER_NODE_EXTRA_PACKAGES = os.environ.get("MASTER_NODE_EXTRA_PACKAGES", "")
|
MASTER_NODE_EXTRA_PACKAGES = os.environ.get("MASTER_NODE_EXTRA_PACKAGES", "")
|
||||||
|
|
||||||
|
CENTOS_MASTER_NODE = os.environ.get("CENTOS_MASTER")
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import os
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from proboscis import TestProgram
|
from proboscis import TestProgram
|
||||||
|
@ -35,8 +34,6 @@ from fuelweb_test.settings import REPLACE_DEFAULT_REPOS_ONLY_ONCE
|
||||||
from fuelweb_test.settings import SEPARATE_SERVICE_HAPROXY_PLUGIN_PATH
|
from fuelweb_test.settings import SEPARATE_SERVICE_HAPROXY_PLUGIN_PATH
|
||||||
from fuelweb_test.settings import USE_HAPROXY_TEMPLATE
|
from fuelweb_test.settings import USE_HAPROXY_TEMPLATE
|
||||||
|
|
||||||
from gates_tests.helpers import exceptions
|
|
||||||
|
|
||||||
|
|
||||||
class TestBasic(object):
|
class TestBasic(object):
|
||||||
"""Basic test case class for all system tests.
|
"""Basic test case class for all system tests.
|
||||||
|
@ -272,22 +269,7 @@ class TestBasic(object):
|
||||||
self.fuel_post_install_actions()
|
self.fuel_post_install_actions()
|
||||||
|
|
||||||
def centos_setup_fuel(self, hostname):
|
def centos_setup_fuel(self, hostname):
|
||||||
logger.info("upload fuel-release packet")
|
ssh = SSHManager()
|
||||||
if not settings.FUEL_RELEASE_PATH:
|
|
||||||
raise exceptions.FuelQAVariableNotSet('FUEL_RELEASE_PATH', '/path')
|
|
||||||
try:
|
|
||||||
ssh = SSHManager()
|
|
||||||
pack_path = '/tmp/'
|
|
||||||
full_pack_path = os.path.join(pack_path,
|
|
||||||
'fuel-release*.noarch.rpm')
|
|
||||||
ssh.upload_to_remote(
|
|
||||||
ip=ssh.admin_ip,
|
|
||||||
source=settings.FUEL_RELEASE_PATH.rstrip('/'),
|
|
||||||
target=pack_path)
|
|
||||||
|
|
||||||
except Exception:
|
|
||||||
logger.exception("Could not upload package")
|
|
||||||
|
|
||||||
logger.debug("Update host information")
|
logger.debug("Update host information")
|
||||||
cmd = "echo HOSTNAME={} >> /etc/sysconfig/network".format(hostname)
|
cmd = "echo HOSTNAME={} >> /etc/sysconfig/network".format(hostname)
|
||||||
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
||||||
|
@ -302,13 +284,6 @@ class TestBasic(object):
|
||||||
cmd = "hostname {}".format(hostname)
|
cmd = "hostname {}".format(hostname)
|
||||||
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
||||||
|
|
||||||
logger.debug("setup MOS repositories")
|
|
||||||
cmd = "rpm -ivh {}".format(full_pack_path)
|
|
||||||
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
|
||||||
|
|
||||||
cmd = "yum install -y fuel-setup"
|
|
||||||
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
|
||||||
|
|
||||||
cmd = "yum install -y screen"
|
cmd = "yum install -y screen"
|
||||||
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
ssh.execute_on_remote(ssh.admin_ip, cmd=cmd)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue