Merge "Fix test_rebuild_server test by waiting for floating ip"
diff --git a/roles/run-tempest/README.rst b/roles/run-tempest/README.rst
index 0c72b69..1919393 100644
--- a/roles/run-tempest/README.rst
+++ b/roles/run-tempest/README.rst
@@ -81,7 +81,7 @@
.. zuul:rolevar:: stable_constraints_file
:default: ''
- Upper constraints file to be used for stable branch till stable/stein.
+ Upper constraints file to be used for stable branch till stable/train.
.. zuul:rolevar:: tempest_tox_environment
:default: ''
diff --git a/roles/run-tempest/tasks/main.yaml b/roles/run-tempest/tasks/main.yaml
index a8b3ede..397de1e 100644
--- a/roles/run-tempest/tasks/main.yaml
+++ b/roles/run-tempest/tasks/main.yaml
@@ -25,11 +25,11 @@
target_branch: "{{ zuul.override_checkout }}"
when: zuul.override_checkout is defined
-- name: Use stable branch upper-constraints till stable/stein
+- name: Use stable branch upper-constraints till stable/train
set_fact:
# TOX_CONSTRAINTS_FILE is new name, UPPER_CONSTRAINTS_FILE is old one, best to set both
tempest_tox_environment: "{{ tempest_tox_environment | combine({'UPPER_CONSTRAINTS_FILE': stable_constraints_file}) | combine({'TOX_CONSTRAINTS_FILE': stable_constraints_file}) }}"
- when: target_branch in ["stable/ocata", "stable/pike", "stable/queens", "stable/rocky", "stable/stein"]
+ when: target_branch in ["stable/ocata", "stable/pike", "stable/queens", "stable/rocky", "stable/stein", "stable/train"]
- name: Use Configured upper-constraints for non-master Tempest
set_fact:
@@ -78,6 +78,17 @@
exclude_list_option: "--exclude-list={{ tempest_test_exclude_list|quote }}"
when: exclude_list_stat.stat.exists
+- name: stable/train workaround to fallback exclude-list to blacklist
+ # NOTE(gmann): stable/train use Tempest 26.1.0 and with stestr 2.5.1
+ # (beacause of upper constraints of stestr 2.5.1 in stable/train) which
+ # does not have new args exclude-list so let's fallback to old arg
+ # if new arg is passed.
+ set_fact:
+ exclude_list_option: "--blacklist-file={{ tempest_test_exclude_list|quote }}"
+ when:
+ - tempest_test_exclude_list is defined
+ - target_branch == "stable/train"
+
# TODO(kopecmartin) remove this after all consumers of the role have switched
# to tempest_exclude_regex option, until then it's kept here for the backward
# compatibility
@@ -94,6 +105,19 @@
when:
- tempest_black_regex is not defined
- tempest_exclude_regex is defined
+ - target_branch != "stable/train"
+
+- name: stable/train workaround to fallback exclude-regex to black-regex
+ # NOTE(gmann): stable/train use Tempest 26.1.0 and with stestr 2.5.1
+ # (beacause of upper constraints of stestr 2.5.1 in stable/train) which
+ # does not have new args exclude-regex so let's fallback to old arg
+ # if new arg is passed.
+ set_fact:
+ tempest_test_exclude_regex: "--black-regex={{tempest_exclude_regex|quote}}"
+ when:
+ - tempest_black_regex is not defined
+ - tempest_exclude_regex is defined
+ - target_branch == "stable/train"
- name: Run Tempest
command: tox -e {{tox_envlist}} {{tox_extra_args}} -- {{tempest_test_regex|quote}} \
diff --git a/tempest/common/compute.py b/tempest/common/compute.py
index 16322df..d9ef83f 100644
--- a/tempest/common/compute.py
+++ b/tempest/common/compute.py
@@ -57,7 +57,7 @@
def create_test_server(clients, validatable=False, validation_resources=None,
tenant_network=None, wait_until=None,
volume_backed=False, name=None, flavor=None,
- image_id=None, wait_for_sshable=True, **kwargs):
+ image_id=None, **kwargs):
"""Common wrapper utility returning a test server.
This method is a common wrapper returning a test server that can be
@@ -93,8 +93,6 @@
CONF.compute.flavor_ref will be used instead.
:param image_id: ID of the image to be used to provision the server. If not
defined, CONF.compute.image_ref will be used instead.
- :param wait_for_sshable: Check server's console log and wait until it will
- be ready to login.
:returns: a tuple
"""
@@ -270,10 +268,6 @@
LOG.exception('Server %s failed to delete in time',
server['id'])
- if (validatable and CONF.compute_feature_enabled.console_output and
- wait_for_sshable):
- waiters.wait_for_guest_os_boot(clients.servers_client, server['id'])
-
return body, servers
diff --git a/tempest/common/waiters.py b/tempest/common/waiters.py
index 21d0109..fbc8698 100644
--- a/tempest/common/waiters.py
+++ b/tempest/common/waiters.py
@@ -530,23 +530,6 @@
raise lib_exc.TimeoutException(message)
-def wait_for_guest_os_boot(client, server_id):
- start_time = int(time.time())
- while True:
- console_output = client.get_console_output(server_id)['output']
- for line in console_output.split('\n'):
- if 'login:' in line.lower():
- return
- if int(time.time()) - start_time >= client.build_timeout:
- LOG.info("Guest OS on server %s probably isn't ready or its "
- "console log can't be parsed properly. If guest OS "
- "isn't ready, that may cause problems with SSH to "
- "the server.",
- server_id)
- return
- time.sleep(client.build_interval)
-
-
def wait_for_server_floating_ip(servers_client, server, floating_ip,
wait_for_disassociate=False):
"""Wait for floating IP association or disassociation.
diff --git a/tempest/tests/common/test_waiters.py b/tempest/tests/common/test_waiters.py
index b76a263..5b0acfa 100755
--- a/tempest/tests/common/test_waiters.py
+++ b/tempest/tests/common/test_waiters.py
@@ -276,36 +276,6 @@
)
sleep.assert_called_once_with(client.build_interval)
- def test_wait_for_guest_os_boot(self):
- get_console_output = mock.Mock(
- side_effect=[
- {'output': 'os not ready yet\n'},
- {'output': 'login:\n'}
- ])
- client = self.mock_client(get_console_output=get_console_output)
- self.patch('time.time', return_value=0.)
- sleep = self.patch('time.sleep')
-
- with mock.patch.object(waiters.LOG, "info") as log_info:
- waiters.wait_for_guest_os_boot(client, 'server_id')
-
- get_console_output.assert_has_calls([
- mock.call('server_id'), mock.call('server_id')])
- sleep.assert_called_once_with(client.build_interval)
- log_info.assert_not_called()
-
- def test_wait_for_guest_os_boot_timeout(self):
- get_console_output = mock.Mock(
- return_value={'output': 'os not ready yet\n'})
- client = self.mock_client(get_console_output=get_console_output)
- self.patch('time.time', side_effect=[0., client.build_timeout + 1.])
- self.patch('time.sleep')
-
- with mock.patch.object(waiters.LOG, "info") as log_info:
- waiters.wait_for_guest_os_boot(client, 'server_id')
-
- log_info.assert_called_once()
-
class TestVolumeWaiters(base.TestCase):
vol_migrating_src_host = {