Add xena bundles

- add non-voting focal-xena bundle
- add non-voting impish-xena bundle
- rebuild to pick up charm-helpers changes
- update tox/pip.sh to ensure setuptools<50.0.0

Change-Id: I63c3cec8e2712b2bb94437446569a917456d5536
This commit is contained in:
Alex Kavanagh 2021-09-27 10:52:34 +01:00
parent 00f6602cfe
commit fb9baec357
10 changed files with 602 additions and 6 deletions

View File

@ -4,8 +4,12 @@
check: check:
jobs: jobs:
- charm-build - charm-build
- impish-xena:
voting: false
- hirsute-wallaby - hirsute-wallaby
- groovy-victoria - groovy-victoria
- focal-xena:
voting: false
- focal-wallaby - focal-wallaby
- focal-victoria - focal-victoria
- focal-ussuri - focal-ussuri

18
pip.sh Executable file
View File

@ -0,0 +1,18 @@
#!/usr/bin/env bash
#
# This file is managed centrally by release-tools and should not be modified
# within individual charm repos. See the 'global' dir contents for available
# choices of tox.ini for OpenStack Charms:
# https://github.com/openstack-charmers/release-tools
#
# setuptools 58.0 dropped the support for use_2to3=true which is needed to
# install blessings (an indirect dependency of charm-tools).
#
# More details on the beahvior of tox and virtualenv creation can be found at
# https://github.com/tox-dev/tox/issues/448
#
# This script is wrapper to force the use of the pinned versions early in the
# process when the virtualenv was created and upgraded before installing the
# depedencies declared in the target.
pip install 'pip<20.3' 'setuptools<50.0.0'
pip "$@"

View File

@ -2,4 +2,4 @@
# when dependencies of the charm change, # when dependencies of the charm change,
# but nothing in the charm needs to. # but nothing in the charm needs to.
# simply change the uuid to something new # simply change the uuid to something new
f9f80d46-b3eb-11eb-be4d-e387acf7c1fb 53c50d6c-1178-11ec-aec9-53d92906ceae

View File

@ -0,0 +1,277 @@
options:
source: &source cloud:focal-xena
series: focal
local_overlay_enabled: false
relations:
- - nova-ironic
- ironic-api
- - ironic-conductor
- ironic-api
- - neutron-ironic-agent:identity-credentials
- keystone
- - neutron-ironic-agent
- neutron-api
- - ironic-api:amqp
- rabbitmq-server:amqp
- - ironic-api
- keystone
- - ironic-api:shared-db
- ironic-api-mysql-router:shared-db
- - ironic-conductor:amqp
- rabbitmq-server:amqp
- - ironic-conductor
- keystone
- - ironic-conductor:shared-db
- ironic-conductor-mysql-router:shared-db
- - nova-ironic:amqp
- rabbitmq-server:amqp
- - nova-ironic
- glance
- - nova-ironic
- keystone
- - nova-ironic
- nova-cloud-controller
- - neutron-gateway:amqp
- rabbitmq-server:amqp
- - keystone:shared-db
- keystone-mysql-router:shared-db
- - nova-cloud-controller:identity-service
- keystone:identity-service
- - glance:identity-service
- keystone:identity-service
- - neutron-api:identity-service
- keystone:identity-service
- - neutron-api:shared-db
- neutron-api-mysql-router:shared-db
- - neutron-api:amqp
- rabbitmq-server:amqp
- - neutron-gateway:neutron-plugin-api
- neutron-api:neutron-plugin-api
- - glance:shared-db
- glance-mysql-router:shared-db
- - glance:amqp
- rabbitmq-server:amqp
- - nova-cloud-controller:image-service
- glance:image-service
- - nova-cloud-controller:amqp
- rabbitmq-server:amqp
- - nova-cloud-controller:quantum-network-service
- neutron-gateway:quantum-network-service
- - nova-cloud-controller:shared-db
- nova-cloud-controller-mysql-router:shared-db
- - nova-cloud-controller:neutron-api
- neutron-api:neutron-api
- - cinder:image-service
- glance:image-service
- - cinder:amqp
- rabbitmq-server:amqp
- - cinder:identity-service
- keystone:identity-service
- - cinder:cinder-volume-service
- nova-cloud-controller:cinder-volume-service
- - cinder:shared-db
- cinder-mysql-router:shared-db
- - placement:shared-db
- placement-mysql-router:shared-db
- - placement
- keystone
- - placement
- nova-cloud-controller
- - ceph-mon:client
- nova-ironic:ceph
- - ceph-mon:client
- glance:ceph
- - ceph-radosgw:mon
- ceph-mon:radosgw
- - ceph-radosgw:identity-service
- keystone:identity-service
- - ceph-osd:mon
- ceph-mon:osd
- - ceph-radosgw:object-store
- glance
- - mysql-innodb-cluster:db-router
- nova-cloud-controller-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- keystone-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- glance-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- neutron-api-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- placement-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- cinder-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- ironic-api-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- ironic-conductor-mysql-router:db-router
- - vault-mysql-router:db-router
- mysql-innodb-cluster:db-router
- - vault:shared-db
- vault-mysql-router:shared-db
- - vault:certificates
- ceph-radosgw
- - vault:certificates
- cinder
- - vault:certificates
- glance:certificates
- - vault:certificates
- keystone:certificates
- - vault:certificates
- neutron-api:certificates
- - vault:certificates
- nova-cloud-controller:certificates
- - vault:certificates
- placement:certificates
- - vault
- ironic-conductor
- - vault:certificates
- ironic-api:certificates
- - ironic-api
- hacluster-ironic
services:
nova-cloud-controller-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
keystone-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
glance-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
neutron-api-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
placement-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
vault-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
cinder-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
ironic-api-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
ironic-conductor-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
mysql-innodb-cluster:
charm: cs:~openstack-charmers-next/mysql-innodb-cluster
num_units: 3
constraints: mem=4G
options:
source: *source
cinder:
charm: cs:~openstack-charmers-next/cinder
num_units: 1
constraints: mem=2G
options:
block-device: vdb
glance-api-version: 2
openstack-origin: *source
worker-multiplier: 0.25
storage:
block-devices: cinder,50G
ceph-radosgw:
charm: cs:~openstack-charmers-next/ceph-radosgw
num_units: 1
constraints: mem=2G
options:
source: *source
namespace-tenants: True
ceph-mon:
charm: cs:~openstack-charmers-next/ceph-mon
num_units: 3
constraints: mem=2G
options:
expected-osd-count: 3
source: *source
ceph-osd:
charm: cs:~openstack-charmers-next/ceph-osd
num_units: 3
constraints: mem=2G
options:
source: *source
storage:
osd-devices: 'cinder,30G'
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
worker-multiplier: 0.25
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
worker-multiplier: 0.25
neutron-api:
charm: cs:~openstack-charmers-next/neutron-api
num_units: 1
constraints: mem=2G
options:
flat-network-providers: "physnet1"
neutron-security-groups: true
openstack-origin: *source
manage-neutron-plugin-legacy-mode: false
worker-multiplier: 0.25
neutron-gateway:
charm: cs:~openstack-charmers-next/neutron-gateway
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
enable-isolated-metadata: true
enable-metadata-network: true
bridge-mappings: physnet1:br-ex
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
constraints: mem=2G
options:
network-manager: Neutron
openstack-origin: *source
worker-multiplier: 0.25
nova-ironic:
charm: cs:~openstack-charmers-next/nova-compute
num_units: 1
constraints: mem=2G
options:
enable-live-migration: false
enable-resize: false
openstack-origin: *source
virt-type: ironic
placement:
charm: cs:~openstack-charmers-next/placement
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
worker-multiplier: 0.25
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
constraints: mem=2G
hacluster-ironic:
charm: cs:~openstack-charmers-next/hacluster
num_units: 0
ironic-api:
charm: cs:~openstack-charmers-next/ironic-api
num_units: 3
constraints: mem=2G
options:
openstack-origin: *source
ironic-conductor:
charm: ../../../ironic-conductor
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
max-tftp-block-size: 1418
disable-secure-erase: true
use-ipxe: true
enabled-network-interfaces: "flat, noop"
neutron-ironic-agent:
charm: cs:~openstack-charmers-next/neutron-api-plugin-ironic
num_units: 0
options:
openstack-origin: *source
vault:
charm: cs:~openstack-charmers-next/vault
num_units: 1

View File

@ -0,0 +1,277 @@
options:
source: &source distro
series: impish
local_overlay_enabled: false
relations:
- - nova-ironic
- ironic-api
- - ironic-conductor
- ironic-api
- - neutron-ironic-agent:identity-credentials
- keystone
- - neutron-ironic-agent
- neutron-api
- - ironic-api:amqp
- rabbitmq-server:amqp
- - ironic-api
- keystone
- - ironic-api:shared-db
- ironic-api-mysql-router:shared-db
- - ironic-conductor:amqp
- rabbitmq-server:amqp
- - ironic-conductor
- keystone
- - ironic-conductor:shared-db
- ironic-conductor-mysql-router:shared-db
- - nova-ironic:amqp
- rabbitmq-server:amqp
- - nova-ironic
- glance
- - nova-ironic
- keystone
- - nova-ironic
- nova-cloud-controller
- - neutron-gateway:amqp
- rabbitmq-server:amqp
- - keystone:shared-db
- keystone-mysql-router:shared-db
- - nova-cloud-controller:identity-service
- keystone:identity-service
- - glance:identity-service
- keystone:identity-service
- - neutron-api:identity-service
- keystone:identity-service
- - neutron-api:shared-db
- neutron-api-mysql-router:shared-db
- - neutron-api:amqp
- rabbitmq-server:amqp
- - neutron-gateway:neutron-plugin-api
- neutron-api:neutron-plugin-api
- - glance:shared-db
- glance-mysql-router:shared-db
- - glance:amqp
- rabbitmq-server:amqp
- - nova-cloud-controller:image-service
- glance:image-service
- - nova-cloud-controller:amqp
- rabbitmq-server:amqp
- - nova-cloud-controller:quantum-network-service
- neutron-gateway:quantum-network-service
- - nova-cloud-controller:shared-db
- nova-cloud-controller-mysql-router:shared-db
- - nova-cloud-controller:neutron-api
- neutron-api:neutron-api
- - cinder:image-service
- glance:image-service
- - cinder:amqp
- rabbitmq-server:amqp
- - cinder:identity-service
- keystone:identity-service
- - cinder:cinder-volume-service
- nova-cloud-controller:cinder-volume-service
- - cinder:shared-db
- cinder-mysql-router:shared-db
- - placement:shared-db
- placement-mysql-router:shared-db
- - placement
- keystone
- - placement
- nova-cloud-controller
- - ceph-mon:client
- nova-ironic:ceph
- - ceph-mon:client
- glance:ceph
- - ceph-radosgw:mon
- ceph-mon:radosgw
- - ceph-radosgw:identity-service
- keystone:identity-service
- - ceph-osd:mon
- ceph-mon:osd
- - ceph-radosgw:object-store
- glance
- - mysql-innodb-cluster:db-router
- nova-cloud-controller-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- keystone-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- glance-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- neutron-api-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- placement-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- cinder-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- ironic-api-mysql-router:db-router
- - mysql-innodb-cluster:db-router
- ironic-conductor-mysql-router:db-router
- - vault-mysql-router:db-router
- mysql-innodb-cluster:db-router
- - vault:shared-db
- vault-mysql-router:shared-db
- - vault:certificates
- ceph-radosgw
- - vault:certificates
- cinder
- - vault:certificates
- glance:certificates
- - vault:certificates
- keystone:certificates
- - vault:certificates
- neutron-api:certificates
- - vault:certificates
- nova-cloud-controller:certificates
- - vault:certificates
- placement:certificates
- - vault
- ironic-conductor
- - vault:certificates
- ironic-api:certificates
- - ironic-api
- hacluster-ironic
services:
nova-cloud-controller-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
keystone-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
glance-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
neutron-api-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
placement-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
vault-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
cinder-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
ironic-api-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
ironic-conductor-mysql-router:
charm: cs:~openstack-charmers-next/mysql-router
mysql-innodb-cluster:
charm: cs:~openstack-charmers-next/mysql-innodb-cluster
num_units: 3
constraints: mem=4G
options:
source: *source
cinder:
charm: cs:~openstack-charmers-next/cinder
num_units: 1
constraints: mem=2G
options:
block-device: vdb
glance-api-version: 2
openstack-origin: *source
worker-multiplier: 0.25
storage:
block-devices: cinder,50G
ceph-radosgw:
charm: cs:~openstack-charmers-next/ceph-radosgw
num_units: 1
constraints: mem=2G
options:
source: *source
namespace-tenants: True
ceph-mon:
charm: cs:~openstack-charmers-next/ceph-mon
num_units: 3
constraints: mem=2G
options:
expected-osd-count: 3
source: *source
ceph-osd:
charm: cs:~openstack-charmers-next/ceph-osd
num_units: 3
constraints: mem=2G
options:
source: *source
storage:
osd-devices: 'cinder,30G'
glance:
charm: cs:~openstack-charmers-next/glance
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
worker-multiplier: 0.25
keystone:
charm: cs:~openstack-charmers-next/keystone
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
worker-multiplier: 0.25
neutron-api:
charm: cs:~openstack-charmers-next/neutron-api
num_units: 1
constraints: mem=2G
options:
flat-network-providers: "physnet1"
neutron-security-groups: true
openstack-origin: *source
manage-neutron-plugin-legacy-mode: false
worker-multiplier: 0.25
neutron-gateway:
charm: cs:~openstack-charmers-next/neutron-gateway
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
enable-isolated-metadata: true
enable-metadata-network: true
bridge-mappings: physnet1:br-ex
nova-cloud-controller:
charm: cs:~openstack-charmers-next/nova-cloud-controller
num_units: 1
constraints: mem=2G
options:
network-manager: Neutron
openstack-origin: *source
worker-multiplier: 0.25
nova-ironic:
charm: cs:~openstack-charmers-next/nova-compute
num_units: 1
constraints: mem=2G
options:
enable-live-migration: false
enable-resize: false
openstack-origin: *source
virt-type: ironic
placement:
charm: cs:~openstack-charmers-next/placement
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
worker-multiplier: 0.25
rabbitmq-server:
charm: cs:~openstack-charmers-next/rabbitmq-server
num_units: 1
constraints: mem=2G
hacluster-ironic:
charm: cs:~openstack-charmers-next/hacluster
num_units: 0
ironic-api:
charm: cs:~openstack-charmers-next/ironic-api
num_units: 3
constraints: mem=2G
options:
openstack-origin: *source
ironic-conductor:
charm: ../../../ironic-conductor
num_units: 1
constraints: mem=2G
options:
openstack-origin: *source
max-tftp-block-size: 1418
disable-secure-erase: true
use-ipxe: true
enabled-network-interfaces: "flat, noop"
neutron-ironic-agent:
charm: cs:~openstack-charmers-next/neutron-api-plugin-ironic
num_units: 0
options:
openstack-origin: *source
vault:
charm: cs:~openstack-charmers-next/vault
num_units: 1

View File

@ -0,0 +1 @@
ironic.j2

View File

@ -0,0 +1 @@
ironic.j2

View File

@ -4,7 +4,7 @@
charm_name: ironic-api charm_name: ironic-api
gate_bundles: gate_bundles:
- groovy-victoria - focal-xena
- focal-wallaby - focal-wallaby
- focal-victoria - focal-victoria
- focal-ussuri - focal-ussuri
@ -12,7 +12,9 @@ gate_bundles:
- bionic-ussuri - bionic-ussuri
dev_bundles: dev_bundles:
- groovy-victoria
- hirsute-wallaby - hirsute-wallaby
- impish-xena
smoke_bundles: smoke_bundles:
- focal-ussuri - focal-ussuri
@ -42,4 +44,5 @@ tests:
tests_options: tests_options:
force_deploy: force_deploy:
- hirsute-wallaby - groovy-victoria
- impish-xena

View File

@ -22,12 +22,12 @@ skip_missing_interpreters = False
requires = pip < 20.3 requires = pip < 20.3
virtualenv < 20.0 virtualenv < 20.0
# NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci # NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci
minversion = 3.2.0 minversion = 3.18.0
[testenv] [testenv]
setenv = VIRTUAL_ENV={envdir} setenv = VIRTUAL_ENV={envdir}
PYTHONHASHSEED=0 PYTHONHASHSEED=0
whitelist_externals = juju allowlist_externals = juju
passenv = HOME TERM CS_* OS_* TEST_* passenv = HOME TERM CS_* OS_* TEST_*
deps = -r{toxinidir}/test-requirements.txt deps = -r{toxinidir}/test-requirements.txt
install_command = install_command =

17
tox.ini
View File

@ -11,6 +11,21 @@ envlist = pep8,py3
sitepackages = False sitepackages = False
# NOTE: Avoid false positives by not skipping missing interpreters. # NOTE: Avoid false positives by not skipping missing interpreters.
skip_missing_interpreters = False skip_missing_interpreters = False
# NOTES:
# * We avoid the new dependency resolver by pinning pip < 20.3, see
# https://github.com/pypa/pip/issues/9187
# * Pinning dependencies requires tox >= 3.2.0, see
# https://tox.readthedocs.io/en/latest/config.html#conf-requires
# * It is also necessary to pin virtualenv as a newer virtualenv would still
# lead to fetching the latest pip in the func* tox targets, see
# https://stackoverflow.com/a/38133283
requires =
pip < 20.3
virtualenv < 20.0
setuptools<50.0.0
# NOTE: https://wiki.canonical.com/engineering/OpenStack/InstallLatestToxOnOsci
minversion = 3.18.0
[testenv] [testenv]
setenv = VIRTUAL_ENV={envdir} setenv = VIRTUAL_ENV={envdir}
@ -21,7 +36,7 @@ setenv = VIRTUAL_ENV={envdir}
JUJU_REPOSITORY={toxinidir}/build JUJU_REPOSITORY={toxinidir}/build
passenv = http_proxy https_proxy INTERFACE_PATH LAYER_PATH JUJU_REPOSITORY passenv = http_proxy https_proxy INTERFACE_PATH LAYER_PATH JUJU_REPOSITORY
install_command = install_command =
pip install {opts} {packages} {toxinidir}/pip.sh install {opts} {packages}
deps = deps =
-r{toxinidir}/requirements.txt -r{toxinidir}/requirements.txt