From 23d9af72bf4b64a92cdef8812a6ee8178d31bf4c Mon Sep 17 00:00:00 2001 From: Dario Faccin Date: Wed, 24 May 2023 16:27:54 +0200 Subject: [PATCH] Update from master Squashed commit of the following: commit 1c0bfb77f2da82d5a6047f91c3df9d804dbd275e Author: Gabriel Cuba Date: Fri May 12 17:21:08 2023 -0500 Update charset-normalizer to resolve dependency conflict Change-Id: I43a91a91029838bd0b0c0725b83c9d55251a4800 Signed-off-by: Gabriel Cuba commit db266c39aa56ad25ebb9856b98b71b738cc2b59d Author: Mark Beierl Date: Thu May 11 13:18:21 2023 -0400 Removing charset constraint With py3.10, we are able to move to newer versions of the packages, so pinning to a lower version is no longer required Change-Id: I00410412e8fe473c93cef72a08d582d5aaaf1c58 Signed-off-by: Mark Beierl commit 072b0bdeb1a0919c5cc8de128fa3c62e8393ed7c Author: Mark Beierl Date: Wed May 10 15:43:03 2023 -0400 Update to Python 3.10 and Ubuntu 22.04 Removal of deprecated event loop Updated pip requirements Change-Id: I96a895d8f9fa8db89e6bbfd6f009d4f56deaa418 Signed-off-by: Mark Beierl commit ca2fd226036f433ba97c427fbfdb08e2a339ab08 Author: garciadeblas Date: Tue Apr 4 15:26:09 2023 +0200 Clean stage-archive.sh and use allowlist in tox.ini Change-Id: Ia360e247bf2f58aaa8477653ec1f161cf715a064 Signed-off-by: garciadeblas Change-Id: Ib796b0f060d525b99488f883bbfce5af30aff2a7 Signed-off-by: Dario Faccin --- Dockerfile | 10 +-- devops-stages/stage-archive.sh | 45 +++++--------- osm_mon/cmd/mon_server.py | 4 +- osm_mon/collector/vnf_collectors/juju.py | 4 +- osm_mon/core/message_bus_client.py | 12 ++-- osm_mon/dashboarder/dashboarder.py | 7 +-- osm_mon/evaluator/evaluator.py | 7 +-- osm_mon/server/server.py | 7 +-- .../unit/core/test_message_bus_client.py | 25 ++++---- requirements-dev.txt | 32 ++++++---- requirements-test.in | 2 +- requirements-test.txt | 14 ++--- requirements.in | 2 +- requirements.txt | 61 +++++++++---------- tox.ini | 9 ++- 15 files changed, 107 insertions(+), 134 deletions(-) diff --git a/Dockerfile b/Dockerfile index c597522..27ab273 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,7 +21,7 @@ # devops-stages/stage-build.sh # -FROM ubuntu:20.04 +FROM ubuntu:22.04 ARG APT_PROXY RUN if [ ! -z $APT_PROXY ] ; then \ @@ -37,7 +37,9 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ python3 \ python3-all \ python3-dev \ - python3-setuptools + python3-setuptools \ + python3-pip \ + tox -RUN python3 -m easy_install pip==21.3.1 -RUN pip install tox==3.24.5 +ENV LC_ALL C.UTF-8 +ENV LANG C.UTF-8 diff --git a/devops-stages/stage-archive.sh b/devops-stages/stage-archive.sh index 394ea40..1a743d8 100755 --- a/devops-stages/stage-archive.sh +++ b/devops-stages/stage-archive.sh @@ -1,34 +1,21 @@ -# Copyright 2017 Intel Research and Development Ireland Limited -# ************************************************************* - -# This file is part of OSM Monitoring module -# All Rights Reserved to Intel Corporation - -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at - -# http://www.apache.org/licenses/LICENSE-2.0 - -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -# For those usages not covered by the Apache License, Version 2.0 please -# contact: prithiv.mohan@intel.com or adrian.hoban@intel.com - -#__author__ = "Prithiv Mohan" -#__date__ = "25/Sep/2017" - - #!/bin/sh +####################################################################################### +# Copyright ETSI Contributors and Others. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. +####################################################################################### rm -rf pool rm -rf dists mkdir -p pool/MON mv deb_dist/*.deb pool/MON/ -mkdir -p dists/unstable/MON/binary-amd64/ -apt-ftparchive packages pool/MON > dists/unstable/MON/binary-amd64/Packages -gzip -9fk dists/unstable/MON/binary-amd64/Packages -echo 'dists/**,pool/MON/*.deb' \ No newline at end of file diff --git a/osm_mon/cmd/mon_server.py b/osm_mon/cmd/mon_server.py index 7d676d7..c4fa08b 100644 --- a/osm_mon/cmd/mon_server.py +++ b/osm_mon/cmd/mon_server.py @@ -22,7 +22,6 @@ # contact: bdiaz@whitestack.com or glavado@whitestack.com ## import argparse -import asyncio import logging import sys @@ -52,9 +51,8 @@ def main(): log.info("Starting MON Server...") log.debug("Config: %s", cfg.conf) log.info("Initializing database...") - loop = asyncio.get_event_loop() try: - server = Server(cfg, loop) + server = Server(cfg) server.run() except Exception as e: log.error("Failed to start MON Server") diff --git a/osm_mon/collector/vnf_collectors/juju.py b/osm_mon/collector/vnf_collectors/juju.py index cb924a6..fbc6bc2 100644 --- a/osm_mon/collector/vnf_collectors/juju.py +++ b/osm_mon/collector/vnf_collectors/juju.py @@ -39,7 +39,6 @@ class VCACollector(BaseCollector): def __init__(self, config: Config): super().__init__(config) self.common_db = CommonDbClient(config) - self.loop = asyncio.get_event_loop() # host = config.get("vca", "host") # port = config.get("vca", "port") if "port" in config.conf["vca"] else 17070 @@ -60,7 +59,6 @@ class VCACollector(BaseCollector): db=self.common_db.common_db, fs=object(), log=log, - loop=self.loop, on_update_db=None, ) @@ -110,7 +108,7 @@ class VCACollector(BaseCollector): if vca_deployment_info.get("model") and vca_deployment_info.get( "application" ): - measures = self.loop.run_until_complete( + measures = asyncio.run( self.n2vc.get_metrics( vca_deployment_info["model"], vca_deployment_info["application"], diff --git a/osm_mon/core/message_bus_client.py b/osm_mon/core/message_bus_client.py index 7d194c3..8eee83a 100644 --- a/osm_mon/core/message_bus_client.py +++ b/osm_mon/core/message_bus_client.py @@ -21,7 +21,6 @@ # For those usages not covered by the Apache License, Version 2.0 please # contact: bdiaz@whitestack.com or glavado@whitestack.com ## -import asyncio from typing import List, Callable from osm_common import msgkafka, msglocal @@ -30,7 +29,7 @@ from osm_mon.core.config import Config class MessageBusClient: - def __init__(self, config: Config, loop=None): + def __init__(self, config: Config): if config.get("message", "driver") == "local": self.msg_bus = msglocal.MsgLocal() elif config.get("message", "driver") == "kafka": @@ -40,9 +39,6 @@ class MessageBusClient: "Unknown message bug driver {}".format(config.get("section", "driver")) ) self.msg_bus.connect(config.get("message")) - if not loop: - loop = asyncio.get_event_loop() - self.loop = loop async def aioread(self, topics: List[str], callback: Callable = None, **kwargs): """ @@ -52,7 +48,7 @@ class MessageBusClient: :param kwargs: Keyword arguments to be passed to callback function. :return: None """ - await self.msg_bus.aioread(topics, self.loop, aiocallback=callback, **kwargs) + await self.msg_bus.aioread(topics, aiocallback=callback, **kwargs) async def aiowrite(self, topic: str, key: str, msg: dict): """ @@ -62,7 +58,7 @@ class MessageBusClient: :param msg: Dictionary containing message to be written. :return: None """ - await self.msg_bus.aiowrite(topic, key, msg, self.loop) + await self.msg_bus.aiowrite(topic, key, msg) async def aioread_once(self, topic: str): """ @@ -70,5 +66,5 @@ class MessageBusClient: :param topic: topic to retrieve message from. :return: tuple(topic, key, message) """ - result = await self.msg_bus.aioread(topic, self.loop) + result = await self.msg_bus.aioread(topic) return result diff --git a/osm_mon/dashboarder/dashboarder.py b/osm_mon/dashboarder/dashboarder.py index f3bd97e..1d523cf 100644 --- a/osm_mon/dashboarder/dashboarder.py +++ b/osm_mon/dashboarder/dashboarder.py @@ -35,17 +35,14 @@ log = logging.getLogger(__name__) class Dashboarder: - def __init__(self, config: Config, loop=None): + def __init__(self, config: Config): self.conf = config self.service = DashboarderService(config) - if not loop: - loop = asyncio.get_event_loop() - self.loop = loop self.msg_bus = MessageBusClient(config) # run consumer for grafana user management def run(self): - self.loop.run_until_complete(self.start()) + asyncio.run(self.start()) async def start(self, wait_time=5): topics = ["users", "project"] diff --git a/osm_mon/evaluator/evaluator.py b/osm_mon/evaluator/evaluator.py index 732f8ac..61b788a 100644 --- a/osm_mon/evaluator/evaluator.py +++ b/osm_mon/evaluator/evaluator.py @@ -35,11 +35,8 @@ log = logging.getLogger(__name__) class Evaluator: - def __init__(self, config: Config, loop=None): + def __init__(self, config: Config): self.conf = config - if not loop: - loop = asyncio.get_event_loop() - self.loop = loop self.service = EvaluatorService(config) self.msg_bus = MessageBusClient(config) @@ -69,7 +66,7 @@ class Evaluator: log.debug("_notify_alarm") resp_message = self._build_alarm_response(alarm, status) log.info("Sent alarm notification: %s", resp_message) - self.loop.run_until_complete( + asyncio.run( self.msg_bus.aiowrite("alarm_response", "notify_alarm", resp_message) ) evaluator_service = EvaluatorService(self.conf) diff --git a/osm_mon/server/server.py b/osm_mon/server/server.py index f05cdec..bb8f0e8 100755 --- a/osm_mon/server/server.py +++ b/osm_mon/server/server.py @@ -37,17 +37,14 @@ log = logging.getLogger(__name__) class Server: - def __init__(self, config: Config, loop=None): + def __init__(self, config: Config): self.conf = config - if not loop: - loop = asyncio.get_event_loop() - self.loop = loop self.msg_bus = MessageBusClient(config) self.service = ServerService(config) self.service.populate_prometheus() def run(self): - self.loop.run_until_complete(self.start()) + asyncio.run(self.start()) async def start(self, wait_time=5): topics = ["alarm_request"] diff --git a/osm_mon/tests/unit/core/test_message_bus_client.py b/osm_mon/tests/unit/core/test_message_bus_client.py index 126eb9f..b35c6c1 100644 --- a/osm_mon/tests/unit/core/test_message_bus_client.py +++ b/osm_mon/tests/unit/core/test_message_bus_client.py @@ -34,39 +34,38 @@ class TestMessageBusClient(TestCase): def setUp(self): self.config = Config() self.config.set("message", "driver", "kafka") - self.loop = asyncio.new_event_loop() @mock.patch.object(MsgKafka, "aioread") def test_aioread(self, aioread): async def mock_callback(): pass - future = asyncio.Future(loop=self.loop) + future = asyncio.Future(loop=asyncio.new_event_loop()) future.set_result("mock") aioread.return_value = future - msg_bus = MessageBusClient(self.config, loop=self.loop) + msg_bus = MessageBusClient(self.config) topic = "test_topic" - self.loop.run_until_complete(msg_bus.aioread([topic], mock_callback)) - aioread.assert_called_with(["test_topic"], self.loop, aiocallback=mock_callback) + asyncio.run(msg_bus.aioread([topic], mock_callback)) + aioread.assert_called_with(["test_topic"], aiocallback=mock_callback) @mock.patch.object(MsgKafka, "aiowrite") def test_aiowrite(self, aiowrite): - future = asyncio.Future(loop=self.loop) + future = asyncio.Future(loop=asyncio.new_event_loop()) future.set_result("mock") aiowrite.return_value = future - msg_bus = MessageBusClient(self.config, loop=self.loop) + msg_bus = MessageBusClient(self.config) topic = "test_topic" key = "test_key" msg = {"test": "test_msg"} - self.loop.run_until_complete(msg_bus.aiowrite(topic, key, msg)) - aiowrite.assert_called_with(topic, key, msg, self.loop) + asyncio.run(msg_bus.aiowrite(topic, key, msg)) + aiowrite.assert_called_with(topic, key, msg) @mock.patch.object(MsgKafka, "aioread") def test_aioread_once(self, aioread): - future = asyncio.Future(loop=self.loop) + future = asyncio.Future(loop=asyncio.new_event_loop()) future.set_result("mock") aioread.return_value = future - msg_bus = MessageBusClient(self.config, loop=self.loop) + msg_bus = MessageBusClient(self.config) topic = "test_topic" - self.loop.run_until_complete(msg_bus.aioread_once(topic)) - aioread.assert_called_with("test_topic", self.loop) + asyncio.run(msg_bus.aioread_once(topic)) + aioread.assert_called_with("test_topic") diff --git a/requirements-dev.txt b/requirements-dev.txt index 19ac50f..acd495b 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -34,7 +34,7 @@ cachetools==5.3.0 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # google-auth -certifi==2022.12.7 +certifi==2023.5.7 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # kubernetes @@ -44,18 +44,23 @@ cffi==1.15.1 # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # cryptography # pynacl -charset-normalizer==3.0.1 +charset-normalizer==3.1.0 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas # requests -cryptography==39.0.1 +cryptography==40.0.2 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # paramiko dataclasses==0.6 # via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas -google-auth==2.16.1 +dnspython==2.3.0 + # via + # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas + # -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas + # pymongo +google-auth==2.17.3 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # kubernetes @@ -81,7 +86,8 @@ macaroonbakery==1.3.1 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # juju -motor==1.3.1 + # theblues +motor==3.1.2 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas @@ -93,7 +99,7 @@ oauthlib==3.2.2 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # requests-oauthlib -packaging==23.0 +packaging==23.1 # via # -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas # aiokafka @@ -107,13 +113,13 @@ protobuf==3.20.3 # -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas # macaroonbakery # temporalio -pyasn1==0.4.8 +pyasn1==0.5.0 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # juju # pyasn1-modules # rsa -pyasn1-modules==0.2.8 +pyasn1-modules==0.3.0 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # google-auth @@ -131,7 +137,7 @@ pymacaroons==0.13.0 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # macaroonbakery -pymongo==3.13.0 +pymongo==4.3.3 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas @@ -153,7 +159,7 @@ python-dateutil==2.8.2 # -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas # kubernetes # temporalio -pytz==2022.7.1 +pytz==2023.3 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # pyrfc3339 @@ -163,7 +169,7 @@ pyyaml==5.4.1 # -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas # juju # kubernetes -requests==2.28.2 +requests==2.30.0 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # hvac @@ -210,7 +216,7 @@ typing-inspect==0.8.0 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # juju -urllib3==1.26.14 +urllib3==2.0.2 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # kubernetes @@ -219,7 +225,7 @@ websocket-client==1.5.1 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # kubernetes -websockets==8.1 +websockets==11.0.3 # via # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas # juju diff --git a/requirements-test.in b/requirements-test.in index a669fad..dab3c72 100644 --- a/requirements-test.in +++ b/requirements-test.in @@ -20,7 +20,7 @@ # contact: helena.mcgough@intel.com or adrian.hoban@intel.com ## certifi -charset-normalizer<4 # Required by aiohttp in LCM via N2VC +charset-normalizer coverage mock nose2 diff --git a/requirements-test.txt b/requirements-test.txt index d0d5d02..f71d256 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -14,27 +14,27 @@ # See the License for the specific language governing permissions and # limitations under the License. ####################################################################################### -certifi==2022.12.7 +certifi==2023.5.7 # via # -r requirements-test.in # requests -charset-normalizer==3.0.1 +charset-normalizer==3.1.0 # via # -r requirements-test.in # requests -coverage==7.2.1 +coverage==7.2.5 # via -r requirements-test.in idna==3.4 # via requests -mock==5.0.1 +mock==5.0.2 # via -r requirements-test.in -nose2==0.12.0 +nose2==0.13.0 # via -r requirements-test.in -requests==2.28.2 +requests==2.30.0 # via requests-mock requests-mock==1.10.0 # via -r requirements-test.in six==1.16.0 # via requests-mock -urllib3==1.26.14 +urllib3==2.0.2 # via requests diff --git a/requirements.in b/requirements.in index 9ce5e5a..cc55f0d 100644 --- a/requirements.in +++ b/requirements.in @@ -21,7 +21,7 @@ aiokafka certifi cffi -charset-normalizer<4 # Required by aiohttp in LCM via N2VC +charset-normalizer cryptography gnocchiclient humanfriendly diff --git a/requirements.txt b/requirements.txt index f6aa421..fe00489 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,15 +20,11 @@ appdirs==1.4.4 # via openstacksdk async-timeout==4.0.2 # via aiokafka -attrs==22.2.0 +attrs==23.1.0 # via cmd2 autopage==0.5.1 # via cliff -backports-zoneinfo==0.2.1 - # via - # pytz-deprecation-shim - # tzlocal -certifi==2022.12.7 +certifi==2023.5.7 # via # -r requirements.in # requests @@ -36,11 +32,11 @@ cffi==1.15.1 # via # -r requirements.in # cryptography -charset-normalizer==3.0.1 +charset-normalizer==3.1.0 # via # -r requirements.in # requests -cliff==4.2.0 +cliff==4.3.0 # via # gnocchiclient # osc-lib @@ -49,13 +45,13 @@ cmd2==2.4.3 # via cliff contourpy==1.0.7 # via matplotlib -cryptography==39.0.1 +cryptography==40.0.2 # via # -r requirements.in # openstacksdk cycler==0.11.0 # via matplotlib -dateparser==1.1.7 +dateparser==1.1.8 # via prometheus-api-client debtcollector==2.5.0 # via @@ -70,9 +66,9 @@ decorator==5.1.1 # via # dogpile-cache # openstacksdk -dogpile-cache==1.1.8 +dogpile-cache==1.2.0 # via openstacksdk -fonttools==4.38.0 +fonttools==4.39.4 # via matplotlib futurist==2.4.1 # via gnocchiclient @@ -86,7 +82,7 @@ humanfriendly==10.0 # pyvcloud idna==3.4 # via requests -importlib-metadata==6.0.0 +importlib-metadata==6.6.0 # via cliff importlib-resources==5.12.0 # via matplotlib @@ -124,9 +120,9 @@ lxml==4.9.2 # -r requirements.in # pyvcloud # unittest-xml-reporting -matplotlib==3.7.0 +matplotlib==3.7.1 # via prometheus-api-client -msgpack==1.0.4 +msgpack==1.0.5 # via oslo-serialization netaddr==0.8.0 # via @@ -137,23 +133,24 @@ netifaces==0.11.0 # via # openstacksdk # oslo-utils -numpy==1.24.2 +numpy==1.24.3 # via # contourpy # matplotlib # pandas # prometheus-api-client -openstacksdk==1.0.1 +openstacksdk==1.1.0 # via # os-client-config # osc-lib + # python-neutronclient os-client-config==2.1.0 # via python-neutronclient os-service-types==1.7.0 # via # keystoneauth1 # openstacksdk -osc-lib==2.7.0 +osc-lib==2.8.0 # via python-neutronclient oslo-config==9.1.1 # via @@ -172,7 +169,7 @@ oslo-i18n==6.0.0 # python-keystoneclient # python-neutronclient # python-novaclient -oslo-log==5.1.0 +oslo-log==5.2.0 # via python-neutronclient oslo-serialization==5.1.1 # via @@ -191,14 +188,14 @@ oslo-utils==6.1.0 # python-keystoneclient # python-neutronclient # python-novaclient -packaging==23.0 +packaging==23.1 # via # aiokafka # matplotlib # oslo-utils # python-keystoneclient # pyvcloud -pandas==1.5.3 +pandas==2.0.1 # via prometheus-api-client pbr==5.11.1 # via @@ -216,7 +213,7 @@ pbr==5.11.1 # python-neutronclient # python-novaclient # stevedore -pillow==9.4.0 +pillow==9.5.0 # via matplotlib prettytable==0.7.2 # via @@ -230,7 +227,7 @@ prometheus-client==0.16.0 # via -r requirements.in pycparser==2.21 # via cffi -pygments==2.14.0 +pygments==2.15.1 # via pyvcloud pyinotify==0.9.6 # via oslo-log @@ -256,11 +253,11 @@ python-keystoneclient==5.1.0 # via # -r requirements.in # python-neutronclient -python-neutronclient==9.0.0 +python-neutronclient==10.0.0 # via -r requirements.in python-novaclient==18.3.0 # via -r requirements.in -pytz==2022.7.1 +pytz==2023.3 # via # dateparser # oslo-serialization @@ -277,9 +274,9 @@ pyyaml==5.4.1 # openstacksdk # oslo-config # pyvcloud -regex==2022.10.31 +regex==2023.5.5 # via dateparser -requests==2.28.2 +requests==2.30.0 # via # -r requirements.in # httmock @@ -295,7 +292,7 @@ requestsexceptions==1.4.0 # via openstacksdk rfc3986==2.0.0 # via oslo-config -simplejson==3.18.3 +simplejson==3.19.1 # via # osc-lib # python-cinderclient @@ -319,15 +316,15 @@ stevedore==5.0.0 # python-cinderclient # python-keystoneclient # python-novaclient -tzdata==2022.7 - # via pytz-deprecation-shim -tzlocal==4.2 +tzdata==2023.3 + # via pandas +tzlocal==4.3 # via dateparser ujson==5.7.0 # via gnocchiclient unittest-xml-reporting==3.2.0 # via pyvcloud -urllib3==1.26.14 +urllib3==2.0.2 # via requests vcd-api-schemas-type==10.3.0.dev72 # via pyvcloud diff --git a/tox.ini b/tox.ini index 7489f16..21c559d 100644 --- a/tox.ini +++ b/tox.ini @@ -23,7 +23,7 @@ toxworkdir = /tmp/.tox [testenv] usedevelop = True -basepython = python3.8 +basepython = python3.10 setenv = VIRTUAL_ENV={envdir} PYTHONDONTWRITEBYTECODE = 1 deps = -r{toxinidir}/requirements.txt @@ -50,7 +50,7 @@ commands = coverage report --omit='*tests*' coverage html -d ./cover --omit='*tests*' coverage xml -o coverage.xml --omit=*tests* -whitelist_externals = sh +allowlist_externals = sh ####################################################################################### @@ -85,7 +85,7 @@ commands = [testenv:pip-compile] deps = pip-tools==6.6.2 skip_install = true -whitelist_externals = bash +allowlist_externals = bash [ commands = - bash -c "for file in requirements*.in ; do \ @@ -101,7 +101,7 @@ commands = [testenv:dist] deps = {[testenv]deps} -r{toxinidir}/requirements-dist.txt - +allowlist_externals = sh # In the commands, we copy the requirements.txt to be presented as a source file (.py) # so it gets included in the .deb package for others to consume commands = @@ -109,7 +109,6 @@ commands = python3 setup.py --command-packages=stdeb.command sdist_dsc sh -c 'cd deb_dist/osm-mon*/ && dpkg-buildpackage -rfakeroot -uc -us' sh -c 'rm osm_mon/requirements.txt' -whitelist_externals = sh ####################################################################################### [flake8] -- 2.25.1