From 40ca68e1e352abfbdebbee4c585af03980a08241 Mon Sep 17 00:00:00 2001 From: Felipe Reyes Date: Wed, 13 Aug 2025 17:57:22 -0400 Subject: [PATCH] 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 --- charmcraft.yaml | 21 ++++---- metadata.yaml | 1 + osci.yaml | 14 ++++- rename.sh | 13 ----- tests/bundles/jammy.yaml | 2 +- tests/bundles/noble.yaml | 57 ++++++++++++++++++++ tests/bundles/overlays/jammy.yaml.j2 | 5 +- tests/bundles/overlays/local_overlay.yaml.j2 | 4 ++ tests/bundles/overlays/noble.yaml.j2 | 1 + tests/tests.yaml | 3 +- tox.ini | 2 - 11 files changed, 91 insertions(+), 32 deletions(-) delete mode 100755 rename.sh create mode 100644 tests/bundles/noble.yaml mode change 100644 => 120000 tests/bundles/overlays/jammy.yaml.j2 create mode 100644 tests/bundles/overlays/local_overlay.yaml.j2 create mode 120000 tests/bundles/overlays/noble.yaml.j2 diff --git a/charmcraft.yaml b/charmcraft.yaml index 652ab74..90d6ab8 100644 --- a/charmcraft.yaml +++ b/charmcraft.yaml @@ -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: diff --git a/metadata.yaml b/metadata.yaml index e6845ae..4b06a8c 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -10,6 +10,7 @@ tags: - openstack series: - jammy +- noble extra-bindings: public: admin: diff --git a/osci.yaml b/osci.yaml index 6a9d01b..809359f 100644 --- a/osci.yaml +++ b/osci.yaml @@ -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 diff --git a/rename.sh b/rename.sh deleted file mode 100755 index d0c35c9..0000000 --- a/rename.sh +++ /dev/null @@ -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 diff --git a/tests/bundles/jammy.yaml b/tests/bundles/jammy.yaml index 4f5f473..43a7342 100644 --- a/tests/bundles/jammy.yaml +++ b/tests/bundles/jammy.yaml @@ -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 diff --git a/tests/bundles/noble.yaml b/tests/bundles/noble.yaml new file mode 100644 index 0000000..86a8898 --- /dev/null +++ b/tests/bundles/noble.yaml @@ -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' diff --git a/tests/bundles/overlays/jammy.yaml.j2 b/tests/bundles/overlays/jammy.yaml.j2 deleted file mode 100644 index b81ecfd..0000000 --- a/tests/bundles/overlays/jammy.yaml.j2 +++ /dev/null @@ -1,4 +0,0 @@ -applications: - openstack-loadbalancer: - options: - vip: '{{ TEST_VIP00 }}' diff --git a/tests/bundles/overlays/jammy.yaml.j2 b/tests/bundles/overlays/jammy.yaml.j2 new file mode 120000 index 0000000..f5b8eb8 --- /dev/null +++ b/tests/bundles/overlays/jammy.yaml.j2 @@ -0,0 +1 @@ +local_overlay.yaml.j2 \ No newline at end of file diff --git a/tests/bundles/overlays/local_overlay.yaml.j2 b/tests/bundles/overlays/local_overlay.yaml.j2 new file mode 100644 index 0000000..b81ecfd --- /dev/null +++ b/tests/bundles/overlays/local_overlay.yaml.j2 @@ -0,0 +1,4 @@ +applications: + openstack-loadbalancer: + options: + vip: '{{ TEST_VIP00 }}' diff --git a/tests/bundles/overlays/noble.yaml.j2 b/tests/bundles/overlays/noble.yaml.j2 new file mode 120000 index 0000000..f5b8eb8 --- /dev/null +++ b/tests/bundles/overlays/noble.yaml.j2 @@ -0,0 +1 @@ +local_overlay.yaml.j2 \ No newline at end of file diff --git a/tests/tests.yaml b/tests/tests.yaml index 122bad8..66a5085 100644 --- a/tests/tests.yaml +++ b/tests/tests.yaml @@ -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 diff --git a/tox.ini b/tox.ini index 7bb995e..335cf91 100644 --- a/tox.ini +++ b/tox.ini @@ -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