Add Ubuntu 24.04 (Noble) support

Add support for Ubuntu 24.04 LTS (Noble) to the charm while maintaining
backward compatibility with Ubuntu 22.04 (Jammy).

Summary of changes:
* Add Noble base configuration to charmcraft.yaml with
  multi-architecture support (amd64, s390x, ppc64el, arm64)
* Add 'noble' series to metadata.yaml
* Update osci.yaml CI configuration:
  - Add charm-unit-jobs-py312 template for Python 3.12
  - Add openstack-loadbalancer-noble job definition
  - Upgrade charmcraft channel from 2.0/stable to 3.x/stable
* Add complete Noble test bundle configuration
* Refactor overlay templates to use shared local_overlay.yaml.j2
  to eliminate code duplication between Ubuntu versions

This change enables the charm to run on both Ubuntu 22.04 and
24.04 systems, with Noble becoming the primary test target
while maintaining Jammy compatibility for existing deployments.

Change-Id: I210e00cb43ad93b2e410ebe1cbefa4d9159a49d2
Signed-off-by: Felipe Reyes <felipe.reyes@canonical.com>
This commit is contained in:
Felipe Reyes
2025-08-13 17:57:22 -04:00
parent 34988eacd5
commit 40ca68e1e3
11 changed files with 91 additions and 32 deletions

View File

@@ -19,13 +19,14 @@ parts:
apt install -y ca-certificates
update-ca-certificates
bases:
- build-on:
- name: ubuntu
channel: "22.04"
architectures:
- amd64
run-on:
- name: ubuntu
channel: "22.04"
architectures: [amd64, s390x, ppc64el, arm64]
platforms:
# jammy
ubuntu@22.04:amd64:
ubuntu@22.04:s390x:
ubuntu@22.04:ppc64el:
ubuntu@22.04:arm64:
# noble
ubuntu@24.04:amd64:
ubuntu@24.04:s390x:
ubuntu@24.04:ppc64el:
ubuntu@24.04:arm64:

View File

@@ -10,6 +10,7 @@ tags:
- openstack
series:
- jammy
- noble
extra-bindings:
public:
admin:

View File

@@ -1,14 +1,16 @@
- project:
templates:
- charm-unit-jobs-py310
- charm-unit-jobs-py312
check:
jobs:
- openstack-loadbalancer-jammy
- openstack-loadbalancer-noble
vars:
needs_charm_build: true
charm_build_name: openstack-loadbalancer
build_type: charmcraft
charmcraft_channel: 2.0/stable
charmcraft_channel: 3.x/stable
- job:
name: openstack-loadbalancer-jammy
parent: func-target
@@ -19,3 +21,13 @@
soft: true
vars:
tox_extra_args: jammy
- job:
name: openstack-loadbalancer-noble
parent: func-target
dependencies:
- charm-build
- osci-lint
- name: tox-py312
soft: true
vars:
tox_extra_args: noble

View File

@@ -1,13 +0,0 @@
#!/bin/bash
charm=$(grep "charm_build_name" osci.yaml | awk '{print $2}')
echo "renaming ${charm}_*.charm to ${charm}.charm"
echo -n "pwd: "
pwd
ls -al
echo "Removing bad downloaded charm maybe?"
if [[ -e "${charm}.charm" ]];
then
rm "${charm}.charm"
fi
echo "Renaming charm here."
mv ${charm}_*.charm ${charm}.charm

View File

@@ -33,7 +33,7 @@ applications:
public-hostname: 'ceph-dashboard.zaza.local'
channel: latest/edge
openstack-loadbalancer:
charm: ../../openstack-loadbalancer.charm
charm: ../../openstack-loadbalancer_ubuntu@22.04-amd64.charm
num_units: 3
hacluster:
charm: ch:hacluster

57
tests/bundles/noble.yaml Normal file
View File

@@ -0,0 +1,57 @@
local_overlay_enabled: False
series: noble
applications:
ceph-osd:
charm: ch:ceph-osd
num_units: 6
storage:
osd-devices: 'cinder,10G'
options:
osd-devices: '/dev/test-non-existent'
channel: latest/edge
ceph-mon:
charm: ch:ceph-mon
num_units: 3
options:
monitor-count: '3'
channel: latest/edge
vault:
num_units: 1
charm: ch:vault
channel: latest/edge
mysql-innodb-cluster:
charm: ch:mysql-innodb-cluster
constraints: mem=3072M
num_units: 3
channel: latest/edge
vault-mysql-router:
charm: ch:mysql-router
channel: latest/edge
ceph-dashboard:
charm: ch:ceph-dashboard
options:
public-hostname: 'ceph-dashboard.zaza.local'
channel: latest/edge
openstack-loadbalancer:
charm: ../../openstack-loadbalancer_ubuntu@24.04-amd64.charm
num_units: 3
hacluster:
charm: ch:hacluster
options:
cluster_count: 3
channel: latest/edge
relations:
- - 'ceph-osd:mon'
- 'ceph-mon:osd'
- - 'vault:shared-db'
- 'vault-mysql-router:shared-db'
- - 'vault-mysql-router:db-router'
- 'mysql-innodb-cluster:db-router'
- - 'ceph-dashboard:dashboard'
- 'ceph-mon:dashboard'
- - 'ceph-dashboard:certificates'
- 'vault:certificates'
- - 'openstack-loadbalancer:loadbalancer'
- 'ceph-dashboard:loadbalancer'
- - 'openstack-loadbalancer:ha'
- 'hacluster:ha'

View File

@@ -1,4 +0,0 @@
applications:
openstack-loadbalancer:
options:
vip: '{{ TEST_VIP00 }}'

View File

@@ -0,0 +1 @@
local_overlay.yaml.j2

View File

@@ -0,0 +1,4 @@
applications:
openstack-loadbalancer:
options:
vip: '{{ TEST_VIP00 }}'

View File

@@ -0,0 +1 @@
local_overlay.yaml.j2

View File

@@ -2,9 +2,10 @@ charm_name: openstack-loadbalancer
gate_bundles:
- jammy
smoke_bundles:
- jammy
- noble
dev_bundles:
- jammy
- noble
configure:
- zaza.openstack.charm_tests.vault.setup.auto_initialize_no_validation
- zaza.openstack.charm_tests.ceph.dashboard.setup.check_dashboard_cert

View File

@@ -20,7 +20,6 @@ allowlist_externals =
add-to-archive.py
bash
charmcraft
rename.sh
passenv =
HOME
TERM
@@ -108,7 +107,6 @@ deps = -r{toxinidir}/build-requirements.txt
commands =
charmcraft clean
charmcraft -v pack
{toxinidir}/rename.sh
[testenv:func-noop]
basepython = python3