| Age | Commit message (Collapse) | Author | Files | Lines |
|
Since I650fcbc8f773fad8116338f6fb0cf7b4f4f17b33 builds from git fails
on plugins with an exception: 'tarfile.ReadError: not a gzip file'
because the test checks only gzip compressed archives but plugins
created as plain tar files. This change fixes the issue using
transparent compression support and also adds some debug info.
Closes-Bug: #1990432
Change-Id: If0f9b4dd058a257d0653332d1b663e150c717304
Signed-off-by: Maksim Malchuk <maksim.malchuk@gmail.com>
Co-Authored-by: Michal Nasiadka <mnasiadka@gmail.com>
(cherry picked from commit 143765fb67221cc51f1dc56a41ac2b67dddc453f)
|
|
In addition to that, mark bifrost unbuildable since it's
failing on EPEL 9 enablement.
Closes-Bug: #1990432
Change-Id: I650fcbc8f773fad8116338f6fb0cf7b4f4f17b33
(cherry picked from commit 3d008b7f5ec2a54d004e8e9370f303ef9dc7858b)
|
|
As part of kolla/image/ refactoring we move KollaWorker related classes
into own file.
Based on patch by Konstantin Yarovoy <konstantin.yarovoy@tietoevry.com>
Change-Id: I55c3f6b34631048b2463b02e6ea611d7e4c1a912
|
|
As part of kolla/image/ refactoring we move build related task classes
into own file.
Based on patch by Konstantin Yarovoy <konstantin.yarovoy@tietoevry.com>
Change-Id: I093620679016b37e1664c9fe4cf7559433e744b7
|
|
As part of kolla/image/ refactoring we move status enums/consts into
own file.
Based on patch by Konstantin Yarovoy <konstantin.yarovoy@tietoevry.com>
Change-Id: I940816c7e487f6d5c7abc4446226e2992cf9e63d
|
|
OpenStack 'zed' requires Python 3.8+ so RHEL 8 family has to go.
This changeset moves to CentOS Stream 9 while move to RockyLinux 9 is
planned as final solution.
CI moved to CentOS Stream 9 nodes.
Depends-on: https://review.opendev.org/c/openstack/kolla-ansible/+/839715
Change-Id: I113b9984294cf8663d3fc0c8840320e1d40ea731
|
|
With version 6.0.0 of the docker python module, their implementation of
versioning has changed, making our check for old versions fail. Since
version 3.0.0 is from 2018, we should be safe to assume that as a
minimum version though, so we can just get rid of the special handling
of older versions.
Change-Id: I077b7b5acf2c1f9beb6da06d3555e2ebe30831d1
|
|
mariadb - downloads.mariadb.com doesn't have jammy version, should
be there soon - using Ubuntu provided version for now
telegraf/collectd - collectd packages missing in Jammy - marked
as unbuildable
monasca - requires new librdkafka, no wheel for Python 3.10 for now
Depends-On: https://review.opendev.org/c/openstack/kolla-ansible/+/846070
Change-Id: I11b4fbcaba165824252902d0270ce1dbbc3d6e9d
|
|
The only place where it stays is argument parsing where it gets ignored.
Hardcoded to 'source' to make merging both kolla and kolla-ansible
changes easier.
Change-Id: I6890a7ec7baf507f8acd75b42bbd0fb17c2e4511
Depends-On: https://review.opendev.org/c/openstack/kolla-ansible/+/837620
|
|
We no longer support binary images. This patch removes a way to build
them.
"--install-type" argument has one available option now. Later in cycle
it will be ignored.
Change-Id: If0e881d253d6a4c89ffe27831a661df321b6d5b6
|
|
Sometimes it might be useful to disable a source for an image, e.g. for
a plugin that is not used. This may be to reduce image sizes, or
restrict the dependencies necessary to build images.
This change adds a new 'enabled' option to each source definition. This
allows sources, plugins or additions for each source image to be
disabled individually.
Change-Id: I31ee0744574fb3db96bee2e9f545600de53d9ee4
|
|
As a project we never built RHEL based images so support for them
was not tested.
Change-Id: I27dfe34ade088228d71f6857ec4f3ab28ee63915
|
|
Kolla-Ansible deploys Docker without bridge by default [1].
[1]: https://review.opendev.org/c/openstack/kolla-ansible/+/751795
Change-Id: I7430b72f5d8abe59a7151df73e6d59898d942636
|
|
This is a non-voting job to validate py3 unittests on AArch64
Also fixed test units to use source install type with Debian as Kolla
does not support Debian/binary on !x86-64
Co-authored-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
Task: 41911
Story: 2007938
Change-Id: I6889555820adcaee8a86e70b5c3ea31c15e3192c
|
|
Bullseye is now in hard freeze cycle and goes for release.
https://release.debian.org/bullseye/freeze_policy.html
Co-Authored-By: Michal Nasiadka <mnasiadka@gmail.com>
Change-Id: I543965a2741cebfa759576a4c75669a7bacd4208
|
|
Sometimes we have images failing. Not always we care about them. So let
allow them to fail and stop caring do they build or not.
Change-Id: I01cf3635814255f682d6bd161cf1d985d92a9a31
|
|
Commit 3fa5a236b4d8a31a57e14cbb482e664d5cc0111c converted status
consts into Enum. But not completely - this fix gets it done properly.
Also fixed tests.
Change-Id: Ifdacf62cd4b99c452bd09de7c6cde6fbee75560d
|
|
We had that NOTE for quite a while so let's get rid of it.
Change-Id: I5d2b29ca38eb1999657435b1eea80b2de1ebeffa
|
|
There is a time once every 2 years when ubuntu team releases new LTS
release. And then UCA joins with binary packages for current OpenStack
development cycle.
It is this time for Ubuntu 20.04 'focal'.
Depends-On: https://review.opendev.org/745156
Change-Id: I045aa6b4b4fd83fbe7d1fda89549f0ef1e88ec12
|
|
With the move to RHEL/CentOS 8 we no longer have Python 2 in our images
so there is no need for checking which Python version (2.x or 3.x) is
used inside of containers.
We also no longer have to support yum as a value for
distro_package_manager.
Partially-Implements: blueprint centos-rhel-8
Change-Id: Ie45cf3465fedddbde7856961527421883ba3d5c9
|
|
|
|
Now that py2 is gone, oslotest dropped dependency on mock and will
soon affect Ussuri CI [1], let's use unittest.mock built in py3.
This also fixes py38 jobs and proactively prevents py36 and py37
failing due to [1]. This is because we never included mock in
test-requirements (but in lower-constraints where it does not
really belong at all) and instead relied on oslotest to bring
it in.
[1] https://review.opendev.org/716322
Change-Id: Iceedcc7ad0d087414f6f94dfc0235fda4754be63
|
|
There are currently a few corner cases with the --skip-existing and
--skip-parents flags. Examples:
1. kolla-build --type source --skip-parents monasca-grafana
This does not try to build the monasca-grafana image. This appears to be
an issue when the image is a grandchild.
2. kolla-build --type source --skip-parents
This will build all images. Expect it to skip parents.
3. kolla-build --type source --skip-existing
This will build all images. Expect it to skip existing images.
The filter_images method does quite a lot, including handling
whether images are buildable, regex/profile matching, and which images
to skip. The matching and skipping parts are done in a single pass,
which can lead to some weird effects due to dependencies between the
images and their statuses. Also, skipping is only currently applied when
there is a regex/profile filter.
This change splits out the matching and skipping into two separate
passes. In the first pass, we mark all buildable images that match the
filter as matched. In the second, we iterate over matched images,
applying the skip existing and skip parents rules.
Change-Id: I2f895aea0cc59d808129e9fc636af0890196af33
Closes-Bug: #1867614
Related-Bug: #1810979
|
|
If there was some error during pushing then Kolla was greeting with "all went
fine" message anyway:
INFO:kolla.common.utils.aodh-api:Trying to push the image
ERROR:kolla.common.utils.aodh-api:Get http://10.101.16.1:5000/v2/: dial tcp 10.101.16.1:5000: connect: no route to host
INFO:kolla.common.utils.aodh-api:Pushed successfully
This patch changes that. Now if there is an error during push then proper
exception is raised to PushTask and image is marked with PUSH_ERROR status.
This way at the end of build it is easy to spot which images did not got
pushed to registry:
INFO:kolla.common.utils:===========================
INFO:kolla.common.utils:Images that failed to build
INFO:kolla.common.utils:===========================
ERROR:kolla.common.utils:base Failed with status: push_error
ERROR:kolla.common.utils:nova-api Failed with status: push_error
ERROR:kolla.common.utils:nova-base Failed with status: push_error
ERROR:kolla.common.utils:nova-compute Failed with status: push_error
ERROR:kolla.common.utils:nova-compute-ironic Failed with status: push_error
ERROR:kolla.common.utils:nova-conductor Failed with status: push_error
Closes-Bug: #1848019
Change-Id: Id2ab97bf4c0dc3423268a0ea435b56f4a65f7196
|
|
Currently the retry mechanism is broken for pushing because the image
state gets set to an error state, and is never reset to 'built'. This
prevents the PushTask from setting success to True.
This change sets the image state to 'built' if the push succeeds,
ensuring it overrides any previous failures.
Change-Id: I93fc0e383da8fec6b3ca31f8094321c2a0c3af71
Closes-Bug: #1844697
|
|
We have agreed to remove support for Oracle Linux.
http://lists.openstack.org/pipermail/openstack-discuss/2019-June/006896.html
Change-Id: I961dfba1aeef2c509ecdaf376dfe6928926ffb39
Depends-On: https://review.opendev.org/682858
|
|
We have a list of images which are unbuildable for distro/buildtype/arch
combos. This patch renames it from SKIPPED_IMAGES to UNBUILDABLE_IMAGES
because 'skipped' images is something else in our code.
Now all unbuildable images are marked as such and so are their children.
At the end of build there is information provided about skipped images
(due to --skip-parents or --skip-existing options) and then information
about not buildable images. Both list should only contain entries
related to requested build.
Change-Id: If9b521339f564e483cba03d52e7c4eba271821a5
|
|
Commit 43b74ccc157c0b50138c3785ed91dab504895571 enabled use of Python 3
based packages but not switched to use Python 3.
Some of images still contain Python 2. There are two reasons:
- Ceph (ceph-common depends on Py2)
- python3-ldappool on Ubuntu 18.04
In Ceph situation Py3 packages were added. For second one we can not do
anything - Py2 dependency got dropped in Ubuntu 18.10 version.
Removed neutron-server-plugin-networking-infoblox due to being not
maintained. Once https://review.opendev.org/#/c/657578/ get merged
someone may revert that part.
Implements: blueprint debian-ubuntu-python3
Depends-on: Ie2a1077f7def0743f1403341985e2109aa490026
Change-Id: Ibfe0c2b8be98db56c61f74fb0247488ab3749ef4
|
|
1.Use opendev.org instead of git.openstack.org.
2.Use review.opendev.org instead of review.openstack.org.
You can see the discussion below:
http://lists.openstack.org/pipermail/openstack-discuss/2019-March/003603.html
Change-Id: I377ea63827b6f3995ee275fdc466c1b2100eafc7
|
|
Add configuration to allow the switch between dnf/yum or provide an
alternative package manager.
Change-Id: I913769fcf5875a12b4561958cf7c90b74cd116ea
|
|
RHEL7 derived distros use Python 2.7
RHEL8 uses Python 3.6
Ubuntu 18.04 uses Python 3.6, but we haven't enabled it yet.
Debian:buster uses Python 3.7, but we haven't enabled it yet.
We have several places in code where "/lib/pythonX.Y/site-packages"
is used so we need to know value of X.Y rather than py2/py3 switch.
How to check for Python 2:
{% if distro_python_version == '2.7' %}
Breaks: Iad6b70b433a0dd1b0f8ae6790fd280594517661a
Change-Id: Ie24f109af19ae0438c21e0d43cb3cc947812b4ce
|
|
Currently in all the Dockerfile.j2 files, we are doing base distro if
conditions for package names when installing via a binary. Rather than
duplicating these base_distro in [<distros>], let's provide a single
value for determining the binary installation method. This change adds a
base_package_type which we can use to lookup if 'rpm' or if 'deb' rather
than relying on specific distro names.
Change-Id: I8a0c6c8fbc32a8cfa6932fddf28a449fceda3d49
|
|
As we add support for python3 on RHEL based systems, we need to add a
flag to key off of in the Dockerfiles to swap out the python3 package
names. This change adds a distro_python3 configuration option that can
be defined to force python3 or python2 package names. If this option
is not provided, we set this to True for RHEL 8 based distros and false
for other distros.
Change-Id: I4028991bad92c0e8e21066cc4173c06ce5eba393
Related-Blueprint: python3-support
|
|
Add a decode=True option during call to dockerAPI in order
to build container against recent docker swarm.
Closes-Bug: #1779460
Change-Id: I48f041e7ed9dd5a5f410b4eaa081f6f013119d17
|
|
Rework push_image function to use docker client push function with decode=True, to decode automatically to dict.
Change-Id: I28d38e968c3809a1074347271e49dc07dc861f11
Closes-Bug: 1771514
|
|
Add the ability to specify a different network_mode when running the
image builds. Under the covers the default is to use bridge networking
but if that is unavailable or a user would like to specify a different
networking method they can now do so using the [DEFAULT]\network_mode
configuration.
Change-Id: I1d2398273b57ca4d52bbfacbc896ffecc58bc54b
|
|
The argument of 'insecure_registry' for image push has been removed
by this commit (in docker 3.0.0):
https://github.com/docker/docker-py/commit/b180b8770a265e33099bd6da76c3e556a1028491
Actually this argument was marked as deprecated and unfunctional
before this removing.
This commit is to remove this parameter at invoking the push() function
when docker version >= 3.0.0.
Change-Id: Ifa7d304d08a4073dcb1dff751d5a443c112cd377
Closes-Bug: #1746703
|
|
When the first build attempt fail for any reason (e.g. short network
outage, proxy outage,...) then the second attempt always fail for
git source type. Git can't clone repository because destination
directory exists and is not empty.
Current fix checks destination directory and if it exists then
it is removed before cloning.
Change-Id: I949140c49a64baea579d61047e3b2f1240da2771
Closes-Bug: #1706369
|
|
|
|
Bandit was not running in all directories
due missing -r parameter.
Also, this change fix bandit errors.
* Add nosec to subprocess module
* Change /tmp/releases to .releases
* Change /tmp/ to tmp/, tmp/ is not checked
and in unittest is not an issue, simpler that mocking tempfile
and make more complex tests.
Change-Id: I42bafa4707a9a4d1faeb01cb9b5a843f56280deb
|
|
The mocks were in the wrong order. The only reason the tests were
passing so far was because the calls to mocks were not checked, the
mocks were only used to prevent the tested function to make calls to
actual resources.
Change-Id: If7ea23ac20e3a0d584e02e31d9d60ba914efa8aa
|
|
This new option allows to skip images that are already present in the
docker cache.
Change-Id: I202c70864f8aa86abd882240beb7f6525963e625
Closes-Bug: #1694302
|
|
The pypi package 'docker-py' [1] has been renamed to 'docker' [2].
It is better to move to the new 'docker' package because the old
package will be deprecated and all the new features will go into
the new package only.
Package 'docker' has been added to requirements [3]. The old
package 'docker-py' is still allowed to be in the global requirements
during the transition period but it should be removed after all or
most of the projects finsih the migration.
[1] https://pypi.python.org/pypi/docker-py
[2] https://pypi.python.org/pypi/docker
[3] https://review.openstack.org/#/c/423715/
Change-Id: I3ffd8bb6461e8b7edacc5e833754f00c4249b854
|
|
kolla-build --list-dependencies uses pprint, which prints
almost-but-not-quite json. This makes it hard for other tools to parse
its output.
This change switches to a json output with an indent of 2. If there is
interest in a default output which is friendly to both humans and
software, YAML might be more appropriate.
Change-Id: Icaead5a62a2d6510965524f68fb57dcf7494e618
Closes-Bug: #1694888
|
|
Previously, the images were copied locally in the tests as an attempt
to ensure test isolation but the parent image was still pointing to the
global object. This commit updates the images to point to the local
copies.
Rename the images to have more descriptive names and fix an issue in
test_skip_parents where the regex parameter was passed as a string
while it should be an array, that appeared once the images had their
correct parents.
Also bypass docker client memoization to further minimize the risk of
breaking test isolation.
Change-Id: Id7df645284f260cd615188db2efe889c9cf8115d
Closes-Bug: #1683314
|
|
|
|
Consider the case where you have a set of tagged / released images to
production, and you want to apply a small hotfix, security patch, etc.
to one of them, say keystone-ssh.
Rebuilding keystone-ssh will cause a rebuild of base, openstack-base,
and keystone-base, potentially pulling in updated packages / new
dependencies, unless you have access to the exact machine they were
previously built on. Ideally you want to use the exact parent images
that are in production.
This patch adds a new build argument '--skip-parents', which will result
in only the image(s) specified by the regex and their children to be
built. Parents are expected to exist either on machine or in a registry.
Change-Id: I79d5f0b422f48d2dc36ae85dfa21668cf8177837
Implements: blueprint image-build-depth
|
|
Following OpenStack Style Guidelines:
[1] http://docs.openstack.org/developer/hacking/#unit-tests-and-assertraises
[H203] Unit test assertions tend to give better messages for more
specific assertions. As a result, assertIsNone(...) is preferred over
assertEqual(None, ...) and assertIs(..., None)
Change-Id: If18685d75a847571c62dd1424c7b71433bbd4ce4
|
|
The working directory was previously generated as a temporary one,
but there may be cases when we want to specify a directory, for
example if we want to generate the Dockerfiles and then do some
parsing on them.
Change-Id: Ic332328913924bcb3d0dfa4d473e796050fc14b3
|
|
|