Ansible OpenStack collection 1.x.x is not compatible to openstacksdk
>=0.99.0, only collection series 2.x.x will be. But the latter has
not been released yet.
This incompatibility only affects modules in Ansible OpenStack
Collection but not the functions that metalsmith uses. Those
functions ARE compatible with recent openstacksdk releases and
will most likely not be removed in collection release 2.0.0.
Thus, as a hacky workaround to allow using Ansible OpenStack
collection 1.x.x with openstacksdk >=0.99.0 this patch removes
the MAXIMUM_SDK_VERSION.
Change-Id: Icbcb0f92fc1e4315e81fe9ce0c2f9ce6b39867c2
Default ansible version was changed in CI; this change is to validate
and workaround the issue by forcing the older ansible version. We will
still need to update the version before Zuul support for 5 is removed.
Change-Id: I3119055467a4edfdb13c522ce1c81d2f7eb3588d
Add file to the reno documentation build to show release notes for
stable/zed.
Use pbr instruction to increment the minor version number
automatically so that master versions are higher than the versions on
stable/zed.
Sem-Ver: feature
Change-Id: If9988dcccb8b6eb7be97955f73a3ffcdeb1c5b3f
Remove or update the corresponding CI jobs. Use the new custom Cirros
image in the HTTP job to avoid relying on CentOS.
Temporary increase complexity requirements while we have a deprecation
warning in the provisioner.
Change-Id: I5e65f9949ee3b78430309017800b88c1ba21dd02
A hostname or name is passed to the unprovision call, and the node is
looked up by allocation name (hostname), falling back to node name.
This can result in the wrong node being unprovisioned in the following
scenario:
* node and hostname naming scheme are identical
* node and hostname names are mixed because allocation placement
doesn't take the node name into account
* a node has already been unprovisioned by hostname (allocation)
lookup
* unprovision is performed a second time, this time matching the
hostname with a different node's name
* the wrong node is unprovisioned
The unprovision_node method can also take a node object instead of a
string identifier, so this change does a precise node lookup before
calling it. This means only hostnames are used for allocation lookups,
and node names for node lookups.
Change-Id: I9507f8d30c871ae62a250148789393695d59183a
Resolves: rhbz#2092444
It appears our jobs end up encountering some performance issues
on some RAX hosts where the overall runtime is already close to
the maximum for the job window.
Ultimately what happens is the performance ends up putting the boot
of the workload VM just a little bit later and we end up failing
the job as the VM is still early in booting up.
Change-Id: I309220d7f61f87b7457668fcf586d4ea152d363b
The node lookup for unprovision first attempts the allocation name
(hostname)[1] but the metalsmith_instances unprovision passes the node
name.
This means in cases where the node naming scheme and the allocation
naming scheme are the same, the wrong node may be unprovisioned.
This change switches to passing the hostname for unprovision, only
passing the node name if the hostname is missing from the instances
entry.
[1] https://opendev.org/openstack/metalsmith/src/branch/master/metalsmith/_provisioner.py#L653
Change-Id: Ie6b989f8d67c03606be37310777175cfb8d9303e
Resolves: rhbz#2092444
The allocation name/hostname is set during the provision step, but it
is also possible to set it during the reserve step, which is done in
this change.
Setting the name during reservation is more correct, and triggers some
extra sanity checks during provision. But it also enables this change[1]
which attempts to reserve the node with the same name as the
allocation.
[1] https://review.opendev.org/c/openstack/ironic/+/845856
Change-Id: I0da4644a955b8e9fbf509c074b939b97c64739cb
Currently if a port is missing, running metalsmith list will fail with
an error. This change handles missing ports by not showing any IP
address for that VIF, and logging a warning.
Change-Id: I94924ebc81b46a2aa4c3b6f82bd46480f37b3150
Resolves: rhbz#2092444
When netboot is removed from Ironic, we need a job to cover local boot
in legacy mode. The new job will do it.
Also drop "local" from the job name, it's the default.
Change-Id: I6cad4556d770a733245d12f9a211e8ff7a3d884b
Add file to the reno documentation build to show release notes for
stable/yoga.
Use pbr instruction to increment the minor version number
automatically so that master versions are higher than the versions on
stable/yoga.
Sem-Ver: feature
Change-Id: I8d6d17078ef0df3b6e9c72436336351edcf96b09
Fixes and issue where a port cannot be created on
a specific subnet if there are multiple subnets
with the same name on different networks.
Allows both 'network' and 'subnet' in NIC information,
when looking up the subnet filter on the network_id when
both 'network' and 'subnet' is provided.
Story: 2009732
Task: 44152
Change-Id: Ied2d16ec33fe71522c3461d3df6e70fbfdd976b2
We have updated the yoga testing runtime to keep the
py36 testing.
- https://review.opendev.org/c/openstack/governance/+/820195
Unit tests job template is also updated to keep python
3.6 as a voting job. So with the py3.6 and py3.9 testing as voting
job template, we are keeping python 3.6, 3.7, 3.8, and 3.8 as
tested versions in the Yoga cycle.
- https://review.opendev.org/c/openstack/openstack-zuul-jobs/+/820286
This commit re-add the python 3.6/3.7 versions in setup.cfg classifier.
Change-Id: Ia66c7f6f1475804467b3b8f2df8c1e79a9fa11b6
Metalsmith has always been a fairly long running job, in part
because it hast to build images, and then deploy them.
It appears, we are seeing increased occurances of the job
timing out due to what appears to be just slightly slower IO
performance. Overall major steps are still executing in an
acceptable amount of time, just towards the further end of
what we typically expect to see in CI.
As such, extend the overall job timeout a little bit to give
it time to hopefully finish. Extends the job timeout 1000 seconds,
which is a bit over sixteen more minutes to allow the job to
complete cleaning.
Change-Id: I5c7928e341ffcbc94f1beb8a33a8d10d89bae8a7
As discussed during the ironic meeting on 29/11/2021, the community has
decided to continue testing the code against Python 3.6 to keep
compatibility with distributions that have native support for it, such
as CentOS Stream 8, Ubuntu Bionic, Debian 10, and openSuse Leap, at
least until it's possible and reasonable considering the support granted
from other dependencies and libraries, and not beyond the Yoga cycle.
Change-Id: I7f060e816bf91636e5d3890ee8d076574c2ab474
Set the 'binding:host_id' on neutron port VIFs when
they are created, or update it for existing ports.
This ensures IP allocation is not deferred by neutron.
If IP allocation is deferred, the config-drive network
metadata will not include enough information to properly
bootstrap the instance networking.
Story: 2009715
Task: 44089
Closes-Bug: #1952573
Change-Id: I7411c1f2fbc57dad0504fe61e278308030f059bf
The default boot mode for ironic is now uefi [1]
The legacy jobs should set IRONIC_BOOT_MODE explicitely to bios.
[1] 493b4f0caf
Change-Id: If5c8feb3a829eaff56519846de3e5ccd6bab24c4
cloud-init will use fall-back config when network metadata
is *not* present. This works fine if the first NIC on the node is
connected to a network with DHCP. But, when the first NIC is not
used for provisioning, cloud-init will only write a fallback config
for the first NIC. This causes the provisioned node to be unavailable.
Extend instance configuration to include network metadata so that
cloud-init can configure node networking.
Story: 2009238
Task: 43378
Change-Id: I70f1a972a6d5a0398cd348f00308957386d66067
Add file to the reno documentation build to show release notes for
stable/xena.
Use pbr instruction to increment the minor version number
automatically so that master versions are higher than the versions on
stable/xena.
Sem-Ver: feature
Change-Id: Ia6bcc429fbf365f430ca41b85af0ad055f7e0056
The devstack default limit enforcement for glance defaults
to 1GB, and unfortunately this is too small for many to use
larger images such as centos which includes hardware firmware
images for execution on baremetal where drivers need the vendor
blobs in order to load/run.
Sets metalsmith-integration-base to 5GB.
Depends-On: https://review.opendev.org/c/openstack/devstack/+/801309
Change-Id: If3f7cd61ebce5f1724fe4fa56a9bf0e9793d8485
ABCs in collections should be imported from collections.abc and direct
import from collections is deprecated since Python 3.3.
Change-Id: Ibca1d5756d7598e961e21c5ba9bd6e17bb895285
Node instance_info `image_disk_format` needs to be set to `raw` for
large raw images or the deployment may fail with a memory check error
or a full node tmpfs. Even when there is no error, without
image_disk_format=raw the image will not be streamed directly to disk.
image_disk_format is auto-detected and set by ironic for glance and
file sourced images, but this does not occur for direct HTTP based
images.
This change will set image_disk_format=raw when the URL file extension
ends with .raw, which is enough to support TripleO's conventions for
the overcloud raw image.
Change-Id: I6a9c225fc2d14b2d07cd0bf2379cd2c8c548f312
Setuptools v54.1.0 introduces a warning that the use of dash-separated
options in 'setup.cfg' will not be supported in a future version [1].
Get ahead of the issue by replacing the dashes with underscores. Without
this, we see 'UserWarning' messages like the following on new enough
versions of setuptools:
UserWarning: Usage of dash-separated 'description-file' will not be
supported in future versions. Please use the underscore name
'description_file' instead
[1] https://github.com/pypa/setuptools/commit/a2e9ae4cb
Change-Id: Ia65fa32546eb1eea1c4bc1d68b2fb279604b1e29