Bump minimum Python and Ansible versions

Running ansible-galaxy inside a tenks venv was failing on Ubuntu 22.04
with the following error:

    AttributeError: module 'lib' has no attribute 'X509_V_FLAG_NOTIFY_POLICY'

Bump minimum Python and Ansible versions and switch from os_ironic
module to openstack.cloud.baremetal_node.

This drops support for Python versions below 3.9. The branch stable/2.0
can be used where Python 3.6 or 3.8 are required.

Also drop centos8s and ubuntu-focal CI jobs which are only used in
unmaintained branches.

Change-Id: Ia740e9d8455fd9424378fa31b3495149db31c8e7
This commit is contained in:
Pierre Riteau 2024-08-26 20:01:51 +02:00
parent 2ca88097dc
commit 296669708f
7 changed files with 20 additions and 87 deletions

View File

@ -41,32 +41,6 @@
until: result is success until: result is success
retries: 3 retries: 3
# If using clouds.yaml for authentication we need to pass in the ironic_url
# argument to the os_ironic module, due to a quirk in its implementation.
# Grab the endpoint from the file.
- name: Set ironic_url for os_ironic module
when: lookup('env', 'OS_CLOUD') | length > 0
block:
- name: Query clouds.yaml
os_client_config:
clouds: "{{ lookup('env', 'OS_CLOUD') }}"
delegate_to: localhost
vars:
ansible_python_interpreter: >-
{{ lookup('env', 'VIRTUAL_ENV') | default('/usr', true) ~ '/bin/python' }}
- name: Fail if the cloud was not found
fail:
msg: >
Cloud {{ lookup('env', 'OS_CLOUD') }} was not found in clouds.yaml
when: >-
openstack.clouds | length == 0 or
not openstack.clouds[0].get('auth', {}).get('endpoint')
- name: Set a fact about the ironic API endpoint
set_fact:
ironic_url: "{{ openstack.clouds[0].auth.endpoint }}"
- name: Detect ironic API version - name: Detect ironic API version
command: >- command: >-
{{ ironic_virtualenv_path }}/bin/openstack {{ ironic_virtualenv_path }}/bin/openstack

View File

@ -40,19 +40,16 @@
when: (node.state | default('present')) == 'present' when: (node.state | default('present')) == 'present'
- name: Configure node in Ironic - name: Configure node in Ironic
os_ironic: openstack.cloud.baremetal_node:
auth_type: "{{ 'password' if lookup('env', 'OS_USERNAME') else omit }}" auth_type: "{{ 'password' if lookup('env', 'OS_USERNAME') else omit }}"
cloud: "{{ lookup('env', 'OS_CLOUD') | default(omit, true) }}" cloud: "{{ lookup('env', 'OS_CLOUD') | default(omit, true) }}"
ironic_url: "{{ ironic_url | default(omit) }}"
driver: "{{ node.ironic_driver }}" driver: "{{ node.ironic_driver }}"
driver_info: driver_info:
power:
ipmi_address: "{{ hostvars[ironic_hypervisor].ipmi_address }}" ipmi_address: "{{ hostvars[ironic_hypervisor].ipmi_address }}"
# This is passed in from main.yml. # This is passed in from main.yml.
ipmi_port: "{{ ipmi_port }}" ipmi_port: "{{ ipmi_port }}"
ipmi_username: "{{ hostvars[ironic_hypervisor].ipmi_username }}" ipmi_username: "{{ hostvars[ironic_hypervisor].ipmi_username }}"
ipmi_password: "{{ hostvars[ironic_hypervisor].ipmi_password }}" ipmi_password: "{{ hostvars[ironic_hypervisor].ipmi_password }}"
deploy:
deploy_kernel: "{{ ironic_deploy_kernel_uuid | default(omit, true) }}" deploy_kernel: "{{ ironic_deploy_kernel_uuid | default(omit, true) }}"
deploy_ramdisk: "{{ ironic_deploy_ramdisk_uuid | default(omit, true) }}" deploy_ramdisk: "{{ ironic_deploy_ramdisk_uuid | default(omit, true) }}"
name: "{{ node.name }}" name: "{{ node.name }}"
@ -75,13 +72,13 @@
- name: Put Ironic node into maintenance mode - name: Put Ironic node into maintenance mode
command: >- command: >-
'{{ ironic_virtualenv_path }}/bin/openstack' baremetal node maintenance set '{{ ironic_virtualenv_path }}/bin/openstack' baremetal node maintenance set
'{{ node_res.uuid }}' '{{ node_res.node.id }}'
changed_when: true changed_when: true
- name: Set additional Ironic node attributes - name: Set additional Ironic node attributes
command: >- command: >-
'{{ ironic_virtualenv_path }}/bin/openstack' baremetal node set '{{ ironic_virtualenv_path }}/bin/openstack' baremetal node set
'{{ node_res.uuid }}' '{{ node_res.node.id }}'
--resource-class {{ node.ironic_config.resource_class }} --resource-class {{ node.ironic_config.resource_class }}
{% for iface in ironic_interfaces %} {% for iface in ironic_interfaces %}
{% if (iface + '_interface') in node.ironic_config %} {% if (iface + '_interface') in node.ironic_config %}
@ -113,7 +110,7 @@
- name: Add Ironic node traits - name: Add Ironic node traits
command: >- command: >-
'{{ ironic_virtualenv_path }}/bin/openstack' baremetal node add trait '{{ ironic_virtualenv_path }}/bin/openstack' baremetal node add trait
'{{ node_res.uuid }}' '{{ node_res.node.id }}'
{{ " ".join(node.ironic_config.traits) }} {{ " ".join(node.ironic_config.traits) }}
changed_when: true changed_when: true
when: node.ironic_config.traits | default([]) when: node.ironic_config.traits | default([])
@ -131,5 +128,5 @@
- name: Bring Ironic node out of maintenance mode - name: Bring Ironic node out of maintenance mode
command: >- command: >-
'{{ ironic_virtualenv_path }}/bin/openstack' baremetal node maintenance '{{ ironic_virtualenv_path }}/bin/openstack' baremetal node maintenance
unset '{{ node_res.uuid }}' unset '{{ node_res.node.id }}'
changed_when: true changed_when: true

View File

@ -3,6 +3,6 @@
# process, which may cause wedges in the gate later. # process, which may cause wedges in the gate later.
pbr>=2.0 # Apache-2.0 pbr>=2.0 # Apache-2.0
ansible>=2.7.0,<6.0 # GPLv3 ansible>=8,<9 # GPLv3
os-client-config # Apache-2.0 os-client-config # Apache-2.0
selinux # MIT selinux # MIT

View File

@ -6,7 +6,7 @@ description_file =
author = OpenStack author = OpenStack
author_email = openstack-discuss@lists.openstack.org author_email = openstack-discuss@lists.openstack.org
home_page = https://docs.openstack.org/tenks/latest/ home_page = https://docs.openstack.org/tenks/latest/
python_requires = >=3.6 python_requires = >=3.9
classifier = classifier =
Environment :: OpenStack Environment :: OpenStack
Intended Audience :: Information Technology Intended Audience :: Information Technology
@ -17,11 +17,9 @@ classifier =
Programming Language :: Python :: Implementation :: CPython Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: 3 :: Only Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: 3 Programming Language :: Python :: 3
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
[files] [files]
packages = packages =

View File

@ -268,7 +268,9 @@ inventory_resource_class_reserved = chain(
# scenario - same resource class, different traits - success # scenario - same resource class, different traits - success
# Arbitrary subset # Arbitrary subset
resource_provider_traits_subset = random.sample(resource_provider_traits, 3) resource_provider_traits_subset = random.sample(
sorted(resource_provider_traits), 3
)
resource_provider_traits_subset_out = traits_to_json( resource_provider_traits_subset_out = traits_to_json(
resource_provider_traits_subset resource_provider_traits_subset

View File

@ -13,15 +13,6 @@
- ^tests/ - ^tests/
- ^zuul\.d/ - ^zuul\.d/
- job:
name: tenks-deploy-teardown-ovs-bios-centos8s
parent: tenks-deploy-teardown-ovs-bios-base
nodeset: centos-8-stream
required-projects:
# NOTE(mgoddard): CentOS 8 uses Python 3.6 which is not supported in Zed.
- name: openstack/requirements
override-checkout: stable/yoga
- job: - job:
name: tenks-deploy-teardown-ovs-bios-centos9s name: tenks-deploy-teardown-ovs-bios-centos9s
parent: tenks-deploy-teardown-ovs-bios-base parent: tenks-deploy-teardown-ovs-bios-base
@ -37,25 +28,11 @@
parent: tenks-deploy-teardown-ovs-bios-base parent: tenks-deploy-teardown-ovs-bios-base
nodeset: rockylinux-9 nodeset: rockylinux-9
- job:
name: tenks-deploy-teardown-ovs-bios-ubuntu-focal
parent: tenks-deploy-teardown-ovs-bios-base
nodeset: ubuntu-focal
- job: - job:
name: tenks-deploy-teardown-ovs-bios-ubuntu-jammy name: tenks-deploy-teardown-ovs-bios-ubuntu-jammy
parent: tenks-deploy-teardown-ovs-bios-base parent: tenks-deploy-teardown-ovs-bios-base
nodeset: ubuntu-jammy nodeset: ubuntu-jammy
- job:
name: tenks-deploy-teardown-linuxbridge-uefi-centos8s
parent: tenks-deploy-teardown-linuxbridge-uefi-base
nodeset: centos-8-stream
required-projects:
# NOTE(mgoddard): CentOS 8 uses Python 3.6 which is not supported in Zed.
- name: openstack/requirements
override-checkout: stable/yoga
- job: - job:
name: tenks-deploy-teardown-linuxbridge-uefi-centos9s name: tenks-deploy-teardown-linuxbridge-uefi-centos9s
parent: tenks-deploy-teardown-linuxbridge-uefi-base parent: tenks-deploy-teardown-linuxbridge-uefi-base
@ -71,11 +48,6 @@
parent: tenks-deploy-teardown-linuxbridge-uefi-base parent: tenks-deploy-teardown-linuxbridge-uefi-base
nodeset: rockylinux-9 nodeset: rockylinux-9
- job:
name: tenks-deploy-teardown-linuxbridge-uefi-ubuntu-focal
parent: tenks-deploy-teardown-linuxbridge-uefi-base
nodeset: ubuntu-focal
- job: - job:
name: tenks-deploy-teardown-linuxbridge-uefi-ubuntu-jammy name: tenks-deploy-teardown-linuxbridge-uefi-ubuntu-jammy
parent: tenks-deploy-teardown-linuxbridge-uefi-base parent: tenks-deploy-teardown-linuxbridge-uefi-base

View File

@ -8,22 +8,17 @@
check: check:
jobs: jobs:
- openstack-tox-pep8 - openstack-tox-pep8
- openstack-tox-py36
- openstack-tox-py38
- openstack-tox-py39 - openstack-tox-py39
- openstack-tox-py310 - openstack-tox-py310
- openstack-tox-py311
- tenks-tox-ansible-lint - tenks-tox-ansible-lint
- tenks-deploy-teardown-ovs-bios-centos8s
- tenks-deploy-teardown-ovs-bios-centos9s - tenks-deploy-teardown-ovs-bios-centos9s
- tenks-deploy-teardown-ovs-bios-debian-bullseye - tenks-deploy-teardown-ovs-bios-debian-bullseye
- tenks-deploy-teardown-ovs-bios-rocky-9 - tenks-deploy-teardown-ovs-bios-rocky-9
- tenks-deploy-teardown-ovs-bios-ubuntu-focal
- tenks-deploy-teardown-ovs-bios-ubuntu-jammy - tenks-deploy-teardown-ovs-bios-ubuntu-jammy
- tenks-deploy-teardown-linuxbridge-uefi-centos8s
- tenks-deploy-teardown-linuxbridge-uefi-centos9s - tenks-deploy-teardown-linuxbridge-uefi-centos9s
- tenks-deploy-teardown-linuxbridge-uefi-debian-bullseye - tenks-deploy-teardown-linuxbridge-uefi-debian-bullseye
- tenks-deploy-teardown-linuxbridge-uefi-rocky-9 - tenks-deploy-teardown-linuxbridge-uefi-rocky-9
- tenks-deploy-teardown-linuxbridge-uefi-ubuntu-focal
- tenks-deploy-teardown-linuxbridge-uefi-ubuntu-jammy - tenks-deploy-teardown-linuxbridge-uefi-ubuntu-jammy
# Until we have ironic jobs using tenks, gate on the kayobe overcloud # Until we have ironic jobs using tenks, gate on the kayobe overcloud
# deploy job, which uses tenks to test bare metal compute provisioning. # deploy job, which uses tenks to test bare metal compute provisioning.
@ -33,22 +28,17 @@
gate: gate:
jobs: jobs:
- openstack-tox-pep8 - openstack-tox-pep8
- openstack-tox-py36
- openstack-tox-py38
- openstack-tox-py39 - openstack-tox-py39
- openstack-tox-py310 - openstack-tox-py310
- openstack-tox-py311
- tenks-tox-ansible-lint - tenks-tox-ansible-lint
- tenks-deploy-teardown-ovs-bios-centos8s
- tenks-deploy-teardown-ovs-bios-centos9s - tenks-deploy-teardown-ovs-bios-centos9s
- tenks-deploy-teardown-ovs-bios-debian-bullseye - tenks-deploy-teardown-ovs-bios-debian-bullseye
- tenks-deploy-teardown-ovs-bios-rocky-9 - tenks-deploy-teardown-ovs-bios-rocky-9
- tenks-deploy-teardown-ovs-bios-ubuntu-focal
- tenks-deploy-teardown-ovs-bios-ubuntu-jammy - tenks-deploy-teardown-ovs-bios-ubuntu-jammy
- tenks-deploy-teardown-linuxbridge-uefi-centos8s
- tenks-deploy-teardown-linuxbridge-uefi-centos9s - tenks-deploy-teardown-linuxbridge-uefi-centos9s
- tenks-deploy-teardown-linuxbridge-uefi-debian-bullseye - tenks-deploy-teardown-linuxbridge-uefi-debian-bullseye
- tenks-deploy-teardown-linuxbridge-uefi-rocky-9 - tenks-deploy-teardown-linuxbridge-uefi-rocky-9
- tenks-deploy-teardown-linuxbridge-uefi-ubuntu-focal
- tenks-deploy-teardown-linuxbridge-uefi-ubuntu-jammy - tenks-deploy-teardown-linuxbridge-uefi-ubuntu-jammy
# Until we have ironic jobs using tenks, gate on the kayobe overcloud # Until we have ironic jobs using tenks, gate on the kayobe overcloud
# deploy job, which uses tenks to test bare metal compute provisioning. # deploy job, which uses tenks to test bare metal compute provisioning.