summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
ca2fd22)
Removal of deprecated event loop
Updated pip requirements
Change-Id: I96a895d8f9fa8db89e6bbfd6f009d4f56deaa418
Signed-off-by: Mark Beierl <mark.beierl@canonical.com>
12 files changed:
# devops-stages/stage-build.sh
#
# devops-stages/stage-build.sh
#
ARG APT_PROXY
RUN if [ ! -z $APT_PROXY ] ; then \
ARG APT_PROXY
RUN if [ ! -z $APT_PROXY ] ; then \
python3 \
python3-all \
python3-dev \
python3 \
python3-all \
python3-dev \
+ 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
# contact: bdiaz@whitestack.com or glavado@whitestack.com
##
import argparse
# contact: bdiaz@whitestack.com or glavado@whitestack.com
##
import argparse
import logging
import sys
import logging
import sys
log.info("Starting MON Server...")
log.debug("Config: %s", cfg.conf)
log.info("Initializing database...")
log.info("Starting MON Server...")
log.debug("Config: %s", cfg.conf)
log.info("Initializing database...")
- loop = asyncio.get_event_loop()
- server = Server(cfg, loop)
server.run()
except Exception as e:
log.error("Failed to start MON Server")
server.run()
except Exception as e:
log.error("Failed to start MON Server")
def __init__(self, config: Config):
super().__init__(config)
self.common_db = CommonDbClient(config)
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
# host = config.get("vca", "host")
# port = config.get("vca", "port") if "port" in config.conf["vca"] else 17070
db=self.common_db.common_db,
fs=object(),
log=log,
db=self.common_db.common_db,
fs=object(),
log=log,
if vca_deployment_info.get("model") and vca_deployment_info.get(
"application"
):
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"],
self.n2vc.get_metrics(
vca_deployment_info["model"],
vca_deployment_info["application"],
# For those usages not covered by the Apache License, Version 2.0 please
# contact: bdiaz@whitestack.com or glavado@whitestack.com
##
# For those usages not covered by the Apache License, Version 2.0 please
# contact: bdiaz@whitestack.com or glavado@whitestack.com
##
from typing import List, Callable
from osm_common import msgkafka, msglocal
from typing import List, Callable
from osm_common import msgkafka, msglocal
- 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":
if config.get("message", "driver") == "local":
self.msg_bus = msglocal.MsgLocal()
elif config.get("message", "driver") == "kafka":
"Unknown message bug driver {}".format(config.get("section", "driver"))
)
self.msg_bus.connect(config.get("message"))
"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):
"""
async def aioread(self, topics: List[str], callback: Callable = None, **kwargs):
"""
:param kwargs: Keyword arguments to be passed to callback function.
:return: None
"""
: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):
"""
async def aiowrite(self, topic: str, key: str, msg: dict):
"""
:param msg: Dictionary containing message to be written.
:return: None
"""
: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):
"""
async def aioread_once(self, topic: str):
"""
:param topic: topic to retrieve message from.
:return: tuple(topic, key, message)
"""
: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)
- def __init__(self, config: Config, loop=None):
+ def __init__(self, config: Config):
self.conf = config
self.service = DashboarderService(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.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"]
async def start(self, wait_time=5):
topics = ["users", "project"]
- def __init__(self, config: Config, loop=None):
+ def __init__(self, config: Config):
- if not loop:
- loop = asyncio.get_event_loop()
- self.loop = loop
self.service = EvaluatorService(config)
self.msg_bus = MessageBusClient(config)
self.service = EvaluatorService(config)
self.msg_bus = MessageBusClient(config)
log.debug("_notify_alarm")
resp_message = self._build_alarm_response(alarm, status)
log.info("Sent alarm notification: %s", resp_message)
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(
self.msg_bus.aiowrite("alarm_response", "notify_alarm", resp_message)
)
evaluator_service = EvaluatorService(self.conf)
self.msg_bus.aiowrite("alarm_response", "notify_alarm", resp_message)
)
evaluator_service = EvaluatorService(self.conf)
- def __init__(self, config: Config, loop=None):
+ def __init__(self, config: 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.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"]
async def start(self, wait_time=5):
topics = ["alarm_request"]
def setUp(self):
self.config = Config()
self.config.set("message", "driver", "kafka")
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
@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
future.set_result("mock")
aioread.return_value = future
- msg_bus = MessageBusClient(self.config, loop=self.loop)
+ msg_bus = MessageBusClient(self.config)
- 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):
@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
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"}
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):
@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
future.set_result("mock")
aioread.return_value = future
- msg_bus = MessageBusClient(self.config, loop=self.loop)
+ msg_bus = MessageBusClient(self.config)
- 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")
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# google-auth
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# google-auth
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# requests
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# requests
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# paramiko
dataclasses==0.6
# via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=master
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# paramiko
dataclasses==0.6
# via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=master
+dnspython==2.3.0
+ # via
+ # -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
+ # -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=master
+ # pymongo
+google-auth==2.17.3
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# via
# -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=master
# aiokafka
# via
# -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=master
# aiokafka
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# theblues
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# theblues
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=master
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=master
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# typing-inspect
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# typing-inspect
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# requests-oauthlib
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# requests-oauthlib
# via
# -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=master
# aiokafka
# via
# -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=master
# aiokafka
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# macaroonbakery
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# macaroonbakery
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# pyasn1-modules
# rsa
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# pyasn1-modules
# rsa
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# google-auth
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# google-auth
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# macaroonbakery
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# macaroonbakery
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=master
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=master
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# pyrfc3339
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# pyrfc3339
# juju
# jujubundlelib
# kubernetes
# juju
# jujubundlelib
# kubernetes
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
-typing-extensions==4.4.0
+typing-extensions==4.5.0
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# typing-inspect
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# typing-inspect
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# requests
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# requests
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# kubernetes
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=master
# juju
# See the License for the specific language governing permissions and
# limitations under the License.
#######################################################################################
# See the License for the specific language governing permissions and
# limitations under the License.
#######################################################################################
# via
# -r requirements-test.in
# requests
# via
# -r requirements-test.in
# requests
# via
# -r requirements-test.in
# requests
# via
# -r requirements-test.in
# requests
# via -r requirements-test.in
idna==3.4
# via requests
# via -r requirements-test.in
idna==3.4
# via requests
# via -r requirements-test.in
# via -r requirements-test.in
# via -r requirements-test.in
# via -r requirements-test.in
# via requests-mock
requests-mock==1.10.0
# via -r requirements-test.in
six==1.16.0
# via requests-mock
# via requests-mock
requests-mock==1.10.0
# via -r requirements-test.in
six==1.16.0
# via requests-mock
# via openstacksdk
async-timeout==4.0.2
# via aiokafka
# via openstacksdk
async-timeout==4.0.2
# via aiokafka
# via cmd2
autopage==0.5.1
# via cliff
# via cmd2
autopage==0.5.1
# via cliff
-backports-zoneinfo==0.2.1
- # via
- # pytz-deprecation-shim
- # tzlocal
-certifi==2022.12.7
# via
# -r requirements.in
# requests
# via
# -r requirements.in
# requests
# via
# -r requirements.in
# requests
# via
# -r requirements.in
# requests
# via
# gnocchiclient
# osc-lib
# via
# gnocchiclient
# osc-lib
# via cliff
contourpy==1.0.7
# via matplotlib
# via cliff
contourpy==1.0.7
# via matplotlib
# via
# -r requirements.in
# openstacksdk
cycler==0.11.0
# via matplotlib
# via
# -r requirements.in
# openstacksdk
cycler==0.11.0
# via matplotlib
# via prometheus-api-client
debtcollector==2.5.0
# via
# via prometheus-api-client
debtcollector==2.5.0
# via
# via
# dogpile-cache
# openstacksdk
# via
# dogpile-cache
# openstacksdk
# via matplotlib
futurist==2.4.1
# via gnocchiclient
# via matplotlib
futurist==2.4.1
# via gnocchiclient
# via -r requirements.in
httmock==1.4.0
# via prometheus-api-client
# via -r requirements.in
httmock==1.4.0
# via prometheus-api-client
# pyvcloud
idna==3.4
# via requests
# pyvcloud
idna==3.4
# via requests
-importlib-metadata==6.0.0
+importlib-metadata==6.6.0
# via cliff
iso8601==1.1.0
# via
# via cliff
iso8601==1.1.0
# via
# via jsonpatch
kafka-python==2.0.2
# via aiokafka
# via jsonpatch
kafka-python==2.0.2
# via aiokafka
# via
# gnocchiclient
# openstacksdk
# via
# gnocchiclient
# openstacksdk
# -r requirements.in
# pyvcloud
# unittest-xml-reporting
# -r requirements.in
# pyvcloud
# unittest-xml-reporting
# via prometheus-api-client
# via prometheus-api-client
-monotonic==1.6
- # via gnocchiclient
-msgpack==1.0.4
-munch==2.5.0
- # via openstacksdk
netaddr==0.8.0
# via
# oslo-config
netaddr==0.8.0
# via
# oslo-config
# via
# openstacksdk
# oslo-utils
# via
# openstacksdk
# oslo-utils
# via
# contourpy
# matplotlib
# pandas
# prometheus-api-client
# via
# contourpy
# matplotlib
# pandas
# prometheus-api-client
# via
# os-client-config
# osc-lib
# via
# os-client-config
# osc-lib
# via
# keystoneauth1
# openstacksdk
# via
# keystoneauth1
# openstacksdk
# via python-neutronclient
# via python-neutronclient
# via
# oslo-log
# python-keystoneclient
# via
# oslo-log
# python-keystoneclient
# via
# osc-lib
# oslo-config
# via
# osc-lib
# oslo-config
# python-keystoneclient
# python-neutronclient
# python-novaclient
# python-keystoneclient
# python-neutronclient
# python-novaclient
# via python-neutronclient
# via python-neutronclient
-oslo-serialization==5.0.0
+oslo-serialization==5.1.1
# via
# oslo-log
# python-ceilometerclient
# via
# oslo-log
# python-ceilometerclient
# python-keystoneclient
# python-neutronclient
# python-novaclient
# python-keystoneclient
# python-neutronclient
# python-novaclient
# via
# aiokafka
# matplotlib
# oslo-utils
# python-keystoneclient
# pyvcloud
# via
# aiokafka
# matplotlib
# oslo-utils
# python-keystoneclient
# pyvcloud
# via prometheus-api-client
pbr==5.11.1
# via
# via prometheus-api-client
pbr==5.11.1
# via
# keystoneauth1
# openstacksdk
# os-service-types
# keystoneauth1
# openstacksdk
# os-service-types
# python-neutronclient
# python-novaclient
# stevedore
# python-neutronclient
# python-novaclient
# stevedore
# via matplotlib
prettytable==0.7.2
# via
# via matplotlib
prettytable==0.7.2
# via
# python-ceilometerclient
# python-cinderclient
# python-novaclient
# python-ceilometerclient
# python-cinderclient
# python-novaclient
-prometheus-api-client==0.5.2
+prometheus-api-client==0.5.3
# via -r requirements.in
prometheus-client==0.16.0
# via -r requirements.in
pycparser==2.21
# via cffi
# via -r requirements.in
prometheus-client==0.16.0
# via -r requirements.in
pycparser==2.21
# via cffi
# via pyvcloud
pyinotify==0.9.6
# via oslo-log
# via pyvcloud
pyinotify==0.9.6
# via oslo-log
# oslo-log
# pandas
# pyvcloud
# oslo-log
# pandas
# pyvcloud
-python-keystoneclient==5.0.1
+python-keystoneclient==5.1.0
# via
# -r requirements.in
# python-neutronclient
# via
# -r requirements.in
# python-neutronclient
-python-neutronclient==8.2.1
+python-neutronclient==9.0.0
-python-novaclient==18.2.0
+python-novaclient==18.3.0
# via
# dateparser
# oslo-serialization
# via
# dateparser
# oslo-serialization
# openstacksdk
# oslo-config
# pyvcloud
# openstacksdk
# oslo-config
# pyvcloud
# via
# -r requirements.in
# httmock
# via
# -r requirements.in
# httmock
# via openstacksdk
rfc3986==2.0.0
# via oslo-config
# via openstacksdk
rfc3986==2.0.0
# via oslo-config
# via
# osc-lib
# python-cinderclient
# via
# osc-lib
# python-cinderclient
# -r requirements.in
# gnocchiclient
# keystoneauth1
# -r requirements.in
# gnocchiclient
# keystoneauth1
# python-ceilometerclient
# python-dateutil
# python-keystoneclient
# python-ceilometerclient
# python-dateutil
# python-keystoneclient
# via
# cliff
# dogpile-cache
# via
# cliff
# dogpile-cache
# python-cinderclient
# python-keystoneclient
# python-novaclient
# python-cinderclient
# python-keystoneclient
# python-novaclient
-tzdata==2022.7
- # via pytz-deprecation-shim
-tzlocal==4.2
+tzdata==2023.3
+ # via
+ # pandas
+ # pytz-deprecation-shim
+tzlocal==4.3
# via dateparser
ujson==5.7.0
# via gnocchiclient
unittest-xml-reporting==3.2.0
# via pyvcloud
# via dateparser
ujson==5.7.0
# via gnocchiclient
unittest-xml-reporting==3.2.0
# via pyvcloud
# via requests
vcd-api-schemas-type==10.3.0.dev72
# via pyvcloud
wcwidth==0.2.6
# via cmd2
# via requests
vcd-api-schemas-type==10.3.0.dev72
# via pyvcloud
wcwidth==0.2.6
# via cmd2
[testenv]
usedevelop = True
[testenv]
usedevelop = True
setenv = VIRTUAL_ENV={envdir}
PYTHONDONTWRITEBYTECODE = 1
deps = -r{toxinidir}/requirements.txt
setenv = VIRTUAL_ENV={envdir}
PYTHONDONTWRITEBYTECODE = 1
deps = -r{toxinidir}/requirements.txt