Cleanup Master CI

* update:
  - charmcraft.yaml for v3
  - tox.ini to use py3.12 by default
  - test-requirements.in to use zaza for juju3
  - update test bundles to work with charmcraft v3
* generate:
  - merged-requirements-py312.txt
  - test-requirements-py312.txt
* add:
   - update-requirements env to tox.ini and src/tox.ini

Change-Id: I24452609d2bfba5f752c2abc0a20edf748dc161a
Signed-off-by: Seyeong Kim <seyeong.kim@canonical.com>
This commit is contained in:
Seyeong Kim
2026-06-15 06:49:05 +00:00
parent 6c55d14c9c
commit 0b3ff60f8c
11 changed files with 1071 additions and 68 deletions
+6 -16
View File
@@ -4,6 +4,7 @@ parts:
charm:
plugin: reactive
reactive-charm-build-arguments:
- --verbose
- --binary-wheels-from-source
build-packages:
- tox
@@ -11,25 +12,14 @@ parts:
- python3-dev
- libffi-dev
- libssl-dev
- rustc
- cargo
source: src/
build-snaps:
- charm/latest/edge
- charm/3.x/stable
build-environment:
- CHARM_INTERFACES_DIR: $CRAFT_PROJECT_DIR/interfaces/
- CHARM_LAYERS_DIR: $CRAFT_PROJECT_DIR/layers/
base: ubuntu@24.04
platforms:
amd64:
build-on: amd64
build-for: amd64
arm64:
build-on: arm64
build-for: arm64
ppc64el:
build-on: ppc64el
build-for: ppc64el
s390x:
build-on: s390x
build-for: s390x
ubuntu@24.04:amd64:
ubuntu@24.04:arm64:
ubuntu@24.04:ppc64el:
ubuntu@24.04:s390x:
+194
View File
@@ -0,0 +1,194 @@
#
# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# pip-compile --output-file=merged-requirements-py312.txt --unsafe-package=juju --unsafe-package=kubernetes requirements.in test-requirements.in
#
attrs==26.1.0
# via jsonschema
blessings==1.7
# via charm-tools
certifi==2026.5.20
# via requests
cffi==2.0.0
# via cryptography
charm-tools @ git+https://github.com/juju/charm-tools.git
# via -r requirements.in
charmhelpers==1.2.1
# via charms-reactive
charms-openstack @ git+https://github.com/openstack/charms.openstack.git
# via -r test-requirements.in
charms-reactive==1.5.3
# via -r test-requirements.in
charset-normalizer==3.4.7
# via requests
cheetah3==3.2.6.post1
# via charm-tools
cliff==2.18.0
# via
# -r test-requirements.in
# stestr
cmd2==0.8.9
# via cliff
colander==1.8.3
# via charm-tools
coverage==7.14.1
# via -r test-requirements.in
cryptography==3.3.2
# via
# -r requirements.in
# -r test-requirements.in
# secretstorage
dict2colander==0.2
# via charm-tools
distlib==0.4.2
# via virtualenv
filelock==3.29.3
# via virtualenv
fixtures==4.3.2
# via stestr
flake8==7.1.1
# via -r test-requirements.in
hvac==2.4.0
# via -r test-requirements.in
idna==3.18
# via requests
iso8601==2.1.0
# via
# colander
# python-subunit
jaraco-classes==3.4.0
# via keyring
jeepney==0.9.0
# via
# keyring
# secretstorage
jinja2==3.1.6
# via charmhelpers
jsonschema==4.17.3
# via charm-tools
jujubundlelib==0.5.7
# via charm-tools
keyring==23.13.1
# via charm-tools
lxml==6.1.1
# via -r test-requirements.in
markupsafe==3.0.3
# via jinja2
mccabe==0.7.0
# via flake8
mock==5.2.0
# via -r test-requirements.in
more-itertools==11.1.0
# via jaraco-classes
netaddr==1.3.0
# via charmhelpers
netifaces==0.11.0
# via -r test-requirements.in
nose==1.3.7
# via -r test-requirements.in
otherstuf==1.1.0
# via charm-tools
parse==1.22.1
# via stuf
path==16.16.0
# via charm-tools
pathspec==0.10.3
# via charm-tools
pbr==5.6.0
# via
# -r test-requirements.in
# charmhelpers
# cliff
pip==26.1.2
# via charm-tools
platformdirs==4.10.0
# via virtualenv
prettytable==0.7.2
# via cliff
psutil==7.2.2
# via -r test-requirements.in
psycopg2-binary==2.9.12
# via -r test-requirements.in
pyaml==26.2.1
# via charms-reactive
pycodestyle==2.12.1
# via flake8
pycparser==3.0
# via cffi
pyflakes==3.2.0
# via flake8
pyparsing==2.4.7
# via
# -r test-requirements.in
# cliff
# cmd2
pyperclip==1.11.0
# via cmd2
pyrsistent==0.20.0
# via jsonschema
python-subunit==1.4.6
# via stestr
pyyaml==6.0.3
# via
# charm-tools
# charmhelpers
# cliff
# jujubundlelib
# pyaml
# python-subunit
# stestr
requests==2.34.2
# via
# -r test-requirements.in
# charm-tools
# hvac
requirements-parser==0.5.0
# via charm-tools
ruamel-yaml==0.17.40
# via charm-tools
ruamel-yaml-clib==0.2.15
# via ruamel-yaml
secretstorage==3.3.3
# via
# charm-tools
# keyring
setuptools==81.0.0
# via
# -r test-requirements.in
# charm-tools
# colander
simplejson==4.1.1
# via -r requirements.in
six==1.17.0
# via
# blessings
# cliff
# cmd2
# cryptography
stestr==4.2.1
# via -r test-requirements.in
stevedore==5.8.0
# via cliff
stuf==0.9.16
# via otherstuf
tenacity==9.1.4
# via -r test-requirements.in
testtools==2.9.1
# via
# python-subunit
# stestr
tomlkit==0.15.0
# via stestr
translationstring==1.4
# via colander
types-setuptools==82.0.0.20260518
# via requirements-parser
urllib3==2.7.0
# via requests
virtualenv==20.39.1
# via charm-tools
voluptuous==0.16.0
# via stestr
wcwidth==0.8.1
# via cmd2
+719
View File
@@ -0,0 +1,719 @@
#
# This file is autogenerated by pip-compile with Python 3.10
# by the following command:
#
# pip-compile --output-file=test-requirements-py310.txt --unsafe-package=juju --unsafe-package=kubernetes --unsafe-package=websockets test-requirements.in
#
aiohappyeyeballs==2.6.2
# via aiohttp
aiohttp==3.14.1
# via
# python-libmaas
# zaza
aiosignal==1.4.0
# via aiohttp
aodhclient==3.11.0
# via zaza-openstack
argcomplete==3.6.3
# via python-libmaas
async-generator==1.10
# via
# zaza
# zaza-openstack
async-timeout==5.0.1
# via aiohttp
attrs==26.1.0
# via
# aiohttp
# jsonschema
autopage==0.6.0
# via cliff
babel==2.18.0
# via
# python-heatclient
# python-manilaclient
# python-neutronclient
# python-novaclient
# python-octaviaclient
# python-openstackclient
backports-datetime-fromisoformat==2.0.3
# via juju
backports-strenum==1.3.1
# via
# cmd2
# juju
bcrypt==5.0.0
# via paramiko
blessings==1.7
# via charm-tools
boto3==1.43.27
# via zaza-openstack
botocore==1.43.27
# via
# boto3
# s3transfer
certifi==2026.5.20
# via
# kubernetes
# requests
cffi==2.0.0
# via
# cryptography
# pynacl
charm-tools @ git+https://github.com/juju/charm-tools.git
# via -r test-requirements.in
charset-normalizer==3.4.7
# via requests
cheetah3==3.2.6.post1
# via charm-tools
cliff==4.14.0
# via
# aodhclient
# gnocchiclient
# osc-lib
# python-barbicanclient
# python-cloudkittyclient
# python-designateclient
# python-heatclient
# python-ironicclient
# python-neutronclient
# python-octaviaclient
# python-openstackclient
# python-watcherclient
cmd2==3.5.1
# via cliff
colander==1.8.3
# via charm-tools
colorclass==2.2.2
# via python-libmaas
cryptography==3.3.2
# via
# openstacksdk
# paramiko
# pyopenssl
# python-magnumclient
# secretstorage
# trustme
# zaza
# zaza-openstack
debtcollector==3.1.0
# via
# gnocchiclient
# oslo-concurrency
# oslo-config
# oslo-log
# python-designateclient
# python-keystoneclient
# python-manilaclient
# python-neutronclient
decorator==5.3.1
# via
# dogpile-cache
# jsonpath-rw
# openstacksdk
# python-magnumclient
dict2colander==0.2
# via charm-tools
distlib==0.4.2
# via virtualenv
dnspython==2.8.0
# via
# pymongo
# zaza-openstack
dogpile-cache==1.5.0
# via
# openstacksdk
# python-ironicclient
fasteners==0.20
# via oslo-concurrency
filelock==3.29.3
# via virtualenv
frozenlist==1.8.0
# via
# aiohttp
# aiosignal
futurist==1.10.0
# via
# gnocchiclient
# zaza-openstack
gnocchiclient==7.2.0
# via zaza-openstack
google-auth==2.47.0
# via kubernetes
hvac==0.6.4
# via
# juju
# zaza
# zaza-openstack
idna==3.18
# via
# requests
# trustme
# yarl
importlib-metadata==9.0.0
# via keyring
invoke==3.0.3
# via paramiko
iso8601==2.1.0
# via
# colander
# gnocchiclient
# keystoneauth1
# openstacksdk
# oslo-utils
# python-ceilometerclient
# python-heatclient
# python-neutronclient
# python-novaclient
jaraco-classes==3.4.0
# via keyring
jeepney==0.9.0
# via
# keyring
# secretstorage
jinja2==3.1.6
# via
# zaza
# zaza-openstack
jmespath==1.1.0
# via
# boto3
# botocore
# openstacksdk
jsonpatch==1.33
# via
# openstacksdk
# warlock
jsonpath-rw==1.4.0
# via jsonpath-rw-ext
jsonpath-rw-ext==1.2.2
# via python-cloudkittyclient
jsonpointer==3.1.1
# via jsonpatch
jsonschema==4.17.3
# via
# charm-tools
# python-designateclient
# python-ironicclient
# warlock
juju-wait==2.8.4
# via zaza
jujubundlelib==0.5.7
# via charm-tools
keyring==23.13.1
# via charm-tools
keystoneauth1==5.14.0
# via
# aodhclient
# gnocchiclient
# openstacksdk
# osc-lib
# python-barbicanclient
# python-ceilometerclient
# python-cinderclient
# python-cloudkittyclient
# python-designateclient
# python-glanceclient
# python-heatclient
# python-ironicclient
# python-keystoneclient
# python-magnumclient
# python-neutronclient
# python-novaclient
# python-octaviaclient
# python-openstackclient
# python-watcherclient
lxml==6.1.1
# via zaza-openstack
macaroonbakery==1.3.4
# via
# juju
# python-libmaas
# zaza
markdown-it-py==4.2.0
# via rich
markupsafe==3.0.3
# via jinja2
mdurl==0.1.2
# via markdown-it-py
more-itertools==11.1.0
# via jaraco-classes
msgpack==1.2.0
# via oslo-serialization
multidict==6.7.1
# via
# aiohttp
# yarl
mypy-extensions==1.1.0
# via typing-inspect
netaddr==1.3.0
# via
# oslo-config
# oslo-utils
# osprofiler
# python-neutronclient
netifaces==0.11.0
# via python-octaviaclient
oauthlib==3.3.1
# via
# kubernetes
# python-libmaas
# requests-oauthlib
openstacksdk==4.13.0
# via
# os-client-config
# osc-lib
# python-cloudkittyclient
# python-ironicclient
# python-magnumclient
# python-openstackclient
os-client-config==2.3.0
# via python-neutronclient
os-service-types==1.8.2
# via
# keystoneauth1
# openstacksdk
osc-lib==3.2.0
# via
# aodhclient
# python-cloudkittyclient
# python-designateclient
# python-heatclient
# python-ironicclient
# python-magnumclient
# python-neutronclient
# python-octaviaclient
# python-openstackclient
# python-watcherclient
# zaza-openstack
oslo-concurrency==7.5.0
# via osprofiler
oslo-config==6.11.3
# via
# oslo-concurrency
# oslo-log
# osprofiler
# python-keystoneclient
# python-manilaclient
# zaza
# zaza-openstack
oslo-context==6.4.0
# via oslo-log
oslo-i18n==6.8.0
# via
# aodhclient
# osc-lib
# oslo-concurrency
# oslo-config
# oslo-log
# oslo-utils
# python-barbicanclient
# python-ceilometerclient
# python-cinderclient
# python-glanceclient
# python-heatclient
# python-keystoneclient
# python-magnumclient
# python-neutronclient
# python-novaclient
# python-openstackclient
# python-watcherclient
oslo-log==8.2.0
# via
# python-cloudkittyclient
# python-magnumclient
# python-manilaclient
# python-neutronclient
oslo-serialization==5.10.0
# via
# aodhclient
# oslo-log
# osprofiler
# python-barbicanclient
# python-ceilometerclient
# python-designateclient
# python-heatclient
# python-keystoneclient
# python-magnumclient
# python-manilaclient
# python-neutronclient
# python-novaclient
# python-octaviaclient
# python-watcherclient
oslo-utils==10.1.1
# via
# aodhclient
# osc-lib
# oslo-concurrency
# oslo-log
# oslo-serialization
# osprofiler
# python-barbicanclient
# python-ceilometerclient
# python-cinderclient
# python-cloudkittyclient
# python-designateclient
# python-glanceclient
# python-heatclient
# python-ironicclient
# python-keystoneclient
# python-magnumclient
# python-manilaclient
# python-neutronclient
# python-novaclient
# python-octaviaclient
# python-openstackclient
# python-watcherclient
osprofiler==4.4.0
# via aodhclient
otherstuf==1.1.0
# via charm-tools
packaging==26.2
# via
# juju
# oslo-utils
paramiko==5.0.0
# via juju
parse==1.22.1
# via stuf
path==16.16.0
# via charm-tools
pathspec==0.10.3
# via charm-tools
pbr==7.0.3
# via
# aodhclient
# futurist
# jsonpath-rw-ext
# keystoneauth1
# openstacksdk
# os-client-config
# os-service-types
# osc-lib
# oslo-concurrency
# oslo-context
# oslo-i18n
# oslo-log
# oslo-utils
# python-barbicanclient
# python-ceilometerclient
# python-cinderclient
# python-cloudkittyclient
# python-designateclient
# python-glanceclient
# python-heatclient
# python-ironicclient
# python-keystoneclient
# python-magnumclient
# python-manilaclient
# python-neutronclient
# python-novaclient
# python-octaviaclient
# python-openstackclient
# python-watcherclient
pika==1.4.1
# via zaza-openstack
pip==26.1.2
# via charm-tools
platformdirs==4.10.0
# via
# openstacksdk
# python-ironicclient
# virtualenv
ply==3.11
# via jsonpath-rw
prettytable==0.7.2
# via
# cliff
# futurist
# osprofiler
# python-ceilometerclient
# python-cinderclient
# python-glanceclient
# python-heatclient
# python-magnumclient
# python-manilaclient
# python-novaclient
propcache==0.5.2
# via
# aiohttp
# yarl
protobuf==7.35.0
# via macaroonbakery
psutil==7.2.2
# via
# openstacksdk
# oslo-utils
pyasn1==0.6.3
# via
# juju
# pyasn1-modules
# rsa
pyasn1-modules==0.4.2
# via google-auth
pycparser==3.0
# via cffi
pygments==2.20.0
# via rich
pymacaroons==0.13.0
# via macaroonbakery
pymongo==4.17.0
# via python-libmaas
pynacl==1.6.2
# via
# macaroonbakery
# paramiko
# pymacaroons
pyopenssl==21.0.0
# via
# python-glanceclient
# zaza-openstack
pyparsing==3.3.2
# via
# aodhclient
# oslo-utils
pyperclip==1.11.0
# via cmd2
pyrfc3339==1.1
# via macaroonbakery
pyrsistent==0.20.0
# via jsonschema
python-barbicanclient==4.10.0
# via zaza-openstack
python-ceilometerclient==2.9.0
# via zaza-openstack
python-cinderclient==9.9.0
# via
# python-openstackclient
# zaza-openstack
python-cloudkittyclient==6.1.0
# via zaza-openstack
python-dateutil==2.9.0.post0
# via
# botocore
# gnocchiclient
# kubernetes
# oslo-log
python-designateclient==2.12.0
# via zaza-openstack
python-glanceclient==4.12.0
# via
# python-openstackclient
# zaza-openstack
python-heatclient==1.18.1
# via zaza-openstack
python-ironicclient==6.1.0
# via zaza-openstack
python-keystoneclient==3.21.0
# via
# python-manilaclient
# python-neutronclient
# python-openstackclient
# zaza-openstack
python-libmaas==0.6.8
# via zaza
python-magnumclient==4.10.0
# via zaza-openstack
python-manilaclient==1.29.0
# via zaza-openstack
python-neutronclient==6.14.1
# via
# python-octaviaclient
# zaza-openstack
python-novaclient==15.1.1
# via
# python-openstackclient
# zaza-openstack
python-octaviaclient==1.10.1
# via zaza-openstack
python-openstackclient==4.0.2
# via python-octaviaclient
python-swiftclient==3.8.1
# via
# python-heatclient
# zaza-openstack
python-watcherclient==4.10.0
# via zaza-openstack
pytz==2026.2
# via
# pyrfc3339
# python-libmaas
pyyaml==6.0.3
# via
# charm-tools
# cliff
# juju
# juju-wait
# jujubundlelib
# kubernetes
# openstacksdk
# oslo-config
# oslo-utils
# python-cloudkittyclient
# python-heatclient
# python-ironicclient
# python-libmaas
# python-watcherclient
# zaza
# zaza-openstack
requests==2.34.2
# via
# charm-tools
# hvac
# keystoneauth1
# kubernetes
# macaroonbakery
# osc-lib
# oslo-config
# osprofiler
# python-barbicanclient
# python-ceilometerclient
# python-cinderclient
# python-designateclient
# python-glanceclient
# python-heatclient
# python-ironicclient
# python-keystoneclient
# python-magnumclient
# python-manilaclient
# python-neutronclient
# python-octaviaclient
# python-swiftclient
# requests-oauthlib
requests-oauthlib==2.0.0
# via kubernetes
requirements-parser==0.5.0
# via charm-tools
rfc3986==2.0.0
# via oslo-config
rich==15.0.0
# via
# cmd2
# rich-argparse
rich-argparse==1.8.0
# via cmd2
rsa==4.9.1
# via google-auth
ruamel-yaml==0.17.40
# via charm-tools
ruamel-yaml-clib==0.2.15
# via ruamel-yaml
s3transfer==0.18.0
# via boto3
secretstorage==3.3.3
# via
# charm-tools
# keyring
setuptools==81.0.0
# via
# -r test-requirements.in
# charm-tools
# colander
# pbr
simplejson==4.1.1
# via
# python-manilaclient
# python-neutronclient
# python-novaclient
six==1.17.0
# via
# blessings
# cryptography
# futurist
# jsonpath-rw
# kubernetes
# macaroonbakery
# oslo-config
# pymacaroons
# pyopenssl
# python-barbicanclient
# python-ceilometerclient
# python-dateutil
# python-designateclient
# python-heatclient
# python-keystoneclient
# python-manilaclient
# python-neutronclient
# python-novaclient
# python-octaviaclient
# python-openstackclient
# python-swiftclient
stevedore==5.8.0
# via
# cliff
# dogpile-cache
# keystoneauth1
# osc-lib
# oslo-config
# python-ceilometerclient
# python-cinderclient
# python-designateclient
# python-ironicclient
# python-keystoneclient
# python-magnumclient
stuf==0.9.16
# via otherstuf
tenacity==9.1.4
# via
# zaza
# zaza-openstack
terminaltables==3.1.10
# via python-libmaas
toposort==1.10
# via juju
translationstring==1.4
# via colander
trustme==1.2.1
# via zaza-openstack
types-setuptools==82.0.0.20260518
# via requirements-parser
typing-extensions==4.15.0
# via
# aiohttp
# aiosignal
# cmd2
# dogpile-cache
# juju
# keystoneauth1
# multidict
# openstacksdk
# os-service-types
# oslo-context
# typing-inspect
# virtualenv
typing-inspect==0.9.0
# via juju
ujson==5.12.1
# via gnocchiclient
urllib3==2.7.0
# via
# botocore
# kubernetes
# requests
virtualenv==20.39.1
# via charm-tools
warlock==2.1.0
# via python-glanceclient
webob==1.8.10
# via osprofiler
websocket-client==1.9.0
# via kubernetes
wrapt==2.2.1
# via
# debtcollector
# python-glanceclient
yarl==1.24.2
# via aiohttp
zaza==2024.1.1
# via
# -r test-requirements.in
# zaza-openstack
zaza-openstack @ git+https://github.com/openstack-charmers/zaza-openstack-tests.git
# via -r test-requirements.in
zipp==4.1.0
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
# juju
# kubernetes
# websockets
@@ -5,5 +5,7 @@
#
# Functional Test Requirements (let Zaza's dependencies solve all dependencies here!)
git+https://github.com/openstack-charmers/zaza.git#egg=zaza
zaza==2024.*
git+https://github.com/openstack-charmers/zaza-openstack-tests.git#egg=zaza.openstack
setuptools<82.0.0
git+https://github.com/juju/charm-tools.git
+1 -1
View File
@@ -76,7 +76,7 @@ applications:
manila-ganesha-az1:
num_units: 3
charm: ../../../manila-ganesha.charm
charm: ../../../manila-ganesha_ubuntu@24.04-amd64.charm
options:
openstack-origin: *openstack-origin
to:
+1 -1
View File
@@ -75,7 +75,7 @@ services:
manila-ganesha-az1:
num_units: 3
charm: ../../../manila-ganesha.charm
charm: ../../../manila-ganesha_ubuntu@24.04-amd64.charm
options:
openstack-origin: *openstack-origin
to:
+9 -7
View File
@@ -12,6 +12,7 @@ sitepackages = False
skip_missing_interpreters = False
[testenv]
basepython = python3.10
# We use tox mainly for virtual environment management for test requirements
# and do not install the charm code as a Python package into that environment.
# Ref: https://tox.wiki/en/latest/config.html#skip_install
@@ -26,30 +27,31 @@ passenv =
OS_*
TEST_*
deps =
-c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza-openstack-tests/master/constraints/constraints-noble.txt}
-r{toxinidir}/test-requirements.txt
-c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza/master/constraints-juju36.txt}
-r{toxinidir}/test-requirements-py310.txt
[testenv:update-requirements]
basepython = python3.10
deps = pip-tools
commands =
pip-compile --unsafe-package juju --unsafe-package kubernetes --unsafe-package websockets --output-file=test-requirements-py310.txt test-requirements.in
[testenv:pep8]
basepython = python3
commands = charm-proof
[testenv:func-noop]
basepython = python3
commands =
functest-run-suite --help
[testenv:func]
basepython = python3
commands =
functest-run-suite --keep-model
[testenv:func-smoke]
basepython = python3
commands =
functest-run-suite --keep-model --smoke
[testenv:func-target]
basepython = python3
commands =
functest-run-suite --keep-model --bundle {posargs}
+118
View File
@@ -0,0 +1,118 @@
#
# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# pip-compile --output-file=test-requirements-py312.txt --unsafe-package=juju --unsafe-package=kubernetes test-requirements.in
#
certifi==2026.5.20
# via requests
cffi==2.0.0
# via cryptography
charmhelpers==1.2.1
# via charms-reactive
charms-openstack @ git+https://github.com/openstack/charms.openstack.git
# via -r test-requirements.in
charms-reactive==1.5.3
# via -r test-requirements.in
charset-normalizer==3.4.7
# via requests
cliff==2.18.0
# via
# -r test-requirements.in
# stestr
cmd2==0.8.9
# via cliff
coverage==7.14.1
# via -r test-requirements.in
cryptography==3.3.2
# via -r test-requirements.in
fixtures==4.3.2
# via stestr
flake8==7.1.1
# via -r test-requirements.in
hvac==2.4.0
# via -r test-requirements.in
idna==3.18
# via requests
iso8601==2.1.0
# via python-subunit
jinja2==3.1.6
# via charmhelpers
lxml==6.1.1
# via -r test-requirements.in
markupsafe==3.0.3
# via jinja2
mccabe==0.7.0
# via flake8
mock==5.2.0
# via -r test-requirements.in
netaddr==1.3.0
# via charmhelpers
netifaces==0.11.0
# via -r test-requirements.in
nose==1.3.7
# via -r test-requirements.in
pbr==5.6.0
# via
# -r test-requirements.in
# charmhelpers
# cliff
prettytable==0.7.2
# via cliff
psutil==7.2.2
# via -r test-requirements.in
psycopg2-binary==2.9.12
# via -r test-requirements.in
pyaml==26.2.1
# via charms-reactive
pycodestyle==2.12.1
# via flake8
pycparser==3.0
# via cffi
pyflakes==3.2.0
# via flake8
pyparsing==2.4.7
# via
# -r test-requirements.in
# cliff
# cmd2
pyperclip==1.11.0
# via cmd2
python-subunit==1.4.6
# via stestr
pyyaml==6.0.3
# via
# charmhelpers
# cliff
# pyaml
# python-subunit
# stestr
requests==2.34.2
# via
# -r test-requirements.in
# hvac
setuptools==81.0.0
# via -r test-requirements.in
six==1.17.0
# via
# cliff
# cmd2
# cryptography
stestr==4.2.1
# via -r test-requirements.in
stevedore==5.8.0
# via cliff
tenacity==9.1.4
# via -r test-requirements.in
testtools==2.9.1
# via
# python-subunit
# stestr
tomlkit==0.15.0
# via stestr
urllib3==2.7.0
# via requests
voluptuous==0.16.0
# via stestr
wcwidth==0.8.1
# via cmd2
@@ -35,3 +35,5 @@ cryptography<3.4 # vault, keystone-saml-mellon
lxml # keystone-saml-mellon
hvac # vault, barbican-vault
psutil # cinder-lvm
setuptools<82.0.0
flake8==7.1.1
+18 -42
View File
@@ -12,6 +12,7 @@ sitepackages = False
skip_missing_interpreters = False
[testenv]
basepython = python3.12
# We use tox mainly for virtual environment management for test requirements
# and do not install the charm code as a Python package into that environment.
# Ref: https://tox.wiki/en/latest/config.html#skip_install
@@ -23,77 +24,53 @@ setenv = VIRTUAL_ENV={envdir}
CHARM_INTERFACES_DIR={toxinidir}/interfaces
JUJU_REPOSITORY={toxinidir}/build
passenv =
no_proxy
http_proxy
https_proxy
CHARM_INTERFACES_DIR
CHARM_LAYERS_DIR
JUJU_REPOSITORY
# The following are needed for building in environments that use a proxy
# for external access.
http_proxy
https_proxy
no_proxy
allowlist_externals =
charmcraft
{toxinidir}/rename.sh
bash
tox
deps =
-r{toxinidir}/requirements.txt
-c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza/master/constraints-juju36.txt}
-r{toxinidir}/merged-requirements-py312.txt
[testenv:update-requirements]
basepython = python3.12
deps = pip-tools
commands =
pip-compile --unsafe-package juju --unsafe-package kubernetes --output-file=test-requirements-py312.txt test-requirements.in
pip-compile --unsafe-package juju --unsafe-package kubernetes --output-file=merged-requirements-py312.txt requirements.in test-requirements.in
[testenv:build]
basepython = python3
deps =
# charmcraft clean is done to ensure that
# `tox -e build` always performs a clean, repeatable build.
# For faster rebuilds during development,
# directly run `charmcraft -v pack && ./rename.sh`.
# directly run `charmcraft -v pack
commands =
charmcraft clean
charmcraft -v pack
{toxinidir}/rename.sh
charmcraft clean
[testenv:build-reactive]
basepython = python3
commands =
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
commands =
charm-build --log-level DEBUG --write-lock-file -o {toxinidir}/build/builds src {posargs}
[testenv:py3]
basepython = python3
deps =
-c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza-openstack-tests/master/constraints/constraints-noble.txt}
-r{toxinidir}/test-requirements.txt
commands = stestr run --slowest {posargs}
[testenv:py312]
basepython = python3.12
deps =
-c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza-openstack-tests/master/constraints/constraints-noble.txt}
-r{toxinidir}/test-requirements.txt
commands = stestr run --slowest {posargs}
[testenv:py310]
basepython = python3.10
deps =
-c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza-openstack-tests/master/constraints/constraints-noble.txt}
-r{toxinidir}/test-requirements.txt
commands = stestr run --slowest {posargs}
[testenv:pep8]
basepython = python3
deps = flake8==7.1.1
git+https://github.com/juju/charm-tools.git
deps = -r {toxinidir}/test-requirements-py312.txt
commands = flake8 {posargs} src unit_tests
[testenv:cover]
# Technique based heavily upon
# https://github.com/openstack/nova/blob/master/tox.ini
basepython = python3
deps =
-c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza-openstack-tests/master/constraints/constraints-noble.txt}
-r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
setenv =
{[testenv]setenv}
PYTHON=coverage run
@@ -117,7 +94,6 @@ omit =
unit_tests/*
[testenv:venv]
basepython = python3
commands = {posargs}
[flake8]