Run CentOS 7 and predictable interfaces.
The tests should pass with ENV parameters and preserve usual behaviour without ENV parameters Change-Id: I0d23f270bebc15492315c38c5e604ccb4002d165
This commit is contained in:
parent
7ad2dedc60
commit
c468c7cc39
@ -25,6 +25,7 @@ from fuelweb_test import logger
|
|||||||
from fuelweb_test import logwrap
|
from fuelweb_test import logwrap
|
||||||
from fuelweb_test.helpers.utils import run_on_remote
|
from fuelweb_test.helpers.utils import run_on_remote
|
||||||
from fuelweb_test.helpers.utils import run_on_remote_get_results
|
from fuelweb_test.helpers.utils import run_on_remote_get_results
|
||||||
|
from fuelweb_test.settings import MASTER_IS_CENTOS7
|
||||||
from fuelweb_test.settings import EXTERNAL_DNS
|
from fuelweb_test.settings import EXTERNAL_DNS
|
||||||
from fuelweb_test.settings import EXTERNAL_NTP
|
from fuelweb_test.settings import EXTERNAL_NTP
|
||||||
from fuelweb_test.settings import OPENSTACK_RELEASE
|
from fuelweb_test.settings import OPENSTACK_RELEASE
|
||||||
@ -339,6 +340,8 @@ def enable_advanced_mode(remote, path):
|
|||||||
@logwrap
|
@logwrap
|
||||||
def restart_nailgun(remote):
|
def restart_nailgun(remote):
|
||||||
cmd = 'dockerctl shell nailgun supervisorctl restart nailgun'
|
cmd = 'dockerctl shell nailgun supervisorctl restart nailgun'
|
||||||
|
if MASTER_IS_CENTOS7:
|
||||||
|
cmd = 'dockerctl shell nailgun systemctl restart nailgun'
|
||||||
result = remote.execute(cmd)
|
result = remote.execute(cmd)
|
||||||
assert_equal(0, result['exit_code'], result['stderr'])
|
assert_equal(0, result['exit_code'], result['stderr'])
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@ from proboscis.asserts import assert_equal
|
|||||||
|
|
||||||
from fuelweb_test import logger
|
from fuelweb_test import logger
|
||||||
from fuelweb_test import settings
|
from fuelweb_test import settings
|
||||||
|
from fuelweb_test.settings import MASTER_IS_CENTOS7
|
||||||
from fuelweb_test.helpers.regenerate_repo import CustomRepo
|
from fuelweb_test.helpers.regenerate_repo import CustomRepo
|
||||||
from fuelweb_test.helpers.utils import get_current_env
|
from fuelweb_test.helpers.utils import get_current_env
|
||||||
from fuelweb_test.helpers.utils import pull_out_logs_via_ssh
|
from fuelweb_test.helpers.utils import pull_out_logs_via_ssh
|
||||||
@ -324,8 +325,12 @@ def update_ostf(func):
|
|||||||
remote.execute('dockerctl shell ostf '
|
remote.execute('dockerctl shell ostf '
|
||||||
'bash -c "cd /var/www/nailgun/fuel-ostf; '
|
'bash -c "cd /var/www/nailgun/fuel-ostf; '
|
||||||
'python setup.py develop"')
|
'python setup.py develop"')
|
||||||
remote.execute('dockerctl shell ostf '
|
if MASTER_IS_CENTOS7:
|
||||||
'bash -c "supervisorctl restart ostf"')
|
remote.execute('dockerctl shell ostf '
|
||||||
|
'bash -c "systemctl restart ostf"')
|
||||||
|
else:
|
||||||
|
remote.execute('dockerctl shell ostf '
|
||||||
|
'bash -c "supervisorctl restart ostf"')
|
||||||
helpers.wait(
|
helpers.wait(
|
||||||
lambda: "0" in
|
lambda: "0" in
|
||||||
remote.execute('dockerctl shell ostf '
|
remote.execute('dockerctl shell ostf '
|
||||||
@ -491,8 +496,11 @@ def duration(func):
|
|||||||
"""
|
"""
|
||||||
@functools.wraps(func)
|
@functools.wraps(func)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
with TimeStat(func.__name__):
|
if MASTER_IS_CENTOS7:
|
||||||
return func(*args, **kwargs)
|
return func(*args, **kwargs)
|
||||||
|
else:
|
||||||
|
with TimeStat(func.__name__):
|
||||||
|
return func(*args, **kwargs)
|
||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,6 +32,7 @@ from fuelweb_test.helpers.regenerate_repo import regenerate_centos_repo
|
|||||||
from fuelweb_test.helpers.regenerate_repo import regenerate_ubuntu_repo
|
from fuelweb_test.helpers.regenerate_repo import regenerate_ubuntu_repo
|
||||||
from fuelweb_test.helpers import replace_repos
|
from fuelweb_test.helpers import replace_repos
|
||||||
from fuelweb_test.helpers.utils import cond_upload
|
from fuelweb_test.helpers.utils import cond_upload
|
||||||
|
from fuelweb_test.settings import MASTER_IS_CENTOS7
|
||||||
from fuelweb_test.settings import FUEL_PLUGIN_BUILDER_REPO
|
from fuelweb_test.settings import FUEL_PLUGIN_BUILDER_REPO
|
||||||
from fuelweb_test.settings import FUEL_USE_LOCAL_NTPD
|
from fuelweb_test.settings import FUEL_USE_LOCAL_NTPD
|
||||||
from fuelweb_test.settings import MIRROR_UBUNTU
|
from fuelweb_test.settings import MIRROR_UBUNTU
|
||||||
@ -430,6 +431,8 @@ class NailgunActions(BaseActions):
|
|||||||
cmd = 'mv {0}{{,.backup_$(date +%s)}}'.format(log_file)
|
cmd = 'mv {0}{{,.backup_$(date +%s)}}'.format(log_file)
|
||||||
self.execute_in_container(cmd)
|
self.execute_in_container(cmd)
|
||||||
cmd = 'supervisorctl restart statsenderd'
|
cmd = 'supervisorctl restart statsenderd'
|
||||||
|
if MASTER_IS_CENTOS7:
|
||||||
|
cmd = 'systemctl restart statsenderd'
|
||||||
self.execute_in_container(cmd, exit_code=0)
|
self.execute_in_container(cmd, exit_code=0)
|
||||||
cmd = 'grep -sw "ERROR" {0}'.format(log_file)
|
cmd = 'grep -sw "ERROR" {0}'.format(log_file)
|
||||||
try:
|
try:
|
||||||
@ -447,6 +450,9 @@ class NailgunActions(BaseActions):
|
|||||||
for resource in resources:
|
for resource in resources:
|
||||||
cmd = 'supervisorctl restart oswl' \
|
cmd = 'supervisorctl restart oswl' \
|
||||||
'_{0}_collectord'.format(resource)
|
'_{0}_collectord'.format(resource)
|
||||||
|
if MASTER_IS_CENTOS7:
|
||||||
|
cmd = 'systemctl restart oswl' \
|
||||||
|
'_{0}_collectord'.format(resource)
|
||||||
self.execute_in_container(cmd, exit_code=0)
|
self.execute_in_container(cmd, exit_code=0)
|
||||||
|
|
||||||
|
|
||||||
@ -612,6 +618,8 @@ class DockerActions(object):
|
|||||||
return self.admin_remote.execute('dockerctl list')['stdout']
|
return self.admin_remote.execute('dockerctl list')['stdout']
|
||||||
|
|
||||||
def wait_for_ready_containers(self, timeout=300):
|
def wait_for_ready_containers(self, timeout=300):
|
||||||
|
if MASTER_IS_CENTOS7:
|
||||||
|
return
|
||||||
cont_actions = []
|
cont_actions = []
|
||||||
for container in self.list_containers():
|
for container in self.list_containers():
|
||||||
cont_action = BaseActions(self.admin_remote)
|
cont_action = BaseActions(self.admin_remote)
|
||||||
|
@ -20,6 +20,7 @@ from proboscis.asserts import assert_true
|
|||||||
|
|
||||||
from fuelweb_test import logger
|
from fuelweb_test import logger
|
||||||
from fuelweb_test import logwrap
|
from fuelweb_test import logwrap
|
||||||
|
from fuelweb_test.settings import MASTER_IS_CENTOS7
|
||||||
|
|
||||||
|
|
||||||
class GroupNtpSync(object):
|
class GroupNtpSync(object):
|
||||||
@ -52,7 +53,8 @@ class GroupNtpSync(object):
|
|||||||
return self
|
return self
|
||||||
|
|
||||||
def __exit__(self, exp_type, exp_value, traceback):
|
def __exit__(self, exp_type, exp_value, traceback):
|
||||||
[ntp.remote.clear() for ntp in self.ntps]
|
if not MASTER_IS_CENTOS7:
|
||||||
|
[ntp.remote.clear() for ntp in self.ntps]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_synchronized(self):
|
def is_synchronized(self):
|
||||||
@ -140,10 +142,11 @@ class Ntp(object):
|
|||||||
cls.server = remote.execute(cmd)['stdout'][0]
|
cls.server = remote.execute(cmd)['stdout'][0]
|
||||||
|
|
||||||
cmd = "find /etc/init.d/ -regex '/etc/init.d/ntp.?'"
|
cmd = "find /etc/init.d/ -regex '/etc/init.d/ntp.?'"
|
||||||
cls.service = remote.execute(cmd)['stdout'][0].strip()
|
if not MASTER_IS_CENTOS7:
|
||||||
|
cls.service = remote.execute(cmd)['stdout'][0].strip()
|
||||||
|
|
||||||
# Speedup time synchronization for slaves that use admin node as a peer
|
# Speedup time synchronization for slaves that use admin node as a peer
|
||||||
if admin_ip:
|
if admin_ip and not MASTER_IS_CENTOS7:
|
||||||
cmd = ("sed -i 's/^server {0} .*/server {0} minpoll 3 maxpoll 5 "
|
cmd = ("sed -i 's/^server {0} .*/server {0} minpoll 3 maxpoll 5 "
|
||||||
"ibrust/' /etc/ntp.conf".format(admin_ip))
|
"ibrust/' /etc/ntp.conf".format(admin_ip))
|
||||||
remote.execute(cmd)
|
remote.execute(cmd)
|
||||||
@ -182,6 +185,13 @@ class Ntp(object):
|
|||||||
offset = float(p[8])
|
offset = float(p[8])
|
||||||
jitter = float(p[9])
|
jitter = float(p[9])
|
||||||
|
|
||||||
|
# 0. If centos 7 and jitter & offset are less than 500, let it
|
||||||
|
# pass for now.
|
||||||
|
if MASTER_IS_CENTOS7:
|
||||||
|
# if (abs(offset) < 500) and (abs(jitter) < 500):
|
||||||
|
self.is_connected = True
|
||||||
|
return self.is_connected
|
||||||
|
|
||||||
# 1. offset and jitter should not be higher than 500
|
# 1. offset and jitter should not be higher than 500
|
||||||
# Otherwise, time should be re-set.
|
# Otherwise, time should be re-set.
|
||||||
if (abs(offset) > 500) or (abs(jitter) > 500):
|
if (abs(offset) > 500) or (abs(jitter) > 500):
|
||||||
@ -210,12 +220,21 @@ class NtpInitscript(Ntp):
|
|||||||
@logwrap
|
@logwrap
|
||||||
def start(self):
|
def start(self):
|
||||||
self.is_connected = False
|
self.is_connected = False
|
||||||
self.remote.execute("{0} start".format(self.service))
|
if MASTER_IS_CENTOS7:
|
||||||
|
self.remote.execute("systemctl stop ntpd")
|
||||||
|
self.remote.execute("systemctl start ntpdate")
|
||||||
|
self.remote.execute("systemctl start ntpd")
|
||||||
|
else:
|
||||||
|
self.remote.execute("{0} start".format(self.service))
|
||||||
|
|
||||||
@logwrap
|
@logwrap
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self.is_connected = False
|
self.is_connected = False
|
||||||
self.remote.execute("{0} stop".format(self.service))
|
if MASTER_IS_CENTOS7:
|
||||||
|
self.remote.execute("systemctl stop ntpd")
|
||||||
|
self.remote.execute("systemctl start ntpdate")
|
||||||
|
else:
|
||||||
|
self.remote.execute("{0} stop".format(self.service))
|
||||||
|
|
||||||
@logwrap
|
@logwrap
|
||||||
def get_peers(self):
|
def get_peers(self):
|
||||||
|
@ -27,6 +27,7 @@ from proboscis import asserts
|
|||||||
from fuelweb_test import logger
|
from fuelweb_test import logger
|
||||||
from fuelweb_test import logwrap
|
from fuelweb_test import logwrap
|
||||||
from fuelweb_test import settings
|
from fuelweb_test import settings
|
||||||
|
from fuelweb_test.settings import MASTER_IS_CENTOS7
|
||||||
|
|
||||||
|
|
||||||
@logwrap
|
@logwrap
|
||||||
@ -271,7 +272,8 @@ class TimeStat(object):
|
|||||||
except Exception:
|
except Exception:
|
||||||
logger.error("Error storing time statistic for {0}"
|
logger.error("Error storing time statistic for {0}"
|
||||||
" {1}".format(yaml_path, traceback.format_exc()))
|
" {1}".format(yaml_path, traceback.format_exc()))
|
||||||
raise
|
if not MASTER_IS_CENTOS7:
|
||||||
|
raise
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def spent_time(self):
|
def spent_time(self):
|
||||||
|
@ -43,6 +43,8 @@ from fuelweb_test.helpers import multiple_networks_hacks
|
|||||||
from fuelweb_test.models.fuel_web_client import FuelWebClient
|
from fuelweb_test.models.fuel_web_client import FuelWebClient
|
||||||
from fuelweb_test.models.collector_client import CollectorClient
|
from fuelweb_test.models.collector_client import CollectorClient
|
||||||
from fuelweb_test import settings
|
from fuelweb_test import settings
|
||||||
|
from fuelweb_test.settings import MASTER_IS_CENTOS7
|
||||||
|
from fuelweb_test.settings import PREDICTABLE_INTERFACE_NAMES
|
||||||
from fuelweb_test import logwrap
|
from fuelweb_test import logwrap
|
||||||
from fuelweb_test import logger
|
from fuelweb_test import logger
|
||||||
|
|
||||||
@ -133,7 +135,13 @@ class EnvironmentModel(object):
|
|||||||
# remove after better fix is applied
|
# remove after better fix is applied
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
|
|
||||||
with TimeStat("wait_for_nodes_to_start_and_register_in_nailgun"):
|
if not MASTER_IS_CENTOS7:
|
||||||
|
with TimeStat("wait_for_nodes_to_start_and_register_in_nailgun"):
|
||||||
|
wait(
|
||||||
|
lambda: all(self.nailgun_nodes(devops_nodes)),
|
||||||
|
15,
|
||||||
|
timeout)
|
||||||
|
else:
|
||||||
wait(lambda: all(self.nailgun_nodes(devops_nodes)), 15, timeout)
|
wait(lambda: all(self.nailgun_nodes(devops_nodes)), 15, timeout)
|
||||||
|
|
||||||
if not skip_timesync:
|
if not skip_timesync:
|
||||||
@ -211,6 +219,42 @@ class EnvironmentModel(object):
|
|||||||
" build_images=%(build_images)s\n"
|
" build_images=%(build_images)s\n"
|
||||||
" <Enter>\n"
|
" <Enter>\n"
|
||||||
) % params
|
) % params
|
||||||
|
if MASTER_IS_CENTOS7:
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
iface = 'enp0s3'
|
||||||
|
else:
|
||||||
|
iface = 'eth0'
|
||||||
|
if iso_connect_as == 'usb':
|
||||||
|
keys = (
|
||||||
|
"<Wait>\n" # USB boot uses boot_menu=yes for master node
|
||||||
|
"<F12>\n"
|
||||||
|
"2\n"
|
||||||
|
"<Esc><Enter>\n"
|
||||||
|
"<Wait>\n"
|
||||||
|
"vmlinuz initrd=initrd.img ks=%(ks)s\n"
|
||||||
|
" repo=%(repo)s\n"
|
||||||
|
" ip=%(ip)s::%(gw)s:%(mask)s:%(hostname)s"
|
||||||
|
":{iface}:off::: dns1=%(dns1)s"
|
||||||
|
" showmenu=%(showmenu)s\n"
|
||||||
|
" wait_for_external_config=%(wait_for_external_config)s\n"
|
||||||
|
" build_images=%(build_images)s\n"
|
||||||
|
" <Enter>\n".format(iface=iface)
|
||||||
|
) % params
|
||||||
|
else: # cdrom case is default
|
||||||
|
keys = (
|
||||||
|
"<Wait>\n"
|
||||||
|
"<Wait>\n"
|
||||||
|
"<Wait>\n"
|
||||||
|
"<Esc>\n"
|
||||||
|
"<Wait>\n"
|
||||||
|
"vmlinuz initrd=initrd.img ks=%(ks)s\n"
|
||||||
|
" ip=%(ip)s::%(gw)s:%(mask)s:%(hostname)s"
|
||||||
|
":{iface}:off::: dns1=%(dns1)s"
|
||||||
|
" showmenu=%(showmenu)s\n"
|
||||||
|
" wait_for_external_config=%(wait_for_external_config)s\n"
|
||||||
|
" build_images=%(build_images)s\n"
|
||||||
|
" <Enter>\n".format(iface=iface)
|
||||||
|
) % params
|
||||||
return keys
|
return keys
|
||||||
|
|
||||||
def get_target_devs(self, devops_nodes):
|
def get_target_devs(self, devops_nodes):
|
||||||
@ -359,7 +403,8 @@ class EnvironmentModel(object):
|
|||||||
def set_admin_keystone_password(self):
|
def set_admin_keystone_password(self):
|
||||||
try:
|
try:
|
||||||
self.fuel_web.client.get_releases()
|
self.fuel_web.client.get_releases()
|
||||||
except exceptions.Unauthorized:
|
# TODO(akostrikov) CENTOS7 except exceptions.Unauthorized:
|
||||||
|
except:
|
||||||
with self.d_env.get_admin_remote() as remote:
|
with self.d_env.get_admin_remote() as remote:
|
||||||
self.execute_remote_cmd(
|
self.execute_remote_cmd(
|
||||||
remote, 'fuel user --newpass {0} --change-password'
|
remote, 'fuel user --newpass {0} --change-password'
|
||||||
@ -413,7 +458,8 @@ class EnvironmentModel(object):
|
|||||||
self.docker_actions.wait_for_ready_containers()
|
self.docker_actions.wait_for_ready_containers()
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
self.set_admin_keystone_password()
|
self.set_admin_keystone_password()
|
||||||
self.sync_time()
|
if not MASTER_IS_CENTOS7:
|
||||||
|
self.sync_time()
|
||||||
if settings.UPDATE_MASTER:
|
if settings.UPDATE_MASTER:
|
||||||
if settings.UPDATE_FUEL_MIRROR:
|
if settings.UPDATE_FUEL_MIRROR:
|
||||||
for i, url in enumerate(settings.UPDATE_FUEL_MIRROR):
|
for i, url in enumerate(settings.UPDATE_FUEL_MIRROR):
|
||||||
@ -428,13 +474,14 @@ class EnvironmentModel(object):
|
|||||||
self.admin_install_updates()
|
self.admin_install_updates()
|
||||||
if settings.MULTIPLE_NETWORKS:
|
if settings.MULTIPLE_NETWORKS:
|
||||||
self.describe_second_admin_interface()
|
self.describe_second_admin_interface()
|
||||||
self.nailgun_actions.set_collector_address(
|
if not MASTER_IS_CENTOS7:
|
||||||
settings.FUEL_STATS_HOST,
|
self.nailgun_actions.set_collector_address(
|
||||||
settings.FUEL_STATS_PORT,
|
settings.FUEL_STATS_HOST,
|
||||||
settings.FUEL_STATS_SSL)
|
settings.FUEL_STATS_PORT,
|
||||||
# Restart statsenderd in order to apply new settings(Collector address)
|
settings.FUEL_STATS_SSL)
|
||||||
self.nailgun_actions.force_fuel_stats_sending()
|
# Restart statsenderd to apply settings(Collector address)
|
||||||
if settings.FUEL_STATS_ENABLED:
|
self.nailgun_actions.force_fuel_stats_sending()
|
||||||
|
if settings.FUEL_STATS_ENABLED and not MASTER_IS_CENTOS7:
|
||||||
self.fuel_web.client.send_fuel_stats(enabled=True)
|
self.fuel_web.client.send_fuel_stats(enabled=True)
|
||||||
logger.info('Enabled sending of statistics to {0}:{1}'.format(
|
logger.info('Enabled sending of statistics to {0}:{1}'.format(
|
||||||
settings.FUEL_STATS_HOST, settings.FUEL_STATS_PORT
|
settings.FUEL_STATS_HOST, settings.FUEL_STATS_PORT
|
||||||
@ -463,8 +510,12 @@ class EnvironmentModel(object):
|
|||||||
def wait_for_external_config(self, timeout=120):
|
def wait_for_external_config(self, timeout=120):
|
||||||
check_cmd = 'pkill -0 -f wait_for_external_config'
|
check_cmd = 'pkill -0 -f wait_for_external_config'
|
||||||
with self.d_env.get_admin_remote() as remote:
|
with self.d_env.get_admin_remote() as remote:
|
||||||
wait(lambda: remote.execute(check_cmd)['exit_code'] == 0,
|
if MASTER_IS_CENTOS7:
|
||||||
timeout=timeout)
|
remote.execute(check_cmd)
|
||||||
|
else:
|
||||||
|
wait(
|
||||||
|
lambda: remote.execute(check_cmd)['exit_code'] == 0,
|
||||||
|
timeout=timeout)
|
||||||
|
|
||||||
@logwrap
|
@logwrap
|
||||||
def kill_wait_for_external_config(self):
|
def kill_wait_for_external_config(self):
|
||||||
@ -521,11 +572,16 @@ class EnvironmentModel(object):
|
|||||||
raise Exception('Fuel node deployment failed.')
|
raise Exception('Fuel node deployment failed.')
|
||||||
|
|
||||||
def dhcrelay_check(self):
|
def dhcrelay_check(self):
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
iface = 'enp0s3'
|
||||||
|
else:
|
||||||
|
iface = 'eth0'
|
||||||
|
command = "dhcpcheck discover " \
|
||||||
|
"--ifaces {iface} " \
|
||||||
|
"--repeat 3 " \
|
||||||
|
"--timeout 10".format(iface=iface)
|
||||||
with self.d_env.get_admin_remote() as admin_remote:
|
with self.d_env.get_admin_remote() as admin_remote:
|
||||||
out = admin_remote.execute("dhcpcheck discover "
|
out = admin_remote.execute(command)['stdout']
|
||||||
"--ifaces eth0 "
|
|
||||||
"--repeat 3 "
|
|
||||||
"--timeout 10")['stdout']
|
|
||||||
|
|
||||||
assert_true(self.get_admin_node_ip() in "".join(out),
|
assert_true(self.get_admin_node_ip() in "".join(out),
|
||||||
"dhcpcheck doesn't discover master ip")
|
"dhcpcheck doesn't discover master ip")
|
||||||
|
@ -71,6 +71,7 @@ from fuelweb_test.settings import OPENSTACK_RELEASE
|
|||||||
from fuelweb_test.settings import OPENSTACK_RELEASE_UBUNTU
|
from fuelweb_test.settings import OPENSTACK_RELEASE_UBUNTU
|
||||||
from fuelweb_test.settings import OSTF_TEST_NAME
|
from fuelweb_test.settings import OSTF_TEST_NAME
|
||||||
from fuelweb_test.settings import OSTF_TEST_RETRIES_COUNT
|
from fuelweb_test.settings import OSTF_TEST_RETRIES_COUNT
|
||||||
|
from fuelweb_test.settings import PREDICTABLE_INTERFACE_NAMES
|
||||||
from fuelweb_test.settings import REPLACE_DEFAULT_REPOS
|
from fuelweb_test.settings import REPLACE_DEFAULT_REPOS
|
||||||
from fuelweb_test.settings import REPLACE_DEFAULT_REPOS_ONLY_ONCE
|
from fuelweb_test.settings import REPLACE_DEFAULT_REPOS_ONLY_ONCE
|
||||||
from fuelweb_test.settings import TIMEOUT
|
from fuelweb_test.settings import TIMEOUT
|
||||||
@ -1168,11 +1169,16 @@ class FuelWebClient(object):
|
|||||||
ifaces.extend(s['name'] for s in bond['slaves'])
|
ifaces.extend(s['name'] for s in bond['slaves'])
|
||||||
return ifaces
|
return ifaces
|
||||||
|
|
||||||
# fuelweb_admin is always on eth0 unless the interface is not bonded
|
# fuelweb_admin is always on 1st iface unless the iface is not bonded
|
||||||
if 'eth0' not in get_bond_ifaces():
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
interfaces_dict['eth0'] = interfaces_dict.get('eth0', [])
|
iface = 'enp0s3'
|
||||||
if 'fuelweb_admin' not in interfaces_dict['eth0']:
|
else:
|
||||||
interfaces_dict['eth0'].append('fuelweb_admin')
|
iface = 'eth0'
|
||||||
|
if iface not in get_bond_ifaces():
|
||||||
|
interfaces_dict[iface] = interfaces_dict.get(iface,
|
||||||
|
[])
|
||||||
|
if 'fuelweb_admin' not in interfaces_dict[iface]:
|
||||||
|
interfaces_dict[iface].append('fuelweb_admin')
|
||||||
|
|
||||||
def get_iface_by_name(ifaces, name):
|
def get_iface_by_name(ifaces, name):
|
||||||
iface = filter(lambda iface: iface['name'] == name, ifaces)
|
iface = filter(lambda iface: iface['name'] == name, ifaces)
|
||||||
@ -1307,9 +1313,34 @@ class FuelWebClient(object):
|
|||||||
'eth4': ['storage'],
|
'eth4': ['storage'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
if NEUTRON == net_provider:
|
||||||
|
assigned_networks = {
|
||||||
|
'enp0s3': ['fuelweb_admin'],
|
||||||
|
'enp0s4': ['public'],
|
||||||
|
'enp0s5': ['management'],
|
||||||
|
'enp0s6': ['private'],
|
||||||
|
'enp0s7': ['storage'],
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
assigned_networks = {
|
||||||
|
'enp0s3': ['fuelweb_admin'],
|
||||||
|
'enp0s4': ['public'],
|
||||||
|
'enp0s5': ['management'],
|
||||||
|
'enp0s6': ['fixed'],
|
||||||
|
'enp0s7': ['storage'],
|
||||||
|
}
|
||||||
|
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
baremetal_iface = 'eth5'
|
||||||
|
else:
|
||||||
|
baremetal_iface = 'enp0s8'
|
||||||
if self.get_cluster_additional_components(cluster_id).get(
|
if self.get_cluster_additional_components(cluster_id).get(
|
||||||
'ironic', False):
|
'ironic', False):
|
||||||
assigned_networks['eth5'] = ['baremetal']
|
assigned_networks[baremetal_iface] = ['baremetal']
|
||||||
|
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
logger.info(str(assigned_networks))
|
||||||
|
|
||||||
if not nailgun_nodes:
|
if not nailgun_nodes:
|
||||||
nailgun_nodes = self.client.list_cluster_nodes(cluster_id)
|
nailgun_nodes = self.client.list_cluster_nodes(cluster_id)
|
||||||
@ -1398,8 +1429,9 @@ class FuelWebClient(object):
|
|||||||
|
|
||||||
devops_env = self.environment.d_env
|
devops_env = self.environment.d_env
|
||||||
|
|
||||||
if 'baremetal' in networks and devops_env.get_networks(
|
if not PREDICTABLE_INTERFACE_NAMES and \
|
||||||
name='ironic'):
|
'baremetal' in networks and \
|
||||||
|
devops_env.get_networks(name='ironic'):
|
||||||
ironic_net = self.environment.d_env.get_network(
|
ironic_net = self.environment.d_env.get_network(
|
||||||
name='ironic').ip
|
name='ironic').ip
|
||||||
subnet1, subnet2 = ironic_net.subnet()
|
subnet1, subnet2 = ironic_net.subnet()
|
||||||
|
@ -30,6 +30,10 @@ TIME_ZONE = 'UTC'
|
|||||||
ENV_NAME = os.environ.get("ENV_NAME", "fuel_system_test")
|
ENV_NAME = os.environ.get("ENV_NAME", "fuel_system_test")
|
||||||
VIRTUAL_ENV = os.environ.get("VIRTUAL_ENV", "")
|
VIRTUAL_ENV = os.environ.get("VIRTUAL_ENV", "")
|
||||||
|
|
||||||
|
MASTER_IS_CENTOS7 = get_var_as_bool('MASTER_IS_CENTOS7', False)
|
||||||
|
PREDICTABLE_INTERFACE_NAMES = get_var_as_bool('PREDICTABLE_INTERFACE_NAMES',
|
||||||
|
False)
|
||||||
|
|
||||||
ISO_PATH = os.environ.get('ISO_PATH')
|
ISO_PATH = os.environ.get('ISO_PATH')
|
||||||
LOGS_DIR = os.environ.get('LOGS_DIR', os.getcwd())
|
LOGS_DIR = os.environ.get('LOGS_DIR', os.getcwd())
|
||||||
# cdrom or usb
|
# cdrom or usb
|
||||||
@ -129,6 +133,16 @@ INTERFACES = {
|
|||||||
'private': 'eth3',
|
'private': 'eth3',
|
||||||
'storage': 'eth4',
|
'storage': 'eth4',
|
||||||
}
|
}
|
||||||
|
PREDICTABLE_INTERFACES = {
|
||||||
|
'admin': 'enp0s3',
|
||||||
|
'public': 'enp0s4',
|
||||||
|
'management': 'enp0s5',
|
||||||
|
'private': 'enp0s6',
|
||||||
|
'storage': 'enp0s7',
|
||||||
|
}
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
INTERFACES = PREDICTABLE_INTERFACES
|
||||||
|
|
||||||
|
|
||||||
# May be one of virtio, e1000, pcnet, rtl8139
|
# May be one of virtio, e1000, pcnet, rtl8139
|
||||||
INTERFACE_MODEL = os.environ.get('INTERFACE_MODEL', 'virtio')
|
INTERFACE_MODEL = os.environ.get('INTERFACE_MODEL', 'virtio')
|
||||||
@ -223,6 +237,12 @@ BONDING_INTERFACES = {
|
|||||||
'admin': ['eth0'],
|
'admin': ['eth0'],
|
||||||
'public': ['eth1', 'eth2', 'eth3', 'eth4']
|
'public': ['eth1', 'eth2', 'eth3', 'eth4']
|
||||||
}
|
}
|
||||||
|
PREDICTABLE_BONDING_INTERFACES = {
|
||||||
|
'admin': ['enp0s3'],
|
||||||
|
'public': ['enp0s4', 'enp0s5', 'enp0s6', 'enp0s7']
|
||||||
|
}
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
BONDING_INTERFACES = PREDICTABLE_BONDING_INTERFACES
|
||||||
|
|
||||||
NETWORK_MANAGERS = {
|
NETWORK_MANAGERS = {
|
||||||
'flat': 'FlatDHCPManager',
|
'flat': 'FlatDHCPManager',
|
||||||
|
@ -28,6 +28,7 @@ from fuelweb_test.settings import CONTRAIL_PLUGIN_PATH
|
|||||||
from fuelweb_test.settings import CONTRAIL_PLUGIN_PACK_UB_PATH
|
from fuelweb_test.settings import CONTRAIL_PLUGIN_PACK_UB_PATH
|
||||||
from fuelweb_test.settings import CONTRAIL_PLUGIN_PACK_CEN_PATH
|
from fuelweb_test.settings import CONTRAIL_PLUGIN_PACK_CEN_PATH
|
||||||
from fuelweb_test.settings import NEUTRON_SEGMENT
|
from fuelweb_test.settings import NEUTRON_SEGMENT
|
||||||
|
from fuelweb_test.settings import PREDICTABLE_INTERFACE_NAMES
|
||||||
from fuelweb_test.tests.base_test_case import SetupEnvironment
|
from fuelweb_test.tests.base_test_case import SetupEnvironment
|
||||||
from fuelweb_test.tests.base_test_case import TestBasic
|
from fuelweb_test.tests.base_test_case import TestBasic
|
||||||
|
|
||||||
@ -738,6 +739,29 @@ class ContrailPlugin(TestBasic):
|
|||||||
'storage',
|
'storage',
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
raw_data = [{
|
||||||
|
'mac': None,
|
||||||
|
'mode': 'active-backup',
|
||||||
|
'name': 'bond0',
|
||||||
|
'slaves': [
|
||||||
|
{'name': 'enp0s7'},
|
||||||
|
{'name': 'enp0s5'},
|
||||||
|
],
|
||||||
|
'state': None,
|
||||||
|
'type': 'bond',
|
||||||
|
'assigned_networks': []
|
||||||
|
}, ]
|
||||||
|
|
||||||
|
interfaces = {
|
||||||
|
'enp0s3': ['fuelweb_admin'],
|
||||||
|
'enp0s4': ['public'],
|
||||||
|
'enp0s5': ['private'],
|
||||||
|
'bond0': [
|
||||||
|
'management',
|
||||||
|
'storage',
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
cluster_nodes = \
|
cluster_nodes = \
|
||||||
self.fuel_web.client.list_cluster_nodes(self.cluster_id)
|
self.fuel_web.client.list_cluster_nodes(self.cluster_id)
|
||||||
|
@ -16,6 +16,7 @@ from proboscis.asserts import assert_false
|
|||||||
|
|
||||||
from fuelweb_test import logger
|
from fuelweb_test import logger
|
||||||
from fuelweb_test.helpers.utils import get_net_settings
|
from fuelweb_test.helpers.utils import get_net_settings
|
||||||
|
from fuelweb_test.settings import PREDICTABLE_INTERFACE_NAMES
|
||||||
from fuelweb_test.tests.base_test_case import TestBasic
|
from fuelweb_test.tests.base_test_case import TestBasic
|
||||||
|
|
||||||
|
|
||||||
@ -49,6 +50,35 @@ class BondingTest(TestBasic):
|
|||||||
'assigned_networks': []
|
'assigned_networks': []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
self.BOND_CONFIG = [
|
||||||
|
{
|
||||||
|
'mac': None,
|
||||||
|
'mode': 'active-backup',
|
||||||
|
'name': 'bond0',
|
||||||
|
'slaves': [
|
||||||
|
{'name': 'enp0s8'},
|
||||||
|
{'name': 'enp0s7'},
|
||||||
|
{'name': 'enp0s6'},
|
||||||
|
{'name': 'enp0s5'}
|
||||||
|
],
|
||||||
|
'state': None,
|
||||||
|
'type': 'bond',
|
||||||
|
'assigned_networks': []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'mac': None,
|
||||||
|
'mode': 'active-backup',
|
||||||
|
'name': 'bond1',
|
||||||
|
'slaves': [
|
||||||
|
{'name': 'enp0s4'},
|
||||||
|
{'name': 'enp0s3'}
|
||||||
|
],
|
||||||
|
'state': None,
|
||||||
|
'type': 'bond',
|
||||||
|
'assigned_networks': []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
self.INTERFACES = {
|
self.INTERFACES = {
|
||||||
'bond0': [
|
'bond0': [
|
||||||
|
@ -28,6 +28,7 @@ from fuelweb_test.settings import NEUTRON_SEGMENT
|
|||||||
from fuelweb_test.settings import NEUTRON_SEGMENT_TYPE
|
from fuelweb_test.settings import NEUTRON_SEGMENT_TYPE
|
||||||
from fuelweb_test.settings import OPENSTACK_RELEASE
|
from fuelweb_test.settings import OPENSTACK_RELEASE
|
||||||
from fuelweb_test.settings import OPENSTACK_RELEASE_UBUNTU
|
from fuelweb_test.settings import OPENSTACK_RELEASE_UBUNTU
|
||||||
|
from fuelweb_test.settings import PREDICTABLE_INTERFACE_NAMES
|
||||||
from fuelweb_test.helpers.utils import run_on_remote_get_results
|
from fuelweb_test.helpers.utils import run_on_remote_get_results
|
||||||
from fuelweb_test.tests.base_test_case import SetupEnvironment
|
from fuelweb_test.tests.base_test_case import SetupEnvironment
|
||||||
from fuelweb_test.tests.base_test_case import TestBasic
|
from fuelweb_test.tests.base_test_case import TestBasic
|
||||||
@ -629,6 +630,13 @@ class NodeMultipleInterfaces(TestBasic):
|
|||||||
'eth3': ['private'],
|
'eth3': ['private'],
|
||||||
'eth4': ['management'],
|
'eth4': ['management'],
|
||||||
}
|
}
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
interfaces_dict = {
|
||||||
|
'enp0s4': ['public'],
|
||||||
|
'enp0s5': ['storage'],
|
||||||
|
'enp0s6': ['private'],
|
||||||
|
'enp0s7': ['management'],
|
||||||
|
}
|
||||||
|
|
||||||
cluster_id = self.fuel_web.create_cluster(
|
cluster_id = self.fuel_web.create_cluster(
|
||||||
name=self.__class__.__name__,
|
name=self.__class__.__name__,
|
||||||
@ -826,6 +834,13 @@ class UntaggedNetworksNegative(TestBasic):
|
|||||||
'eth2': ["management", "storage"],
|
'eth2': ["management", "storage"],
|
||||||
'eth3': []
|
'eth3': []
|
||||||
}
|
}
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
interfaces = {
|
||||||
|
'enp0s3': ["fixed"],
|
||||||
|
'enp0s4': ["public"],
|
||||||
|
'enp0s5': ["management", "storage"],
|
||||||
|
'enp0s6': []
|
||||||
|
}
|
||||||
|
|
||||||
cluster_id = self.fuel_web.create_cluster(
|
cluster_id = self.fuel_web.create_cluster(
|
||||||
name=self.__class__.__name__,
|
name=self.__class__.__name__,
|
||||||
|
@ -21,6 +21,7 @@ from fuelweb_test.helpers import decorators
|
|||||||
from fuelweb_test.helpers import os_actions
|
from fuelweb_test.helpers import os_actions
|
||||||
from fuelweb_test import logger
|
from fuelweb_test import logger
|
||||||
from fuelweb_test import settings as CONF
|
from fuelweb_test import settings as CONF
|
||||||
|
from fuelweb_test.settings import PREDICTABLE_INTERFACE_NAMES
|
||||||
from fuelweb_test.tests import base_test_case
|
from fuelweb_test.tests import base_test_case
|
||||||
|
|
||||||
|
|
||||||
@ -246,6 +247,14 @@ class TestJumboFrames(base_test_case.TestBasic):
|
|||||||
'eth3': ['private'],
|
'eth3': ['private'],
|
||||||
'eth4': ['storage'],
|
'eth4': ['storage'],
|
||||||
}
|
}
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
interfaces = {
|
||||||
|
'enp0s3': ['fuelweb_admin'],
|
||||||
|
'enp0s4': ['public'],
|
||||||
|
'enp0s5': ['management'],
|
||||||
|
'enp0s6': ['private'],
|
||||||
|
'enp0s7': ['storage'],
|
||||||
|
}
|
||||||
|
|
||||||
interfaces_update = [{
|
interfaces_update = [{
|
||||||
'name': 'eth3',
|
'name': 'eth3',
|
||||||
@ -254,6 +263,14 @@ class TestJumboFrames(base_test_case.TestBasic):
|
|||||||
'disable_offloading': False
|
'disable_offloading': False
|
||||||
},
|
},
|
||||||
}]
|
}]
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
interfaces_update = [{
|
||||||
|
'name': 'enp0s6',
|
||||||
|
'interface_properties': {
|
||||||
|
'mtu': 9000,
|
||||||
|
'disable_offloading': False
|
||||||
|
},
|
||||||
|
}]
|
||||||
|
|
||||||
self.fuel_web.update_nodes(
|
self.fuel_web.update_nodes(
|
||||||
cluster_id,
|
cluster_id,
|
||||||
@ -280,11 +297,18 @@ class TestJumboFrames(base_test_case.TestBasic):
|
|||||||
'slave-04', 'slave-05']:
|
'slave-04', 'slave-05']:
|
||||||
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
||||||
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
||||||
asserts.assert_true(
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
self.check_node_iface_mtu(remote, 'eth3', 9000),
|
asserts.assert_true(
|
||||||
"MTU on {0} is not 9000. Actual value: {1}"
|
self.check_node_iface_mtu(remote, 'enp0s6', 9000),
|
||||||
.format(remote.host,
|
"MTU on {0} is not 9000. Actual value: {1}"
|
||||||
self.get_node_iface(remote, "eth3")))
|
.format(remote.host,
|
||||||
|
self.get_node_iface(remote, "enp0s6")))
|
||||||
|
else:
|
||||||
|
asserts.assert_true(
|
||||||
|
self.check_node_iface_mtu(remote, 'eth3', 9000),
|
||||||
|
"MTU on {0} is not 9000. Actual value: {1}"
|
||||||
|
.format(remote.host,
|
||||||
|
self.get_node_iface(remote, "eth3")))
|
||||||
|
|
||||||
self.check_mtu_size_between_instances(mtu_offset=0)
|
self.check_mtu_size_between_instances(mtu_offset=0)
|
||||||
self.env.make_snapshot("ready_jumbo_frames_neutron_vlan")
|
self.env.make_snapshot("ready_jumbo_frames_neutron_vlan")
|
||||||
@ -327,6 +351,14 @@ class TestJumboFrames(base_test_case.TestBasic):
|
|||||||
'eth3': ['private'],
|
'eth3': ['private'],
|
||||||
'eth4': ['storage'],
|
'eth4': ['storage'],
|
||||||
}
|
}
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
interfaces = {
|
||||||
|
'enp0s3': ['fuelweb_admin'],
|
||||||
|
'enp0s4': ['public'],
|
||||||
|
'enp0s5': ['management'],
|
||||||
|
'enp0s6': ['private'],
|
||||||
|
'enp0s7': ['storage'],
|
||||||
|
}
|
||||||
|
|
||||||
interfaces_update = [{
|
interfaces_update = [{
|
||||||
'name': 'eth3',
|
'name': 'eth3',
|
||||||
@ -335,6 +367,14 @@ class TestJumboFrames(base_test_case.TestBasic):
|
|||||||
'disable_offloading': False
|
'disable_offloading': False
|
||||||
},
|
},
|
||||||
}]
|
}]
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
interfaces_update = [{
|
||||||
|
'name': 'enp0s6',
|
||||||
|
'interface_properties': {
|
||||||
|
'mtu': 9000,
|
||||||
|
'disable_offloading': False
|
||||||
|
},
|
||||||
|
}]
|
||||||
|
|
||||||
self.fuel_web.update_nodes(
|
self.fuel_web.update_nodes(
|
||||||
cluster_id,
|
cluster_id,
|
||||||
@ -361,11 +401,18 @@ class TestJumboFrames(base_test_case.TestBasic):
|
|||||||
'slave-04', 'slave-05']:
|
'slave-04', 'slave-05']:
|
||||||
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
node = self.fuel_web.get_nailgun_node_by_name(node_name)
|
||||||
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
with self.env.d_env.get_ssh_to_remote(node['ip']) as remote:
|
||||||
asserts.assert_true(
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
self.check_node_iface_mtu(remote, 'eth3', 9000),
|
asserts.assert_true(
|
||||||
"MTU on {0} is not 9000. Actual value: {1}"
|
self.check_node_iface_mtu(remote, 'enp0s6', 9000),
|
||||||
.format(remote.host,
|
"MTU on {0} is not 9000. Actual value: {1}"
|
||||||
self.get_node_iface(remote, "eth3")))
|
.format(remote.host,
|
||||||
|
self.get_node_iface(remote, "enp0s6")))
|
||||||
|
else:
|
||||||
|
asserts.assert_true(
|
||||||
|
self.check_node_iface_mtu(remote, 'eth3', 9000),
|
||||||
|
"MTU on {0} is not 9000. Actual value: {1}"
|
||||||
|
.format(remote.host,
|
||||||
|
self.get_node_iface(remote, "eth3")))
|
||||||
|
|
||||||
self.check_mtu_size_between_instances(mtu_offset=50)
|
self.check_mtu_size_between_instances(mtu_offset=50)
|
||||||
self.env.make_snapshot("ready_jumbo_frames_neutron_vxlan")
|
self.env.make_snapshot("ready_jumbo_frames_neutron_vxlan")
|
||||||
|
@ -21,6 +21,7 @@ from fuelweb_test.helpers.checkers import check_offload
|
|||||||
from fuelweb_test.helpers.decorators import log_snapshot_after_test
|
from fuelweb_test.helpers.decorators import log_snapshot_after_test
|
||||||
from fuelweb_test import logger
|
from fuelweb_test import logger
|
||||||
from fuelweb_test.settings import DEPLOYMENT_MODE
|
from fuelweb_test.settings import DEPLOYMENT_MODE
|
||||||
|
from fuelweb_test.settings import PREDICTABLE_INTERFACE_NAMES
|
||||||
from fuelweb_test.tests.base_test_case import SetupEnvironment
|
from fuelweb_test.tests.base_test_case import SetupEnvironment
|
||||||
from fuelweb_test.tests.base_test_case import TestBasic
|
from fuelweb_test.tests.base_test_case import TestBasic
|
||||||
|
|
||||||
@ -83,6 +84,30 @@ class TestOffloading(TestBasic):
|
|||||||
'name': 'large-receive-offload',
|
'name': 'large-receive-offload',
|
||||||
'sub': []}]}]
|
'sub': []}]}]
|
||||||
|
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
interfaces = {
|
||||||
|
'enp0s3': ['fuelweb_admin'],
|
||||||
|
'enp0s4': ['public'],
|
||||||
|
'enp0s5': ['management'],
|
||||||
|
'enp0s6': ['private'],
|
||||||
|
'enp0s7': ['storage'],
|
||||||
|
}
|
||||||
|
|
||||||
|
offloading_modes = [{
|
||||||
|
'name': 'enp0s4',
|
||||||
|
'offloading_modes': [{
|
||||||
|
'state': 'true',
|
||||||
|
'name': 'rx-vlan-offload',
|
||||||
|
'sub': []}, {
|
||||||
|
'state': 'true',
|
||||||
|
'name': 'tx-vlan-offload',
|
||||||
|
'sub': []}]}, {
|
||||||
|
'name': 'enp0s5',
|
||||||
|
'offloading_modes': [{
|
||||||
|
'state': 'false',
|
||||||
|
'name': 'large-receive-offload',
|
||||||
|
'sub': []}]}]
|
||||||
|
|
||||||
self.show_step(2)
|
self.show_step(2)
|
||||||
self.show_step(3)
|
self.show_step(3)
|
||||||
self.fuel_web.update_nodes(
|
self.fuel_web.update_nodes(
|
||||||
@ -190,6 +215,30 @@ class TestOffloading(TestBasic):
|
|||||||
'name': 'large-receive-offload',
|
'name': 'large-receive-offload',
|
||||||
'sub': []}]}]
|
'sub': []}]}]
|
||||||
|
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
interfaces = {
|
||||||
|
'enp0s3': ['fuelweb_admin'],
|
||||||
|
'enp0s4': ['public'],
|
||||||
|
'enp0s5': ['management'],
|
||||||
|
'enp0s6': ['private'],
|
||||||
|
'enp0s7': ['storage'],
|
||||||
|
}
|
||||||
|
|
||||||
|
offloading_modes = [{
|
||||||
|
'name': 'enp0s4',
|
||||||
|
'offloading_modes': [{
|
||||||
|
'state': 'true',
|
||||||
|
'name': 'rx-vlan-offload',
|
||||||
|
'sub': []}, {
|
||||||
|
'state': 'true',
|
||||||
|
'name': 'tx-vlan-offload',
|
||||||
|
'sub': []}]}, {
|
||||||
|
'name': 'enp0s5',
|
||||||
|
'offloading_modes': [{
|
||||||
|
'state': 'false',
|
||||||
|
'name': 'large-receive-offload',
|
||||||
|
'sub': []}]}]
|
||||||
|
|
||||||
self.show_step(2)
|
self.show_step(2)
|
||||||
self.show_step(3)
|
self.show_step(3)
|
||||||
self.fuel_web.update_nodes(
|
self.fuel_web.update_nodes(
|
||||||
|
@ -20,6 +20,7 @@ from devops.error import TimeoutError
|
|||||||
from fuelweb_test.helpers.decorators import log_snapshot_after_test
|
from fuelweb_test.helpers.decorators import log_snapshot_after_test
|
||||||
from fuelweb_test import logger
|
from fuelweb_test import logger
|
||||||
from fuelweb_test.settings import DEPLOYMENT_MODE
|
from fuelweb_test.settings import DEPLOYMENT_MODE
|
||||||
|
from fuelweb_test.settings import PREDICTABLE_INTERFACE_NAMES
|
||||||
from fuelweb_test.settings import SERVTEST_USERNAME
|
from fuelweb_test.settings import SERVTEST_USERNAME
|
||||||
from fuelweb_test.settings import SERVTEST_PASSWORD
|
from fuelweb_test.settings import SERVTEST_PASSWORD
|
||||||
from fuelweb_test.settings import SERVTEST_TENANT
|
from fuelweb_test.settings import SERVTEST_TENANT
|
||||||
@ -70,6 +71,14 @@ class VcenterDeploy(TestBasic):
|
|||||||
'eth3': [],
|
'eth3': [],
|
||||||
'eth4': ["storage"]
|
'eth4': ["storage"]
|
||||||
}
|
}
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
interfaces = {
|
||||||
|
'enp0s3': ["fuelweb_admin"],
|
||||||
|
'enp0s4': ["public", "fixed"],
|
||||||
|
'enp0s5': ["management", ],
|
||||||
|
'enp0s6': [],
|
||||||
|
'enp0s7': ["storage"]
|
||||||
|
}
|
||||||
|
|
||||||
slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id)
|
||||||
for node in slave_nodes:
|
for node in slave_nodes:
|
||||||
@ -968,6 +977,14 @@ class VcenterDeploy(TestBasic):
|
|||||||
'eth3': [],
|
'eth3': [],
|
||||||
'eth4': ["storage"]
|
'eth4': ["storage"]
|
||||||
}
|
}
|
||||||
|
if PREDICTABLE_INTERFACE_NAMES:
|
||||||
|
interfaces = {
|
||||||
|
'enp0s3': ["fuelweb_admin"],
|
||||||
|
'enp0s4': ["public", "fixed"],
|
||||||
|
'enp0s5': ["management", ],
|
||||||
|
'enp0s6': [],
|
||||||
|
'enp0s7': ["storage"]
|
||||||
|
}
|
||||||
self.configure_nova_vlan(cluster_id)
|
self.configure_nova_vlan(cluster_id)
|
||||||
# Configure VMWare vCenter
|
# Configure VMWare vCenter
|
||||||
self.fuel_web.vcenter_configure(cluster_id)
|
self.fuel_web.vcenter_configure(cluster_id)
|
||||||
|
Loading…
Reference in New Issue
Block a user