Merge "Remove 'gabbi_tempest_path' from devstack-tempest job"
diff --git a/.zuul.yaml b/.zuul.yaml
index 2c065bf..23fc72d 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -93,6 +93,10 @@
branches: ^(?!stable/ocata).*$
description: |
Base integration test with Neutron networking and py27.
+ This job is supposed to run until stable/train setup only.
+ If you are running it on stable/ussuri gate onwards for python2.7
+ coverage then you need to do override-checkout with any stable
+ branch less than or equal to stable/train.
Former names for this job where:
* legacy-tempest-dsvm-neutron-full
* gate-tempest-dsvm-neutron-full-ubuntu-xenial
@@ -112,7 +116,7 @@
- job:
name: tempest-full-oslo-master
- parent: tempest-full
+ parent: tempest-full-py3
description: |
Integration test using current git of oslo libs.
This ensures that when oslo libs get released that they
@@ -140,9 +144,6 @@
- opendev.org/openstack/oslo.utils
- opendev.org/openstack/oslo.versionedobjects
- opendev.org/openstack/oslo.vmware
- vars:
- devstack_localrc:
- USE_PYTHON3: True
- job:
name: tempest-full-parallel
@@ -199,7 +200,7 @@
branches: ^(?!stable/ocata).*$
description: |
This job runs integration tests for networking. This is subset of
- 'tempest-full' job and run only Neutron and Nova related tests.
+ 'tempest-full-py3' job and run only Neutron and Nova related tests.
This is meant to be run on neutron gate only.
vars:
tox_envlist: integrated-network
@@ -219,7 +220,7 @@
branches: ^(?!stable/ocata).*$
description: |
This job runs integration tests for compute. This is
- subset of 'tempest-full' job and run Nova, Neutron, Cinder (except backup tests)
+ subset of 'tempest-full-py3' job and run Nova, Neutron, Cinder (except backup tests)
and Glance related tests. This is meant to be run on Nova gate only.
vars:
tox_envlist: integrated-compute
@@ -241,7 +242,7 @@
branches: ^(?!stable/ocata).*$
description: |
This job runs integration tests for placement. This is
- subset of 'tempest-full' job and run Nova and Neutron
+ subset of 'tempest-full-py3' job and run Nova and Neutron
related tests. This is meant to be run on Placement gate only.
vars:
tox_envlist: integrated-placement
@@ -262,7 +263,7 @@
branches: ^(?!stable/ocata).*$
description: |
This job runs integration tests for image & block storage. This is
- subset of 'tempest-full' job and run Cinder, Glance, Swift and Nova
+ subset of 'tempest-full-py3' job and run Cinder, Glance, Swift and Nova
related tests. This is meant to be run on Cinder and Glance gate only.
vars:
tox_envlist: integrated-storage
@@ -278,7 +279,7 @@
branches: ^(?!stable/ocata).*$
description: |
This job runs integration tests for object storage. This is
- subset of 'tempest-full' job and run Swift, Cinder and Glance
+ subset of 'tempest-full-py3' job and run Swift, Cinder and Glance
related tests. This is meant to be run on Swift gate only.
vars:
tox_envlist: integrated-object-storage
@@ -291,9 +292,6 @@
- job:
name: tempest-full-py3-ipv6
parent: devstack-tempest-ipv6
- # This currently works from stable/pike on.
- # Before stable/pike, legacy version of tempest-full
- # 'legacy-tempest-dsvm-neutron-full' run.
branches: ^(?!stable/ocata).*$
description: |
Base integration test with Neutron networking, IPv6 and py3.
@@ -544,7 +542,7 @@
- job:
name: tempest-pg-full
- parent: tempest-full
+ parent: tempest-full-py3
description: |
Base integration test with Neutron networking and PostgreSQL.
Former name for this job was legacy-tempest-dsvm-neutron-pg-full.
@@ -552,7 +550,6 @@
devstack_localrc:
ENABLE_FILE_INJECTION: true
DATABASE_TYPE: postgresql
- USE_PYTHON3: True
- project-template:
name: integrated-gate-networking
diff --git a/doc/source/microversion_testing.rst b/doc/source/microversion_testing.rst
index 5bc0eac..c7004dd 100644
--- a/doc/source/microversion_testing.rst
+++ b/doc/source/microversion_testing.rst
@@ -352,15 +352,15 @@
* `2.37`_
- .. _2.37: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id34
+ .. _2.37: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id35
* `2.39`_
- .. _2.39: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id35
+ .. _2.39: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id36
* `2.41`_
- .. _2.41: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id37
+ .. _2.41: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id38
* `2.42`_
@@ -368,15 +368,15 @@
* `2.47`_
- .. _2.47: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id42
+ .. _2.47: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id43
* `2.48`_
- .. _2.48: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id43
+ .. _2.48: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id44
* `2.49`_
- .. _2.49: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id44
+ .. _2.49: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id45
* `2.53`_
@@ -384,15 +384,15 @@
* `2.54`_
- .. _2.54: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id49
+ .. _2.54: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id50
* `2.55`_
- .. _2.55: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id50
+ .. _2.55: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id51
* `2.57`_
- .. _2.57: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id52
+ .. _2.57: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id53
* `2.59`_
@@ -404,19 +404,19 @@
* `2.61`_
- .. _2.61: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id55
+ .. _2.61: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id56
* `2.63`_
- .. _2.63: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id57
+ .. _2.63: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id58
* `2.70`_
- .. _2.70: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id63
+ .. _2.70: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id64
* `2.71`_
- .. _2.71: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id64
+ .. _2.71: https://docs.openstack.org/nova/latest/reference/api-microversion-history.html#id65
* `2.73`_
diff --git a/releasenotes/notes/add-image-alt-ssh-user-config-option-1b775af2f468aa5b.yaml b/releasenotes/notes/add-image-alt-ssh-user-config-option-1b775af2f468aa5b.yaml
new file mode 100644
index 0000000..159bbe8
--- /dev/null
+++ b/releasenotes/notes/add-image-alt-ssh-user-config-option-1b775af2f468aa5b.yaml
@@ -0,0 +1,10 @@
+---
+features:
+ - A new config option in the validation section, image_alt_ssh_user,
+ to specify the user name used to authenticate to an alternative
+ instance (instance using image_ref_alt) in tests. By default this
+ is set to root.
+ - A new config option in the validation section, image_alt_ssh_password,
+ to specify the password used to authenticate to an alternative
+ instance (instance using image_ref_alt) in tests. By default this
+ is set to password.
diff --git a/tempest/api/compute/base.py b/tempest/api/compute/base.py
index 8b847fc..d19b4cd 100644
--- a/tempest/api/compute/base.py
+++ b/tempest/api/compute/base.py
@@ -171,8 +171,11 @@
cls.flavor_ref = CONF.compute.flavor_ref
cls.flavor_ref_alt = CONF.compute.flavor_ref_alt
cls.ssh_user = CONF.validation.image_ssh_user
+ cls.ssh_alt_user = CONF.validation.image_alt_ssh_user
cls.image_ssh_user = CONF.validation.image_ssh_user
+ cls.image_alt_ssh_user = CONF.validation.image_alt_ssh_user
cls.image_ssh_password = CONF.validation.image_ssh_password
+ cls.image_alt_ssh_password = CONF.validation.image_alt_ssh_password
@classmethod
def is_requested_microversion_compatible(cls, max_version):
diff --git a/tempest/api/compute/servers/test_device_tagging.py b/tempest/api/compute/servers/test_device_tagging.py
index a7e2187..58d4d7d 100644
--- a/tempest/api/compute/servers/test_device_tagging.py
+++ b/tempest/api/compute/servers/test_device_tagging.py
@@ -338,7 +338,9 @@
found_devices = [d['tags'][0] for d in md_dict['devices']
if d.get('tags')]
try:
- self.assertItemsEqual(found_devices, ['nic-tag', 'volume-tag'])
+ self.assertEqual(
+ sorted(found_devices),
+ sorted(['nic-tag', 'volume-tag']))
return True
except Exception:
return False
diff --git a/tempest/api/compute/servers/test_server_actions.py b/tempest/api/compute/servers/test_server_actions.py
index 343d3ee..4527aa9 100644
--- a/tempest/api/compute/servers/test_server_actions.py
+++ b/tempest/api/compute/servers/test_server_actions.py
@@ -228,7 +228,7 @@
# 4.Plain username/password auth, if a password was given.
linux_client = remote_client.RemoteClient(
self.get_server_ip(rebuilt_server, validation_resources),
- self.ssh_user,
+ self.ssh_alt_user,
password,
validation_resources['keypair']['private_key'],
server=rebuilt_server,
@@ -310,7 +310,7 @@
self.os_primary)
linux_client = remote_client.RemoteClient(
self.get_server_ip(server, validation_resources),
- self.ssh_user,
+ self.ssh_alt_user,
password=None,
pkey=validation_resources['keypair']['private_key'],
server=server,
diff --git a/tempest/config.py b/tempest/config.py
index 28a70c2..26a7fab 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -865,10 +865,17 @@
cfg.StrOpt('image_ssh_user',
default="root",
help="User name used to authenticate to an instance."),
+ cfg.StrOpt('image_alt_ssh_user',
+ default="root",
+ help="User name used to authenticate to an alt instance."),
cfg.StrOpt('image_ssh_password',
default="password",
help="Password used to authenticate to an instance.",
secret=True),
+ cfg.StrOpt('image_alt_ssh_password',
+ default="password",
+ help="Password used to authenticate to an alt instance.",
+ secret=True),
cfg.StrOpt('ssh_shell_prologue',
default="set -eu -o pipefail; PATH=$$PATH:/sbin:/usr/sbin;",
help="Shell fragments to use before executing a command "
diff --git a/tempest/lib/services/compute/servers_client.py b/tempest/lib/services/compute/servers_client.py
index 6723516..e82b58f 100644
--- a/tempest/lib/services/compute/servers_client.py
+++ b/tempest/lib/services/compute/servers_client.py
@@ -646,7 +646,7 @@
For a full list of available parameters, please refer to the official
API reference:
- https://docs.openstack.org/api-ref/compute/#create-remote-console
+ https://docs.openstack.org/api-ref/compute/#create-console
"""
param = {
'remote_console': {
diff --git a/tempest/scenario/test_network_advanced_server_ops.py b/tempest/scenario/test_network_advanced_server_ops.py
index e26dc9d..dbab212 100644
--- a/tempest/scenario/test_network_advanced_server_ops.py
+++ b/tempest/scenario/test_network_advanced_server_ops.py
@@ -80,8 +80,8 @@
return floating_ip
def _check_network_connectivity(self, server, keypair, floating_ip,
- should_connect=True):
- username = CONF.validation.image_ssh_user
+ should_connect=True,
+ username=CONF.validation.image_ssh_user):
private_key = keypair['private_key']
self.check_tenant_network_connectivity(
server, username, private_key,
@@ -95,12 +95,13 @@
'Public network connectivity check failed',
server)
- def _wait_server_status_and_check_network_connectivity(self, server,
- keypair,
- floating_ip):
+ def _wait_server_status_and_check_network_connectivity(
+ self, server, keypair, floating_ip,
+ username=CONF.validation.image_ssh_user):
waiters.wait_for_server_status(self.servers_client, server['id'],
'ACTIVE')
- self._check_network_connectivity(server, keypair, floating_ip)
+ self._check_network_connectivity(server, keypair, floating_ip,
+ username=username)
@decorators.idempotent_id('61f1aa9a-1573-410e-9054-afa557cab021')
@decorators.attr(type='slow')
@@ -137,10 +138,11 @@
server = self._setup_server(keypair)
floating_ip = self._setup_network(server, keypair)
image_ref_alt = CONF.compute.image_ref_alt
+ username_alt = CONF.validation.image_alt_ssh_user
self.servers_client.rebuild_server(server['id'],
image_ref=image_ref_alt)
self._wait_server_status_and_check_network_connectivity(
- server, keypair, floating_ip)
+ server, keypair, floating_ip, username_alt)
@decorators.idempotent_id('2b2642db-6568-4b35-b812-eceed3fa20ce')
@testtools.skipUnless(CONF.compute_feature_enabled.pause,