Compare commits

...

68 Commits

Author SHA1 Message Date
yatinkarel c0020617f5 [Train Only] Run ensure-rust role
In train tempest is pinned to 26.1.0(requires paramkio>=2.7.0)
and since paramiko-3.0.0(requires cryptography>=3.3) release
jobs are failing as they are trying to compile cryptography
which needs rust to be installed or upgrade pip so
cryptography wheel binaries can be installed.

To setup rust ensure-rust role is executed in
pre run.

Also replace integrated-gate and integrated-gate-py3
templates with the required jobs in check and
gate queue as those templates have grenade jobs
in gate queue which are already marked as non-voting[1].

[1] https://review.opendev.org/c/openstack/devstack/+/838722

Partial-Bug: #2004490
Change-Id: I2ec1c34ec11f50fef06f71b4a01976aa1d92a6bb
2023-02-08 15:53:13 +05:30
June Yi faf11dbdc0 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:46:01 +00:00
yatinkarel 8362497252 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-25 05:37:36 +00:00
Zuul caf29aaf39 Merge "Make neutron-grenade non-voting on stable/train" into stable/train 2022-04-27 10:28:26 +00:00
Brian Rosmaita b7f94eafd0 Make neutron-grenade non-voting on stable/train
The stable/ussuri, stable/train, and stable/stein branches are
in Extended Maintenance mode and no longer released from, so make
neutron-grenade non-voting in check and remove it from the
gate.

All other grenade jobs are already non-voting in stable/train and
were removed from the gate four years ago by change I82f539bfa533.

Change-Id: I21975b270786687149b232866b2009c145ad9915
Related-bug: #1968798
2022-04-20 09:41:45 -04:00
Ian Wienand 16c57c51a0 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)
(cherry picked from commit a9852abfc5)
2022-04-19 13:02:50 -04:00
Rodolfo Alonso Hernandez 05a2cebeb4 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.

NOTE: stable/train had its own method to provide support for py3x.
This patch uses it instead of pushing the master patch approach.

This patch is also fixing the py35 pip URL string that should be
https://bootstrap.pypa.io/pip/3.5/get-pip.py.

Conflicts:
  tools/install_pip.sh

Closes-Bug: #1959600
Change-Id: Iab2c391d5388461fe9e9037cee81884ce8032e72
2022-02-02 09:36:24 +00:00
Ghanshyam Mann 8a22f7380c Pin Tempest to 26.1.0 tag for stable/train testing
Stable train is in Extended maintenance state[1] and
we need to cap stable/train with older Tempest.

But because of oslo.utils version bump in Tempest 27.0.0
and 28.0.0 which is not compatible with stable/train
upper constraints so these versions do not work in stable/train

- https://zuul.opendev.org/t/openstack/build/1146c9ce9f474d0d82b99b48b61c531e

Let's use the Tempest 26.1.0 which is also compatible with stable/train
testing.

Related-Bug: #1955418
Change-Id: I376be5f5a4d693aeaaf74ca5285269f796103c15
2022-01-18 21:29:03 -06:00
Ghanshyam 817bb7d50b Revert "Pin Tempest to train-last(28.0.0) tag for stable/train testing"
This reverts commit 410d11ebc6.

Reason for revert: it caused the bug for tempest plugin, let's figure out that first and then cap the appropriate tempest version-  https://bugs.launchpad.net/tempest/+bug/1955418

Change-Id: Ie4305e7b6030d9edaa97a207a588b734cf7707dc
2021-12-22 17:26:50 +00:00
Ghanshyam Mann 410d11ebc6 Pin Tempest to train-last(28.0.0) tag for stable/train testing
Stable train is in Extended maintenance state[1] and
As per Tempest stable branmch testing policy, it stopped
the support for stable/train in master version. Tempest
train-last (28.0.0) tag is last supported tag for stable/train.

Use that tag to test stable/train branch before any incompatible
change merge in Tempest master.

[1] https://releases.openstack.org/

Change-Id: I45d685725ec3204a7c0467085f87214f02ecbe1c
2021-11-04 00:43:27 +00:00
Lee Yarwood c5f7cbfabe 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:56 +01:00
Zuul 8d29ca11f0 Merge "Fix is_fedora RHEL 8 detection" into stable/train 2021-07-19 09:22:39 +00:00
Radosław Piliszek 224fee25a3 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:54 +00:00
Ghanshyam Mann ae035e739c 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:33 +00:00
Lucas Alvares Gomes 4cf48714b6 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:19:32 +01:00
Ghanshyam Mann 16da65c302 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
Depends-On: https://review.opendev.org/c/openstack/grenade/+/785767

Change-Id: Ifee04f28ecee52e74803f1623aba5cfe5ee5ec90
(cherry picked from commit 580fec54c3)
(cherry picked from commit 800eb4dd44)
(cherry picked from commit 3b2feba2ef)
(cherry picked from commit 4f9c1e084c)
2021-04-12 09:05:38 +00:00
Zuul 32fa6a4e5a Merge "Add a variable to configure the Tempest venv upper constraints" into stable/train 2021-03-10 21:09:09 +00:00
Zuul a552057a2e Merge "zuul: clean up some legacy jobs" into stable/train 2021-03-09 02:20:40 +00:00
Dan Smith fc7f929597 Fix get-pip URL for py27
This has been failing to install with this message, which I think
means we need to change our URL for getting pip:

 The URL you are using to fetch this script has changed, and this one
 will no longer work. Please use get-pip.py from the following URL
 instead:
    https://bootstrap.pypa.io/pip/2.7/get-pip.py
 Sorry if this change causes any inconvenience for you!

Change-Id: Id62e91b1609db4b1d2fa425010bac1ce77e9fc51
2021-03-07 20:50:56 -08:00
Ghanshyam Mann 3c92daf734 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)
(cherry picked from commit 74a136ac98)
2021-02-20 14:12:46 -06:00
Ghanshyam Mann 812efb3ca7 Fix get-pip for python 3.5
get-pip.py is fixed for py2.7 in
https://review.opendev.org/c/openstack/devstack/+/772462

This commit support it for py3.5 as devstack stable/train and stein
still support ubuntu xenial which has py3.5

Also using Temepst 23.0.0 for xenial platform job which is
compatible version on py3.5.

Closes-Bug: #1913283
Change-Id: Icd40e41b5f3ef9a621ca1b9739875fcdd31abd74
2021-01-27 01:55:41 +00:00
Akihiro Motoki 469b26f742 Use a dedicated version of get-pip.py for python 2.7
get-pip.py dropped python 2.7 support, so we cannot use the default
get-pip.py for python 2.7 now. get-pip.py for python 2.7 is available
at https://bootstrap.pypa.io/2.7/get-pip.py.
This commit tries to use python 2.7 version of get-pip.py
for python 2.7 environment.

Depends-On: https://review.opendev.org/772486
Change-Id: I88ba370de8887a05c473fe7c19a61a319e8812d2
(cherry picked from commit 1382e933c5)
2021-01-26 11:02:34 +01:00
Zuul c2a1660295 Merge "Setting available_features for stable branch" into stable/train 2021-01-19 00:08:52 +00:00
elajkat 2f573b79be 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 and Train.

Change-Id: Ic6056218e51e6b0da554bcdf139214d2229ba3c1
Related-Bug: #1882804
(cherry picked from commit e34a8720bf)
(cherry picked from commit ef784e195f)
2021-01-13 12:31:15 +00:00
Martin Kopec d82889d477 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:39:00 +00:00
Zuul 337d626830 Merge "Install swift keystone extras requirements" into stable/train 2021-01-07 13:25:15 +00:00
Zuul d73948e2bf Merge "Increase swap space size again" into stable/train 2021-01-07 11:35:30 +00:00
Ghanshyam Mann a7c4377c17 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)
(cherry picked from commit 10fdf258ba)
2020-12-23 14:06:52 -06:00
Carlos Goncalves b708f6ea0a 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-12-23 05:13:31 +00:00
Lee Yarwood ecf59118d7 Stop installing test-requirements with projects
This is a test of installing openstack and then seeing if it works.
OpenStack components do not need test-requirements to operate,
that's why they are test-requirements.

Additionally, as we look forward to depsolver pip, this is going
to screw us because we don't apply constraints to linters, which
are expressed in - you guessed it, test-requirements.

NOTE(lyarwood): openstacksdk-functional is currently failing due to
I1e151454f39d51db52cdc7a23dbdcbf9b28c9381 not being present in
stable/train. Unfortunatley the backport of this fix is held up by
multiple other failures in other projects caused by the new pip
dependency resolver behaviour. To fix these we first need to land
I8f24b839bf42e2fb9803dc7df3a30ae20cf264eb in devstack on stable/train,
allowing fixes to land in these projects that should eventually fix
openstacksdk.

To allow this we need to temporarily mark the openstacksdk-functional
job as non-voting.

Change-Id: I8f24b839bf42e2fb9803dc7df3a30ae20cf264eb
(cherry picked from commit 09b5b05c47)
2020-12-21 19:26:14 +00:00
Jens Harbott fc02fb4415 Increase swap space size again
Infra changed the default swap size from 8G to 1G, this breaks some
stable jobs. Revert to 8G for our jobs.

Change-Id: I4fb2372be7d861f09f365e96478b4663847a66a6
2020-11-03 16:41:48 +01:00
Luigi Toscano 4bff24a204 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)
(cherry picked from commit c69caa4a8f)
2020-10-08 10:57:15 +02:00
Ian Wienand 1b35581bb0 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)
(cherry picked from commit 87d1da30a8)
2020-08-31 16:09:16 +02:00
Zuul d3198f34e1 Merge "Move process-stackviz role from Tempest to Devstack" into stable/train 2020-08-18 16:25:58 +00:00
Zuul 18ecda418d Merge "Drop fedora29 nodeset and platform job" into stable/train 2020-06-22 14:25:29 +00:00
Ghanshyam Mann d377574486 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:33:10 +00:00
Zuul cbae2d170b Merge "Handle uwsgi install for openSUSE" into stable/train 2020-06-19 16:12:15 +00:00
Andreas Jaeger 07a1731404 Handle uwsgi install for openSUSE
Add packages for openSUSE distribution for installation of uwsgi.

For train add in addition:
Add /usr/local/bin to PATH, this is not set on openSUSE and needed
to fix the setup after the pip/virtualenv changes.

Co-Authored-By: Jens Harbott <j.harbott@x-ion.de>
Change-Id: I2ce8959460a79b6472bd9dd59edd7d94eccbacf5
(cherry-picked from commit 10c3ffd265)
2020-06-19 11:22:57 +02:00
Jens Harbott 9764fadc02 Drop fedora29 nodeset and platform job
Fedora 29 is EOL and we no longer have nodes available for it.

Change-Id: If19b7b9858fef7422b2046cbc6c0fcd97832ebcd
2020-06-17 08:48:14 +02:00
Clark Boylan bce3f12aa4 Make xenial jobs voting again
Xenial jobs were failing because running virtualenv with system pip was
failing. [0] installs a working pip on xenial that can accomodate mirrors.

[0] https://review.opendev.org/736067

Change-Id: I6c75b1ccc33122f4f82427d743e1368be9bd2069
2020-06-17 08:46:01 +02:00
Ian Wienand 20e04092c8 Fix gate issues
This is a combination of 3 commits.
This is the 1st commit message:

Work around uwsgi breakage

uwsgi broke installation from source with their latest release [0].
Since we want to move away from source installation anyway, make
grenade based jobs non-voting for the moment so that we can backport
[1] properly.

[0] https://bugs.launchpad.net/bugs/1883468
[1] https://review.opendev.org/577955

This is the commit message #2:

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 #3:

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.

While all this was happening, Zuul updated to Ansible 2.9 as well, so
we require a fix for Ansible syntax in 736006 as well.

Depends-On: https://review.opendev.org/735535
Depends-On: https://review.opendev.org/736006
Related-Bug: 1883468

Change-Id: I82f539bfa533349293dd5a8ce309c9cc0ffb0393
(cherry picked from commit 84737ebd96)
(cherry picked from commit 2d903568ed)
(cherry picked from commit 312517d510)
2020-06-17 00:12:42 +00:00
Zuul b6f43a461c Merge "New TEMPEST_VOLUME_REVERT_TO_SNAPSHOT setting" into stable/train 2020-05-27 06:43:27 +00:00
Lee Yarwood 2e73509fbf 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)
(cherry picked from commit 9707dba338)
2020-05-23 15:54:54 +02:00
Luigi Toscano a6919e5065 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-19 20:16:18 +00:00
Ian Wienand 23cfb9e6eb Add ensure-virtualenv role
On this branch some tests are still running under Python 2 and thus
rely on virtualenv (instead of us standardising on "python3 -m venv"
on the master branch where we are all Python 3).  Use the zuul-role to
ensure the system package that provides "/usr/bin/virtualenv" is
installed.

Change-Id: I2b092bd70a9dbc6ef3a673ba45ca6925f9220bce
2020-05-12 12:05:45 +10:00
Ian Wienand ebf7705a98 Create virtualenv with abstracted VIRTUALENV_CMD
Just calling "virtualenv" makes a Python 2 based environment;
setuptools just dropped Python 2 support (as Python 2 reached EOL in
Jan 2020) so this has now become a breakage.

Although the Python 2 path won't work, use the abstracted command.
This should stop us having to revisit this for any future cleanups (or
switing to venv, etc).

Change-Id: I531e971b78491a9276753c0d86b04c4adbd224aa
(cherry picked from commit 4143ce6fc9)
2020-05-09 13:45:56 +00:00
Zuul d243c8c4e8 Merge "Fix opensuse trusted certificates" into stable/train 2020-04-14 18:41:52 +00:00
Zuul 19e8afef7d Merge "Fix Tempest installtion on system wide for stable branch" into stable/train 2020-04-08 14:09:07 +00:00
Ghanshyam Mann 5e0c142e80 Fix Tempest installtion on system wide for stable branch
INSTALL_TEMPEST flag enable to install Tempest by default on
devstack env which is meant for using on master gate only and has
to be false for stable branch. On stable branch master Tempest
on system wide can fail to install for various reason like constraint
etc. That is why we install Tempest on venv always.

This started failing tempest-full on stein gate[1] where
devstack try to install Tempest on system wide also which try to
use py2 env because jobs is py2 and fail.
- https://zuul.opendev.org/t/openstack/build/f05569c475f44327bff7b7ec58faef8c/log/controller/logs/devstacklog.txt#30654

We need to set INSTALL_TEMPEST flag to false on all stable branch to
avoid such issue which we did not do since pike.
(I will make note of this in Devstack branch cut TODO list)
- https://github.com/openstack/devstack/blob/6067e41a5cc44164e34faab2fd9741dbb788f42f/lib/tempest#L60

[1] https://zuul.opendev.org/t/openstack/build/f05569c475f44327bff7b7ec58faef8c

Change-Id: I60949fb735c82959fb2cfcb6aeef9e33fb0445b6
Closes-Bug: #1871327
2020-04-07 09:32:06 -05:00
Colleen Murphy 7921e4673f Fix opensuse trusted certificates
There's a bug[1] with the combination of the p11-kit and
ca-certificates-mozilla packages available on the latest built
opensuse-15 node in nodepool (which has not been rebuilt for weeks due
to a separate issue[2]) which causes the standard CA bundle to not be
installed correctly and causes jobs that call to external HTTPS services
to fail. Upgrading both packages in sync fixes the issue.

[1] https://bugzilla.suse.com/show_bug.cgi?id=1154871
[2] http://bugzilla.suse.com/show_bug.cgi?id=1166139

Change-Id: Ia8fdfe12fd9089e178adcb2b5eec997eebada262
Needed-by: https://review.opendev.org/713566
(cherry picked from commit 497caf0157)
2020-04-06 14:23:17 +00:00
Zuul e6842e4140 Merge "remove duplicate entries under title guides in table of contents" into stable/train 2020-04-06 08:41:27 +00:00
ushen eb64fe1625 Bring back load balance v2 guide
Previous commit forgets to add an entry for load
balancer version 2. This ps brings them back.

Change-Id: Idac09e8259d58ed130b79b40528f733708000da7
(cherry picked from commit 90f0baf3cb)
2020-03-18 23:48:43 +00:00
shenjiatong 90b9964384 remove duplicate entries under title guides in table of contents
right now, there are duplicate titles under contents --> guides
as shown in https://docs.openstack.org/devstack/latest/, although
they will forward to different pages, it is still a little confusing
for users. This change will hide toctree in guides.rst and users could
click links in page to jump to detail page to read more.

Change-Id: I2f3abeca7f56a3aedeabb48630ed2c61635b93cd
(cherry picked from commit 1639594938)
2020-03-16 01:50:56 +00:00
Soniya Vyas ef44118eb8 Removal of deprecated command and deprecated optional argument
lib/tempest uses 'tempest-account-generator'
which is deprecated 4 years back.
In addition to above, lib/tempest also uses
'os-tenant-name' which is also deprecated.

Use of 'tempest account-generator' and
'os-project-name' should be done now.

Signed-off by: Soniya Vyas<svyas@redhat.com>
Change-Id: I624e1dc57a3d3533322fb298c01f70241d0400ed
(cherry picked from commit 7634c78002)
2020-03-04 07:47:02 +00:00
Ghanshyam d5906687a3 Support TEMPEST_BRANCH with tag name
TEMPEST_BRANCH which is mostly set as master so
that Tempest master is run to test the env. With
stable branch going to EM state and Tempest master
might not work due to incompatibility of code or
requirements. In that case we pin the Tempest so that
older Tempest can be used for their testing.

Till now for ocata, pike and, queens we used the gerrit style
ref to pin the Tempest which is not preferred way. We should be
able to use the tag name on TEMPEST_BRANCH.

This commit explicitly checkout the tag set in TEMPEST_BRANCH
as git_clone does not checkout the tag directly until RECLONE
is true or tempest dir does not exist.

After this stable branch or job can set the tag directly with name.
For exmaple: TEMPEST_BRANCH=23.0.0.

Change-Id: Ic777e4b56c4932dde135ac909cb5c6f4a7d5cc78
2020-01-30 18:59:05 +00:00
Zuul 7e2aaf5cb6 Merge "Revert "install LIBS_FROM_GIT using python 2 and 3 where appropriate"" into stable/train 2020-01-30 06:13:12 +00:00
Peter Penchev 1ed5bde039 Revert "install LIBS_FROM_GIT using python 2 and 3 where appropriate"
All the OpenStack projects should be able to run under Python 3 now so
the fallback installation of the Python 2 libraries should not be
needed any longer. This also avoids the problem of script files
installed by the libraries sometimes being overwritten by the Python 2
version leading to incorrect execution later, as discussed in
http://lists.openstack.org/pipermail/openstack-discuss/2019-September/009226.html

This reverts commit a2eb89417f.

Change-Id: I1cdb7e4a209872f1620be556b7278879a4b86df5
(cherry picked from commit 16bccbcea4)
2020-01-28 13:08:23 +01:00
Zuul 29250e057c Merge "Cap stable/train network, swift, volume api_extensions for tempest" into stable/train 2020-01-24 03:55:44 +00:00
Sean Mooney dd367e26cc do not gzip legacy service logs
This change removes the .gz extension from the
service and syslog logs exported via journalctl.
This change nolonger gzip compresses the exported
logs so that they can be rendered in the browser
directly when served from swift.

Change-Id: I4557a737cb13b9c2406056be08ab8a32ddd45162
(cherry picked from commit d02fa6f856)
2020-01-20 04:04:03 +00:00
Slawek Kaplonski 527aeb9bec Include dnsmasq-utils package on all Ubuntu versions
This package provides dhcp_release tool but in files/debs/neutron-common
it was listed to be installed only on Ubuntu Precise.
The same file is also in Nova's packages but there is no restriction to
Ubuntu Precise only there.
So on all Neutron jobs it was fine but on Ironic's job where Nova
wasn't enabled, this package was not installed and caused problems
in Neutron DHCP agent.

Change-Id: Idd0711cfe6d43f21754a2f0c230cd094ea33cb27
Closes-Bug: #1855910
(cherry picked from commit f7a7076fac)
2019-12-11 13:21:06 +00:00
Zuul 0325dc9e68 Merge "Hardcode fedora nodeset to F29" into stable/train 2019-11-05 21:23:35 +00:00
melanie witt 540d581df7 Remove n-novnc service requirement for TLS configuration
When configuring TLS between the console proxy (where the n-novnc
service runs) and the compute host, some configuration for QEMU needs
to be done on the compute host. The existing code for this requires the
n-novnc service to be running, which it is in a single node all-in-one
deployment. However, when running in a multinode deployment, the
n-novnc service runs only on the controller and not on the subnode.
Yet, we need to configure QEMU on the subnode compute host as well.

This removes the n-novnc service requirement to enable TLS QEMU
configuration to occur on a compute subnode in a multinode deployment.

Closes-Bug: #1849418

Change-Id: I8b6970e91ad7f52ff489cb9f776ca216d8f86aa4
(cherry picked from commit 1d378dcf6d)
2019-10-25 13:52:18 +00:00
Jens Harbott 5bdb94bfa0 Hardcode fedora nodeset to F29
In master we want to update fedora-latest to F30, the definition in this
branch is blocking this. We have two options:

- Remove the nodeset and follow master
- Rename the nodeset and keep it pinned for this branch

For previous stable branches we have chosen the first option, but I
think we should go for the second option now favoring stability. We can
always drop the nodeset lateron if it becomes broken.

Change-Id: I85ab8afa9a251a160d09b960a214ac579d3305df
2019-10-11 10:39:45 +00:00
Zuul 1bb56345a6 Merge "Cap max microversions for stable/train" into stable/train 2019-10-09 16:35:21 +00:00
Ghanshyam Mann dd42ee52d7 Cap stable/train 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: I1595730e9bcf07f8bc4eac96ff17a837fa68e0b7
2019-10-07 22:23:22 +00:00
Ghanshyam Mann 2f1e501325 Cap max microversions for stable/train
This commit cap the max microversions for compute
and volume API for stable/train.

Compute- https://opendev.org/openstack/nova/src/commit/6b177d42c7a0918018645033b6325b710f8fb925/nova/api/openstack/compute/rest_api_version_history.rst#279-maximum-in-train
Volume- https://opendev.org/openstack/cinder/src/commit/ad5342445060bc63cb46531c21f27202bea78905/cinder/api/openstack/rest_api_version_history.rst#359-maximum-in-stein-and-train
Placement - https://opendev.org/openstack/placement/src/commit/dbd03867118ee059b39be7677b8881b0f1a0b9c8/placement/rest_api_version_history.rst#136---support-same_subtree-queryparam-on-get-allocation_candidates

Change-Id: I5fe683256301bf1a00bc15733f8c7093853123f2
2019-10-07 18:23:15 +00:00
Thierry Carrez cfd8d1d265 Update branches for stable/train
Change-Id: I17aadc17a0ccc1beb32579bdd79d9d6c71dde908
2019-10-07 16:51:54 +02:00
OpenStack Release Bot 5102106c4d Update .gitreview for stable/train
Change-Id: I06cc37e97b83fb9b84834af3a5b7f22940af1f54
2019-10-07 09:04:41 +00:00
35 changed files with 504 additions and 153 deletions
+1
View File
@@ -2,3 +2,4 @@
host=review.opendev.org
port=29418
project=openstack/devstack.git
defaultbranch=stable/train
+35 -37
View File
@@ -48,16 +48,6 @@
nodes:
- controller
- nodeset:
name: devstack-single-node-fedora-latest
nodes:
- name: controller
label: fedora-29
groups:
- name: tempest
nodes:
- controller
- nodeset:
name: openstack-two-node
nodes:
@@ -203,6 +193,7 @@
- zuul: opendev.org/openstack/devstack-gate
- zuul: opendev.org/openstack/openstack-zuul-jobs
vars:
configure_swap_size: 8192
devstack_localrc:
DATABASE_PASSWORD: secretdatabase
RABBIT_PASSWORD: secretrabbit
@@ -534,18 +525,15 @@
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-xenial
parent: tempest-full-py3
description: Ubuntu Xenial platform test
nodeset: openstack-single-node-xenial
vars:
devstack_localrc:
# use py3.5 compatible Tempest here.
TEMPEST_BRANCH: "23.0.0"
voting: false
- job:
@@ -604,6 +592,7 @@
- job:
name: devstack-unit-tests
nodeset: ubuntu-bionic
description: |
Runs unit tests on devstack project.
@@ -613,8 +602,6 @@
- project:
templates:
- integrated-gate
- integrated-gate-py3
- publish-openstack-docs-pti
check:
jobs:
@@ -623,12 +610,13 @@
- devstack-ipv6
- devstack-platform-centos-7
- devstack-platform-opensuse-15
- devstack-platform-fedora-latest
- devstack-platform-xenial
- devstack-multinode
- devstack-multinode-xenial
- devstack-unit-tests
- openstack-tox-bashate
- tempest-full
- tempest-full-py3
- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa:
voting: false
- swift-dsvm-functional:
@@ -637,10 +625,17 @@
- ^.*\.rst$
- ^doc/.*$
- neutron-grenade:
voting: false
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- grenade:
voting: false
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- neutron-grenade-multinode:
voting: false
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
@@ -657,6 +652,7 @@
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
voting: false
- tempest-ipv6-only:
irrelevant-files:
- ^.*\.rst$
@@ -670,22 +666,28 @@
- devstack-multinode-xenial
- devstack-unit-tests
- openstack-tox-bashate
- neutron-grenade-multinode:
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- tempest-full
- tempest-full-py3
# - neutron-grenade-multinode:
# irrelevant-files:
# - ^.*\.rst$
# - ^doc/.*$
- neutron-tempest-linuxbridge:
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- neutron-grenade:
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- openstacksdk-functional-devstack:
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
# - neutron-grenade:
# irrelevant-files:
# - ^.*\.rst$
# - ^doc/.*$
# - grenade:
# irrelevant-files:
# - ^.*\.rst$
# - ^doc/.*$
# - openstacksdk-functional-devstack:
# irrelevant-files:
# - ^.*\.rst$
# - ^doc/.*$
- tempest-ipv6-only:
irrelevant-files:
- ^.*\.rst$
@@ -727,15 +729,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/.*$
+6
View File
@@ -10,6 +10,7 @@ Walk through various setups used by stackers
.. toctree::
:glob:
:hidden:
:maxdepth: 1
guides/single-vm
@@ -68,6 +69,11 @@ Nova and devstack
Guide to working with nova features :doc:`Nova and devstack <guides/nova>`.
Configure Load-Balancer Version 2
-----------------------------------
Guide on :doc:`Configure Load-Balancer Version 2 <guides/devstack-with-lbaas-v2>`.
Deploying DevStack with LDAP
----------------------------
+1 -1
View File
@@ -1,6 +1,6 @@
acl
dnsmasq-base
dnsmasq-utils # for dhcp_release only available in dist:precise
dnsmasq-utils # for dhcp_release
ebtables
haproxy # to serve as metadata proxy inside router/dhcp namespaces
iptables
+13
View File
@@ -451,6 +451,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" ]
}
@@ -589,6 +590,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
+8 -19
View File
@@ -247,7 +247,13 @@ function pip_install {
# and we will let pip sort out the install, regardless of
# the package being local or remote.
echo "Using $PYTHON3_VERSION version to install $package_dir based on default behavior"
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)
fi
fi
@@ -270,13 +276,6 @@ function pip_install {
$xtrace
# Also install test requirements
local install_test_reqs=""
local test_req="${package_dir}/test-requirements.txt"
if [[ -e "$test_req" ]]; then
install_test_reqs="-r $test_req"
fi
# adding SETUPTOOLS_SYS_PATH_TECHNIQUE is a workaround to keep
# the same behaviour of setuptools before version 25.0.0.
# related issue: https://github.com/pypa/pip/issues/3874
@@ -286,7 +285,7 @@ function pip_install {
no_proxy="${no_proxy:-}" \
PIP_FIND_LINKS=$PIP_FIND_LINKS \
SETUPTOOLS_SYS_PATH_TECHNIQUE=rewrite \
$cmd_pip $upgrade $install_test_reqs \
$cmd_pip $upgrade \
$@
result=$?
@@ -380,16 +379,6 @@ function setup_dev_lib {
fi
local name=$1
local dir=${GITDIR[$name]}
if python3_enabled; then
# Turn off Python 3 mode and install the package again,
# forcing a Python 2 installation. This ensures that all libs
# being used for development are installed under both versions
# of Python.
echo "Installing $name again without Python 3 enabled"
USE_PYTHON3=False
setup_develop $bindep $dir
USE_PYTHON3=True
fi
setup_develop $bindep $dir
}
+50 -20
View File
@@ -82,26 +82,56 @@ 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 [[ $os_VENDOR == "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
# Centos actually has the module in epel, but there was a big
# push to disable epel by default. As such, compile from source
# there.
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
@@ -265,7 +295,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 +348,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
@@ -325,7 +325,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
+1 -1
View File
@@ -29,7 +29,7 @@ GITDIR["pbr"]=$DEST/pbr
# install_infra() - Collect source and prepare
function install_infra {
local PIP_VIRTUAL_ENV="$REQUIREMENTS_DIR/.venv"
[ ! -d $PIP_VIRTUAL_ENV ] && virtualenv $PIP_VIRTUAL_ENV
[ ! -d $PIP_VIRTUAL_ENV ] && ${VIRTUALENV_CMD} $PIP_VIRTUAL_ENV
# We don't care about testing git pbr in the requirements venv.
PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install -U pbr
PIP_VIRTUAL_ENV=$PIP_VIRTUAL_ENV pip_install $REQUIREMENTS_DIR
+1 -1
View File
@@ -523,7 +523,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..."
+1 -1
View File
@@ -466,7 +466,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
@@ -483,7 +483,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"
@@ -848,6 +848,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
}
+5 -2
View File
@@ -306,6 +306,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.
@@ -850,7 +853,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
@@ -941,7 +944,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
+12 -14
View File
@@ -150,21 +150,19 @@ EOF
fi
if is_nova_console_proxy_compute_tls_enabled ; then
if is_service_enabled n-novnc ; then
echo "vnc_tls = 1" | sudo tee -a $QEMU_CONF
echo "vnc_tls_x509_verify = 1" | sudo tee -a $QEMU_CONF
echo "vnc_tls = 1" | sudo tee -a $QEMU_CONF
echo "vnc_tls_x509_verify = 1" | sudo tee -a $QEMU_CONF
sudo mkdir -p /etc/pki/libvirt-vnc
deploy_int_CA /etc/pki/libvirt-vnc/ca-cert.pem
deploy_int_cert /etc/pki/libvirt-vnc/server-cert.pem /etc/pki/libvirt-vnc/server-key.pem
# OpenSSL 1.1.0 generates the key file with permissions: 600, by
# default and the deploy_int* methods use 'sudo cp' to copy the
# files, making them owned by root:root.
# Change ownership of everything under /etc/pki/libvirt-vnc to
# libvirt-qemu:libvirt-qemu so that libvirt-qemu can read the key
# file.
sudo chown -R libvirt-qemu:libvirt-qemu /etc/pki/libvirt-vnc
fi
sudo mkdir -p /etc/pki/libvirt-vnc
deploy_int_CA /etc/pki/libvirt-vnc/ca-cert.pem
deploy_int_cert /etc/pki/libvirt-vnc/server-cert.pem /etc/pki/libvirt-vnc/server-key.pem
# OpenSSL 1.1.0 generates the key file with permissions: 600, by
# default and the deploy_int* methods use 'sudo cp' to copy the
# files, making them owned by root:root.
# Change ownership of everything under /etc/pki/libvirt-vnc to
# libvirt-qemu:libvirt-qemu so that libvirt-qemu can read the key
# file.
sudo chown -R libvirt-qemu:libvirt-qemu /etc/pki/libvirt-vnc
fi
# Service needs to be started on redhat/fedora -- do a restart for
+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
+92 -22
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 | python -c "import math; import six; print(int(math.ceil(float(int(six.moves.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 m1.nano
openstack flavor create --id 42 --ram 128 --disk $disk --vcpus 1 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 m1.micro
openstack flavor create --id 84 --ram 192 --disk $disk --vcpus 1 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.79"}
# 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
@@ -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.59"}
# 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
@@ -602,21 +621,23 @@ 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.
(cd $REQUIREMENTS_DIR && git show origin/master:upper-constraints.txt) > u-c-m.txt
tox -evenv-tempest -- pip install -c u-c-m.txt -r requirements.txt
tox -evenv-tempest -- pip install -c $tmp_u_c_m -r requirements.txt
rm -f $tmp_u_c_m
# Auth:
iniset $TEMPEST_CONFIG auth tempest_roles "member"
if [[ $TEMPEST_USE_TEST_ACCOUNTS == "True" ]]; then
if [[ $TEMPEST_HAS_ADMIN == "True" ]]; then
tox -evenv-tempest -- tempest-account-generator -c $TEMPEST_CONFIG --os-username $admin_username --os-password "$password" --os-tenant-name $admin_project_name -r $TEMPEST_CONCURRENCY --with-admin etc/accounts.yaml
tox -evenv-tempest -- tempest account-generator -c $TEMPEST_CONFIG --os-username $admin_username --os-password "$password" --os-project-name $admin_project_name -r $TEMPEST_CONCURRENCY --with-admin etc/accounts.yaml
else
tox -evenv-tempest -- tempest-account-generator -c $TEMPEST_CONFIG --os-username $admin_username --os-password "$password" --os-tenant-name $admin_project_name -r $TEMPEST_CONCURRENCY etc/accounts.yaml
tox -evenv-tempest -- tempest account-generator -c $TEMPEST_CONFIG --os-username $admin_username --os-password "$password" --os-project-name $admin_project_name -r $TEMPEST_CONCURRENCY etc/accounts.yaml
fi
iniset $TEMPEST_CONFIG auth use_dynamic_credentials False
iniset $TEMPEST_CONFIG auth test_accounts_file "etc/accounts.yaml"
@@ -643,8 +664,20 @@ function configure_tempest {
if ! is_service_enabled q-l3; then
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"
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 " ")}
@@ -656,7 +689,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 " ")}
@@ -664,8 +700,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 " ")}
@@ -683,12 +741,22 @@ function install_tempest {
git_clone $TEMPEST_REPO $TEMPEST_DIR $TEMPEST_BRANCH
pip_install 'tox!=2.8.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
}
@@ -696,9 +764,11 @@ 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.
(cd $REQUIREMENTS_DIR && git show origin/master:upper-constraints.txt) > u-c-m.txt
tox -evenv-tempest -- pip install -c u-c-m.txt $TEMPEST_PLUGINS
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 -evenv-tempest -- pip install -c $tmp_u_c_m $TEMPEST_PLUGINS
rm -f $tmp_u_c_m
echo "Checking installed Tempest plugins:"
tox -evenv-tempest -- tempest list-plugins
fi
+2
View File
@@ -19,6 +19,8 @@
set_fact:
external_bridge_mtu: "{{ local_mtu | int - 50 }}"
roles:
- ensure-rust
- ensure-virtualenv
- test-matrix
- configure-swap
- setup-stack-user
@@ -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"
@@ -14,7 +14,7 @@
name=""
for u in $(systemctl list-unit-files | grep devstack | awk '{print $1}'); do
name=$(echo $u | sed 's/devstack@/screen-/' | sed 's/\.service//')
journalctl -o short-precise --unit $u | gzip - > {{ stage_dir }}/logs/$name.txt.gz
journalctl -o short-precise --unit $u > {{ stage_dir }}/logs/$name.txt
done
- name: Export legacy syslog.txt
@@ -29,7 +29,7 @@
-t sudo \
--no-pager \
--since="$(cat {{ devstack_base_dir }}/log-start-timestamp.txt)" \
| gzip - > {{ stage_dir }}/logs/syslog.txt.gz
> {{ stage_dir }}/logs/syslog.txt
# TODO: convert this to ansible
# - make a list of the above units
+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
+3
View File
@@ -69,6 +69,9 @@ umask 022
# Not all distros have sbin in PATH for regular users.
PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin
# Add for openSUSE
PATH=$PATH:/usr/local/bin
# Keep track of the DevStack directory
TOP_DIR=$(cd $(dirname "$0") && pwd)
+5 -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/train
# Cycle trailing projects need to branch later than the others.
TRAILING_TARGET_BRANCH=master
@@ -314,7 +314,10 @@ 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}
# NOTE (gmann): using 26.1.0 as that is compatible with stable/train
# constraints. We are not using 28.0.0 or 27.0.0 due to bug#1955418
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:"
+5
View File
@@ -257,6 +257,11 @@ function fixup_suse {
# have been dragged in by some other system dependency
sudo rm -rf /usr/lib/python3.6/site-packages/ply-*.egg-info
sudo rm -rf /usr/lib/python3.6/site-packages/six-*.egg-info
# Ensure trusted CA certificates are up to date
# See https://bugzilla.suse.com/show_bug.cgi?id=1154871
# May be removed once a new opensuse-15 image is available in nodepool
sudo zypper up -y p11-kit ca-certificates-mozilla
}
# The version of pip(1.5.4) supported by python-virtualenv(1.11.4) has
+30 -12
View File
@@ -38,7 +38,9 @@ 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"}
PIP_GET_PIP_PY27_URL=${PIP_GET_PIP_PY27_URL:-"https://bootstrap.pypa.io/pip/2.7/get-pip.py"}
LOCAL_PIP="$FILES/$(basename $PIP_GET_PIP_URL)"
LOCAL_PIP_PY27="${LOCAL_PIP}-py27"
GetDistro
echo "Distro: $DISTRO"
@@ -56,13 +58,17 @@ function get_versions {
}
function install_get_pip {
function _install_get_pip {
local interpreter=$1
local pip_get_pip_url=$2
local local_pip=$3
# 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 +82,34 @@ 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_get_pip_url || \
die $LINENO "Download of get-pip.py failed"
touch $LOCAL_PIP.downloaded
touch $local_pip.downloaded
fi
sudo -H -E python $LOCAL_PIP -c $TOOLS_DIR/cap-pip.txt
sudo -H -E $interpreter $local_pip -c $TOOLS_DIR/cap-pip.txt
}
function install_get_pip {
_install_get_pip python $PIP_GET_PIP_PY27_URL $LOCAL_PIP_PY27
if python3_enabled; then
sudo -H -E python${PYTHON3_VERSION} $LOCAL_PIP -c $TOOLS_DIR/cap-pip.txt
if [[ "$PYTHON3_VERSION" == "3.5" ]]; then
PIP_GET_PIP_URL=$(dirname $PIP_GET_PIP_URL)/pip/3.5/$(basename $PIP_GET_PIP_URL)
LOCAL_PIP=${LOCAL_PIP}-py35
elif [[ "$PYTHON3_VERSION" == "3.6" ]]; then
PIP_GET_PIP_URL=$(dirname $PIP_GET_PIP_URL)/pip/3.6/$(basename $PIP_GET_PIP_URL)
LOCAL_PIP=${LOCAL_PIP}-py36
fi
_install_get_pip python${PYTHON3_VERSION} $PIP_GET_PIP_URL $LOCAL_PIP
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
+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/train}
-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