diff --git a/charmcraft.yaml b/charmcraft.yaml index 9e3569ea..25ad5793 100644 --- a/charmcraft.yaml +++ b/charmcraft.yaml @@ -8,28 +8,49 @@ parts: - python3-dev - libffi-dev - libssl-dev + - libxml2-dev + - libxslt1-dev + - rustc + - cargo + build-environment: + - MAKEFLAGS: -j$(nproc) override-build: | apt-get install ca-certificates -y tox -e build-reactive override-stage: | - echo "Copying charm to staging area: $CHARMCRAFT_STAGE" - NAME=$(ls $CHARMCRAFT_PART_BUILD/build/builds) - cp -r $CHARMCRAFT_PART_BUILD/build/builds/$NAME/* $CHARMCRAFT_STAGE/ + echo "Copying charm to staging area: $CRAFT_STAGE" + NAME=$(ls $CRAFT_PART_BUILD/build/builds) + cp -r $CRAFT_PART_BUILD/build/builds/$NAME/* $CRAFT_STAGE/ override-prime: | # For some reason, the normal priming chokes on the fact that there's a # hooks directory. - cp -r $CHARMCRAFT_STAGE/* . + cp -r $CRAFT_STAGE/* . + # Charmcraft looks for this specific entry point. + mkdir src + ln -sf ../hooks/start src/charm.py bases: - - build-on: - - name: ubuntu - channel: "20.04" - architectures: - - amd64 - run-on: - - name: ubuntu - channel: "20.04" - architectures: [amd64, s390x, ppc64el, arm64] - - name: ubuntu - channel: "22.04" - architectures: [amd64, s390x, ppc64el, arm64] + - name: ubuntu + channel: "20.04" + architectures: [amd64] + - name: ubuntu + channel: "20.04" + architectures: [arm64] + - name: ubuntu + channel: "20.04" + architectures: [ppc64el] + - name: ubuntu + channel: "20.04" + architectures: [s390x] + - name: ubuntu + channel: "22.04" + architectures: [amd64] + - name: ubuntu + channel: "22.04" + architectures: [arm64] + - name: ubuntu + channel: "22.04" + architectures: [ppc64el] + - name: ubuntu + channel: "22.04" + architectures: [s390x] diff --git a/osci.yaml b/osci.yaml index 8132651a..70970996 100644 --- a/osci.yaml +++ b/osci.yaml @@ -18,6 +18,7 @@ needs_charm_build: true charm_build_name: octavia build_type: charmcraft + charmcraft_channel: 2.0/stable - job: name: focal-xena-ha diff --git a/src/metadata.yaml b/src/metadata.yaml index c9eca7d3..abeb6cba 100644 --- a/src/metadata.yaml +++ b/src/metadata.yaml @@ -19,7 +19,7 @@ tags: - openstack series: - focal -- impish +- jammy subordinate: false provides: nrpe-external-master: diff --git a/src/tests/bundles/focal-xena-ha-ovn.yaml b/src/tests/bundles/focal-xena-ha-ovn.yaml index 06f90f62..87879351 100644 --- a/src/tests/bundles/focal-xena-ha-ovn.yaml +++ b/src/tests/bundles/focal-xena-ha-ovn.yaml @@ -114,30 +114,30 @@ applications: channel: yoga/edge octavia-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge keystone-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge nova-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge glance-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge neutron-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge placement-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge vault-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge mysql-innodb-cluster: constraints: mem=3072M charm: ch:mysql-innodb-cluster num_units: 3 - channel: 8.0.19/edge + channel: 8.0/edge neutron-api: constraints: cores=4 charm: ch:neutron-api @@ -171,12 +171,15 @@ applications: charm: ch:hacluster channel: 2.0.3/edge ovn-chassis-octavia: + series: *series charm: ch:ovn-chassis - channel: latest/edge + channel: 22.03/edge + options: + ovn-source: distro octavia: constraints: cores=8 series: *series - charm: ../../../octavia.charm + charm: ../../../octavia_ubuntu-20.04-amd64.charm num_units: 3 options: openstack-origin: *openstack-origin @@ -191,13 +194,20 @@ applications: num_units: 1 options: use_swift: False + mirror_list: "[{url: 'http://cloud-images.ubuntu.com/releases/', + name_prefix: 'ubuntu:released', + path: 'streams/v1/index.sjson', max: 1, + item_filters: [ + 'release~(focal)', + 'arch~(x86_64|amd64)', + 'ftype~(disk1.img|disk.img)']}]" channel: yoga/edge octavia-diskimage-retrofit: charm: ch:octavia-diskimage-retrofit options: amp-image-tag: 'octavia-amphora' retrofit-series: *series - retrofit-uca-pocket: wallaby + retrofit-uca-pocket: xena channel: yoga/edge placement: charm: ch:placement @@ -216,10 +226,12 @@ applications: num_units: 3 options: source: *openstack-origin - channel: latest/edge + channel: 22.03/edge ovn-chassis: charm: ch:ovn-chassis - channel: latest/edge + channel: 22.03/edge + options: + ovn-source: distro vault: charm: ch:vault num_units: 1 diff --git a/src/tests/bundles/focal-xena-ha.yaml b/src/tests/bundles/focal-xena-ha.yaml index be72eedd..69f7fc93 100644 --- a/src/tests/bundles/focal-xena-ha.yaml +++ b/src/tests/bundles/focal-xena-ha.yaml @@ -201,7 +201,7 @@ applications: octavia: constraints: cores=8 series: *series - charm: ../../../octavia.charm + charm: ../../../octavia_ubuntu-20.04-amd64.charm num_units: 3 options: openstack-origin: *openstack-origin @@ -219,6 +219,13 @@ applications: num_units: 1 options: use_swift: False + mirror_list: "[{url: 'http://cloud-images.ubuntu.com/releases/', + name_prefix: 'ubuntu:released', + path: 'streams/v1/index.sjson', max: 1, + item_filters: [ + 'release~(focal)', + 'arch~(x86_64|amd64)', + 'ftype~(disk1.img|disk.img)']}]" channel: yoga/edge octavia-diskimage-retrofit: series: *series @@ -226,7 +233,7 @@ applications: options: amp-image-tag: 'octavia-amphora' retrofit-series: *series - retrofit-uca-pocket: wallaby + retrofit-uca-pocket: xena channel: yoga/edge placement: series: *series diff --git a/src/tests/bundles/focal-yoga-ha-ovn.yaml b/src/tests/bundles/focal-yoga-ha-ovn.yaml index 22629cde..65f0bbe0 100644 --- a/src/tests/bundles/focal-yoga-ha-ovn.yaml +++ b/src/tests/bundles/focal-yoga-ha-ovn.yaml @@ -171,12 +171,13 @@ applications: charm: ch:hacluster channel: 2.0.3/edge ovn-chassis-octavia: + series: *series charm: ch:ovn-chassis - channel: latest/edge + channel: 22.03/edge octavia: constraints: cores=8 series: *series - charm: ../../../octavia.charm + charm: ../../../octavia_ubuntu-20.04-amd64.charm num_units: 3 options: openstack-origin: *openstack-origin @@ -191,13 +192,20 @@ applications: num_units: 1 options: use_swift: False + mirror_list: "[{url: 'http://cloud-images.ubuntu.com/releases/', + name_prefix: 'ubuntu:released', + path: 'streams/v1/index.sjson', max: 1, + item_filters: [ + 'release~(focal)', + 'arch~(x86_64|amd64)', + 'ftype~(disk1.img|disk.img)']}]" channel: yoga/edge octavia-diskimage-retrofit: charm: ch:octavia-diskimage-retrofit options: amp-image-tag: 'octavia-amphora' retrofit-series: *series - retrofit-uca-pocket: wallaby + retrofit-uca-pocket: yoga channel: yoga/edge placement: charm: ch:placement @@ -216,10 +224,10 @@ applications: num_units: 3 options: source: *openstack-origin - channel: latest/edge + channel: 22.03/edge ovn-chassis: charm: ch:ovn-chassis - channel: latest/edge + channel: 22.03/edge vault: charm: ch:vault num_units: 1 diff --git a/src/tests/bundles/focal-yoga-ha.yaml b/src/tests/bundles/focal-yoga-ha.yaml index 52891a03..a4a424fd 100644 --- a/src/tests/bundles/focal-yoga-ha.yaml +++ b/src/tests/bundles/focal-yoga-ha.yaml @@ -187,7 +187,7 @@ applications: octavia: constraints: cores=8 series: *series - charm: ../../../octavia.charm + charm: ../../../octavia_ubuntu-20.04-amd64.charm num_units: 3 options: openstack-origin: *openstack-origin @@ -203,13 +203,20 @@ applications: num_units: 1 options: use_swift: False + mirror_list: "[{url: 'http://cloud-images.ubuntu.com/releases/', + name_prefix: 'ubuntu:released', + path: 'streams/v1/index.sjson', max: 1, + item_filters: [ + 'release~(focal)', + 'arch~(x86_64|amd64)', + 'ftype~(disk1.img|disk.img)']}]" channel: yoga/edge octavia-diskimage-retrofit: charm: ch:octavia-diskimage-retrofit options: amp-image-tag: 'octavia-amphora' retrofit-series: *series - retrofit-uca-pocket: wallaby + retrofit-uca-pocket: yoga channel: yoga/edge placement: charm: ch:placement diff --git a/src/tests/bundles/jammy-yoga-ha-ovn.yaml b/src/tests/bundles/jammy-yoga-ha-ovn.yaml index dffd767b..43dc5b88 100644 --- a/src/tests/bundles/jammy-yoga-ha-ovn.yaml +++ b/src/tests/bundles/jammy-yoga-ha-ovn.yaml @@ -114,30 +114,30 @@ applications: channel: yoga/edge octavia-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge keystone-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge nova-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge glance-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge neutron-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge placement-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge vault-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge mysql-innodb-cluster: constraints: mem=3072M charm: ch:mysql-innodb-cluster num_units: 3 - channel: 8.0.19/edge + channel: 8.0/edge neutron-api: constraints: cores=4 charm: ch:neutron-api @@ -169,14 +169,15 @@ applications: hacluster-octavia: series: *series charm: ch:hacluster - channel: 2.0.3/edge + channel: 2.4/edge ovn-chassis-octavia: + series: *series charm: ch:ovn-chassis channel: latest/edge octavia: constraints: cores=8 series: *series - charm: ../../../octavia.charm + charm: ../../../octavia_ubuntu-22.04-amd64.charm num_units: 3 options: openstack-origin: *openstack-origin @@ -185,7 +186,7 @@ applications: rabbitmq-server: charm: ch:rabbitmq-server num_units: 1 - channel: 3.8/edge + channel: 3.9/edge glance-simplestreams-sync: charm: ch:glance-simplestreams-sync num_units: 1 @@ -195,16 +196,16 @@ applications: name_prefix: 'ubuntu:released', path: 'streams/v1/index.sjson', max: 1, item_filters: [ - 'release~(bionic|focal|hirsute)', + 'release~(jammy)', 'arch~(x86_64|amd64)', 'ftype~(disk1.img|disk.img)']}]" - channel: yoga/edge + channel: latest/edge octavia-diskimage-retrofit: charm: ch:octavia-diskimage-retrofit options: amp-image-tag: 'octavia-amphora' retrofit-series: *series - channel: yoga/edge + channel: latest/edge placement: charm: ch:placement num_units: 1 diff --git a/src/tests/bundles/jammy-yoga-ha.yaml b/src/tests/bundles/jammy-yoga-ha.yaml index 0c681c4d..4f21b2eb 100644 --- a/src/tests/bundles/jammy-yoga-ha.yaml +++ b/src/tests/bundles/jammy-yoga-ha.yaml @@ -106,30 +106,30 @@ applications: channel: yoga/edge octavia-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge keystone-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge nova-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge glance-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge neutron-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge placement-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge vault-mysql-router: charm: ch:mysql-router - channel: 8.0.19/edge + channel: 8.0/edge mysql-innodb-cluster: constraints: mem=3072M charm: ch:mysql-innodb-cluster num_units: 3 - channel: 8.0.19/edge + channel: 8.0/edge neutron-api: charm: ch:neutron-api num_units: 1 @@ -181,13 +181,14 @@ applications: debug: True channel: yoga/edge hacluster-octavia: + series: *series charm: ch:hacluster num_units: 0 - channel: 2.0.3/edge + channel: 2.4/edge octavia: constraints: cores=8 series: *series - charm: ../../../octavia.charm + charm: ../../../octavia_ubuntu-22.04-amd64.charm num_units: 3 options: openstack-origin: *openstack-origin @@ -197,7 +198,7 @@ applications: rabbitmq-server: charm: ch:rabbitmq-server num_units: 1 - channel: 3.8/edge + channel: 3.9/edge glance-simplestreams-sync: charm: ch:glance-simplestreams-sync num_units: 1 @@ -207,16 +208,16 @@ applications: name_prefix: 'ubuntu:released', path: 'streams/v1/index.sjson', max: 1, item_filters: [ - 'release~(bionic|focal|hirsute)', + 'release~(jammy)', 'arch~(x86_64|amd64)', 'ftype~(disk1.img|disk.img)']}]" - channel: yoga/edge + channel: latest/edge octavia-diskimage-retrofit: charm: ch:octavia-diskimage-retrofit options: amp-image-tag: 'octavia-amphora' retrofit-series: *series - channel: yoga/edge + channel: latest/edge placement: charm: ch:placement num_units: 1 diff --git a/src/tests/tests.yaml b/src/tests/tests.yaml index 8dbfbec2..660ee52f 100644 --- a/src/tests/tests.yaml +++ b/src/tests/tests.yaml @@ -44,7 +44,7 @@ target_deploy_status: configure: - zaza.openstack.charm_tests.vault.setup.auto_initialize - zaza.openstack.charm_tests.glance_simplestreams_sync.setup.sync_images -- zaza.openstack.charm_tests.octavia.setup.ensure_lts_images +- zaza.openstack.charm_tests.glance.setup.add_lts_image - zaza.openstack.charm_tests.octavia.diskimage_retrofit.setup.retrofit_amphora_image - zaza.openstack.charm_tests.octavia.setup.configure_octavia - zaza.openstack.charm_tests.nova.setup.create_flavors diff --git a/src/wheelhouse.txt b/src/wheelhouse.txt index 5d08ad9e..f0f7a788 100644 --- a/src/wheelhouse.txt +++ b/src/wheelhouse.txt @@ -1,41 +1,12 @@ -# cachetools > 4.2.1 requires setuptools >= 46.4 which breaks most install targets -cachetools<4.2.2 -# Several dependencies now require setuptools-scm>=3.0,<=3.4.1 which requires toml -setuptools-scm>=3.0,<=3.4.1 -toml -keystoneauth1 -pbr -python-novaclient -python-neutronclient -# REMOVEME -- fix for https://github.com/pyparsing/pyparsing/issues/164 -pyparsing==2.4.2 -poetry-core -neutron_lib # neutron-lib indirectly requires Tempits (neutron-lib -> oslo.db -> sqlalchemy-migrate -> Tempita) # and Tempita is incompatible with setuptools 58+ Tempita<0.5 -pytest-runner -# python-zipp 2.x introduces a requirement for setuptools 42.x which is not available. -# resolve conflict: -# layer-basic requires setuptools<42, zipp>=2.0.0 requires setuptools>42 -# LP: #1862186 -zipp<2.0.0 -# Mako, importlib_metadata, importlib_resources, cmd2, pytest-runner, soupsieve, cliff all pinned -# for compat with setuptools<42 -importlib_metadata<3.1.0 -importlib_resources<4.1.0 -cmd2<1.5.0 -pytest-runner<5.3.0 -soupsieve<2.2 -Mako<1.2.0 -cliff<3.9.0 # cliff 3.9 includes dep on autopage which is dep on setuptools>42 +keystoneauth1 +python-novaclient +python-neutronclient +neutron_lib tenacity -# cryptography 3.4 introduces a requirement for rust code in the module. As it has to be compiled -# on the machine during install, this breaks installs. Instead pin to <3.4 until a solution can be -# found that doesn't require compiling on the target machine. -# LP: #1915171 -cryptography<3.4 git+https://github.com/openstack/charms.openstack.git#egg=charms.openstack diff --git a/tox.ini b/tox.ini index df64a42b..8d80d43f 100644 --- a/tox.ini +++ b/tox.ini @@ -11,18 +11,6 @@ envlist = pep8,py3 sitepackages = False # NOTE: Avoid false positives by not skipping missing interpreters. 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 @@ -41,7 +29,6 @@ allowlist_externals = charmcraft bash tox - rename.sh deps = -r{toxinidir}/requirements.txt @@ -50,13 +37,12 @@ basepython = python3 deps = -r{toxinidir}/build-requirements.txt commands = charmcraft clean - charmcraft -v build - {toxinidir}/rename.sh + charmcraft -v pack [testenv:build-reactive] basepython = python3 commands = - charm-build --log-level DEBUG --use-lock-file-branches -o {toxinidir}/build/builds src {posargs} + charm-build --log-level DEBUG --use-lock-file-branches --binary-wheels-from-source -o {toxinidir}/build/builds src {posargs} [testenv:add-build-lock-file] basepython = python3 @@ -96,7 +82,7 @@ commands = stestr run --slowest {posargs} [testenv:pep8] basepython = python3 deps = flake8==3.9.2 - charm-tools==2.8.3 + git+https://github.com/juju/charm-tools.git commands = flake8 {posargs} src unit_tests [testenv:func-target]