Refactor Setup_environment
Move some actions executing after master node boostrapping to TestBasics action to using them in separate_master node deployment Implements blueprint: fuelwebclient-refactoring Change-Id: Idb8954c71861840124a805e8982a2fe63c94376f
This commit is contained in:
parent
b68a5d9ef7
commit
168033a0d5
|
@ -193,6 +193,7 @@ class Manager(Basic):
|
|||
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()
|
||||
|
|
|
@ -40,7 +40,6 @@ from fuelweb_test.helpers.fuel_actions import PostgresActions
|
|||
from fuelweb_test.helpers.fuel_actions import NessusActions
|
||||
from fuelweb_test.helpers.fuel_actions import FuelBootstrapCliActions
|
||||
from fuelweb_test.helpers.ssh_manager import SSHManager
|
||||
from fuelweb_test.helpers.utils import erase_data_from_hdd
|
||||
from fuelweb_test.helpers.utils import TimeStat
|
||||
from fuelweb_test.helpers import multiple_networks_hacks
|
||||
from fuelweb_test.models.fuel_web_client import FuelWebClient
|
||||
|
@ -383,20 +382,10 @@ class EnvironmentModel(object):
|
|||
name)
|
||||
subprocess.check_call(cmd, shell=True)
|
||||
|
||||
def reinstall_master_node(self):
|
||||
"""Erase boot sector and run setup_environment"""
|
||||
with self.d_env.get_admin_remote() as remote:
|
||||
erase_data_from_hdd(remote, mount_point='/boot')
|
||||
remote.execute("/sbin/shutdown")
|
||||
self.d_env.nodes().admin.destroy()
|
||||
self.insert_cdrom_tray()
|
||||
self.setup_environment()
|
||||
|
||||
def setup_environment(self, custom=settings.CUSTOM_ENV,
|
||||
build_images=settings.BUILD_IMAGES,
|
||||
iso_connect_as=settings.ADMIN_BOOT_DEVICE,
|
||||
security=settings.SECURITY_TEST,
|
||||
force_ssl=settings.FORCE_HTTPS_MASTER_NODE):
|
||||
security=settings.SECURITY_TEST):
|
||||
# Create environment and start the Fuel master node
|
||||
admin = self.d_env.nodes().admin
|
||||
self.d_env.start([admin])
|
||||
|
@ -426,105 +415,7 @@ class EnvironmentModel(object):
|
|||
self.admin_actions.modify_configs(self.d_env.router())
|
||||
self.kill_wait_for_external_config()
|
||||
self.wait_bootstrap()
|
||||
|
||||
if settings.UPDATE_FUEL:
|
||||
# Update Ubuntu packages
|
||||
self.admin_actions.upload_packages(
|
||||
local_packages_dir=settings.UPDATE_FUEL_PATH,
|
||||
centos_repo_path=None,
|
||||
ubuntu_repo_path=settings.LOCAL_MIRROR_UBUNTU)
|
||||
|
||||
self.admin_actions.wait_for_fuel_ready()
|
||||
time.sleep(10)
|
||||
self.set_admin_keystone_password()
|
||||
self.sync_time(['admin'])
|
||||
if settings.UPDATE_MASTER:
|
||||
if settings.UPDATE_FUEL_MIRROR:
|
||||
for i, url in enumerate(settings.UPDATE_FUEL_MIRROR):
|
||||
conf_file = '/etc/yum.repos.d/temporary-{}.repo'.format(i)
|
||||
cmd = ("echo -e"
|
||||
" '[temporary-{0}]\nname="
|
||||
"temporary-{0}\nbaseurl={1}/"
|
||||
"\ngpgcheck=0\npriority="
|
||||
"1' > {2}").format(i, url, conf_file)
|
||||
|
||||
self.ssh_manager.execute(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd=cmd
|
||||
)
|
||||
self.admin_install_updates()
|
||||
if settings.MULTIPLE_NETWORKS:
|
||||
self.describe_other_admin_interfaces(admin)
|
||||
if settings.FUEL_STATS_HOST:
|
||||
self.nailgun_actions.set_collector_address(
|
||||
settings.FUEL_STATS_HOST,
|
||||
settings.FUEL_STATS_PORT,
|
||||
settings.FUEL_STATS_SSL)
|
||||
# Restart statsenderd to apply settings(Collector address)
|
||||
self.nailgun_actions.force_fuel_stats_sending()
|
||||
if settings.FUEL_STATS_ENABLED and settings.FUEL_STATS_HOST:
|
||||
self.fuel_web.client.send_fuel_stats(enabled=True)
|
||||
logger.info('Enabled sending of statistics to {0}:{1}'.format(
|
||||
settings.FUEL_STATS_HOST, settings.FUEL_STATS_PORT
|
||||
))
|
||||
if settings.PATCHING_DISABLE_UPDATES:
|
||||
cmd = "find /etc/yum.repos.d/ -type f -regextype posix-egrep" \
|
||||
" -regex '.*/mos[0-9,\.]+\-(updates|security).repo' | " \
|
||||
"xargs -n1 -i sed '$aenabled=0' -i {}"
|
||||
self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd=cmd
|
||||
)
|
||||
if settings.DISABLE_OFFLOADING:
|
||||
logger.info(
|
||||
'========================================'
|
||||
'Applying workaround for bug #1526544'
|
||||
'========================================'
|
||||
)
|
||||
# Disable TSO offloading for every network interface
|
||||
# that is not virtual (loopback, bridges, etc)
|
||||
ifup_local = (
|
||||
"""#!/bin/bash\n"""
|
||||
"""if [[ -z "${1}" ]]; then\n"""
|
||||
""" exit\n"""
|
||||
"""fi\n"""
|
||||
"""devpath=$(readlink -m /sys/class/net/${1})\n"""
|
||||
"""if [[ "${devpath}" == /sys/devices/virtual/* ]]; then\n"""
|
||||
""" exit\n"""
|
||||
"""fi\n"""
|
||||
"""ethtool -K ${1} tso off\n"""
|
||||
)
|
||||
cmd = (
|
||||
"echo -e '{0}' | sudo tee /sbin/ifup-local;"
|
||||
"sudo chmod +x /sbin/ifup-local;"
|
||||
).format(ifup_local)
|
||||
self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd=cmd
|
||||
)
|
||||
cmd = (
|
||||
'for ifname in $(ls /sys/class/net); do '
|
||||
'sudo /sbin/ifup-local ${ifname}; done'
|
||||
)
|
||||
self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd=cmd
|
||||
)
|
||||
# Log interface settings
|
||||
cmd = (
|
||||
'for ifname in $(ls /sys/class/net); do '
|
||||
'([[ $(readlink -e /sys/class/net/${ifname}) == '
|
||||
'/sys/devices/virtual/* ]] '
|
||||
'|| ethtool -k ${ifname}); done'
|
||||
)
|
||||
result = self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd=cmd
|
||||
)
|
||||
logger.debug('Offloading settings:\n{0}\n'.format(
|
||||
''.join(result['stdout'])))
|
||||
if force_ssl:
|
||||
self.enable_force_https(self.ssh_manager.admin_ip)
|
||||
|
||||
@logwrap
|
||||
def enable_force_https(self, admin_node_ip):
|
||||
|
|
|
@ -12,12 +12,16 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import time
|
||||
|
||||
from proboscis import TestProgram
|
||||
from proboscis import SkipTest
|
||||
from proboscis import test
|
||||
|
||||
from fuelweb_test import logger
|
||||
from fuelweb_test import settings
|
||||
from fuelweb_test.helpers.decorators import log_snapshot_after_test
|
||||
from fuelweb_test.helpers.utils import erase_data_from_hdd
|
||||
from fuelweb_test.helpers.utils import get_test_method_name
|
||||
from fuelweb_test.helpers.utils import TimeStat
|
||||
from fuelweb_test.helpers.ssh_manager import SSHManager
|
||||
|
@ -149,6 +153,117 @@ class TestBasic(object):
|
|||
return True
|
||||
return False
|
||||
|
||||
def fuel_post_install_actions(self,
|
||||
force_ssl=settings.FORCE_HTTPS_MASTER_NODE
|
||||
):
|
||||
if settings.UPDATE_FUEL:
|
||||
# Update Ubuntu packages
|
||||
self.env.admin_actions.upload_packages(
|
||||
local_packages_dir=settings.UPDATE_FUEL_PATH,
|
||||
centos_repo_path=None,
|
||||
ubuntu_repo_path=settings.LOCAL_MIRROR_UBUNTU)
|
||||
time.sleep(10)
|
||||
self.env.set_admin_keystone_password()
|
||||
self.env.sync_time(['admin'])
|
||||
if settings.UPDATE_MASTER:
|
||||
if settings.UPDATE_FUEL_MIRROR:
|
||||
for i, url in enumerate(settings.UPDATE_FUEL_MIRROR):
|
||||
conf_file = '/etc/yum.repos.d/temporary-{}.repo'.format(i)
|
||||
cmd = ("echo -e"
|
||||
" '[temporary-{0}]\nname="
|
||||
"temporary-{0}\nbaseurl={1}/"
|
||||
"\ngpgcheck=0\npriority="
|
||||
"1' > {2}").format(i, url, conf_file)
|
||||
|
||||
self.ssh_manager.execute(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd=cmd
|
||||
)
|
||||
self.env.admin_install_updates()
|
||||
if settings.MULTIPLE_NETWORKS:
|
||||
self.env.describe_other_admin_interfaces(
|
||||
self.env.d_env.nodes().admin)
|
||||
if settings.FUEL_STATS_HOST:
|
||||
self.env.nailgun_actions.set_collector_address(
|
||||
settings.FUEL_STATS_HOST,
|
||||
settings.FUEL_STATS_PORT,
|
||||
settings.FUEL_STATS_SSL)
|
||||
# Restart statsenderd to apply settings(Collector address)
|
||||
self.env.nailgun_actions.force_fuel_stats_sending()
|
||||
if settings.FUEL_STATS_ENABLED and settings.FUEL_STATS_HOST:
|
||||
self.fuel_web.client.send_fuel_stats(enabled=True)
|
||||
logger.info('Enabled sending of statistics to {0}:{1}'.format(
|
||||
settings.FUEL_STATS_HOST, settings.FUEL_STATS_PORT
|
||||
))
|
||||
if settings.PATCHING_DISABLE_UPDATES:
|
||||
cmd = "find /etc/yum.repos.d/ -type f -regextype posix-egrep" \
|
||||
" -regex '.*/mos[0-9,\.]+\-(updates|security).repo' | " \
|
||||
"xargs -n1 -i sed '$aenabled=0' -i {}"
|
||||
self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd=cmd
|
||||
)
|
||||
if settings.DISABLE_OFFLOADING:
|
||||
logger.info(
|
||||
'========================================'
|
||||
'Applying workaround for bug #1526544'
|
||||
'========================================'
|
||||
)
|
||||
# Disable TSO offloading for every network interface
|
||||
# that is not virtual (loopback, bridges, etc)
|
||||
ifup_local = (
|
||||
"""#!/bin/bash\n"""
|
||||
"""if [[ -z "${1}" ]]; then\n"""
|
||||
""" exit\n"""
|
||||
"""fi\n"""
|
||||
"""devpath=$(readlink -m /sys/class/net/${1})\n"""
|
||||
"""if [[ "${devpath}" == /sys/devices/virtual/* ]]; then\n"""
|
||||
""" exit\n"""
|
||||
"""fi\n"""
|
||||
"""ethtool -K ${1} tso off\n"""
|
||||
)
|
||||
cmd = (
|
||||
"echo -e '{0}' | sudo tee /sbin/ifup-local;"
|
||||
"sudo chmod +x /sbin/ifup-local;"
|
||||
).format(ifup_local)
|
||||
self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd=cmd
|
||||
)
|
||||
cmd = (
|
||||
'for ifname in $(ls /sys/class/net); do '
|
||||
'sudo /sbin/ifup-local ${ifname}; done'
|
||||
)
|
||||
self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd=cmd
|
||||
)
|
||||
# Log interface settings
|
||||
cmd = (
|
||||
'for ifname in $(ls /sys/class/net); do '
|
||||
'([[ $(readlink -e /sys/class/net/${ifname}) == '
|
||||
'/sys/devices/virtual/* ]] '
|
||||
'|| ethtool -k ${ifname}); done'
|
||||
)
|
||||
result = self.ssh_manager.execute_on_remote(
|
||||
ip=self.ssh_manager.admin_ip,
|
||||
cmd=cmd
|
||||
)
|
||||
logger.debug('Offloading settings:\n{0}\n'.format(
|
||||
''.join(result['stdout'])))
|
||||
if force_ssl:
|
||||
self.env.enable_force_https(self.ssh_manager.admin_ip)
|
||||
|
||||
def reinstall_master_node(self):
|
||||
"""Erase boot sector and run setup_environment"""
|
||||
with self.env.d_env.get_admin_remote() as remote:
|
||||
erase_data_from_hdd(remote, mount_point='/boot')
|
||||
remote.execute("/sbin/shutdown")
|
||||
self.env.d_env.nodes().admin.destroy()
|
||||
self.env.insert_cdrom_tray()
|
||||
self.env.setup_environment()
|
||||
self.fuel_post_install_actions()
|
||||
|
||||
|
||||
@test
|
||||
class SetupEnvironment(TestBasic):
|
||||
|
@ -172,6 +287,7 @@ class SetupEnvironment(TestBasic):
|
|||
|
||||
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.current_log_step = 0
|
||||
|
||||
|
@ -195,6 +311,7 @@ class SetupEnvironment(TestBasic):
|
|||
self.show_step(3)
|
||||
if REPLACE_DEFAULT_REPOS and REPLACE_DEFAULT_REPOS_ONLY_ONCE:
|
||||
self.fuel_web.replace_default_repos()
|
||||
self.fuel_post_install_actions()
|
||||
self.env.make_snapshot("empty_custom_manifests", is_make=True)
|
||||
self.current_log_step = 0
|
||||
|
||||
|
|
|
@ -420,7 +420,7 @@ class BackupReinstallRestoreHA(NeutronTunHaBase):
|
|||
assert_true(os.path.exists(local_backup),
|
||||
"Backup file wasn't downloaded!")
|
||||
|
||||
self.env.reinstall_master_node()
|
||||
self.reinstall_master_node()
|
||||
|
||||
with self.env.d_env.get_admin_remote() as remote:
|
||||
remote.execute('mkdir -p {}'.format(os.path.dirname(backup)))
|
||||
|
|
|
@ -509,7 +509,7 @@ class UpgradeRollback(DataDrivenUpgradeBase):
|
|||
"{!r} does not exists".format(self.source_snapshot_name))
|
||||
self.show_step(2)
|
||||
old_cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
self.env.reinstall_master_node()
|
||||
self.reinstall_master_node()
|
||||
self.show_step(3)
|
||||
self.do_restore(self.backup_path, self.local_path,
|
||||
self.repos_backup_path, self.repos_local_path)
|
||||
|
@ -695,7 +695,7 @@ class UpgradeSmoke(DataDrivenUpgradeBase):
|
|||
"The test can not use given environment - snapshot "
|
||||
"{!r} does not exists".format(self.source_snapshot_name))
|
||||
self.show_step(2)
|
||||
self.env.reinstall_master_node()
|
||||
self.reinstall_master_node()
|
||||
self.show_step(3)
|
||||
self.show_step(4)
|
||||
self.show_step(5)
|
||||
|
@ -960,7 +960,7 @@ class UpgradeCephHA(DataDrivenUpgradeBase):
|
|||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
|
||||
self.show_step(2)
|
||||
self.env.reinstall_master_node()
|
||||
self.reinstall_master_node()
|
||||
self.show_step(3)
|
||||
self.show_step(4)
|
||||
self.show_step(5)
|
||||
|
@ -1076,7 +1076,7 @@ class UpgradeDetach_Plugin(DataDrivenUpgradeBase):
|
|||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
|
||||
self.show_step(2)
|
||||
self.env.reinstall_master_node()
|
||||
self.reinstall_master_node()
|
||||
self.show_step(3)
|
||||
self.show_step(4)
|
||||
self.show_step(5)
|
||||
|
|
|
@ -114,6 +114,7 @@ class PrepareActions(object):
|
|||
self.check_run("empty")
|
||||
with TimeStat("setup_environment", is_uniq=True):
|
||||
self.env.setup_environment()
|
||||
self.fuel_post_install_actions()
|
||||
|
||||
self.env.make_snapshot("empty", is_make=True)
|
||||
|
||||
|
|
Loading…
Reference in New Issue