diff --git a/.gitreview b/.gitreview index 9e96d0d..f4c43cd 100644 --- a/.gitreview +++ b/.gitreview @@ -2,3 +2,5 @@ host=review.opendev.org port=29418 project=openstack/charm-heat.git + +defaultbranch=stable/2024.1 diff --git a/charm-helpers-hooks.yaml b/charm-helpers-hooks.yaml index e8fef1b..35ff68d 100644 --- a/charm-helpers-hooks.yaml +++ b/charm-helpers-hooks.yaml @@ -1,4 +1,4 @@ -repo: https://github.com/juju/charm-helpers +repo: https://github.com/juju/charm-helpers@stable/caracal destination: hooks/charmhelpers include: - core diff --git a/hooks/charmhelpers/contrib/network/ip.py b/hooks/charmhelpers/contrib/network/ip.py index cf9926b..f3b4864 100644 --- a/hooks/charmhelpers/contrib/network/ip.py +++ b/hooks/charmhelpers/contrib/network/ip.py @@ -16,6 +16,7 @@ import glob import re import subprocess import socket +import ssl from functools import partial @@ -527,19 +528,56 @@ def get_hostname(address, fqdn=True): return result.split('.')[0] -def port_has_listener(address, port): +class SSLPortCheckInfo(object): + + def __init__(self, key, cert, ca_cert, check_hostname=False): + self.key = key + self.cert = cert + self.ca_cert = ca_cert + # NOTE: by default we do not check hostname since the port check is + # typically performed using 0.0.0.0 which will not match the + # certificate. Hence the default for this is False. + self.check_hostname = check_hostname + + @property + def ssl_context(self): + context = ssl.create_default_context() + context.check_hostname = self.check_hostname + context.load_cert_chain(self.cert, self.key) + context.load_verify_locations(self.ca_cert) + return context + + +def port_has_listener(address, port, sslinfo=None): """ Returns True if the address:port is open and being listened to, - else False. + else False. By default uses netcat to check ports but if sslinfo is + provided will use an SSL connection instead. @param address: an IP address or hostname @param port: integer port + @param sslinfo: optional SSLPortCheckInfo object. + If provided, the check is performed using an ssl + connection. Note calls 'zc' via a subprocess shell """ - cmd = ['nc', '-z', address, str(port)] - result = subprocess.call(cmd) - return not (bool(result)) + if not sslinfo: + cmd = ['nc', '-z', address, str(port)] + result = subprocess.call(cmd) + return not (bool(result)) + + try: + with socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) as sock: + ssock = sslinfo.ssl_context.wrap_socket(sock, + server_hostname=address) + ssock.connect((address, port)) + # this bit is crucial to ensure tls close_notify is sent + ssock.unwrap() + + return True + except ConnectionRefusedError: + return False def assert_charm_supports_ipv6(): diff --git a/hooks/charmhelpers/contrib/openstack/context.py b/hooks/charmhelpers/contrib/openstack/context.py index 1e667fb..cd70b55 100644 --- a/hooks/charmhelpers/contrib/openstack/context.py +++ b/hooks/charmhelpers/contrib/openstack/context.py @@ -202,6 +202,21 @@ class OSContextGenerator(object): return self.related +class KeystoneAuditMiddleware(OSContextGenerator): + def __init__(self, service: str) -> None: + self.service_name = service + + def __call__(self): + """Return context dictionary containing configuration status of + audit-middleware and the charm service name. + """ + ctxt = { + 'audit_middleware': config('audit-middleware') or False, + 'service_name': self.service_name + } + return ctxt + + class SharedDBContext(OSContextGenerator): interfaces = ['shared-db'] diff --git a/hooks/charmhelpers/contrib/openstack/templates/section-audit-middleware-notifications b/hooks/charmhelpers/contrib/openstack/templates/section-audit-middleware-notifications new file mode 100644 index 0000000..1f88014 --- /dev/null +++ b/hooks/charmhelpers/contrib/openstack/templates/section-audit-middleware-notifications @@ -0,0 +1,4 @@ +{% if audit_middleware -%} +[audit_middleware_notifications] +driver = log +{% endif -%} \ No newline at end of file diff --git a/hooks/charmhelpers/contrib/openstack/templates/section-filter-audit b/hooks/charmhelpers/contrib/openstack/templates/section-filter-audit new file mode 100644 index 0000000..11512ae --- /dev/null +++ b/hooks/charmhelpers/contrib/openstack/templates/section-filter-audit @@ -0,0 +1,6 @@ +{% if audit_middleware and service_name -%} +[filter:audit] +paste.filter_factory = keystonemiddleware.audit:filter_factory +audit_map_file = /etc/{{ service_name }}/api_audit_map.conf +service_name = {{ service_name }} +{% endif -%} \ No newline at end of file diff --git a/hooks/charmhelpers/contrib/openstack/utils.py b/hooks/charmhelpers/contrib/openstack/utils.py index da711c6..82c28d8 100644 --- a/hooks/charmhelpers/contrib/openstack/utils.py +++ b/hooks/charmhelpers/contrib/openstack/utils.py @@ -1207,12 +1207,14 @@ def _ows_check_services_running(services, ports): return ows_check_services_running(services, ports) -def ows_check_services_running(services, ports): +def ows_check_services_running(services, ports, ssl_check_info=None): """Check that the services that should be running are actually running and that any ports specified are being listened to. @param services: list of strings OR dictionary specifying services/ports @param ports: list of ports + @param ssl_check_info: SSLPortCheckInfo object. If provided, port checks + will be done using an SSL connection. @returns state, message: strings or None, None """ messages = [] @@ -1228,7 +1230,7 @@ def ows_check_services_running(services, ports): # also verify that the ports that should be open are open # NB, that ServiceManager objects only OPTIONALLY have ports map_not_open, ports_open = ( - _check_listening_on_services_ports(services)) + _check_listening_on_services_ports(services, ssl_check_info)) if not all(ports_open): # find which service has missing ports. They are in service # order which makes it a bit easier. @@ -1243,7 +1245,8 @@ def ows_check_services_running(services, ports): if ports is not None: # and we can also check ports which we don't know the service for - ports_open, ports_open_bools = _check_listening_on_ports_list(ports) + ports_open, ports_open_bools = \ + _check_listening_on_ports_list(ports, ssl_check_info) if not all(ports_open_bools): messages.append( "Ports which should be open, but are not: {}" @@ -1302,7 +1305,8 @@ def _check_running_services(services): return list(zip(services, services_running)), services_running -def _check_listening_on_services_ports(services, test=False): +def _check_listening_on_services_ports(services, test=False, + ssl_check_info=None): """Check that the unit is actually listening (has the port open) on the ports that the service specifies are open. If test is True then the function returns the services with ports that are open rather than @@ -1312,11 +1316,14 @@ def _check_listening_on_services_ports(services, test=False): @param services: OrderedDict(service: [port, ...], ...) @param test: default=False, if False, test for closed, otherwise open. + @param ssl_check_info: SSLPortCheckInfo object. If provided, port checks + will be done using an SSL connection. @returns OrderedDict(service: [port-not-open, ...]...), [boolean] """ test = not (not (test)) # ensure test is True or False all_ports = list(itertools.chain(*services.values())) - ports_states = [port_has_listener('0.0.0.0', p) for p in all_ports] + ports_states = [port_has_listener('0.0.0.0', p, ssl_check_info) + for p in all_ports] map_ports = OrderedDict() matched_ports = [p for p, opened in zip(all_ports, ports_states) if opened == test] # essentially opened xor test @@ -1327,16 +1334,19 @@ def _check_listening_on_services_ports(services, test=False): return map_ports, ports_states -def _check_listening_on_ports_list(ports): +def _check_listening_on_ports_list(ports, ssl_check_info=None): """Check that the ports list given are being listened to Returns a list of ports being listened to and a list of the booleans. + @param ssl_check_info: SSLPortCheckInfo object. If provided, port checks + will be done using an SSL connection. @param ports: LIST of port numbers. @returns [(port_num, boolean), ...], [boolean] """ - ports_open = [port_has_listener('0.0.0.0', p) for p in ports] + ports_open = [port_has_listener('0.0.0.0', p, ssl_check_info) + for p in ports] return zip(ports, ports_open), ports_open diff --git a/hooks/charmhelpers/contrib/storage/linux/lvm.py b/hooks/charmhelpers/contrib/storage/linux/lvm.py index d0a5721..0d294c7 100644 --- a/hooks/charmhelpers/contrib/storage/linux/lvm.py +++ b/hooks/charmhelpers/contrib/storage/linux/lvm.py @@ -17,8 +17,6 @@ from subprocess import ( CalledProcessError, check_call, check_output, - Popen, - PIPE, ) @@ -58,9 +56,7 @@ def remove_lvm_physical_volume(block_device): :param block_device: str: Full path of block device to scrub. ''' - p = Popen(['pvremove', '-ff', block_device], - stdin=PIPE) - p.communicate(input='y\n') + check_call(['pvremove', '-ff', '--yes', block_device]) def list_lvm_volume_group(block_device): diff --git a/hooks/charmhelpers/core/host.py b/hooks/charmhelpers/core/host.py index 70dde6a..def403c 100644 --- a/hooks/charmhelpers/core/host.py +++ b/hooks/charmhelpers/core/host.py @@ -256,8 +256,11 @@ def service_resume(service_name, init_dir="/etc/init", upstart_file = os.path.join(init_dir, "{}.conf".format(service_name)) sysv_file = os.path.join(initd_dir, service_name) if init_is_systemd(service_name=service_name): - service('unmask', service_name) - service('enable', service_name) + if service('is-enabled', service_name): + log('service {} already enabled'.format(service_name), level=DEBUG) + else: + service('unmask', service_name) + service('enable', service_name) elif os.path.exists(upstart_file): override_path = os.path.join( init_dir, '{}.override'.format(service_name)) diff --git a/hooks/charmhelpers/osplatform.py b/hooks/charmhelpers/osplatform.py index 1ace468..5d12186 100644 --- a/hooks/charmhelpers/osplatform.py +++ b/hooks/charmhelpers/osplatform.py @@ -9,19 +9,13 @@ def get_platform(): will be returned (which is the name of the module). This string is used to decide which platform module should be imported. """ - # linux_distribution is deprecated and will be removed in Python 3.7 - # Warnings *not* disabled, as we certainly need to fix this. - if hasattr(platform, 'linux_distribution'): - tuple_platform = platform.linux_distribution() - current_platform = tuple_platform[0] - else: - current_platform = _get_platform_from_fs() + current_platform = _get_current_platform() if "Ubuntu" in current_platform: return "ubuntu" elif "CentOS" in current_platform: return "centos" - elif "debian" in current_platform: + elif "debian" in current_platform or "Debian" in current_platform: # Stock Python does not detect Ubuntu and instead returns debian. # Or at least it does in some build environments like Travis CI return "ubuntu" @@ -36,6 +30,24 @@ def get_platform(): .format(current_platform)) +def _get_current_platform(): + """Return the current platform information for the OS. + + Attempts to lookup linux distribution information from the platform + module for releases of python < 3.7. For newer versions of python, + the platform is determined from the /etc/os-release file. + """ + # linux_distribution is deprecated and will be removed in Python 3.7 + # Warnings *not* disabled, as we certainly need to fix this. + if hasattr(platform, 'linux_distribution'): + tuple_platform = platform.linux_distribution() + current_platform = tuple_platform[0] + else: + current_platform = _get_platform_from_fs() + + return current_platform + + def _get_platform_from_fs(): """Get Platform from /etc/os-release.""" with open(os.path.join(os.sep, 'etc', 'os-release')) as fin: diff --git a/merged-requirements-py310.txt b/merged-requirements-py310.txt new file mode 100644 index 0000000..47a2b17 --- /dev/null +++ b/merged-requirements-py310.txt @@ -0,0 +1,725 @@ +# +# This file is autogenerated by pip-compile with Python 3.10 +# by the following command: +# +# pip-compile --constraint=/home/alex/Projects/Canonical/git/github.com/openstack-charmers/release-tools/global/constraints-2024.1.txt --output-file=merged-requirements-py310.txt requirements.in test-requirements.in +# +aiohttp==3.9.5 + # via + # python-libmaas + # zaza +aiosignal==1.3.1 + # via aiohttp +aodhclient==3.5.1 + # via zaza-openstack +appdirs==1.4.4 + # via python-ironicclient +argcomplete==3.3.0 + # via python-libmaas +async-generator==1.10 + # via + # zaza + # zaza-openstack +async-timeout==4.0.3 + # via aiohttp +attrs==23.2.0 + # via + # aiohttp + # jsonschema + # referencing +babel==2.14.0 + # via + # python-cinderclient + # python-heatclient + # python-manilaclient + # python-neutronclient + # python-novaclient + # python-octaviaclient + # python-openstackclient +bcrypt==4.1.2 + # via paramiko +boto3==1.34.92 + # via zaza-openstack +botocore==1.34.92 + # via + # boto3 + # s3transfer +cachetools==5.3.3 + # via google-auth +certifi==2024.2.2 + # via + # kubernetes + # requests +cffi==1.16.0 + # via + # cryptography + # pynacl +charset-normalizer==3.3.2 + # via requests +cliff==2.18.0 + # via + # -r test-requirements.in + # aodhclient + # gnocchiclient + # osc-lib + # python-barbicanclient + # python-cloudkittyclient + # python-designateclient + # python-heatclient + # python-ironicclient + # python-neutronclient + # python-octaviaclient + # python-openstackclient + # python-watcherclient + # stestr + # tempest +cmd2==0.8.9 + # via cliff +colorclass==2.2.2 + # via python-libmaas +coverage==7.5.0 + # via -r test-requirements.in +croniter==2.0.5 + # via -r test-requirements.in +cryptography==3.3.2 + # via + # -r requirements.in + # openstacksdk + # paramiko + # pyopenssl + # python-magnumclient + # tempest + # trustme + # zaza + # zaza-openstack +debtcollector==3.0.0 + # via + # gnocchiclient + # oslo-config + # oslo-context + # oslo-log + # oslo-utils + # python-designateclient + # python-keystoneclient + # python-manilaclient + # python-neutronclient + # tempest +decorator==5.1.1 + # via + # dogpile-cache + # jsonpath-rw + # openstacksdk + # python-magnumclient +defusedxml==0.7.1 + # via tempest +dnspython==2.6.1 + # via + # -r requirements.in + # pymongo + # zaza-openstack +dogpile-cache==1.3.2 + # via + # openstacksdk + # python-ironicclient +extras==1.0.0 + # via stestr +fasteners==0.19 + # via + # oslo-concurrency + # tempest +fixtures==3.0.0 + # via + # stestr + # tempest +frozenlist==1.4.1 + # via + # aiohttp + # aiosignal +futurist==1.10.0 + # via + # gnocchiclient + # zaza-openstack +gnocchiclient==7.0.8 + # via zaza-openstack +google-auth==2.29.0 + # via kubernetes +hvac==0.6.4 + # via + # zaza + # zaza-openstack +idna==3.7 + # via + # requests + # trustme + # yarl +iso8601==2.1.0 + # via + # gnocchiclient + # keystoneauth1 + # openstacksdk + # oslo-utils + # python-ceilometerclient + # python-heatclient + # python-neutronclient + # python-novaclient + # python-subunit +jinja2==3.1.3 + # via + # -r requirements.in + # zaza + # zaza-openstack +jmespath==1.0.1 + # 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==2.4 + # via jsonpatch +jsonschema==4.21.1 + # via + # python-designateclient + # python-ironicclient + # tempest + # warlock +jsonschema-specifications==2023.12.1 + # via jsonschema +juju==2.9.46.1 + # via + # -c /home/alex/Projects/Canonical/git/github.com/openstack-charmers/release-tools/global/constraints-2024.1.txt + # zaza +juju-wait==2.8.4 + # via zaza +jujubundlelib==0.5.7 + # via theblues +keystoneauth1==5.6.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 +kubernetes==29.0.0 + # via juju +lxml==5.2.1 + # via zaza-openstack +macaroonbakery==1.3.4 + # via + # juju + # python-libmaas + # theblues + # zaza +markupsafe==2.1.5 + # via jinja2 +msgpack==1.0.8 + # via oslo-serialization +multidict==6.0.5 + # via + # aiohttp + # yarl +mypy-extensions==1.0.0 + # via typing-inspect +netaddr==0.7.20 + # via + # -c /home/alex/Projects/Canonical/git/github.com/openstack-charmers/release-tools/global/constraints-2024.1.txt + # -r requirements.in + # oslo-config + # oslo-utils + # osprofiler + # python-neutronclient + # tempest +netifaces==0.11.0 + # via + # -r requirements.in + # openstacksdk + # oslo-utils + # python-octaviaclient +oauthlib==3.2.2 + # via + # kubernetes + # python-libmaas + # requests-oauthlib +openstacksdk==3.1.0 + # via + # os-client-config + # osc-lib + # python-ironicclient + # python-openstackclient +os-client-config==2.1.0 + # via + # python-cloudkittyclient + # python-magnumclient + # python-neutronclient +os-service-types==1.7.0 + # via + # keystoneauth1 + # openstacksdk +osc-lib==2.1.0 + # via + # aodhclient + # python-cloudkittyclient + # python-designateclient + # python-heatclient + # python-ironicclient + # python-magnumclient + # python-neutronclient + # python-octaviaclient + # python-openstackclient + # python-watcherclient +oslo-concurrency==6.0.0 + # via + # osprofiler + # tempest +oslo-config==6.11.3 + # via + # oslo-concurrency + # oslo-log + # python-keystoneclient + # python-manilaclient + # tempest + # zaza + # zaza-openstack +oslo-context==5.5.0 + # via oslo-log +oslo-i18n==6.3.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==5.5.1 + # via + # python-cloudkittyclient + # python-magnumclient + # python-manilaclient + # python-neutronclient + # tempest +oslo-serialization==5.4.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 + # tempest +oslo-utils==7.1.0 + # 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 + # tempest +osprofiler==4.1.0 + # via aodhclient +packaging==24.0 + # via oslo-utils +paramiko==2.12.0 + # via + # juju + # tempest +pbr==5.6.0 + # via + # -r requirements.in + # aodhclient + # cliff + # fixtures + # futurist + # jsonpath-rw-ext + # keystoneauth1 + # openstacksdk + # os-service-types + # osc-lib + # oslo-concurrency + # oslo-context + # oslo-i18n + # oslo-log + # oslo-serialization + # 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 + # stestr + # stevedore + # tempest +pika==1.3.2 + # via zaza-openstack +platformdirs==4.2.1 + # via openstacksdk +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 + # tempest +protobuf==5.26.1 + # via macaroonbakery +psutil==1.2.1 + # via + # -r requirements.in + # -r test-requirements.in +pyasn1==0.6.0 + # via + # juju + # pyasn1-modules + # rsa +pyasn1-modules==0.4.0 + # via google-auth +pycparser==2.22 + # via cffi +pyinotify==0.9.6 + # via oslo-log +pymacaroons==0.13.0 + # via macaroonbakery +pymongo==4.7.0 + # via python-libmaas +pynacl==1.5.0 + # via + # macaroonbakery + # paramiko + # pymacaroons +pyopenssl==21.0.0 + # via + # python-glanceclient + # zaza-openstack +pyparsing==2.4.7 + # via + # -r test-requirements.in + # aodhclient + # cliff + # cmd2 + # oslo-utils +pyperclip==1.8.2 + # via cmd2 +pyrfc3339==1.1 + # via + # juju + # macaroonbakery +python-barbicanclient==4.10.0 + # via zaza-openstack +python-ceilometerclient==2.9.0 + # via zaza-openstack +python-cinderclient==5.0.2 + # via + # python-openstackclient + # zaza-openstack +python-cloudkittyclient==4.1.0 + # via zaza-openstack +python-dateutil==2.9.0.post0 + # via + # botocore + # croniter + # gnocchiclient + # kubernetes + # oslo-log +python-designateclient==2.12.0 + # via zaza-openstack +python-glanceclient==4.5.0 + # via + # python-openstackclient + # zaza-openstack +python-heatclient==1.18.1 + # via zaza-openstack +python-ironicclient==5.5.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.4.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-subunit==1.4.4 + # via + # stestr + # tempest +python-swiftclient==3.8.1 + # via + # python-heatclient + # zaza-openstack +python-watcherclient==4.4.0 + # via zaza-openstack +pytz==2024.1 + # via + # croniter + # pyrfc3339 + # python-libmaas +pyudev==0.24.1 + # via -r test-requirements.in +pyyaml==6.0.1 + # via + # cliff + # juju + # juju-wait + # jujubundlelib + # kubernetes + # openstacksdk + # oslo-config + # oslo-utils + # python-cloudkittyclient + # python-heatclient + # python-ironicclient + # python-libmaas + # python-watcherclient + # stestr + # tempest + # zaza + # zaza-openstack +referencing==0.35.0 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 + # via + # -r test-requirements.in + # hvac + # keystoneauth1 + # kubernetes + # macaroonbakery + # 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 + # theblues +requests-oauthlib==2.0.0 + # via kubernetes +requestsexceptions==1.4.0 + # via openstacksdk +rfc3986==2.0.0 + # via oslo-config +rpds-py==0.18.0 + # via + # jsonschema + # referencing +rsa==4.9 + # via google-auth +s3transfer==0.10.1 + # via boto3 +simplejson==3.19.2 + # via + # -r requirements.in + # osc-lib + # python-cinderclient + # python-manilaclient + # python-neutronclient + # python-novaclient +six==1.16.0 + # via + # -r requirements.in + # cliff + # cmd2 + # cryptography + # fixtures + # futurist + # gnocchiclient + # jsonpath-rw + # kubernetes + # macaroonbakery + # oslo-config + # paramiko + # pymacaroons + # pyopenssl + # python-barbicanclient + # python-ceilometerclient + # python-cinderclient + # python-dateutil + # python-designateclient + # python-heatclient + # python-keystoneclient + # python-manilaclient + # python-neutronclient + # python-novaclient + # python-octaviaclient + # python-openstackclient + # python-swiftclient +stestr==4.1.0 + # via + # -r test-requirements.in + # tempest +stevedore==5.2.0 + # via + # cliff + # dogpile-cache + # keystoneauth1 + # osc-lib + # oslo-config + # python-ceilometerclient + # python-designateclient + # python-ironicclient + # python-keystoneclient + # python-magnumclient + # tempest +tempest @ git+https://opendev.org/openstack/tempest.git + # via -r test-requirements.in +tenacity==8.2.3 + # via + # zaza + # zaza-openstack +terminaltables==3.1.10 + # via python-libmaas +testtools==2.7.1 + # via + # fixtures + # python-subunit + # stestr + # tempest +theblues==0.5.2 + # via juju +tomlkit==0.12.4 + # via stestr +toposort==1.10 + # via juju +trustme==1.1.0 + # via zaza-openstack +typing-extensions==4.11.0 + # via + # dogpile-cache + # typing-inspect +typing-inspect==0.9.0 + # via juju +tzdata==2024.1 + # via + # oslo-serialization + # oslo-utils +ujson==5.9.0 + # via gnocchiclient +urllib3==2.2.1 + # via + # botocore + # kubernetes + # requests + # tempest +voluptuous==0.14.2 + # via stestr +warlock==2.0.1 + # via python-glanceclient +wcwidth==0.2.13 + # via cmd2 +webob==1.8.7 + # via osprofiler +websocket-client==1.8.0 + # via kubernetes +websockets==12.0 + # via juju +wrapt==1.16.0 + # via + # debtcollector + # python-glanceclient +yarl==1.9.4 + # via aiohttp +zaza @ git+https://github.com/openstack-charmers/zaza.git@stable/caracal + # via + # -r test-requirements.in + # zaza-openstack +zaza-openstack @ git+https://github.com/openstack-charmers/zaza-openstack-tests.git@stable/caracal + # via -r test-requirements.in diff --git a/merged-requirements-py38.txt b/merged-requirements-py38.txt new file mode 100644 index 0000000..70e9a7b --- /dev/null +++ b/merged-requirements-py38.txt @@ -0,0 +1,732 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --constraint=/home/alex/Projects/Canonical/git/github.com/openstack-charmers/release-tools/global/constraints-2024.1.txt --output-file=merged-requirements-py38.txt requirements.in test-requirements.in +# +aiohttp==3.9.5 + # via + # python-libmaas + # zaza +aiosignal==1.3.1 + # via aiohttp +aodhclient==3.5.1 + # via zaza-openstack +appdirs==1.4.4 + # via python-ironicclient +argcomplete==3.3.0 + # via python-libmaas +async-generator==1.10 + # via + # zaza + # zaza-openstack +async-timeout==4.0.3 + # via aiohttp +attrs==23.2.0 + # via + # aiohttp + # jsonschema + # referencing +babel==2.14.0 + # via + # python-cinderclient + # python-heatclient + # python-manilaclient + # python-neutronclient + # python-novaclient + # python-octaviaclient + # python-openstackclient +bcrypt==4.1.2 + # via paramiko +boto3==1.34.92 + # via zaza-openstack +botocore==1.34.92 + # via + # boto3 + # s3transfer +cachetools==5.3.3 + # via google-auth +certifi==2024.2.2 + # via + # kubernetes + # requests +cffi==1.16.0 + # via + # cryptography + # pynacl +charset-normalizer==3.3.2 + # via requests +cliff==2.18.0 + # via + # -r test-requirements.in + # aodhclient + # gnocchiclient + # osc-lib + # python-barbicanclient + # python-cloudkittyclient + # python-designateclient + # python-heatclient + # python-ironicclient + # python-neutronclient + # python-octaviaclient + # python-openstackclient + # python-watcherclient + # stestr + # tempest +cmd2==0.8.9 + # via cliff +colorclass==2.2.2 + # via python-libmaas +coverage==7.5.0 + # via -r test-requirements.in +croniter==2.0.5 + # via -r test-requirements.in +cryptography==3.3.2 + # via + # -r requirements.in + # openstacksdk + # paramiko + # pyopenssl + # python-magnumclient + # tempest + # trustme + # zaza + # zaza-openstack +debtcollector==3.0.0 + # via + # gnocchiclient + # oslo-config + # oslo-context + # oslo-log + # oslo-utils + # python-designateclient + # python-keystoneclient + # python-manilaclient + # python-neutronclient + # tempest +decorator==5.1.1 + # via + # dogpile-cache + # jsonpath-rw + # openstacksdk + # python-magnumclient +defusedxml==0.7.1 + # via tempest +dnspython==2.6.1 + # via + # -r requirements.in + # pymongo + # zaza-openstack +dogpile-cache==1.3.2 + # via + # openstacksdk + # python-ironicclient +extras==1.0.0 + # via stestr +fasteners==0.19 + # via + # oslo-concurrency + # tempest +fixtures==3.0.0 + # via + # stestr + # tempest +frozenlist==1.4.1 + # via + # aiohttp + # aiosignal +futurist==1.10.0 + # via + # gnocchiclient + # zaza-openstack +gnocchiclient==7.0.8 + # via zaza-openstack +google-auth==2.29.0 + # via kubernetes +hvac==0.6.4 + # via + # zaza + # zaza-openstack +idna==3.7 + # via + # requests + # trustme + # yarl +importlib-resources==6.4.0 + # via + # jsonschema + # jsonschema-specifications +iso8601==2.1.0 + # via + # gnocchiclient + # keystoneauth1 + # openstacksdk + # oslo-utils + # python-ceilometerclient + # python-heatclient + # python-neutronclient + # python-novaclient + # python-subunit +jinja2==3.1.3 + # via + # -r requirements.in + # zaza + # zaza-openstack +jmespath==1.0.1 + # 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==2.4 + # via jsonpatch +jsonschema==4.21.1 + # via + # python-designateclient + # python-ironicclient + # tempest + # warlock +jsonschema-specifications==2023.12.1 + # via jsonschema +juju==2.9.46.1 + # via + # -c /home/alex/Projects/Canonical/git/github.com/openstack-charmers/release-tools/global/constraints-2024.1.txt + # zaza +juju-wait==2.8.4 + # via zaza +jujubundlelib==0.5.7 + # via theblues +keystoneauth1==5.6.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 +kubernetes==29.0.0 + # via juju +lxml==5.2.1 + # via zaza-openstack +macaroonbakery==1.3.4 + # via + # juju + # python-libmaas + # theblues + # zaza +markupsafe==2.1.5 + # via jinja2 +msgpack==1.0.8 + # via oslo-serialization +multidict==6.0.5 + # via + # aiohttp + # yarl +mypy-extensions==1.0.0 + # via typing-inspect +netaddr==0.7.20 + # via + # -c /home/alex/Projects/Canonical/git/github.com/openstack-charmers/release-tools/global/constraints-2024.1.txt + # -r requirements.in + # oslo-config + # oslo-utils + # osprofiler + # python-neutronclient + # tempest +netifaces==0.11.0 + # via + # -r requirements.in + # openstacksdk + # oslo-utils + # python-octaviaclient +oauthlib==3.2.2 + # via + # kubernetes + # python-libmaas + # requests-oauthlib +openstacksdk==3.1.0 + # via + # os-client-config + # osc-lib + # python-ironicclient + # python-openstackclient +os-client-config==2.1.0 + # via + # python-cloudkittyclient + # python-magnumclient + # python-neutronclient +os-service-types==1.7.0 + # via + # keystoneauth1 + # openstacksdk +osc-lib==2.1.0 + # via + # aodhclient + # python-cloudkittyclient + # python-designateclient + # python-heatclient + # python-ironicclient + # python-magnumclient + # python-neutronclient + # python-octaviaclient + # python-openstackclient + # python-watcherclient +oslo-concurrency==6.0.0 + # via + # osprofiler + # tempest +oslo-config==6.11.3 + # via + # oslo-concurrency + # oslo-log + # python-keystoneclient + # python-manilaclient + # tempest + # zaza + # zaza-openstack +oslo-context==5.5.0 + # via oslo-log +oslo-i18n==6.3.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==5.5.1 + # via + # python-cloudkittyclient + # python-magnumclient + # python-manilaclient + # python-neutronclient + # tempest +oslo-serialization==5.4.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 + # tempest +oslo-utils==7.1.0 + # 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 + # tempest +osprofiler==4.1.0 + # via aodhclient +packaging==24.0 + # via oslo-utils +paramiko==2.12.0 + # via + # juju + # tempest +pbr==5.6.0 + # via + # -r requirements.in + # aodhclient + # cliff + # fixtures + # futurist + # jsonpath-rw-ext + # keystoneauth1 + # openstacksdk + # os-service-types + # osc-lib + # oslo-concurrency + # oslo-context + # oslo-i18n + # oslo-log + # oslo-serialization + # 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 + # stestr + # stevedore + # tempest +pika==1.3.2 + # via zaza-openstack +pkgutil-resolve-name==1.3.10 + # via jsonschema +platformdirs==4.2.1 + # via openstacksdk +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 + # tempest +protobuf==5.26.1 + # via macaroonbakery +psutil==1.2.1 + # via + # -r requirements.in + # -r test-requirements.in +pyasn1==0.6.0 + # via + # juju + # pyasn1-modules + # rsa +pyasn1-modules==0.4.0 + # via google-auth +pycparser==2.22 + # via cffi +pyinotify==0.9.6 + # via oslo-log +pymacaroons==0.13.0 + # via macaroonbakery +pymongo==4.7.0 + # via python-libmaas +pynacl==1.5.0 + # via + # macaroonbakery + # paramiko + # pymacaroons +pyopenssl==21.0.0 + # via + # python-glanceclient + # zaza-openstack +pyparsing==2.4.7 + # via + # -r test-requirements.in + # aodhclient + # cliff + # cmd2 + # oslo-utils +pyperclip==1.8.2 + # via cmd2 +pyrfc3339==1.1 + # via + # juju + # macaroonbakery +python-barbicanclient==4.10.0 + # via zaza-openstack +python-ceilometerclient==2.9.0 + # via zaza-openstack +python-cinderclient==5.0.2 + # via + # python-openstackclient + # zaza-openstack +python-cloudkittyclient==4.1.0 + # via zaza-openstack +python-dateutil==2.9.0.post0 + # via + # botocore + # croniter + # gnocchiclient + # kubernetes + # oslo-log +python-designateclient==2.12.0 + # via zaza-openstack +python-glanceclient==4.5.0 + # via + # python-openstackclient + # zaza-openstack +python-heatclient==1.18.1 + # via zaza-openstack +python-ironicclient==5.5.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.4.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-subunit==1.4.4 + # via + # stestr + # tempest +python-swiftclient==3.8.1 + # via + # python-heatclient + # zaza-openstack +python-watcherclient==4.4.0 + # via zaza-openstack +pytz==2024.1 + # via + # babel + # croniter + # oslo-serialization + # oslo-utils + # pyrfc3339 + # python-libmaas +pyudev==0.24.1 + # via -r test-requirements.in +pyyaml==6.0.1 + # via + # cliff + # juju + # juju-wait + # jujubundlelib + # kubernetes + # openstacksdk + # oslo-config + # oslo-utils + # python-cloudkittyclient + # python-heatclient + # python-ironicclient + # python-libmaas + # python-watcherclient + # stestr + # tempest + # zaza + # zaza-openstack +referencing==0.35.0 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 + # via + # -r test-requirements.in + # hvac + # keystoneauth1 + # kubernetes + # macaroonbakery + # 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 + # theblues +requests-oauthlib==2.0.0 + # via kubernetes +requestsexceptions==1.4.0 + # via openstacksdk +rfc3986==2.0.0 + # via oslo-config +rpds-py==0.18.0 + # via + # jsonschema + # referencing +rsa==4.9 + # via google-auth +s3transfer==0.10.1 + # via boto3 +simplejson==3.19.2 + # via + # -r requirements.in + # osc-lib + # python-cinderclient + # python-manilaclient + # python-neutronclient + # python-novaclient +six==1.16.0 + # via + # -r requirements.in + # cliff + # cmd2 + # cryptography + # fixtures + # futurist + # gnocchiclient + # jsonpath-rw + # kubernetes + # macaroonbakery + # oslo-config + # paramiko + # pymacaroons + # pyopenssl + # python-barbicanclient + # python-ceilometerclient + # python-cinderclient + # python-dateutil + # python-designateclient + # python-heatclient + # python-keystoneclient + # python-manilaclient + # python-neutronclient + # python-novaclient + # python-octaviaclient + # python-openstackclient + # python-swiftclient +stestr==4.1.0 + # via + # -r test-requirements.in + # tempest +stevedore==5.2.0 + # via + # cliff + # dogpile-cache + # keystoneauth1 + # osc-lib + # oslo-config + # python-ceilometerclient + # python-designateclient + # python-ironicclient + # python-keystoneclient + # python-magnumclient + # tempest +tempest @ git+https://opendev.org/openstack/tempest.git + # via -r test-requirements.in +tenacity==8.2.3 + # via + # zaza + # zaza-openstack +terminaltables==3.1.10 + # via python-libmaas +testtools==2.7.1 + # via + # fixtures + # python-subunit + # stestr + # tempest +theblues==0.5.2 + # via juju +tomlkit==0.12.4 + # via stestr +toposort==1.10 + # via juju +trustme==1.1.0 + # via zaza-openstack +typing-extensions==4.11.0 + # via + # dogpile-cache + # typing-inspect +typing-inspect==0.9.0 + # via juju +ujson==5.9.0 + # via gnocchiclient +urllib3==1.26.18 + # via + # botocore + # kubernetes + # requests + # tempest +voluptuous==0.14.2 + # via stestr +warlock==2.0.1 + # via python-glanceclient +wcwidth==0.2.13 + # via cmd2 +webob==1.8.7 + # via osprofiler +websocket-client==1.8.0 + # via kubernetes +websockets==7.0 + # via juju +wrapt==1.16.0 + # via + # debtcollector + # python-glanceclient +yarl==1.9.4 + # via aiohttp +zaza @ git+https://github.com/openstack-charmers/zaza.git@stable/caracal + # via + # -r test-requirements.in + # zaza-openstack +zaza-openstack @ git+https://github.com/openstack-charmers/zaza-openstack-tests.git@stable/caracal + # via -r test-requirements.in +zipp==3.18.1 + # via importlib-resources diff --git a/requirements.txt b/requirements.in similarity index 100% rename from requirements.txt rename to requirements.in diff --git a/test-requirements-py38.txt b/test-requirements-py38.txt new file mode 100644 index 0000000..da0307a --- /dev/null +++ b/test-requirements-py38.txt @@ -0,0 +1,720 @@ +# +# This file is autogenerated by pip-compile with Python 3.8 +# by the following command: +# +# pip-compile --constraint=/home/alex/Projects/Canonical/git/github.com/openstack-charmers/release-tools/global/constraints-2024.1.txt --output-file=test-requirements-py38.txt test-requirements.in +# +aiohttp==3.9.5 + # via + # python-libmaas + # zaza +aiosignal==1.3.1 + # via aiohttp +aodhclient==3.5.1 + # via zaza-openstack +appdirs==1.4.4 + # via python-ironicclient +argcomplete==3.3.0 + # via python-libmaas +async-generator==1.10 + # via + # zaza + # zaza-openstack +async-timeout==4.0.3 + # via aiohttp +attrs==23.2.0 + # via + # aiohttp + # jsonschema + # referencing +babel==2.14.0 + # via + # python-cinderclient + # python-heatclient + # python-manilaclient + # python-neutronclient + # python-novaclient + # python-octaviaclient + # python-openstackclient +bcrypt==4.1.2 + # via paramiko +boto3==1.34.92 + # via zaza-openstack +botocore==1.34.92 + # via + # boto3 + # s3transfer +cachetools==5.3.3 + # via google-auth +certifi==2024.2.2 + # via + # kubernetes + # requests +cffi==1.16.0 + # via + # cryptography + # pynacl +charset-normalizer==3.3.2 + # via requests +cliff==2.18.0 + # via + # -r test-requirements.in + # aodhclient + # gnocchiclient + # osc-lib + # python-barbicanclient + # python-cloudkittyclient + # python-designateclient + # python-heatclient + # python-ironicclient + # python-neutronclient + # python-octaviaclient + # python-openstackclient + # python-watcherclient + # stestr + # tempest +cmd2==0.8.9 + # via cliff +colorclass==2.2.2 + # via python-libmaas +coverage==7.5.0 + # via -r test-requirements.in +croniter==2.0.5 + # via -r test-requirements.in +cryptography==3.3.2 + # via + # openstacksdk + # paramiko + # pyopenssl + # python-magnumclient + # tempest + # trustme + # zaza + # zaza-openstack +debtcollector==3.0.0 + # via + # gnocchiclient + # oslo-config + # oslo-context + # oslo-log + # oslo-utils + # python-designateclient + # python-keystoneclient + # python-manilaclient + # python-neutronclient + # tempest +decorator==5.1.1 + # via + # dogpile-cache + # jsonpath-rw + # openstacksdk + # python-magnumclient +defusedxml==0.7.1 + # via tempest +dnspython==2.6.1 + # via + # pymongo + # zaza-openstack +dogpile-cache==1.3.2 + # via + # openstacksdk + # python-ironicclient +extras==1.0.0 + # via stestr +fasteners==0.19 + # via + # oslo-concurrency + # tempest +fixtures==4.1.0 + # via + # stestr + # tempest +frozenlist==1.4.1 + # via + # aiohttp + # aiosignal +futurist==1.10.0 + # via + # gnocchiclient + # zaza-openstack +gnocchiclient==7.0.8 + # via zaza-openstack +google-auth==2.29.0 + # via kubernetes +hvac==0.6.4 + # via + # zaza + # zaza-openstack +idna==3.7 + # via + # requests + # trustme + # yarl +importlib-resources==6.4.0 + # via + # jsonschema + # jsonschema-specifications +iso8601==2.1.0 + # via + # gnocchiclient + # keystoneauth1 + # openstacksdk + # oslo-utils + # python-ceilometerclient + # python-heatclient + # python-neutronclient + # python-novaclient + # python-subunit +jinja2==3.1.3 + # via + # zaza + # zaza-openstack +jmespath==1.0.1 + # 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==2.4 + # via jsonpatch +jsonschema==4.21.1 + # via + # python-designateclient + # python-ironicclient + # tempest + # warlock +jsonschema-specifications==2023.12.1 + # via jsonschema +juju==2.9.46.1 + # via + # -c /home/alex/Projects/Canonical/git/github.com/openstack-charmers/release-tools/global/constraints-2024.1.txt + # zaza +juju-wait==2.8.4 + # via zaza +jujubundlelib==0.5.7 + # via theblues +keystoneauth1==5.6.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 +kubernetes==29.0.0 + # via juju +lxml==5.2.1 + # via zaza-openstack +macaroonbakery==1.3.4 + # via + # juju + # python-libmaas + # theblues + # zaza +markupsafe==2.1.5 + # via jinja2 +msgpack==1.0.8 + # via oslo-serialization +multidict==6.0.5 + # via + # aiohttp + # yarl +mypy-extensions==1.0.0 + # via typing-inspect +netaddr==0.10.1 + # via + # -c /home/alex/Projects/Canonical/git/github.com/openstack-charmers/release-tools/global/constraints-2024.1.txt + # oslo-config + # oslo-utils + # osprofiler + # python-neutronclient + # tempest +netifaces==0.11.0 + # via + # openstacksdk + # oslo-utils + # python-octaviaclient +oauthlib==3.2.2 + # via + # kubernetes + # python-libmaas + # requests-oauthlib +openstacksdk==3.1.0 + # via + # os-client-config + # osc-lib + # python-ironicclient + # python-openstackclient +os-client-config==2.1.0 + # via + # python-cloudkittyclient + # python-magnumclient + # python-neutronclient +os-service-types==1.7.0 + # via + # keystoneauth1 + # openstacksdk +osc-lib==2.1.0 + # via + # aodhclient + # python-cloudkittyclient + # python-designateclient + # python-heatclient + # python-ironicclient + # python-magnumclient + # python-neutronclient + # python-octaviaclient + # python-openstackclient + # python-watcherclient +oslo-concurrency==6.0.0 + # via + # osprofiler + # tempest +oslo-config==6.11.3 + # via + # oslo-concurrency + # oslo-log + # python-keystoneclient + # python-manilaclient + # tempest + # zaza + # zaza-openstack +oslo-context==5.5.0 + # via oslo-log +oslo-i18n==6.3.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==5.5.1 + # via + # python-cloudkittyclient + # python-magnumclient + # python-manilaclient + # python-neutronclient + # tempest +oslo-serialization==5.4.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 + # tempest +oslo-utils==7.1.0 + # 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 + # tempest +osprofiler==4.1.0 + # via aodhclient +packaging==24.0 + # via oslo-utils +paramiko==2.12.0 + # via + # juju + # tempest +pbr==6.0.0 + # via + # aodhclient + # cliff + # fixtures + # futurist + # jsonpath-rw-ext + # keystoneauth1 + # openstacksdk + # os-service-types + # osc-lib + # oslo-concurrency + # oslo-context + # oslo-i18n + # oslo-log + # oslo-serialization + # 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 + # stestr + # stevedore + # tempest +pika==1.3.2 + # via zaza-openstack +pkgutil-resolve-name==1.3.10 + # via jsonschema +platformdirs==4.2.1 + # via openstacksdk +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 + # tempest +protobuf==5.26.1 + # via macaroonbakery +psutil==5.9.8 + # via -r test-requirements.in +pyasn1==0.6.0 + # via + # juju + # pyasn1-modules + # rsa +pyasn1-modules==0.4.0 + # via google-auth +pycparser==2.22 + # via cffi +pyinotify==0.9.6 + # via oslo-log +pymacaroons==0.13.0 + # via macaroonbakery +pymongo==4.7.0 + # via python-libmaas +pynacl==1.5.0 + # via + # macaroonbakery + # paramiko + # pymacaroons +pyopenssl==21.0.0 + # via + # python-glanceclient + # zaza-openstack +pyparsing==2.4.7 + # via + # -r test-requirements.in + # aodhclient + # cliff + # cmd2 + # oslo-utils +pyperclip==1.8.2 + # via cmd2 +pyrfc3339==1.1 + # via + # juju + # macaroonbakery +python-barbicanclient==4.10.0 + # via zaza-openstack +python-ceilometerclient==2.9.0 + # via zaza-openstack +python-cinderclient==5.0.2 + # via + # python-openstackclient + # zaza-openstack +python-cloudkittyclient==4.1.0 + # via zaza-openstack +python-dateutil==2.9.0.post0 + # via + # botocore + # croniter + # gnocchiclient + # kubernetes + # oslo-log +python-designateclient==2.12.0 + # via zaza-openstack +python-glanceclient==4.5.0 + # via + # python-openstackclient + # zaza-openstack +python-heatclient==1.18.1 + # via zaza-openstack +python-ironicclient==5.5.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.4.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-subunit==1.4.4 + # via + # stestr + # tempest +python-swiftclient==3.8.1 + # via + # python-heatclient + # zaza-openstack +python-watcherclient==4.4.0 + # via zaza-openstack +pytz==2024.1 + # via + # babel + # croniter + # oslo-serialization + # oslo-utils + # pyrfc3339 + # python-libmaas +pyudev==0.24.1 + # via -r test-requirements.in +pyyaml==6.0.1 + # via + # cliff + # juju + # juju-wait + # jujubundlelib + # kubernetes + # openstacksdk + # oslo-config + # oslo-utils + # python-cloudkittyclient + # python-heatclient + # python-ironicclient + # python-libmaas + # python-watcherclient + # stestr + # tempest + # zaza + # zaza-openstack +referencing==0.35.0 + # via + # jsonschema + # jsonschema-specifications +requests==2.31.0 + # via + # -r test-requirements.in + # hvac + # keystoneauth1 + # kubernetes + # macaroonbakery + # 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 + # theblues +requests-oauthlib==2.0.0 + # via kubernetes +requestsexceptions==1.4.0 + # via openstacksdk +rfc3986==2.0.0 + # via oslo-config +rpds-py==0.18.0 + # via + # jsonschema + # referencing +rsa==4.9 + # via google-auth +s3transfer==0.10.1 + # via boto3 +simplejson==3.19.2 + # via + # osc-lib + # python-cinderclient + # python-manilaclient + # python-neutronclient + # python-novaclient +six==1.16.0 + # via + # cliff + # cmd2 + # cryptography + # futurist + # gnocchiclient + # jsonpath-rw + # kubernetes + # macaroonbakery + # oslo-config + # paramiko + # pymacaroons + # pyopenssl + # python-barbicanclient + # python-ceilometerclient + # python-cinderclient + # python-dateutil + # python-designateclient + # python-heatclient + # python-keystoneclient + # python-manilaclient + # python-neutronclient + # python-novaclient + # python-octaviaclient + # python-openstackclient + # python-swiftclient +stestr==4.1.0 + # via + # -r test-requirements.in + # tempest +stevedore==5.2.0 + # via + # cliff + # dogpile-cache + # keystoneauth1 + # osc-lib + # oslo-config + # python-ceilometerclient + # python-designateclient + # python-ironicclient + # python-keystoneclient + # python-magnumclient + # tempest +tempest @ git+https://opendev.org/openstack/tempest.git + # via -r test-requirements.in +tenacity==8.2.3 + # via + # zaza + # zaza-openstack +terminaltables==3.1.10 + # via python-libmaas +testtools==2.7.1 + # via + # python-subunit + # stestr + # tempest +theblues==0.5.2 + # via juju +tomlkit==0.12.4 + # via stestr +toposort==1.10 + # via juju +trustme==1.1.0 + # via zaza-openstack +typing-extensions==4.11.0 + # via + # dogpile-cache + # typing-inspect +typing-inspect==0.9.0 + # via juju +ujson==5.9.0 + # via gnocchiclient +urllib3==1.26.18 + # via + # botocore + # kubernetes + # requests + # tempest +voluptuous==0.14.2 + # via stestr +warlock==2.0.1 + # via python-glanceclient +wcwidth==0.2.13 + # via cmd2 +webob==1.8.7 + # via osprofiler +websocket-client==1.8.0 + # via kubernetes +websockets==7.0 + # via juju +wrapt==1.16.0 + # via + # debtcollector + # python-glanceclient +yarl==1.9.4 + # via aiohttp +zaza @ git+https://github.com/openstack-charmers/zaza.git@stable/caracal + # via + # -r test-requirements.in + # zaza-openstack +zaza-openstack @ git+https://github.com/openstack-charmers/zaza-openstack-tests.git@stable/caracal + # via -r test-requirements.in +zipp==3.18.1 + # via importlib-resources diff --git a/test-requirements.txt b/test-requirements.in similarity index 90% rename from test-requirements.txt rename to test-requirements.in index e972406..bcfe07c 100644 --- a/test-requirements.txt +++ b/test-requirements.in @@ -19,8 +19,8 @@ cliff<3.0.0 coverage>=4.5.2 pyudev # for ceph-* charm unit tests (need to fix the ceph-* charm unit tests/mocking) -git+https://github.com/openstack-charmers/zaza.git#egg=zaza -git+https://github.com/openstack-charmers/zaza-openstack-tests.git#egg=zaza.openstack +git+https://github.com/openstack-charmers/zaza.git@stable/caracal#egg=zaza +git+https://github.com/openstack-charmers/zaza-openstack-tests.git@stable/caracal#egg=zaza.openstack # Needed for charm-glance: git+https://opendev.org/openstack/tempest.git#egg=tempest diff --git a/tox.ini b/tox.ini index 57c2f4e..939d4b5 100644 --- a/tox.ini +++ b/tox.ini @@ -32,9 +32,7 @@ passenv = CS_* OS_* TEST_* -deps = - -c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza-openstack-tests/master/constraints/constraints-2024.1.txt} - -r{toxinidir}/test-requirements.txt +deps = -r{toxinidir}/test-requirements-py38.txt [testenv:build] basepython = python3 @@ -49,19 +47,23 @@ commands = {toxinidir}/rename.sh charmcraft clean +[testenv:py38] +basepython = python3.8 +deps = + -c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza-openstack-tests/master/constraints/constraints-2024.1.txt} + -r{toxinidir}/merged-requirements-py38.txt + [testenv:py310] basepython = python3.10 deps = -c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza-openstack-tests/master/constraints/constraints-2024.1.txt} - -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt + -r{toxinidir}/merged-requirements-py310.txt [testenv:py3] basepython = python3 deps = -c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza-openstack-tests/master/constraints/constraints-2024.1.txt} - -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt + -r{toxinidir}/merged-requirements-py310.txt [testenv:pep8] basepython = python3 @@ -76,8 +78,7 @@ commands = flake8 {posargs} hooks unit_tests tests actions lib files basepython = python3 deps = -c {env:TEST_CONSTRAINTS_FILE:https://raw.githubusercontent.com/openstack-charmers/zaza-openstack-tests/master/constraints/constraints-2024.1.txt} - -r{toxinidir}/requirements.txt - -r{toxinidir}/test-requirements.txt + -r{toxinidir}/merged-requirements-py310.txt setenv = {[testenv]setenv} PYTHON=coverage run @@ -110,22 +111,22 @@ commands = functest-run-suite --help [testenv:func] -basepython = python3 +basepython = python3.8 commands = functest-run-suite --keep-model [testenv:func-smoke] -basepython = python3 +basepython = python3.8 commands = functest-run-suite --keep-model --smoke [testenv:func-dev] -basepython = python3 +basepython = python3.8 commands = functest-run-suite --keep-model --dev [testenv:func-target] -basepython = python3 +basepython = python3.8 commands = functest-run-suite --keep-model --bundle {posargs}