Compare commits

...

62 Commits

Author SHA1 Message Date
Ghanshyam Mann b11a403c37 Pin tox<4.0.0 for <=stable/zed branch testing
Tox 4.0.0 has some incompatible changes, epecially more
strict on allowlist_externals. Tempest recently changed
allowlist_externals not to be *[1] causing the failure
on jobs where lib/tempest failing to run the tempest
as command in virtual env.

----------
venv: commands[0]> tempest verify-config -uro /tmp/tmp.qH5KgJHTF4
venv: failed with tempest is not allowed, use allowlist_externals to allow it
------

We do not need to test/fix the <=stable/zed branches with tox 4.0.0
and pinning them with the compatible tox version of the time stable
brnaches were releaased is better way.

This commit proposes:
1. Pinning the tox<4.0.0 for <=stable/ze branches testing
2. Workaround to unblock the master gate by pinning it <4.0.0 but
we should make our testing compatible with tox 4.0.0 soon.

Related-Bug: #1999183

[1] https://review.opendev.org/c/openstack/tempest/+/865314 devstack based job started failing to run tempest command on venv.

Change-Id: I9a138af94dedc0d8ce5a0d519d75779415d3c30b
(cherry picked from commit ba54baa425)
(cherry picked from commit a3227ba0c0)
(cherry picked from commit 395f447085)
(cherry picked from commit 02f286a80a)
(cherry picked from commit 0a72476d89)
(cherry picked from commit 02b6981f51)
2022-12-08 20:52:52 -06:00
June Yi f9dcabfdb0 Respect constraints on tempest venv consistently
In case of online mode, there is a procedure to recreate tempest venv.
For consistency of tempest venv during the entire stack.sh process,
add logic to consider the TEMPEST_VENV_UPPER_CONSTRAINTS option here.

Closes-bug: #1980483
Signed-off-by: June Yi <june.yi@samsung.com>
Change-Id: I0cea282152fd363af8671cab1b5f733ebe2bd4df
(cherry picked from commit 8355e81306)
2022-09-01 11:45:21 +00:00
Zuul b0b0856093 Merge "Configure placement section in neutron conf" into stable/ussuri 2022-05-31 15:48:21 +00:00
Zuul 88554dc210 Merge "Pin Tempest to 26.1.0 tag for stable/ussuri testing" into stable/ussuri 2022-05-31 07:50:34 +00:00
yatinkarel 7c1dc8ac91 Configure placement section in neutron conf
Without it segment plugin fails to connect with
placement api. Configure the placement section
if service is deployed.

Closes-Bug: #1973783
Change-Id: Ie7f37770a04f622735cf2263c601257669ab5064
(cherry picked from commit 92a34dbe95)
(cherry picked from commit ebd72a5e00)
2022-05-31 03:20:01 +00:00
Ghanshyam Mann 387e65cb73 Pin Tempest to 26.1.0 tag for stable/ussuri testing
Stable ussuri is in Extended maintenance state[1] and
we need to pin tempest in stable/ussuri testing.

We use Tempest 26.1.0 because of oslo.utils version bump in Tempest
27.0.0 and 28.0.0 which is not compatible with stable/ussuri
upper constraints so these versions do not work in stable/ussuri.
Tempest 26.1.0 version is compatible for ussuri testing from tempest
side as well as from upper constraints side.

To merge this, making openstacksdk-functional-devstack job
as non-voting util we fix- https://storyboard.openstack.org/#!/story/2010057

Depends-On: https://review.opendev.org/c/openstack/tempest/+/843045

Change-Id: I5a637bdcdf61e71c7e948187f686de40f5ef0dca
2022-05-30 20:03:11 -05:00
Ian Wienand a9852abfc5 Mark our source trees as safe for git to use as other users
git commit [1] introduced a new behaviour to work around a CVE that
disallows any git operations in directories not owned by the current
user.

This may seem unrelated to installation, but it plays havoc with PBR,
which calls out to git to get to get revision history.  So if you are
"pip install"-ing from a source tree you don't own, the PBR git calls
in that tree now fail and the install blows up.

This plays havoc with our model.  Firstly, we checkout all code as
"stack" then install it globally with "sudo" (i.e. root) -- which
breaks.  We also have cases of essentially the opposite -- checkouts
we have installed as root, but then run tox in them as a regular user;
tox wants to install the source in its venv but now we have another
user conflict.

This uses the only available configuration option to avoid that by
globally setting the source directories we clone as safe.  This is an
encroachment of the global system for sure, but is about the only
switch available at the moment.  For discussion of other approaches,
see [2].

Also, squashing the below backport which is needed for bionic
- https://review.opendev.org/q/I941ef5ea90970a0901236afe81c551aaf24ac1d8

Related-Bug: https://bugs.launchpad.net/devstack/+bug/1968798

[1] https://github.com/git/git/commit/8959555cee7ec045958f9b6dd62e541affb7e7d9
[2] https://review.opendev.org/c/openstack/devstack/+/837636

Change-Id: Ib9896a99b6d6c4d359ee412743ce30512b3c4fb7
(cherry picked from commit 676dcaf944)
2022-04-19 11:37:25 -05:00
Ghanshyam Mann 9e7df2e553 Drop centos8 nodeset
CentOS8 is going to be EOL soon and opendev
is planning to drop the centOS8 image from CI
- http://lists.openstack.org/pipermail/openstack-discuss/2022-January/026621.html

Depends-On: https://review.opendev.org/c/openstack/python-cinderclient/+/826092
Change-Id: Ife528fa6383b14a89b5d4a330ae60c2f82116798
2022-02-10 16:26:10 -06:00
Dr. Jens Harbott 7ffa73a782 Stop gating on grenade
We have made the grenade job non-voting in the check queue, but it is
stilled pulled in as voting in gate via the integrated-gate-py3
template. Stop using that template and instead reference the
tempest-full-py3 job directly in check and gate.

Change-Id: I02e3208df53e7744c4be9c62172b78f08da0514e
2022-02-02 12:45:28 +01:00
Ghanshyam Mann 7d3dd00e62 Drop CentOS8 job
CentOS8 is going to be EOL soon and opendev
is planning to drop the centOS8 image from CI
- http://lists.openstack.org/pipermail/openstack-discuss/2022-January/026621.html

Devstack stable/wallaby and onwards has replaced the
centOS testing with centOS Stream. For older stable branches
(<= stable/victoria) we can either replace it with centOS Steam
or do the removal of CentOS8 and adding CentOS Stream testing
in two steps 1. drop the centOS8 testing as it cannot
be supported in CI 2. add centOS Stream job if possible.

This commit propose the step 1 as required by opendev image removal.

[Stable only]

Change-Id: I36751569d92fbc5084b8308d423a75318ae7d406
(cherry picked from commit 3602e4349b)
2022-02-02 12:44:41 +01:00
Rodolfo Alonso Hernandez 9c43f9fecc Add python3.6 pip support
Since pip v22, python3.6 is not supported (the minimum version is
python3.7). This patch adds the reference for the pip3.6 URL to be
used instead of the default one.

Conflicts:
  tools/install_pip.sh

Depends-On: https://review.opendev.org/c/openstack/devstack/+/827421
Closes-Bug: #1959600
Change-Id: Iab2c391d5388461fe9e9037cee81884ce8032e72
(cherry picked from commit a756f4b968)
(cherry picked from commit 13da39fc2e)
(cherry picked from commit a4369c8bb7)
(cherry picked from commit 5f5d9000a7)
2022-02-02 12:25:16 +01:00
Lee Yarwood d927b60178 nova: Ensure each compute uses a unique iSCSI initiator
The current initiator name embedded in our CI images is not unique at
present and can often cause failures during live migrations with
attached volumes. This change ensures the name is unique by running
iscsi-iname again and overwriting the existing name.

We could potentially do this during the image build process itself but
given that devstack systems are not supposed to be multi-purpose this
should be safe to do during the devstack run.

NOTE(lyarwood): Conflict due to
If2f74f146a166b9721540aaf3f1f9fce3030525c not being present on
stable/wallaby.

Conflicts:
    lib/nova

Closes-Bug: #1945983
Change-Id: I9ed26a17858df96c04be9ae52bf2e33e023869a5
(cherry picked from commit 714826d1a2)
(cherry picked from commit ee629cc775)
(cherry picked from commit a41fff99b3)
(cherry picked from commit 43364b7198)
2021-10-07 09:45:38 +01:00
yatinkarel 18ca90b3ed Fix Usage of rdo-release rpm
rdo-release.el8.rpm rpm points to latest RDO release,
so use it for master, for stable releases use corresponding
release rpm.

Change-Id: I508eceb00d7501ffcfac73d7bc2272badb241494
(cherry picked from commit 0456baaee5)
(cherry picked from commit 3e54b3c0e7)
2021-08-04 15:13:58 +00:00
Radosław Piliszek 775b1b8d2a Move verify-ipv6-only-deployments
from Tempest to DevStack as it tests DevStack side of things and
is useful for projects not using Tempest.

Verbatim copy except for the devstack- prefix and the /devstack/
path.

Change-Id: Ie166730843f874b9c99e37244e460d7ad33b7eeb
(cherry picked from commit 2fb8c7a5ee)
2021-06-10 07:37:39 +00:00
Zuul 5b7bf6caf0 Merge "Fix unit test to use python3 command" into stable/ussuri 2021-05-29 08:05:40 +00:00
Ghanshyam Mann 97998fc4d2 Fix unit test to use python3 command
Ussuri is python3-only.

Change-Id: Ie002faf4c96ac7f207207a481c057b8df0289e6c
(cherry picked from commit 12484c4c9f)
2021-05-26 14:39:40 +00:00
Ghanshyam Mann 878c3faf76 Pin nodeset for unit test job
devstack unit test job does not set any nodeset
and so does use default nodeset defined in base jobs
in opendev. When opendev switches the default nodeset to
the latest distro version, devstack unit test job can start
failing. Example:

- https://review.opendev.org/q/I01408f2f2959b0788fe712ac268a526502226ee9
- https://review.opendev.org/q/Ib1ea47bc7384e1f579cb08c779a32151fccd6845

To avoid such a situation in future, let's set the working nodeset
for this job also so that when we cut the stable branch we can
run it on the working distro version. 

Change-Id: I302140778fedf08bc8ba72c453837fa7b8f8f9ae
2021-05-25 18:13:20 +00:00
Lucas Alvares Gomes 5a06e8777b Fix docs job
Sphinx 4.0.0 added a new dependency [0] which is causing the job to fail
at the moment.

This patch fix the problem by adding UC to the docs jobs.

[0] https://www.sphinx-doc.org/en/master/changes.html (LaTeX: add
tex-gyre font dependency)

Change-Id: I28019331017405c06577ada88f8e9f6d9a2afc23
Signed-off-by: Lucas Alvares Gomes <lucasagomes@gmail.com>
(cherry picked from commit 69a66fb62b)
2021-05-11 15:18:50 +01:00
Ghanshyam Mann 4f9c1e084c Make stackviz tasks not to fail jobs
Due to issue on stckviz side, job start
failing with POST_FAILURE. If we fix the
issue still we need to wait for periodic job
periodic-package-stackviz-element to publish
the latest tarball on https://tarballs.openstack.org/stackviz/dist/.

Let's not fail the job for any issue occur during
stackviz processing.

Closes-Bug: 1863161

Change-Id: Ifee04f28ecee52e74803f1623aba5cfe5ee5ec90
(cherry picked from commit 580fec54c3)
(cherry picked from commit 800eb4dd44)
(cherry picked from commit 3b2feba2ef)
2021-04-08 20:18:30 -05:00
Zuul 8fd5979cb6 Merge "Fix DevStack setup on CentOS 8.3" into stable/ussuri 2021-03-25 19:20:28 +00:00
Pierre Riteau 51d6d410b8 Fix DevStack setup on CentOS 8.3
CentOS 8.3 changed the name of the PowerTools repository to powertools:
https://wiki.centos.org/Manuals/ReleaseNotes/CentOS8.2011#Yum_repo_file_and_repoid_changes

With this repository disabled, DevStack fails to install libyaml-devel,
which causes a failure to install many packages. In my environment
DevStack stopped with an error caused by a missing wget.

Keep the command using the old repository name, for compatibility with
older CentOS releases.

Change-Id: I5541a8aee8467abf10ce8a10d770618bdd693f02
(cherry picked from commit f361122798)
2021-03-09 18:27:36 +01:00
Ghanshyam Mann 74a136ac98 Add a variable to configure the Tempest venv upper constraints
We use Tempest master for testing the supported stable
branches so using master upper constraints works fine but
when we need to use old Tempest in the below cases then master
upper constraints do not work and devstack will not be
able to install Tempest in vnenv:

- Testing Extended Maintenance branch
- Testing py2.7 jobs until stable/train with in-tree tempest plugins

This commit adds a variable to set the compatible upper constraint
to use for Tempest's old version.

Few of the current failure which can be fixed by this new configurable var:
- networking-generic-switch-tempest-dlm-python2
  - https://zuul.opendev.org/t/openstack/build/ebcf3d68d62c4af3a43a222aa9ce5556
- devstack-platform-xenial on stable/steinand stable/train
  - https://zuul.opendev.org/t/openstack/build/37ffc1af6f3f4b44b5ca8cbfa27068ac

Change-Id: I5b2217d85e6871ca3f7a3f6f859fdce9a50d3946
(cherry picked from commit 3bdc8f66ad)
(cherry picked from commit 2e4b708e25)
2021-02-20 14:10:04 -06:00
Ghanshyam Mann e5090646a9 Stop installing Tempest at system wide for stable branch
As added in notes for INSTALL_TEMPEST variable we need to set
this as False for stable branch so that devstack does not
install Tempest at system wide.

- https://github.com/openstack/devstack/blob/aa2821eb89ab9c8048509d15fe41215c163d2f50/lib/tempest#L61

This should be done at the time when we cut the stable branch but
we forgot to do that for ussuri and victoria.

Change-Id: I23c77f98c2e969d8046d5212b883e343c36cd1b1
(cherry picked from commit 9a8c062312)
2021-02-10 09:11:50 -06:00
Martin Kopec a6ede1b7a6 Remove tempest deprecated img_dir option
Tempest option scenario.img_dir has been deprecated more than 4 years, it's
time to remove it from devstack.
img_file option should contain the full path to the image.
This patch removes setting of img_dir option and makes img_file
one contain the full path of an image.

Change-Id: I71102095f3603915f0bc7d21f2e18c4eac4e95ec
Related-Bug: #1393881
2021-01-13 09:32:31 +00:00
elajkat ef784e195f Setting available_features for stable branch
available_features for Neutron tempest tests is default to "all" and
used from Victoria to enable/disable tests that has no API extension.
It is added here to make sure that stable gating will not execute these
tests (like for IPv6 metadata in neutron-tempest-plugin or updating
min_bw QoS values for port already attached to VMs)

Cherry-picked from stable/victoria patch
(https://review.opendev.org/c/openstack/devstack/+/769885), but the list
for available_features is empty on Ussuri.

Change-Id: Ic6056218e51e6b0da554bcdf139214d2229ba3c1
Related-Bug: #1882804
(cherry picked from commit e34a8720bf)
2021-01-12 13:15:38 +01:00
Ghanshyam Mann 10fdf258ba Install swift keystone extras requirements
Since the introduction of I8f24b839bf42e2fb9803dc7df3a30ae20cf264
s-proxy is no longer able to launch as keystonemiddleware (listed under
test-requirements.txt) has not been installed.

keystonemiddleware is listed as extras requirements in swift
- https://github.com/openstack/swift/blob/e0d46d77fa740768f1dd5b989a63be85ff1fec20/setup.cfg#L79

Let's install swift keystone extra requirements also.

Closes-Bug: #1909018
Change-Id: I02c692e95d70017eea03d82d75ae6c5e87bde8b1
(cherry picked from commit 04b0b61557)
(cherry picked from commit 90651cb1a9)
2020-12-23 14:06:07 -06:00
Zuul 71c875d33c Merge "[stable-only] zuul: Remove Fedora jobs prior to Victoria" into stable/ussuri 2020-12-17 18:28:12 +00:00
Elod Illes 83f29bdd42 Workaround for new pip 20.3 behavior
This patch caps pip version during bootstrap to avoid the issue:

"ERROR: Links are not allowed as constraints"

A proper fix would be to adapt to new pip behavior.


Change-Id: I1feed4573820436f91f8f654cc189fa3a21956fd
2020-11-30 23:06:13 +00:00
Zuul 46acead9af Merge "Fix is_fedora RHEL 8 detection" into stable/ussuri 2020-10-08 08:44:02 +00:00
Zuul c92c97f98f Merge "zuul: clean up some legacy jobs" into stable/ussuri 2020-10-08 08:44:01 +00:00
Carlos Goncalves 20576c8286 Fix is_fedora RHEL 8 detection
While RHEL 7 is detected as RedHatEnterpriseServer, RHEL 8 is
RedHatEnterprise.

  $ lsb_release -i -s
  RedHatEnterprise

Change-Id: I3d750d808c6ebea9c230f0508cdbc016415b9922
(cherry picked from commit 587e0a3510)
2020-10-07 10:41:13 +00:00
Zuul a3c9123c4d Merge "Update opensuse version" into stable/ussuri 2020-10-06 20:14:14 +00:00
Zuul f9c8bf27ca Merge "Enable xenapi tests for stable branch" into stable/ussuri 2020-10-06 19:00:51 +00:00
Lee Yarwood 516f1a1ff0 [stable-only] zuul: Remove Fedora jobs prior to Victoria
fedora-latest now points at Fedora 32 which is not supported prior to
Victoria. As we don't support earlier releases of Fedora outside their
own life cycles we should just remove Fedora jobs from these older
branches.

Change-Id: I9b1e674f50f2966d46bced6663f4a2735be0685d
2020-10-01 09:39:20 +01:00
Clark Boylan 0ebe7b072e Update opensuse version
Nova has newer qemu requirements which needs opensuse 15.2 to meet. The
infra opensuse 15 images are 15.2 now to accomodate that. Update
opensuse's supported version to match.

Change-Id: I6f3c5234920b185b2b0cd9c358371402f7a7b922
(cherry picked from commit 471f1625bb)
2020-09-30 15:59:38 -07:00
Lee Yarwood f482957e89 Bionic: Enable Train UCA for updated QEMU and libvirt
This is will allow the openstack/nova project to facilitate a minimum
required version bump of QEMU and libvirt within the libvirt virt driver
in I8e349849db0b1a540d295c903f1470917b82fd97 ahead of the planned switch
to focal later in Victoria.

NOTE(lyarwood): This also has to be backported to stable/ussuri to allow
grenade to pass on master. Otherwise we don't install the required UCA
provided versions of QEMU and libvirt during the initial deploy, cauing
n-cpu to fail to start after the upgrade.

Change-Id: I85eb45632ff229676f7c29708f4a7cc64b3d90e3
(cherry picked from commit 7f7f488bc3)
2020-09-18 09:10:58 +01:00
Zuul 775dbd7ad9 Merge "Make PyYAML overridable on Red Hat family distros" into stable/ussuri 2020-09-16 15:29:15 +00:00
Lee Yarwood e6782311bf stable-only: Remove the Fedora 31 based fedora-latest nodeset
This should result in the fedora-latest nodeset from master being used
instead, allowing us to move that nodeset to fedora-32.

Change-Id: I6a66d85b1fc5a4c3f5fa651d33ff08260a87574f
2020-09-08 20:16:59 +01:00
Ghanshyam Mann 9b9c6d2d74 Enable xenapi tests for stable branch
Tempest xenapi related tests are skipped for Victoria
onwards
- https://review.opendev.org/#/c/749527/

We need to keep runnnig those test till stable ussuri.

Depends-On: https://review.opendev.org/#/c/749527/
Change-Id: If67186e46cb3c4f4505d006ec6389057925ce44c
2020-09-07 10:15:41 -05:00
Ian Wienand 87d1da30a8 Use SETUPTOOLS_USE_DISTUTILS=stdlib for global pip installs
A new setuptools release has changed the way pip installs are done,
see [0]. With this change we switch back to using the distro
method for global pip installs.

Temporarily make grenade jobs non-voting in order to allow this
patch to be backported.

[0] http://lists.openstack.org/pipermail/openstack-discuss/2020-August/016905.html

Change-Id: I5d8aa0e58e0409c54451b51de5eb70ba9a68d849
(cherry picked from commit 18b4251bf4)
2020-08-31 15:11:46 +02:00
Carlos Goncalves 5951978c52 Make PyYAML overridable on Red Hat family distros
This patch fixes an early stack issue where the following error message
would be presented:

ERROR: Cannot uninstall 'PyYAML'. It is a distutils installed project
and thus we cannot accurately determine which files belong to it which
would lead to only a partial uninstall.

We also drop references to removal of Python 2 library egg infos now
that Python 2 is EOL.

Closes-Bug: #1892363
Change-Id: I2876ee58ab6b73682869d6b4e684e10ac5e56ad9
(cherry picked from commit b9fe9c74f6)
2020-08-21 13:30:45 +00:00
Zuul e39706f2e6 Merge "Handle uwsgi install for CentOS/RHEL" into stable/ussuri 2020-08-21 09:11:36 +00:00
Zuul 417252efb4 Merge "Use python3-mod-wsgi instead of mod_wsgi on CentOS8" into stable/ussuri 2020-08-21 09:08:52 +00:00
Federico Ressi f36de3d3f3 Handle uwsgi install for CentOS/RHEL
Change-Id: Ifa876b3e5f89258f40055fa7ce03f5e9c601771c
(cherry picked from commit c2c2b6b415)
2020-08-20 14:11:54 +00:00
Zuul c6f810e61d Merge "Move process-stackviz role from Tempest to Devstack" into stable/ussuri 2020-08-18 15:45:04 +00:00
Hirotaka Wakabayashi 96c2aa13fe Use python3-mod-wsgi instead of mod_wsgi on CentOS8
This fixes a stack.sh execution error on CentOS8. We should use
python3-mod_wsgi instead of mod_wsgi since mod_wsgi is replaced by
python3-mod_wsgi. The following change may affect this issue.
https://git.centos.org/rpms/mod_wsgi/c/4a746b53e9e3fef74b227e016e785449160871b8?branch=c8s

Change-Id: I5344ecf519e1a79091b6158c2d711d09b21fae0c
Closes-Bug: #1885645
(cherry picked from commit 1e26508983)
2020-08-17 19:42:18 +00:00
Rodolfo Alonso Hernandez f8a6eac9b5 Set authtoken_middleware interface to "public"
Since [1], in Vitoria the default value of "interface" is "internal".
When executing the grenade jobs using the Ussuri devstack branch,
the interface is not explicitly set. When keystonemiddleware is bumped
to version 9.1.0, the defaul value of this config knob changes.

During the grenade upgrade, the project config options do not change
this value. That leads to the following error:
  keystoneauth1.exceptions.catalog.EndpointNotFound: internal endpoint
    for identity service not found

[1]https://review.opendev.org/#/c/662734

Change-Id: Ifc2992774d53303acd554b6b847ea55de8e94374
Closes-Bug: #1890297
2020-08-04 16:37:34 +00:00
Luigi Toscano c69caa4a8f zuul: clean up some legacy jobs
Replace legacy-tempest-dsvm-lvm-multibackend with its native version,
cinder-tempest-lvm-multibackend.

Remove legacy-tempest-dsvm-neutron-dvr-multinode-full, which was defined
as an experimental job in neutron and removed during the ussuri lifecycle.
See https://review.opendev.org/#/c/693630/

Change-Id: I76d1efaa3a6c1fe9825e8457438f514114b2ecad
(cherry picked from commit 0cbbefc0cb)
2020-07-21 18:31:41 +02:00
Ghanshyam Mann cd083d519c Move process-stackviz role from Tempest to Devstack
process-stackviz role currently defined in Tempest repo[1] and used
in tempest jobs. Issue with having it in branchless Tempest is that any
fix in that role cannot be backported to older Tempest. Also stackviz is
not Tempest things it is only used by Tempest jobs.

Stackviz can be considered as a service similar to Tempest so inatlling it in
Devstack side make sense. Also that will give us advantage to handle the
branch specific fixes or backpoting the fixes.

This can solve the current issues we are facing on rocky branch
- https://zuul.opendev.org/t/openstack/build/c1e2da80537448bfb24331fb4198a931/console#4/0/29/controller

[1] https://opendev.org/openstack/tempest/src/branch/master/roles/process-stackviz

Change-Id: I0ba1fd05c6391cd8bb978119ecfbb891def2d497
2020-06-19 20:32:32 +00:00
Andreas Jaeger 1e46c73fc0 Handle uwsgi install for openSUSE
Add packages for openSUSE distribution for installation of uwsgi.

Change-Id: I2ce8959460a79b6472bd9dd59edd7d94eccbacf5
(cherry-picked from commit 10c3ffd265)
2020-06-17 07:35:14 +00:00
Ian Wienand 7bfdd38104 Fix uwsgi issues
Make grenade jobs non-voting until virtualenv issue is fixed.

This is a combination of 2 commits.
This is the 1st commit message:

Use packaged uwsgi on Fedora and Ubuntu

Building uwsgi from source was a workaround that was introduced a long
time ago, it doesn't seem like it is needed anymore and will actually
fail for Ubuntu 20.04.

Also it doesn't match what will happen for most real-world
installations, so let's try to get back to using distro packages. We'll
still use the source install for RHEL/Centos, it remains to be tested
whether we can get back to using distro versions there, too.

This is the commit message #2:

Use uwsgi binary from path

All these uwsgi invocations assume that the uwsgi binary is in the
same directory as their project binaries are installed into (probably
/usr/bin).  That may not be correct -- for example if using a packaged
uwsgi on Fedora the binary will live in /usr/sbin/uwsgi (not /usr/bin
where the project files from pip are).

Switch invocations to just find it in the path.

Depends-On: https://review.opendev.org/#/c/735536/

Change-Id: I82f539bfa533349293dd5a8ce309c9cc0ffb0393
(cherry picked from commit 2d903568ed)
(cherry picked from commit 312517d510)
2020-06-16 17:22:32 +02:00
Lee Yarwood 9707dba338 tempest: Increase m1.nano and m1.micro RAM by 64MB to avoid tmpfs exhaustion
tmpfs exhaustion has long been suspected as the root issue behind
failures to load ssh keys and other metadata from local config drives as
documented in bug #1808010. This can also lead to failures fetching
metadata from n-metadata-api leaving Tempest unable to SSH into
instances.

This change increases the RAM of the m1.nano and m1.micro flavors by
64MB to hopefully avoid these errors going forward. This is also ahead
of our eventual upgrade to Cirros 0.5.0 where 128MB becomes a
requirement.

Related-Bug: #1808010
Change-Id: I4b597579cf89939955d3c110c0bd58ca05de61f0
(cherry picked from commit 54edc7aeef)
2020-05-23 13:52:59 +00:00
Luigi Toscano 47877cfdf6 New TEMPEST_VOLUME_REVERT_TO_SNAPSHOT setting
Follow the pattern of the other configuration keys. The new variables
allows tests to enable/disable volume revert tests provided
by cinder-tempest-plugin.

Revert-to-snapshot was introduced in pike, and so the tests.

Change-Id: If137f201c2f646703f5a1ff96e71e48caed63b67
(cherry picked from commit 8fd45dec50)
2020-05-13 19:33:15 +02:00
Ian Wienand 15a663fd7f CentOS 8 support
This adds support for CentOS 8

Change-Id: If7ddbd6655086657db03074a27a2d47053fd88e0
(cherry picked from commit 36705b5233)
2020-05-10 17:42:47 +00:00
Ian Wienand 2f20a6ede6 Remove bridge-utils/brctl usage
This package isn't available on some distributions hasn't been
required in Neutron for several years
If679e79fa3242ee1cd8610b5525deca35b41c87e.  Remove it.

Change-Id: I7308a885c1d084efe2f0b9f542443d35966140ed
(cherry picked from commit 1147300b9c)
2020-05-10 17:41:51 +00:00
Zuul d018a05712 Merge "Cap stable/ussuri network, swift, volume api_extensions for tempest" into stable/ussuri 2020-05-05 19:01:02 +00:00
Zuul 529222e35d Merge "Switch to new grenade job name" into stable/ussuri 2020-05-05 19:01:01 +00:00
Andreas Jaeger 5c92249649 Switch to new grenade job name
The integrated gate template (integrated-gate-py3) has been switched
to the new grenade name (grenade-py3 -> grenade). This repo uses the
template but also has for irrelevant files an extra entry.

Rename the job following the template change to avoid duplicate
grenade runs.

Details:
- http://lists.openstack.org/pipermail/openstack-discuss/2020-May/014602.html

Depends-On: https://review.opendev.org/725148
Change-Id: I73e67c0e01ca231678903b2460dab672f17251e3
(cherry picked from commit c104afec7d)
2020-05-05 07:31:34 +00:00
Ghanshyam Mann e6c3e23f91 Cap stable/ussuri network, swift, volume api_extensions for tempest
This commit cap the network, volume and swift extensions on
Tempest's config option api_extensions.

Change-Id: I6772ff5b6f01a9e2cd076d25926823f55e9b1c08
2020-05-04 19:43:14 -05:00
Ghanshyam Mann bca2abdb3d Cap max microversions for stable/ussuri
This commit cap the max microversions for compute,
volume, and placement API for stable/ussuri.

Compute- https://opendev.org/openstack/nova/src/branch/master/nova/api/openstack/compute/rest_api_version_history.rst#user-content-maximum-in-ussuri
Volume- https://opendev.org/openstack/cinder/src/branch/master/cinder/api/openstack/rest_api_version_history.rst#user-content-section-53
Placement - https://opendev.org/openstack/placement/src/branch/master/placement/rest_api_version_history.rst#user-content-support-same_subtree-queryparam-on-get-allocation_candidates

Change-Id: Iab65e6288e336cc21d81adb0008b56e0db0b5286
2020-05-04 19:39:41 -05:00
Ghanshyam Mann 5c962a62f7 Update devstack branches for stable/ussuri
Change-Id: If6c067189ba6632a4e03e03a7b08a3c69a494199
2020-04-27 11:28:15 -05:00
OpenStack Release Bot 0a621628f5 Update .gitreview for stable/ussuri
Change-Id: Icc8e60b4f349ec8b196e0ad7cd6c462024630e1d
2020-04-27 16:16:04 +00:00
39 changed files with 506 additions and 206 deletions
+1
View File
@@ -2,3 +2,4 @@
host=review.opendev.org
port=29418
project=openstack/devstack.git
defaultbranch=stable/ussuri
+25 -52
View File
@@ -48,16 +48,6 @@
nodes:
- controller
- nodeset:
name: devstack-single-node-fedora-latest
nodes:
- name: controller
label: fedora-31
groups:
- name: tempest
nodes:
- controller
- nodeset:
name: openstack-two-node
nodes:
@@ -505,23 +495,6 @@
nodeset: devstack-single-node-opensuse-15
voting: false
- job:
name: devstack-platform-fedora-latest
parent: tempest-full-py3
description: Fedora latest platform test
nodeset: devstack-single-node-fedora-latest
voting: false
- job:
name: devstack-platform-fedora-latest-virt-preview
parent: tempest-full-py3
description: Fedora latest platform test using the virt-preview repo.
nodeset: devstack-single-node-fedora-latest
voting: false
vars:
devstack_localrc:
ENABLE_FEDORA_VIRT_PREVIEW_REPO: true
- job:
name: devstack-tox-base
parent: devstack
@@ -578,6 +551,7 @@
- job:
name: devstack-unit-tests
nodeset: ubuntu-bionic
description: |
Runs unit tests on devstack project.
@@ -587,14 +561,15 @@
- project:
templates:
- integrated-gate-py3
# Note(frickler): No longer use this global template since we no
# longer gate on grenade
# - integrated-gate-py3
- publish-openstack-docs-pti
check:
jobs:
- devstack
- devstack-ipv6
- devstack-platform-opensuse-15
- devstack-platform-fedora-latest
- devstack-multinode
- devstack-unit-tests
- openstack-tox-bashate
@@ -608,11 +583,14 @@
- swift-dsvm-functional-py3:
voting: false
irrelevant-files: *dsvm-irrelevant-files
- grenade-py3:
- grenade:
voting: false
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- tempest-full-py3
- neutron-grenade-multinode:
voting: false
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
@@ -625,7 +603,10 @@
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
# Making it non voting until we fix
# https://storyboard.openstack.org/#!/story/2010057
- openstacksdk-functional-devstack:
voting: false
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
@@ -649,22 +630,23 @@
- devstack-multinode
- devstack-unit-tests
- openstack-tox-bashate
- neutron-grenade-multinode:
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- tempest-full-py3
# - neutron-grenade-multinode:
# irrelevant-files:
# - ^.*\.rst$
# - ^doc/.*$
- neutron-tempest-linuxbridge:
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- grenade-py3:
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- openstacksdk-functional-devstack:
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
# - grenade:
# irrelevant-files:
# - ^.*\.rst$
# - ^doc/.*$
#- openstacksdk-functional-devstack:
# irrelevant-files:
# - ^.*\.rst$
# - ^doc/.*$
- tempest-ipv6-only:
irrelevant-files:
- ^.*\.rst$
@@ -686,10 +668,6 @@
# Next cycle we can remove this if everything run out stable enough.
# * nova-multi-cell: maintained by nova and currently non-voting in the
# check queue for nova changes but relies on devstack configuration
# * devstack-platform-fedora-latest-virt-preview: Maintained by lyarwood
# for Nova to allow early testing of the latest versions of Libvirt and
# QEMU. Should only graduate out of experimental if it ever moves into
# the check queue for Nova.
experimental:
jobs:
@@ -706,15 +684,11 @@
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- legacy-tempest-dsvm-neutron-dvr-multinode-full:
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- neutron-tempest-dvr-ha-multinode-full:
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- legacy-tempest-dsvm-lvm-multibackend:
- cinder-tempest-lvm-multibackend:
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
@@ -722,4 +696,3 @@
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- devstack-platform-fedora-latest-virt-preview
-1
View File
@@ -1,7 +1,6 @@
apache2
apache2-dev
bc
bridge-utils
bsdmainutils
curl
default-jre-headless # NOPRIME
-1
View File
@@ -1,7 +1,6 @@
apache2
apache2-devel
bc
bridge-utils
ca-certificates-mozilla
curl
gcc
-1
View File
@@ -1,5 +1,4 @@
bc
bridge-utils
curl
dbus
gcc
+13
View File
@@ -449,6 +449,7 @@ function is_fedora {
[ "$os_VENDOR" = "Fedora" ] || [ "$os_VENDOR" = "Red Hat" ] || \
[ "$os_VENDOR" = "RedHatEnterpriseServer" ] || \
[ "$os_VENDOR" = "RedHatEnterprise" ] || \
[ "$os_VENDOR" = "CentOS" ] || [ "$os_VENDOR" = "OracleServer" ] || \
[ "$os_VENDOR" = "Virtuozzo" ]
}
@@ -587,6 +588,18 @@ function git_clone {
fi
fi
# NOTE(ianw) 2022-04-13 : commit [1] has broken many assumptions
# about how we clone and work with repos. Mark them safe globally
# as a work-around.
#
# NOTE(danms): On bionic (and likely others) git-config may write
# ~stackuser/.gitconfig if not run with sudo -H. Using --system
# writes these changes to /etc/gitconfig which is more
# discoverable anyway.
#
# [1] https://github.com/git/git/commit/8959555cee7ec045958f9b6dd62e541affb7e7d9
sudo git config --system --add safe.directory ${git_dest}
# print out the results so we know what change was used in the logs
cd $git_dest
git show --oneline | head -1
+7 -1
View File
@@ -173,7 +173,13 @@ function pip_install {
local sudo_pip="sudo -H"
if python3_enabled; then
echo "Using python $PYTHON3_VERSION to install $package_dir because python3_enabled=True"
sudo_pip="$sudo_pip LC_ALL=en_US.UTF-8"
# See
# https://github.com/pypa/setuptools/issues/2232
# http://lists.openstack.org/pipermail/openstack-discuss/2020-August/016905.html
# this makes setuptools >=50 use the platform distutils.
# We only want to do this on global pip installs, not if
# installing in a virtualenv
sudo_pip="$sudo_pip LC_ALL=en_US.UTF-8 SETUPTOOLS_USE_DISTUTILS=stdlib "
cmd_pip=$(get_pip_command $PYTHON3_VERSION)
else
echo "Using python $PYTHON2_VERSION to install $package_dir because python3_enabled=False"
+49 -21
View File
@@ -82,26 +82,54 @@ function install_apache_uwsgi {
apxs="apxs"
fi
# Ubuntu xenial is back level on uwsgi so the proxy doesn't
# actually work. Hence we have to build from source for now.
# This varies based on packaged/installed. If we've
# pip_installed, then the pip setup will only build a "python"
# module that will be either python2 or python3 depending on what
# it was built with.
#
# Centos 7 actually has the module in epel, but there was a big
# push to disable epel by default. As such, compile from source
# there as well.
# For package installs, the distro ships both plugins and you need
# to select the right one ... it will not be autodetected.
if python3_enabled; then
UWSGI_PYTHON_PLUGIN=python3
else
UWSGI_PYTHON_PLUGIN=python
fi
local dir
dir=$(mktemp -d)
pushd $dir
pip_install uwsgi
pip download uwsgi -c $REQUIREMENTS_DIR/upper-constraints.txt
local uwsgi
uwsgi=$(ls uwsgi*)
tar xvf $uwsgi
cd uwsgi*/apache2
sudo $apxs -i -c mod_proxy_uwsgi.c
popd
# delete the temp directory
sudo rm -rf $dir
if is_ubuntu; then
install_package uwsgi \
uwsgi-plugin-python \
uwsgi-plugin-python3 \
libapache2-mod-proxy-uwsgi
elif is_fedora; then
# Note httpd comes with mod_proxy_uwsgi and it is loaded by
# default; the mod_proxy_uwsgi package actually conflicts now.
# See:
# https://bugzilla.redhat.com/show_bug.cgi?id=1574335
#
# Thus there is nothing else to do after this install
install_package uwsgi \
uwsgi-plugin-python3
elif [[ $os_VENDOR =~ openSUSE ]]; then
install_package uwsgi \
uwsgi-python3 \
apache2-mod_uwsgi
else
# Compile uwsgi from source.
local dir
dir=$(mktemp -d)
pushd $dir
pip_install uwsgi
pip download uwsgi -c $REQUIREMENTS_DIR/upper-constraints.txt
local uwsgi
uwsgi=$(ls uwsgi*)
tar xvf $uwsgi
cd uwsgi*/apache2
sudo $apxs -i -c mod_proxy_uwsgi.c
popd
# delete the temp directory
sudo rm -rf $dir
UWSGI_PYTHON_PLUGIN=python
fi
if is_ubuntu || is_suse ; then
# we've got to enable proxy and proxy_uwsgi for this to work
@@ -131,7 +159,7 @@ function install_apache_wsgi {
fi
elif is_fedora; then
sudo rm -f /etc/httpd/conf.d/000-*
install_package httpd mod_wsgi
install_package httpd python3-mod_wsgi
# For consistency with Ubuntu, switch to the worker mpm, as
# the default is event
sudo sed -i '/mod_mpm_prefork.so/s/^/#/g' /etc/httpd/conf.modules.d/00-mpm.conf
@@ -265,7 +293,7 @@ function write_uwsgi_config {
# configured after graceful shutdown
iniset "$file" uwsgi worker-reload-mercy $WORKER_TIMEOUT
iniset "$file" uwsgi enable-threads true
iniset "$file" uwsgi plugins python
iniset "$file" uwsgi plugins http,${UWSGI_PYTHON_PLUGIN}
# uwsgi recommends this to prevent thundering herd on accept.
iniset "$file" uwsgi thunder-lock true
# Set hook to trigger graceful shutdown on SIGTERM
@@ -318,7 +346,7 @@ function write_local_uwsgi_http_config {
iniset "$file" uwsgi die-on-term true
iniset "$file" uwsgi exit-on-reload false
iniset "$file" uwsgi enable-threads true
iniset "$file" uwsgi plugins python
iniset "$file" uwsgi plugins http,${UWSGI_PYTHON_PLUGIN}
# uwsgi recommends this to prevent thundering herd on accept.
iniset "$file" uwsgi thunder-lock true
# Set hook to trigger graceful shutdown on SIGTERM
+1 -1
View File
@@ -492,7 +492,7 @@ function start_cinder {
start_tls_proxy cinder '*' $CINDER_SERVICE_PORT $CINDER_SERVICE_HOST $CINDER_SERVICE_PORT_INT
fi
else
run_process "c-api" "$CINDER_BIN_DIR/uwsgi --procname-prefix cinder-api --ini $CINDER_UWSGI_CONF"
run_process "c-api" "$(which uwsgi) --procname-prefix cinder-api --ini $CINDER_UWSGI_CONF"
cinder_url=$service_protocol://$SERVICE_HOST/volume/v3
fi
fi
+1 -1
View File
@@ -392,7 +392,7 @@ function start_glance {
run_process g-reg "$GLANCE_BIN_DIR/glance-registry --config-file=$GLANCE_CONF_DIR/glance-registry.conf"
if [[ "$WSGI_MODE" == "uwsgi" ]]; then
run_process g-api "$GLANCE_BIN_DIR/uwsgi --procname-prefix glance-api --ini $GLANCE_UWSGI_CONF"
run_process g-api "$(which uwsgi) --procname-prefix glance-api --ini $GLANCE_UWSGI_CONF"
else
run_process g-api "$GLANCE_BIN_DIR/glance-api --config-dir=$GLANCE_CONF_DIR"
fi
+2 -1
View File
@@ -413,6 +413,7 @@ function configure_keystone_authtoken_middleware {
local section=${3:-keystone_authtoken}
iniset $conf_file $section auth_type password
iniset $conf_file $section interface public
iniset $conf_file $section auth_url $KEYSTONE_SERVICE_URI
iniset $conf_file $section username $admin_user
iniset $conf_file $section password $SERVICE_PASSWORD
@@ -523,7 +524,7 @@ function start_keystone {
enable_apache_site keystone
restart_apache_server
else # uwsgi
run_process keystone "$KEYSTONE_BIN_DIR/uwsgi --procname-prefix keystone --ini $KEYSTONE_PUBLIC_UWSGI_CONF" ""
run_process keystone "$(which uwsgi) --procname-prefix keystone --ini $KEYSTONE_PUBLIC_UWSGI_CONF" ""
fi
echo "Waiting for keystone to start..."
+2 -2
View File
@@ -124,8 +124,8 @@ function init_lvm_volume_group {
local vg=$1
local size=$2
# Start the lvmetad on f30 (dropped from f31) or SUSE
if [[ $DISTRO =~ f30 ]] || is_suse; then
# Start the lvmetad on f30 (dropped from f31)
if [[ $DISTRO =~ f30 ]] ; then
# services is not started by default
start_service lvm2-lvmetad
fi
+1 -1
View File
@@ -463,7 +463,7 @@ function start_neutron_api {
done
if [ "$NEUTRON_DEPLOY_MOD_WSGI" == "True" ]; then
run_process neutron-api "$NEUTRON_BIN_DIR/uwsgi --procname-prefix neutron-api --ini $NEUTRON_UWSGI_CONF"
run_process neutron-api "$(which uwsgi) --procname-prefix neutron-api --ini $NEUTRON_UWSGI_CONF"
neutron_url=$service_protocol://$NEUTRON_SERVICE_HOST/networking/
enable_service neutron-rpc-server
run_process neutron-rpc-server "$NEUTRON_BIN_DIR/neutron-rpc-server $opts"
+4 -1
View File
@@ -477,7 +477,7 @@ function start_neutron_service_and_check {
# Start the Neutron service
if [ "$NEUTRON_DEPLOY_MOD_WSGI" == "True" ]; then
enable_service neutron-api
run_process neutron-api "$NEUTRON_BIN_DIR/uwsgi --procname-prefix neutron-api --ini $NEUTRON_UWSGI_CONF"
run_process neutron-api "$(which uwsgi) --procname-prefix neutron-api --ini $NEUTRON_UWSGI_CONF"
neutron_url=$Q_PROTOCOL://$Q_HOST/networking/
enable_service neutron-rpc-server
run_process neutron-rpc-server "$NEUTRON_BIN_DIR/neutron-rpc-server $cfg_file_options"
@@ -842,6 +842,9 @@ function _configure_neutron_service {
configure_keystone_authtoken_middleware $NEUTRON_CONF nova nova
# Configuration for placement client
configure_keystone_authtoken_middleware $NEUTRON_CONF placement placement
# Configure plugin
neutron_plugin_configure_service
}
+1 -1
View File
@@ -38,7 +38,7 @@ function neutron_plugin_create_nova_conf {
}
function neutron_plugin_install_agent_packages {
install_package bridge-utils
:
}
function neutron_plugin_configure_dhcp_agent {
+5 -2
View File
@@ -303,6 +303,9 @@ function configure_nova {
sudo dnf update -y
fi
# Ensure each compute host uses a unique iSCSI initiator
echo InitiatorName=$(iscsi-iname) | sudo tee /etc/iscsi/initiatorname.iscsi
if [[ ${ISCSID_DEBUG} == "True" ]]; then
# Install an override that starts iscsid with debugging
# enabled.
@@ -864,7 +867,7 @@ function start_nova_api {
start_tls_proxy nova '*' $NOVA_SERVICE_PORT $NOVA_SERVICE_HOST $NOVA_SERVICE_PORT_INT
fi
else
run_process "n-api" "$NOVA_BIN_DIR/uwsgi --procname-prefix nova-api --ini $NOVA_UWSGI_CONF"
run_process "n-api" "$(which uwsgi) --procname-prefix nova-api --ini $NOVA_UWSGI_CONF"
nova_url=$service_protocol://$SERVICE_HOST/compute/v2.1/
fi
@@ -955,7 +958,7 @@ function start_nova_rest {
if [ "$NOVA_USE_MOD_WSGI" == "False" ]; then
run_process n-api-meta "$NOVA_BIN_DIR/nova-api-metadata --config-file $compute_cell_conf"
else
run_process n-api-meta "$NOVA_BIN_DIR/uwsgi --procname-prefix nova-api-meta --ini $NOVA_METADATA_UWSGI_CONF"
run_process n-api-meta "$(which uwsgi) --procname-prefix nova-api-meta --ini $NOVA_METADATA_UWSGI_CONF"
fi
export PATH=$old_path
+1 -1
View File
@@ -144,7 +144,7 @@ function install_placement {
# start_placement_api() - Start the API processes ahead of other things
function start_placement_api {
if [[ "$WSGI_MODE" == "uwsgi" ]]; then
run_process "placement-api" "$PLACEMENT_BIN_DIR/uwsgi --procname-prefix placement --ini $PLACEMENT_UWSGI_CONF"
run_process "placement-api" "$(which uwsgi) --procname-prefix placement --ini $PLACEMENT_UWSGI_CONF"
else
enable_apache_site placement-api
restart_apache_server
+3 -1
View File
@@ -738,7 +738,9 @@ function init_swift {
function install_swift {
git_clone $SWIFT_REPO $SWIFT_DIR $SWIFT_BRANCH
setup_develop $SWIFT_DIR
# keystonemiddleware needs to be installed via keystone extras as defined
# in setup.cfg, see bug #1909018 for more details.
setup_develop $SWIFT_DIR keystone
if [ "$SWIFT_USE_MOD_WSGI" == "True" ]; then
install_apache_wsgi
fi
+89 -21
View File
@@ -57,7 +57,7 @@ BUILD_TIMEOUT=${BUILD_TIMEOUT:-196}
# This must be False on stable branches, as master tempest
# deps do not match stable branch deps. Set this to True to
# have tempest installed in DevStack by default.
INSTALL_TEMPEST=${INSTALL_TEMPEST:-"True"}
INSTALL_TEMPEST=${INSTALL_TEMPEST:-"False"}
# This variable is passed directly to pip install inside the common tox venv
# that is created
@@ -110,6 +110,21 @@ function image_size_in_gib {
echo $size | python3 -c "import math; print(int(math.ceil(float(int(input()) / 1024.0 ** 3))))"
}
function set_tempest_venv_constraints {
local tmp_c
tmp_c=$1
if [[ $TEMPEST_VENV_UPPER_CONSTRAINTS == "master" ]]; then
(cd $REQUIREMENTS_DIR && git show origin/master:upper-constraints.txt) > $tmp_c
else
echo "Using $TEMPEST_VENV_UPPER_CONSTRAINTS constraints in Tempest virtual env."
cat $TEMPEST_VENV_UPPER_CONSTRAINTS > $tmp_c
# NOTE: setting both tox env var and once Tempest start using new var
# TOX_CONSTRAINTS_FILE then we can remove the old one.
export UPPER_CONSTRAINTS_FILE=$TEMPEST_VENV_UPPER_CONSTRAINTS
export TOX_CONSTRAINTS_FILE=$TEMPEST_VENV_UPPER_CONSTRAINTS
fi
}
# configure_tempest() - Set config files, create data dirs, etc
function configure_tempest {
if [[ "$INSTALL_TEMPEST" == "True" ]]; then
@@ -203,13 +218,13 @@ function configure_tempest {
if [[ ! ( $available_flavors =~ 'm1.nano' ) ]]; then
# Determine the flavor disk size based on the image size.
disk=$(image_size_in_gib $image_uuid)
openstack flavor create --id 42 --ram 64 --disk $disk --vcpus 1 --property hw_rng:allowed=True m1.nano
openstack flavor create --id 42 --ram 128 --disk $disk --vcpus 1 --property hw_rng:allowed=True m1.nano
fi
flavor_ref=42
if [[ ! ( $available_flavors =~ 'm1.micro' ) ]]; then
# Determine the alt flavor disk size based on the alt image size.
disk=$(image_size_in_gib $image_uuid_alt)
openstack flavor create --id 84 --ram 128 --disk $disk --vcpus 1 --property hw_rng:allowed=True m1.micro
openstack flavor create --id 84 --ram 192 --disk $disk --vcpus 1 --property hw_rng:allowed=True m1.micro
fi
flavor_ref_alt=84
else
@@ -376,7 +391,7 @@ function configure_tempest {
# NOTE- To avoid microversion tests failure on stable branch, we need to change "tempest_compute_max_microversion"
# for stable branch on each release which should be changed from "latest" to max supported version of that release.
local tempest_compute_min_microversion=${TEMPEST_COMPUTE_MIN_MICROVERSION:-None}
local tempest_compute_max_microversion=${TEMPEST_COMPUTE_MAX_MICROVERSION:-"latest"}
local tempest_compute_max_microversion=${TEMPEST_COMPUTE_MAX_MICROVERSION:-"2.87"}
# Reset microversions to None where v2.0 is running which does not support microversion.
# Both "None" means no microversion testing.
if [[ "$TEMPEST_COMPUTE_TYPE" == "compute_legacy" ]]; then
@@ -401,7 +416,7 @@ function configure_tempest {
iniset $TEMPEST_CONFIG compute-feature-enabled block_migration_for_live_migration ${USE_BLOCK_MIGRATION_FOR_LIVE_MIGRATION:-False}
iniset $TEMPEST_CONFIG compute-feature-enabled live_migrate_back_and_forth ${LIVE_MIGRATE_BACK_AND_FORTH:-False}
iniset $TEMPEST_CONFIG compute-feature-enabled attach_encrypted_volume ${ATTACH_ENCRYPTED_VOLUME_AVAILABLE:-True}
iniset $TEMPEST_CONFIG compute-feature-enabled xenapi_apis True
if [[ -n "$NOVA_FILTERS" ]]; then
iniset $TEMPEST_CONFIG compute-feature-enabled scheduler_enabled_filters ${NOVA_FILTERS}
fi
@@ -433,8 +448,7 @@ function configure_tempest {
SCENARIO_IMAGE_DIR=${SCENARIO_IMAGE_DIR:-$FILES}
SCENARIO_IMAGE_FILE=$DEFAULT_IMAGE_FILE_NAME
fi
iniset $TEMPEST_CONFIG scenario img_dir $SCENARIO_IMAGE_DIR
iniset $TEMPEST_CONFIG scenario img_file $SCENARIO_IMAGE_FILE
iniset $TEMPEST_CONFIG scenario img_file $SCENARIO_IMAGE_DIR/$SCENARIO_IMAGE_FILE
# If using provider networking, use the physical network for validation rather than private
TEMPEST_SSH_NETWORK_NAME=$PRIVATE_NETWORK_NAME
@@ -472,8 +486,13 @@ function configure_tempest {
TEMPEST_EXTEND_ATTACHED_VOLUME=${TEMPEST_EXTEND_ATTACHED_VOLUME:-True}
fi
iniset $TEMPEST_CONFIG volume-feature-enabled extend_attached_volume $(trueorfalse False TEMPEST_EXTEND_ATTACHED_VOLUME)
# Only turn on TEMPEST_VOLUME_REVERT_TO_SNAPSHOT by default for "lvm" backends
if [[ "$CINDER_ENABLED_BACKENDS" == *"lvm"* ]]; then
TEMPEST_VOLUME_REVERT_TO_SNAPSHOT=${TEMPEST_VOLUME_REVERT_TO_SNAPSHOT:-True}
fi
iniset $TEMPEST_CONFIG volume-feature-enabled volume_revert $(trueorfalse False TEMPEST_VOLUME_REVERT_TO_SNAPSHOT)
local tempest_volume_min_microversion=${TEMPEST_VOLUME_MIN_MICROVERSION:-None}
local tempest_volume_max_microversion=${TEMPEST_VOLUME_MAX_MICROVERSION:-"latest"}
local tempest_volume_max_microversion=${TEMPEST_VOLUME_MAX_MICROVERSION:-"3.60"}
# Reset microversions to None where v2 is running which does not support microversion.
# Both "None" means no microversion testing.
if [[ "$TEMPEST_VOLUME_TYPE" == "volumev2" ]]; then
@@ -534,7 +553,7 @@ function configure_tempest {
# NOTE- To avoid microversion tests failure on stable branch, we need to change "tempest_placement_max_microversion"
# for stable branch on each release which should be changed from "latest" to max supported version of that release.
local tempest_placement_min_microversion=${TEMPEST_PLACEMENT_MIN_MICROVERSION:-None}
local tempest_placement_max_microversion=${TEMPEST_PLACEMENT_MAX_MICROVERSION:-"latest"}
local tempest_placement_max_microversion=${TEMPEST_PLACEMENT_MAX_MICROVERSION:-"1.36"}
if [ "$tempest_placement_min_microversion" == "None" ]; then
inicomment $TEMPEST_CONFIG placement min_microversion
else
@@ -607,14 +626,13 @@ function configure_tempest {
local tmp_cfg_file
tmp_cfg_file=$(mktemp)
cd $TEMPEST_DIR
local tmp_u_c_m
tmp_u_c_m=$(mktemp -t tempest_u_c_m.XXXXXXXXXX)
set_tempest_venv_constraints $tmp_u_c_m
if [[ "$OFFLINE" != "True" ]]; then
tox -revenv-tempest --notest
fi
# The requirements might be on a different branch, while tempest needs master requirements.
local tmp_u_c_m
tmp_u_c_m=$(mktemp -t tempest_u_c_m.XXXXXXXXXX)
(cd $REQUIREMENTS_DIR && git show origin/master:upper-constraints.txt) > $tmp_u_c_m
tox -evenv-tempest -- pip install -c $tmp_u_c_m -r requirements.txt
rm -f $tmp_u_c_m
@@ -652,7 +670,23 @@ function configure_tempest {
DISABLE_NETWORK_API_EXTENSIONS+=", l3_agent_scheduler"
fi
local network_api_extensions=${NETWORK_API_EXTENSIONS:-"all"}
DEFAULT_NET_EXT="address-scope,agent,allowed-address-pairs,auto-allocated-topology"
DEFAULT_NET_EXT+=",availability_zone,binding,default-subnetpools,dhcp_agent_scheduler"
DEFAULT_NET_EXT+=",dvr,ext-gw-mode,external-net,extra_dhcp_opt,extraroute,flavors"
DEFAULT_NET_EXT+=",l3-flavors,l3-ha,l3_agent_scheduler,multi-provider,net-mtu"
DEFAULT_NET_EXT+=",network-ip-availability,network_availability_zone,pagination"
DEFAULT_NET_EXT+=",port-security,project-id,provider,quotas,quota_details,rbac-policies"
DEFAULT_NET_EXT+=",revision-if-match,router,router_availability_zone,security-group,service-type,sorting"
DEFAULT_NET_EXT+=",standard-attr-description,standard-attr-revisions,standard-attr-tag,standard-attr-timestamp"
DEFAULT_NET_EXT+=",subnet-service-types,subnet_allocation,net-mtu-writable,ip-substring-filtering"
DEFAULT_NET_EXT+=",availability_zone_filter,filter-validation,empty-string-filtering,port-mac-address-regenerate"
DEFAULT_NET_EXT+=",port-security-groups-filtering,fip-port-details,binding-extended"
DEFAULT_NET_EXT+=",subnet_onboard,l3-port-ip-change-not-allowed,agent-resources-synced"
DEFAULT_NET_EXT+=",floatingip-pools,rbac-security-groups,subnetpool-prefix-ops,router-admin-state-down-before-update"
#New in ussuri
DEFAULT_NET_EXT+=",rbac-subnetpool,tag_ports_during_bulk_creation,stateful_security_group"
local network_api_extensions=${NETWORK_API_EXTENSIONS:-$DEFAULT_NET_EXT}
if [[ ! -z "$DISABLE_NETWORK_API_EXTENSIONS" ]]; then
# Enabled extensions are either the ones explicitly specified or those available on the API endpoint
network_api_extensions=${NETWORK_API_EXTENSIONS:-$(iniget $tmp_cfg_file network-feature-enabled api_extensions | tr -d " ")}
@@ -664,7 +698,10 @@ function configure_tempest {
fi
iniset $TEMPEST_CONFIG network-feature-enabled api_extensions $network_api_extensions
# Swift API Extensions
local object_storage_api_extensions=${OBJECT_STORAGE_API_EXTENSIONS:-"all"}
DEFAULT_SWIFT_OPT="account_quotas,bulk_delete,bulk_upload,container_quotas"
DEFAULT_SWIFT_OPT+=",container_sync,crossdomain,formpost,ratelimit,slo"
DEFAULT_SWIFT_OPT+=",staticweb,tempauth,tempurl,versioned_writes"
local object_storage_api_extensions=${OBJECT_STORAGE_API_EXTENSIONS:-$DEFAULT_SWIFT_OPT}
if [[ ! -z "$DISABLE_OBJECT_STORAGE_API_EXTENSIONS" ]]; then
# Enabled extensions are either the ones explicitly specified or those available on the API endpoint
object_storage_api_extensions=${OBJECT_STORAGE_API_EXTENSIONS:-$(iniget $tmp_cfg_file object-storage-feature-enabled discoverable_apis | tr -d " ")}
@@ -672,8 +709,30 @@ function configure_tempest {
object_storage_api_extensions=$(remove_disabled_extensions $object_storage_api_extensions $DISABLE_STORAGE_API_EXTENSIONS)
fi
iniset $TEMPEST_CONFIG object-storage-feature-enabled discoverable_apis $object_storage_api_extensions
# This feature list for Neutron used from Victoria, the aim is to skip tests
# for features in Neutron that has no API extension, or can't be detected
# otherwise from the API.
# It is added here to avoid stable gating to run these tests (like for IPv6 metadata
# in neutron-tempest-plugin or updating min_bw QoS values for ports already attached
# to VMs).
# To check new features grep neutron-tempest-plugin and tempest for
# is_network_feature_enabled, and please check with Neutron team.
local network_available_features=""
iniset $TEMPEST_CONFIG network-feature-enabled available_features $network_available_features
# Cinder API Extensions
local volume_api_extensions=${VOLUME_API_EXTENSIONS:-"all"}
DEFAULT_VOL_EXT="OS-SCH-HNT,backups,capabilities,cgsnapshots,consistencygroups"
DEFAULT_VOL_EXT+=",encryption,os-admin-actions,os-availability-zone"
DEFAULT_VOL_EXT+=",os-extended-services,os-extended-snapshot-attributes"
DEFAULT_VOL_EXT+=",os-hosts,os-quota-class-sets,os-quota-sets"
DEFAULT_VOL_EXT+=",os-services,os-snapshot-actions,os-snapshot-manage"
DEFAULT_VOL_EXT+=",os-snapshot-unmanage,os-types-extra-specs,os-types-manage"
DEFAULT_VOL_EXT+=",os-used-limits,os-vol-host-attr,os-vol-image-meta"
DEFAULT_VOL_EXT+=",os-vol-mig-status-attr,os-vol-tenant-attr,os-volume-actions"
DEFAULT_VOL_EXT+=",os-volume-encryption-metadata,os-volume-manage"
DEFAULT_VOL_EXT+=",os-volume-transfer,os-volume-type-access"
DEFAULT_VOL_EXT+=",os-volume-unmanage,qos-specs,scheduler-stats"
local volume_api_extensions=${VOLUME_API_EXTENSIONS:-$DEFAULT_VOL_EXT}
if [[ ! -z "$DISABLE_VOLUME_API_EXTENSIONS" ]]; then
# Enabled extensions are either the ones explicitly specified or those available on the API endpoint
volume_api_extensions=${VOLUME_API_EXTENSIONS:-$(iniget $tmp_cfg_file volume-feature-enabled api_extensions | tr -d " ")}
@@ -689,19 +748,29 @@ function configure_tempest {
# install_tempest() - Collect source and prepare
function install_tempest {
git_clone $TEMPEST_REPO $TEMPEST_DIR $TEMPEST_BRANCH
pip_install 'tox!=2.8.0'
# NOTE(gmann): Pinning tox<4.0.0 for stable/zed and lower. Tox 4.0.0
# released after zed was released and has some incompatible changes
# and it is ok not to fix the issues caused by tox 4.0.0 in stable
# beanches jobs. We can continue testing the stable/zed and lower
# branches with tox<4.0.0
pip_install 'tox!=2.8.0,<4.0.0'
pushd $TEMPEST_DIR
# NOTE(gmann): checkout the TEMPEST_BRANCH in case TEMPEST_BRANCH
# is tag name not master. git_clone would not checkout tag because
# TEMPEST_DIR already exist until RECLONE is true.
git checkout $TEMPEST_BRANCH
local tmp_u_c_m
tmp_u_c_m=$(mktemp -t tempest_u_c_m.XXXXXXXXXX)
set_tempest_venv_constraints $tmp_u_c_m
tox -r --notest -efull
# NOTE(mtreinish) Respect constraints in the tempest full venv, things that
# are using a tox job other than full will not be respecting constraints but
# running pip install -U on tempest requirements
$TEMPEST_DIR/.tox/tempest/bin/pip install -c $REQUIREMENTS_DIR/upper-constraints.txt -r requirements.txt
$TEMPEST_DIR/.tox/tempest/bin/pip install -c $tmp_u_c_m -r requirements.txt
PROJECT_VENV["tempest"]=${TEMPEST_DIR}/.tox/tempest
rm -f $tmp_u_c_m
popd
}
@@ -709,10 +778,9 @@ function install_tempest {
function install_tempest_plugins {
pushd $TEMPEST_DIR
if [[ $TEMPEST_PLUGINS != 0 ]] ; then
# The requirements might be on a different branch, while tempest & tempest plugins needs master requirements.
local tmp_u_c_m
tmp_u_c_m=$(mktemp -t tempest_u_c_m.XXXXXXXXXX)
(cd $REQUIREMENTS_DIR && git show origin/master:upper-constraints.txt) > $tmp_u_c_m
set_tempest_venv_constraints $tmp_u_c_m
tox -evenv-tempest -- pip install -c $tmp_u_c_m $TEMPEST_PLUGINS
rm -f $tmp_u_c_m
echo "Checking installed Tempest plugins:"
+7 -1
View File
@@ -5,4 +5,10 @@
bindep_profile: test
bindep_dir: "{{ zuul_work_dir }}"
- test-setup
- ensure-tox
# NOTE(gmann): Pinning tox<4.0.0 for stable/zed and lower. Tox 4.0.0
# released after zed was released and has some incompatible changes
# and it is ok not to fix the issues caused by tox 4.0.0 in stable
# beanches jobs. We can continue testing the stable/zed and lower
# branches with tox<4.0.0
- role: ensure-tox
ensure_tox_version: "<4"
@@ -0,0 +1,16 @@
Verify the IPv6-only deployments
This role needs to be invoked from a playbook that
run tests. This role verifies the IPv6 setting on
devstack side and devstack deploy services on IPv6.
This role is invoked before tests are run so that
if any missing IPv6 setting or deployments can fail
the job early.
**Role Variables**
.. zuul:rolevar:: devstack_base_dir
:default: /opt/stack
The devstack base directory.
@@ -0,0 +1 @@
devstack_base_dir: /opt/stack
@@ -0,0 +1,4 @@
- name: Verify the ipv6-only deployments
become: true
become_user: stack
shell: "{{ devstack_base_dir }}/devstack/tools/verify-ipv6-only-deployments.sh"
+22
View File
@@ -0,0 +1,22 @@
Generate stackviz report.
Generate stackviz report using subunit and dstat data, using
the stackviz archive embedded in test images.
**Role Variables**
.. zuul:rolevar:: devstack_base_dir
:default: /opt/stack
The devstack base directory.
.. zuul:rolevar:: stage_dir
:default: "{{ ansible_user_dir }}"
The stage directory where the input data can be found and
the output will be produced.
.. zuul:rolevar:: zuul_work_dir
:default: {{ devstack_base_dir }}/tempest
Directory to work in. It has to be a fully qualified path.
@@ -0,0 +1,3 @@
devstack_base_dir: /opt/stack
stage_dir: "{{ ansible_user_dir }}"
zuul_work_dir: "{{ devstack_base_dir }}/tempest"
+73
View File
@@ -0,0 +1,73 @@
- name: Process Stackviz
block:
- name: Devstack checks if stackviz archive exists
stat:
path: "/opt/cache/files/stackviz-latest.tar.gz"
register: stackviz_archive
- debug:
msg: "Stackviz archive could not be found in /opt/cache/files/stackviz-latest.tar.gz"
when: not stackviz_archive.stat.exists
- name: Check if subunit data exists
stat:
path: "{{ zuul_work_dir }}/testrepository.subunit"
register: subunit_input
- debug:
msg: "Subunit file could not be found at {{ zuul_work_dir }}/testrepository.subunit"
when: not subunit_input.stat.exists
- name: Install stackviz
when:
- stackviz_archive.stat.exists
- subunit_input.stat.exists
block:
- include_role:
name: ensure-pip
- pip:
name: "file://{{ stackviz_archive.stat.path }}"
virtualenv: /tmp/stackviz
virtualenv_command: '{{ ensure_pip_virtualenv_command }}'
extra_args: -U
- name: Deploy stackviz static html+js
command: cp -pR /tmp/stackviz/share/stackviz-html {{ stage_dir }}/stackviz
when:
- stackviz_archive.stat.exists
- subunit_input.stat.exists
- name: Check if dstat data exists
stat:
path: "{{ devstack_base_dir }}/logs/dstat-csv.log"
register: dstat_input
when:
- stackviz_archive.stat.exists
- subunit_input.stat.exists
- name: Run stackviz with dstat
shell: |
cat {{ subunit_input.stat.path }} | \
/tmp/stackviz/bin/stackviz-export \
--dstat "{{ devstack_base_dir }}/logs/dstat-csv.log" \
--env --stdin \
{{ stage_dir }}/stackviz/data
when:
- stackviz_archive.stat.exists
- subunit_input.stat.exists
- dstat_input.stat.exists
- name: Run stackviz without dstat
shell: |
cat {{ subunit_input.stat.path }} | \
/tmp/stackviz/bin/stackviz-export \
--env --stdin \
{{ stage_dir }}/stackviz/data
when:
- stackviz_archive.stat.exists
- subunit_input.stat.exists
- not dstat_input.stat.exists
ignore_errors: yes
+30 -60
View File
@@ -221,7 +221,7 @@ write_devstack_version
# Warn users who aren't on an explicitly supported distro, but allow them to
# override check and attempt installation with ``FORCE=yes ./stack``
if [[ ! ${DISTRO} =~ (bionic|stretch|jessie|f30|f31|opensuse-15.0|opensuse-15.1|opensuse-tumbleweed) ]]; then
if [[ ! ${DISTRO} =~ (bionic|stretch|jessie|f30|f31|opensuse-15.2|opensuse-tumbleweed|rhel8) ]]; then
echo "WARNING: this script has not been tested on $DISTRO"
if [[ "$FORCE" != "yes" ]]; then
die $LINENO "If you wish to run this script anyway run with FORCE=yes"
@@ -290,67 +290,24 @@ function _install_epel {
uninstall_package epel-release || true
fi
# This trick installs the latest epel-release from a bootstrap
# repo, then removes itself (as epel-release installed the
# "real" repo).
#
# You would think that rather than this, you could use
# $releasever directly in .repo file we create below. However
# RHEL gives a $releasever of "6Server" which breaks the path;
# see https://bugzilla.redhat.com/show_bug.cgi?id=1150759
cat <<EOF | sudo tee /etc/yum.repos.d/epel-bootstrap.repo
[epel-bootstrap]
name=Bootstrap EPEL
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-7&arch=\$basearch
failovermethod=priority
enabled=0
gpgcheck=0
EOF
# Enable a bootstrap repo. It is removed after finishing
# the epel-release installation.
is_package_installed yum-utils || install_package yum-utils
sudo yum-config-manager --enable epel-bootstrap
yum_install epel-release || \
die $LINENO "Error installing EPEL repo, cannot continue"
sudo rm -f /etc/yum.repos.d/epel-bootstrap.repo
# epel-release is in extras repo which is enabled by default
install_package epel-release
# RDO repos are not tested with epel and may have incompatibilities so
# let's limit the packages fetched from epel to the ones not in RDO repos.
sudo yum-config-manager --save --setopt=includepkgs=debootstrap,dpkg epel
}
function _install_rdo {
# There are multiple options for this, including using CloudSIG
# repositories (centos-release-*), trunk versions, etc. Since
# we're not interested in the actual openstack distributions
# (since we're using git to run!) but only peripherial packages
# like kvm or ovs, this has been reliable.
# TODO(ianw): figure out how to best mirror -- probably use infra
# mirror RDO reverse proxy. We could either have test
# infrastructure set it up disabled like EPEL, or fiddle it here.
# Per the point above, it's a bunch of repos so starts getting a
# little messy...
if ! is_package_installed rdo-release ; then
if [[ "$TARGET_BRANCH" == "master" ]]; then
yum_install https://rdoproject.org/repos/rdo-release.rpm
else
# Get latest rdo-release-$rdo_release RPM package version
rdo_release=$(echo $TARGET_BRANCH | sed "s|stable/||g")
yum_install https://rdoproject.org/repos/openstack-$rdo_release/rdo-release-$rdo_release.rpm
fi
fi
# Also enable optional for RHEL7 proper. Note this is a silent
# no-op on other platforms.
sudo yum-config-manager --enable rhel-7-server-optional-rpms
# Enable the Software Collections (SCL) repository for CentOS.
# This repository includes useful software (e.g. the Go Toolset)
# which is not present in the main repository.
if [[ "$os_VENDOR" =~ (CentOS) ]]; then
yum_install centos-release-scl
fi
if is_oraclelinux; then
sudo yum-config-manager --enable ol7_optional_latest ol7_addons ol7_MySQL56
if [[ "$TARGET_BRANCH" == "master" ]]; then
# rdo-release.el8.rpm points to latest RDO release, use that for master
sudo dnf -y install https://rdoproject.org/repos/rdo-release.el8.rpm
else
# For stable branches use corresponding release rpm
rdo_release=$(echo $TARGET_BRANCH | sed "s|stable/||g")
sudo dnf -y install https://rdoproject.org/repos/openstack-${rdo_release}/rdo-release-${rdo_release}.el8.rpm
fi
sudo dnf -y update
}
@@ -395,15 +352,22 @@ fi
# to speed things up
SKIP_EPEL_INSTALL=$(trueorfalse False SKIP_EPEL_INSTALL)
if [[ $DISTRO == "rhel7" ]]; then
if [[ $DISTRO == "rhel8" ]]; then
# If we have /etc/ci/mirror_info.sh assume we're on a OpenStack CI
# node, where EPEL is installed (but disabled) and already
# pointing at our internal mirror
if [[ -f /etc/ci/mirror_info.sh ]]; then
SKIP_EPEL_INSTALL=True
sudo yum-config-manager --enable epel
sudo dnf config-manager --set-enabled epel
fi
# PowerTools repo provides libyaml-devel required by devstack itself and
# EPEL packages assume that the PowerTools repository is enable.
sudo dnf config-manager --set-enabled PowerTools
# CentOS 8.3 changed the repository name to lower case.
sudo dnf config-manager --set-enabled powertools
if [[ ${SKIP_EPEL_INSTALL} != True ]]; then
_install_epel
fi
@@ -411,6 +375,12 @@ if [[ $DISTRO == "rhel7" ]]; then
# available in RDO repositories (e.g. OVS, or later versions of
# kvm) to run.
_install_rdo
# NOTE(cgoncalves): workaround RHBZ#1154272
# dnf fails for non-privileged users when expired_repos.json doesn't exist.
# RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1154272
# Patch: https://github.com/rpm-software-management/dnf/pull/1448
echo "[]" | sudo tee /var/cache/dnf/expired_repos.json
fi
# Ensure python is installed
+3 -2
View File
@@ -15,7 +15,7 @@ source $RC_DIR/functions
# Set the target branch. This is used so that stable branching
# does not need to update each repo below.
TARGET_BRANCH=master
TARGET_BRANCH=stable/ussuri
# Cycle trailing projects need to branch later than the others.
TRAILING_TARGET_BRANCH=master
@@ -311,7 +311,8 @@ REQUIREMENTS_BRANCH=${REQUIREMENTS_BRANCH:-$TARGET_BRANCH}
# Tempest test suite
TEMPEST_REPO=${TEMPEST_REPO:-${GIT_BASE}/openstack/tempest.git}
TEMPEST_BRANCH=${TEMPEST_BRANCH:-$BRANCHLESS_TARGET_BRANCH}
TEMPEST_BRANCH=${TEMPEST_BRANCH:-26.1.0}
TEMPEST_VENV_UPPER_CONSTRAINTS=${TEMPEST_VENV_UPPER_CONSTRAINTS:-$REQUIREMENTS_DIR/upper-constraints.txt}
##############
-12
View File
@@ -95,19 +95,7 @@ function test_libs_exist {
echo "test_libs_exist PASSED"
}
function test_branch_master {
for lib in $ALL_LIBS; do
if [[ ${GITBRANCH[$lib]} != "master" ]]; then
echo "GITBRANCH for $lib not master (${GITBRANCH[$lib]})"
exit 1
fi
done
echo "test_branch_master PASSED"
}
set -o errexit
test_libs_exist
test_branch_master
test_all_libs_upto_date
+1 -1
View File
@@ -15,7 +15,7 @@
echo "Ensuring we don't have crazy refs"
REFS=`grep BRANCH stackrc | grep -v 'TARGET_BRANCH' | grep -v 'NOVNC_BRANCH'`
REFS=`grep BRANCH stackrc | grep -v 'TARGET_BRANCH' | grep -v 'NOVNC_BRANCH' | grep -v 'TEMPEST_BRANCH'`
rc=$?
if [[ $rc -eq 0 ]]; then
echo "Branch defaults must be one of the *TARGET_BRANCH values. Found:"
+1 -1
View File
@@ -6,4 +6,4 @@ TOP=$(cd $(dirname "$0")/.. && pwd)
source $TOP/functions
source $TOP/tests/unittest.sh
python ./roles/write-devstack-local-conf/library/test.py
${PYTHON} $TOP/roles/write-devstack-local-conf/library/test.py
+2
View File
@@ -17,6 +17,8 @@ ERROR=0
PASS=0
FAILED_FUNCS=""
export PYTHON=$(which python3 2>/dev/null)
# pass a test, printing out MSG
# usage: passed message
function passed {
+1
View File
@@ -0,0 +1 @@
pip<20.3
+13 -4
View File
@@ -73,6 +73,18 @@ function fixup_ubuntu {
# Enable universe
sudo add-apt-repository -y universe
if [[ -f /etc/ci/mirror_info.sh ]] ; then
# If we are on a nodepool provided host and it has told us about
# where we can find local mirrors then use that mirror.
source /etc/ci/mirror_info.sh
sudo apt-add-repository -y "deb $NODEPOOL_UCA_MIRROR bionic-updates/train main"
else
# Enable UCA:train for updated versions of QEMU and libvirt
sudo add-apt-repository -y cloud-archive:train
fi
REPOS_UPDATED=False
apt_get_update
# Since pip10, pip will refuse to uninstall files from packages
# that were created with distutils (rather than more modern
# setuptools). This is because it technically doesn't have a
@@ -162,10 +174,7 @@ function fixup_fedora {
# manifest of what to remove. However, in most cases, simply
# overwriting works. So this hacks around those packages that
# have been dragged in by some other system dependency
sudo rm -rf /usr/lib/python2.7/site-packages/enum34*.egg-info
sudo rm -rf /usr/lib/python2.7/site-packages/ipaddress*.egg-info
sudo rm -rf /usr/lib/python2.7/site-packages/ply-*.egg-info
sudo rm -rf /usr/lib/python2.7/site-packages/typing-*.egg-info
sudo rm -rf /usr/lib64/python3*/site-packages/PyYAML-*.egg-info
}
function fixup_suse {
+23 -12
View File
@@ -38,7 +38,7 @@ FILES=$TOP_DIR/files
# [1] https://opendev.org/openstack/project-config/src/branch/master/nodepool/elements/cache-devstack/source-repository-pip
PIP_GET_PIP_URL=${PIP_GET_PIP_URL:-"https://bootstrap.pypa.io/get-pip.py"}
LOCAL_PIP="$FILES/$(basename $PIP_GET_PIP_URL)"
PIP_GET_PIP36_URL=${PIP_GET_PIP36_URL:-"https://bootstrap.pypa.io/pip/3.6/get-pip.py"}
GetDistro
echo "Distro: $DISTRO"
@@ -57,12 +57,21 @@ function get_versions {
function install_get_pip {
if [[ "$PYTHON3_VERSION" = "3.6" ]]; then
_pip_url=$PIP_GET_PIP36_URL
_local_pip="$FILES/$(basename $_pip_url)-py36"
else
_pip_url=$PIP_GET_PIP_URL
_local_pip="$FILES/$(basename $_pip_url)"
fi
# If get-pip.py isn't python, delete it. This was probably an
# outage on the server.
if [[ -r $LOCAL_PIP ]]; then
if ! head -1 $LOCAL_PIP | grep -q '#!/usr/bin/env python'; then
echo "WARNING: Corrupt $LOCAL_PIP found removing"
rm $LOCAL_PIP
if [[ -r $_local_pip ]]; then
if ! head -1 $_local_pip | grep -q '#!/usr/bin/env python'; then
echo "WARNING: Corrupt $_local_pip found removing"
rm $_local_pip
fi
fi
@@ -76,22 +85,24 @@ function install_get_pip {
# Thus we use curl's "-z" feature to always check the modified
# since and only download if a new version is out -- but only if
# it seems we downloaded the file originally.
if [[ ! -r $LOCAL_PIP || -r $LOCAL_PIP.downloaded ]]; then
if [[ ! -r $_local_pip || -r $_local_pip.downloaded ]]; then
# only test freshness if LOCAL_PIP is actually there,
# otherwise we generate a scary warning.
local timecond=""
if [[ -r $LOCAL_PIP ]]; then
timecond="-z $LOCAL_PIP"
if [[ -r $_local_pip ]]; then
timecond="-z $_local_pip"
fi
curl -f --retry 6 --retry-delay 5 \
$timecond -o $LOCAL_PIP $PIP_GET_PIP_URL || \
$timecond -o $_local_pip $_pip_url || \
die $LINENO "Download of get-pip.py failed"
touch $LOCAL_PIP.downloaded
touch $_local_pip.downloaded
fi
sudo -H -E python${PYTHON3_VERSION} $LOCAL_PIP
# TODO: remove the trailing pip constraint when a proper fix
# arrives for bug https://bugs.launchpad.net/devstack/+bug/1906322
sudo -H -E python${PYTHON3_VERSION} $_local_pip -c $TOOLS_DIR/cap-pip.txt
if ! python3_enabled; then
sudo -H -E python $LOCAL_PIP
sudo -H -E python $LOCAL_PIP -c $TOOLS_DIR/cap-pip.txt
fi
}
+92
View File
@@ -0,0 +1,92 @@
#!/bin/bash
#
#
# NOTE(gmann): This script is used in 'devstack-tempest-ipv6' zuul job to verify that
# services are deployed on IPv6 properly or not. This will capture if any devstck or devstack
# plugins are missing the required setting to listen on IPv6 address. This is run as part of
# run phase of zuul job and before test run. Child job of 'devstack-tempest-ipv6'
# can expand the IPv6 verification specific to project by defining the new post-run script which
# will run along with this base script.
# If there are more common verification for IPv6 then we can always extent this script.
# Keep track of the DevStack directory
TOP_DIR=$(cd $(dirname "$0")/../../devstack && pwd)
source $TOP_DIR/stackrc
source $TOP_DIR/openrc admin admin
function verify_devstack_ipv6_setting {
local _service_host=''
_service_host=$(echo $SERVICE_HOST | tr -d [])
local _host_ipv6=''
_host_ipv6=$(echo $HOST_IPV6 | tr -d [])
local _service_listen_address=''
_service_listen_address=$(echo $SERVICE_LISTEN_ADDRESS | tr -d [])
local _service_local_host=''
_service_local_host=$(echo $SERVICE_LOCAL_HOST | tr -d [])
if [[ "$SERVICE_IP_VERSION" != 6 ]]; then
echo $SERVICE_IP_VERSION "SERVICE_IP_VERSION is not set to 6 which is must for devstack to deploy services with IPv6 address."
exit 1
fi
is_service_host_ipv6=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_valid_ipv6("'$_service_host'"))')
if [[ "$is_service_host_ipv6" != "True" ]]; then
echo $SERVICE_HOST "SERVICE_HOST is not ipv6 which means devstack cannot deploy services on IPv6 address."
exit 1
fi
is_host_ipv6=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_valid_ipv6("'$_host_ipv6'"))')
if [[ "$is_host_ipv6" != "True" ]]; then
echo $HOST_IPV6 "HOST_IPV6 is not ipv6 which means devstack cannot deploy services on IPv6 address."
exit 1
fi
is_service_listen_address=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_valid_ipv6("'$_service_listen_address'"))')
if [[ "$is_service_listen_address" != "True" ]]; then
echo $SERVICE_LISTEN_ADDRESS "SERVICE_LISTEN_ADDRESS is not ipv6 which means devstack cannot deploy services on IPv6 address."
exit 1
fi
is_service_local_host=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_valid_ipv6("'$_service_local_host'"))')
if [[ "$is_service_local_host" != "True" ]]; then
echo $SERVICE_LOCAL_HOST "SERVICE_LOCAL_HOST is not ipv6 which means devstack cannot deploy services on IPv6 address."
exit 1
fi
echo "Devstack is properly configured with IPv6"
echo "SERVICE_IP_VERSION: " $SERVICE_IP_VERSION "HOST_IPV6: " $HOST_IPV6 "SERVICE_HOST: " $SERVICE_HOST "SERVICE_LISTEN_ADDRESS: " $SERVICE_LISTEN_ADDRESS "SERVICE_LOCAL_HOST: " $SERVICE_LOCAL_HOST
}
function sanity_check_system_ipv6_enabled {
system_ipv6_enabled=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_ipv6_enabled())')
if [[ $system_ipv6_enabled != "True" ]]; then
echo "IPv6 is disabled in system"
exit 1
fi
echo "IPv6 is enabled in system"
}
function verify_service_listen_address_is_ipv6 {
local endpoints_verified=False
local all_ipv6=True
endpoints=$(openstack endpoint list -f value -c URL)
for endpoint in ${endpoints}; do
local endpoint_address=''
endpoint_address=$(echo "$endpoint" | awk -F/ '{print $3}' | awk -F] '{print $1}')
endpoint_address=$(echo $endpoint_address | tr -d [])
local is_endpoint_ipv6=''
is_endpoint_ipv6=$(python3 -c 'import oslo_utils.netutils as nutils; print(nutils.is_valid_ipv6("'$endpoint_address'"))')
if [[ "$is_endpoint_ipv6" != "True" ]]; then
all_ipv6=False
echo $endpoint ": This is not ipv6 endpoint which means corresponding service is not listening on IPv6 address."
continue
fi
endpoints_verified=True
done
if [[ "$all_ipv6" == "False" ]] || [[ "$endpoints_verified" == "False" ]]; then
exit 1
fi
echo "All services deployed by devstack is on IPv6 endpoints"
echo $endpoints
}
#First thing to verify if system has IPv6 enabled or not
sanity_check_system_ipv6_enabled
#Verify whether devstack is configured properly with IPv6 setting
verify_devstack_ipv6_setting
#Get all registrfed endpoints by devstack in keystone and verify that each endpoints address is IPv6.
verify_service_listen_address_is_ipv6
-2
View File
@@ -166,8 +166,6 @@ def network_dump():
_header("Network Dump")
_dump_cmd("bridge link")
if _find_cmd("brctl"):
_dump_cmd("brctl show")
_dump_cmd("ip link show type bridge")
ip_cmds = ["neigh", "addr", "link", "route"]
for cmd in ip_cmds + ['netns']:
+3 -1
View File
@@ -36,7 +36,9 @@ commands = bash -c "find {toxinidir} \
[testenv:docs]
basepython = python3
deps = -r{toxinidir}/doc/requirements.txt
deps =
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/ussuri}
-r{toxinidir}/doc/requirements.txt
whitelist_externals = bash
setenv =
TOP_DIR={toxinidir}
+6
View File
@@ -181,3 +181,9 @@ if is_service_enabled cinder && is_package_installed lvm2; then
clean_lvm_volume_group $DEFAULT_VOLUME_GROUP_NAME || /bin/true
clean_lvm_filter
fi
# Clean any safe.directory items we wrote into the global
# gitconfig. We can identify the relevant ones by checking that they
# point to somewhere in our $DEST directory.
sudo sed -i "/directory=${DEST}/ d" /etc/gitconfig