Merge remote-tracking branch 'origin/master' into paas
Change-Id: If911e353cbeb9f278c57c69812cbdfce0ad1e242
Signed-off-by: Mark Beierl <mark.beierl@canonical.com>
diff --git a/osm_lcm/data_utils/database/database.py b/osm_lcm/data_utils/database/database.py
index dc7c8d9..0f46807 100644
--- a/osm_lcm/data_utils/database/database.py
+++ b/osm_lcm/data_utils/database/database.py
@@ -45,7 +45,7 @@
config["database"]["driver"]
)
)
- except (DbException) as e:
+ except DbException as e:
self.logger.critical(str(e), exc_info=True)
raise Exception(str(e))
diff --git a/osm_lcm/data_utils/filesystem/filesystem.py b/osm_lcm/data_utils/filesystem/filesystem.py
index c0110ef..f33a41b 100644
--- a/osm_lcm/data_utils/filesystem/filesystem.py
+++ b/osm_lcm/data_utils/filesystem/filesystem.py
@@ -44,7 +44,7 @@
config["storage"]["driver"]
)
)
- except (FsException) as e:
+ except FsException as e:
self.logger.critical(str(e), exc_info=True)
raise Exception(str(e))
diff --git a/osm_lcm/lcm.py b/osm_lcm/lcm.py
index 6da333c..723ca7a 100644
--- a/osm_lcm/lcm.py
+++ b/osm_lcm/lcm.py
@@ -63,7 +63,6 @@
class Lcm:
-
ping_interval_pace = (
120 # how many time ping is send once is confirmed all is running
)
@@ -348,6 +347,13 @@
"k8scluster", k8scluster_id, order_id, "k8scluster_create", task
)
return
+ elif command == "edit" or command == "edited":
+ k8scluster_id = params.get("_id")
+ task = asyncio.ensure_future(self.k8scluster.edit(params, order_id))
+ self.lcm_tasks.register(
+ "k8scluster", k8scluster_id, order_id, "k8scluster_edit", task
+ )
+ return
elif command == "delete" or command == "deleted":
k8scluster_id = params.get("_id")
task = asyncio.ensure_future(self.k8scluster.delete(params, order_id))
@@ -700,7 +706,6 @@
self.logger.debug("Task kafka_read exit")
def start(self):
-
# check RO version
self.loop.run_until_complete(self.check_RO_version())
@@ -797,7 +802,6 @@
if __name__ == "__main__":
-
try:
# print("SYS.PATH='{}'".format(sys.path))
# load parameters and configuration
diff --git a/osm_lcm/lcm_helm_conn.py b/osm_lcm/lcm_helm_conn.py
index b8817a5..4d1bfb2 100644
--- a/osm_lcm/lcm_helm_conn.py
+++ b/osm_lcm/lcm_helm_conn.py
@@ -674,7 +674,6 @@
)
try:
-
# Obtain cluster_uuid
system_cluster_uuid = await self._get_system_cluster_id()
@@ -799,7 +798,6 @@
channel.close()
def _write_op_detailed_status(self, db_dict, status, detailed_message):
-
# write ee_id to database: _admin.deployed.VCA.x
try:
the_table = db_dict["collection"]
diff --git a/osm_lcm/lcm_utils.py b/osm_lcm/lcm_utils.py
index 956e44f..7ce1841 100644
--- a/osm_lcm/lcm_utils.py
+++ b/osm_lcm/lcm_utils.py
@@ -269,7 +269,6 @@
target_charm = self.fs.path + target_charm_path
if os.path.exists(current_charm) and os.path.exists(target_charm):
-
# Compare the hash of .charm files
if current_charm.endswith(".charm"):
return LcmBase.compare_charm_hash(current_charm, target_charm)
@@ -383,7 +382,6 @@
# Get the NSD package path
if revision:
-
nsd_package_path = db_nsr["nsd-id"] + ":" + str(revision)
db_nsd = self.db.get_one("nsds_revisions", {"_id": nsd_package_path})
diff --git a/osm_lcm/netslice.py b/osm_lcm/netslice.py
index 2256540..47e3f19 100644
--- a/osm_lcm/netslice.py
+++ b/osm_lcm/netslice.py
@@ -75,7 +75,6 @@
)
async def instantiate(self, nsir_id, nsilcmop_id):
-
# Try to lock HA task here
task_is_locked_by_me = self.lcm_tasks.lock_HA("nsi", "nsilcmops", nsilcmop_id)
if not task_is_locked_by_me:
@@ -572,7 +571,6 @@
self.lcm_tasks.remove("nsi", nsir_id, nsilcmop_id, "nsi_instantiate")
async def terminate(self, nsir_id, nsilcmop_id):
-
# Try to lock HA task here
task_is_locked_by_me = self.lcm_tasks.lock_HA("nsi", "nsilcmops", nsilcmop_id)
if not task_is_locked_by_me:
diff --git a/osm_lcm/nglcm.py b/osm_lcm/nglcm.py
index 67b2a3f..6972477 100644
--- a/osm_lcm/nglcm.py
+++ b/osm_lcm/nglcm.py
@@ -37,7 +37,6 @@
class NGLcm:
-
main_config = LcmCfg()
def __init__(self, config_file, loop=None):
@@ -97,7 +96,7 @@
try:
self.db = Database(self.main_config.to_dict()).instance.db
- except (DbException) as e:
+ except DbException as e:
self.logger.critical(str(e), exc_info=True)
raise LcmException(str(e))
@@ -142,7 +141,6 @@
if __name__ == "__main__":
-
try:
opts, args = getopt.getopt(
sys.argv[1:], "hc:", ["config=", "help", "health-check"]
diff --git a/osm_lcm/ns.py b/osm_lcm/ns.py
index 73bea40..915581f 100644
--- a/osm_lcm/ns.py
+++ b/osm_lcm/ns.py
@@ -245,7 +245,6 @@
return None
def _on_update_ro_db(self, nsrs_id, ro_descriptor):
-
# self.logger.debug('_on_update_ro_db(nsrs_id={}'.format(nsrs_id))
try:
@@ -263,7 +262,6 @@
)
async def _on_update_n2vc_db(self, table, filter, path, updated_data, vca_id=None):
-
# remove last dot from path (if exists)
if path.endswith("."):
path = path[:-1]
@@ -271,7 +269,6 @@
# self.logger.debug('_on_update_n2vc_db(table={}, filter={}, path={}, updated_data={}'
# .format(table, filter, path, updated_data))
try:
-
nsr_id = filter.get("_id")
# read ns record from database
@@ -532,7 +529,6 @@
return wim_account
def scale_vnfr(self, db_vnfr, vdu_create=None, vdu_delete=None, mark_delete=False):
-
db_vdu_push_list = []
template_vdur = []
db_update = {"_admin.modified": time()}
@@ -820,7 +816,6 @@
start_deploy,
timeout_ns_deploy,
):
-
db_vims = {}
def get_vim_account(vim_account_id):
@@ -915,7 +910,6 @@
lambda v_vld: v_vld["name"] in (a_vld["name"], a_vld["id"]),
)
if target_vld:
-
if vnf_params.get("vimAccountId") not in a_vld.get(
"vim_info", {}
):
@@ -1568,7 +1562,6 @@
ro_retries = 0
while True:
-
ro_retries += 1
if ro_retries >= 360: # 1 hour
raise LcmException(
@@ -1753,7 +1746,6 @@
}
step = ""
try:
-
element_type = "NS"
element_under_configuration = nsr_id
@@ -1837,7 +1829,6 @@
vca_id = self.get_vca_id(db_vnfr, db_nsr)
# create or register execution environment in VCA
if vca_type in ("lxc_proxy_charm", "k8s_proxy_charm", "helm", "helm-v3"):
-
self._write_configuration_status(
nsr_id=nsr_id,
vca_index=vca_index,
@@ -2298,7 +2289,6 @@
element_type: str = None,
other_update: dict = None,
):
-
# self.logger.debug('_write_configuration_status(): vca_index={}, status={}'
# .format(vca_index, status))
@@ -3188,7 +3178,6 @@
vca_index: int,
timeout: int = 3600,
) -> bool:
-
# steps:
# 1. find all relations for this VCA
# 2. wait for other peers related
@@ -3266,7 +3255,6 @@
timeout: int = 600,
vca_id: str = None,
):
-
try:
k8sclustertype = k8s_instance_info["k8scluster-type"]
# Instantiate kdu
@@ -5521,7 +5509,6 @@
raise
except Exception as e:
-
self.logger.debug("Error upgrading charm {}".format(path))
return "FAILED", "Error upgrading charm {}: {}".format(path, e)
@@ -5585,7 +5572,6 @@
nsr_deployed = db_nsr["_admin"].get("deployed")
if update_type == "CHANGE_VNFPKG":
-
# Get the input parameters given through update request
vnf_instance_id = db_nslcmop["operationParams"][
"changeVnfPackageData"
@@ -5625,7 +5611,6 @@
step = "Checking if revision has changed in VNFD"
if current_vnf_revision != latest_vnfd_revision:
-
change_type = "policy_updated"
# There is new revision of VNFD, update operation is required
@@ -5662,7 +5647,6 @@
step = "Getting descriptor config"
if current_vnfd.get("kdu"):
-
search_key = "kdu_name"
else:
search_key = "vnfd_id"
@@ -5683,7 +5667,6 @@
# There could be several charm used in the same VNF
for ee_item in ee_list:
if ee_item.get("juju"):
-
step = "Getting charm name"
charm_name = ee_item["juju"].get("charm")
@@ -5745,7 +5728,6 @@
if find_software_version(current_vnfd) != find_software_version(
latest_vnfd
):
-
step = "Checking if existing VNF has charm"
for current_charm_path, target_charm_path in list(
charm_artifact_paths
@@ -5787,10 +5769,8 @@
current_charm_path, target_charm_path
)
):
-
step = "Checking whether VNF uses juju bundle"
if check_juju_bundle_existence(current_vnfd):
-
raise LcmException(
"Charm upgrade is not supported for the instance which"
" uses juju-bundle: {}".format(
@@ -8177,7 +8157,6 @@
}
step = ""
try:
-
element_type = "NS"
element_under_configuration = nsr_id
diff --git a/osm_lcm/tests/test_lcm_utils.py b/osm_lcm/tests/test_lcm_utils.py
index 71ebab1..32abbf5 100644
--- a/osm_lcm/tests/test_lcm_utils.py
+++ b/osm_lcm/tests/test_lcm_utils.py
@@ -35,7 +35,6 @@
class TestLcmBase(TestCase):
-
test_nsr_id = "f48163a6-c807-47bc-9682-f72caef5af85"
test_nsd_id = "8c2f8b95-bb1b-47ee-8001-36dc090678da"
nsd_package_path = "/" + test_nsd_id
@@ -186,7 +185,6 @@
with patch("osm_lcm.lcm_utils.LcmBase._get_charm_path", mock_charm_path), patch(
"osm_lcm.lcm_utils.LcmBase._get_charm_metadata_file", mock_metadata_file
), patch("osm_lcm.lcm_utils.LcmBase.get_charm_name", mock_charm_name):
-
result = instance.find_charm_name(db_nsr, "simple")
self.assertEqual(result, expected_result, "Wrong charm name")
mock_charm_path.assert_called_once()
@@ -208,9 +206,7 @@
with patch("osm_lcm.lcm_utils.LcmBase._get_charm_path", mock_charm_path), patch(
"osm_lcm.lcm_utils.LcmBase._get_charm_metadata_file", mock_metadata_file
), patch("osm_lcm.lcm_utils.LcmBase.get_charm_name", mock_charm_name):
-
with self.assertRaises(LcmException):
-
instance.find_charm_name(db_nsr, "simple")
self.assertEqual(mock_charm_path.call_count, 1)
self.assertEqual(mock_metadata_file.call_count, 1)
@@ -226,7 +222,6 @@
with patch("osm_lcm.lcm_utils.LcmBase._get_charm_path", mock_charm_path), patch(
"osm_lcm.lcm_utils.LcmBase._get_charm_metadata_file", mock_metadata_file
), patch("osm_lcm.lcm_utils.LcmBase.get_charm_name", mock_charm_name):
-
with self.assertRaises(LcmException):
instance.find_charm_name(db_nsr, "")
mock_charm_path.assert_not_called()
@@ -245,7 +240,6 @@
with patch("osm_lcm.lcm_utils.LcmBase._get_charm_path", mock_charm_path), patch(
"osm_lcm.lcm_utils.LcmBase._get_charm_metadata_file", mock_metadata_file
), patch("osm_lcm.lcm_utils.LcmBase.get_charm_name", mock_charm_name):
-
with self.assertRaises(LcmException):
instance.find_charm_name(db_nsr, "simple")
self.assertEqual(mock_charm_path.call_count, 1)
diff --git a/osm_lcm/tests/test_vim_sdn.py b/osm_lcm/tests/test_vim_sdn.py
index 970dd00..98b3c5d 100644
--- a/osm_lcm/tests/test_vim_sdn.py
+++ b/osm_lcm/tests/test_vim_sdn.py
@@ -19,7 +19,7 @@
from osm_common import msgbase
from osm_common.dbbase import DbException
-from osm_lcm.vim_sdn import VcaLcm
+from osm_lcm.vim_sdn import K8sClusterLcm, VcaLcm
class AsyncMock(MagicMock):
@@ -316,3 +316,93 @@
)
self.lcm_tasks.unlock_HA.not_called()
self.lcm_tasks.remove.assert_called_with("vca", "id", "order-id")
+
+
+class TestK8SClusterLcm(TestCase):
+ @patch("osm_lcm.vim_sdn.K8sHelmConnector")
+ @patch("osm_lcm.vim_sdn.K8sHelm3Connector")
+ @patch("osm_lcm.vim_sdn.K8sJujuConnector")
+ @patch("osm_lcm.lcm_utils.Database")
+ @patch("osm_lcm.lcm_utils.Filesystem")
+ def setUp(
+ self,
+ mock_filesystem,
+ mock_database,
+ juju_connector,
+ helm3_connector,
+ helm_connector,
+ ):
+ self.loop = asyncio.get_event_loop()
+ self.msg = Mock(msgbase.MsgBase())
+ self.lcm_tasks = Mock()
+ self.config = {"database": {"driver": "mongo"}}
+ self.vca_config = {
+ "VCA": {
+ "helmpath": "/usr/local/bin/helm",
+ "helm3path": "/usr/local/bin/helm3",
+ "kubectlpath": "/usr/bin/kubectl",
+ }
+ }
+ self.k8scluster_lcm = K8sClusterLcm(
+ self.msg, self.lcm_tasks, self.vca_config, self.loop
+ )
+ self.k8scluster_lcm.db = Mock()
+ self.k8scluster_lcm.fs = Mock()
+
+ def test_k8scluster_edit(self):
+ k8scluster_content = {"op_id": "op-id", "_id": "id"}
+ order_id = "order-id"
+ self.lcm_tasks.lock_HA.return_value = True
+ self.loop.run_until_complete(
+ self.k8scluster_lcm.edit(k8scluster_content, order_id)
+ )
+ self.lcm_tasks.unlock_HA.assert_called_with(
+ "k8scluster",
+ "edit",
+ "op-id",
+ operationState="COMPLETED",
+ detailed_status="Not implemented",
+ )
+ self.lcm_tasks.remove.assert_called_with("k8scluster", "id", order_id)
+
+ def test_k8scluster_edit_lock_false(self):
+ k8scluster_content = {"op_id": "op-id", "_id": "id"}
+ order_id = "order-id"
+ self.lcm_tasks.lock_HA.return_value = False
+ self.loop.run_until_complete(
+ self.k8scluster_lcm.edit(k8scluster_content, order_id)
+ )
+ self.lcm_tasks.unlock_HA.assert_not_called()
+ self.lcm_tasks.remove.assert_not_called()
+
+ def test_k8scluster_edit_no_opid(self):
+ k8scluster_content = {"_id": "id"}
+ order_id = "order-id"
+ self.lcm_tasks.lock_HA.return_value = True
+ self.loop.run_until_complete(
+ self.k8scluster_lcm.edit(k8scluster_content, order_id)
+ )
+ self.lcm_tasks.unlock_HA.assert_called_with(
+ "k8scluster",
+ "edit",
+ None,
+ operationState="COMPLETED",
+ detailed_status="Not implemented",
+ )
+ self.lcm_tasks.remove.assert_called_with("k8scluster", "id", order_id)
+
+ def test_k8scluster_edit_no_orderid(self):
+ k8scluster_content = {"op_id": "op-id", "_id": "id"}
+ order_id = None
+ self.lcm_tasks.lock_HA.return_value = True
+ self.loop.run_until_complete(
+ self.k8scluster_lcm.edit(k8scluster_content, order_id)
+ )
+ self.lcm_tasks.unlock_HA.assert_called_with(
+ "k8scluster",
+ "edit",
+ "op-id",
+ operationState="COMPLETED",
+ detailed_status="Not implemented",
+ )
+ self.lcm_tasks.remove.assert_called_with("k8scluster", "id", order_id)
diff --git a/osm_lcm/vim_sdn.py b/osm_lcm/vim_sdn.py
index 41a16e5..ea25c2b 100644
--- a/osm_lcm/vim_sdn.py
+++ b/osm_lcm/vim_sdn.py
@@ -61,7 +61,6 @@
super().__init__(msg, self.logger)
async def create(self, vim_content, order_id):
-
# HA tasks and backward compatibility:
# If 'vim_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing.
@@ -214,7 +213,6 @@
self.lcm_tasks.remove("vim_account", vim_id, order_id)
async def edit(self, vim_content, order_id):
-
# HA tasks and backward compatibility:
# If 'vim_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, and the HA check always returns True
@@ -370,7 +368,6 @@
self.lcm_tasks.remove("vim_account", vim_id, order_id)
async def delete(self, vim_content, order_id):
-
# HA tasks and backward compatibility:
# If 'vim_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, and the HA check always returns True
@@ -483,7 +480,6 @@
super().__init__(msg, self.logger)
async def create(self, wim_content, order_id):
-
# HA tasks and backward compatibility:
# If 'wim_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing.
@@ -600,7 +596,6 @@
self.lcm_tasks.remove("wim_account", wim_id, order_id)
async def edit(self, wim_content, order_id):
-
# HA tasks and backward compatibility:
# If 'wim_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, and the HA check always returns True
@@ -628,7 +623,6 @@
and db_wim["_admin"].get("deployed")
and db_wim["_admin"]["deployed"].get("RO")
):
-
RO_wim_id = db_wim["_admin"]["deployed"]["RO"]
step = "Editing wim at RO"
RO = ROclient.ROClient(self.loop, **self.ro_config)
@@ -721,7 +715,6 @@
self.lcm_tasks.remove("wim_account", wim_id, order_id)
async def delete(self, wim_content, order_id):
-
# HA tasks and backward compatibility:
# If 'vim_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, and the HA check always returns True
@@ -831,7 +824,6 @@
super().__init__(msg, self.logger)
async def create(self, sdn_content, order_id):
-
# HA tasks and backward compatibility:
# If 'sdn_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing.
@@ -912,7 +904,6 @@
self.lcm_tasks.remove("sdn", sdn_id, order_id)
async def edit(self, sdn_content, order_id):
-
# HA tasks and backward compatibility:
# If 'sdn_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, and the HA check always returns True
@@ -994,7 +985,6 @@
self.lcm_tasks.remove("sdn", sdn_id, order_id)
async def delete(self, sdn_content, order_id):
-
# HA tasks and backward compatibility:
# If 'vim_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, and the HA check always returns True
@@ -1127,7 +1117,6 @@
}
async def create(self, k8scluster_content, order_id):
-
op_id = k8scluster_content.pop("op_id", None)
if not self.lcm_tasks.lock_HA("k8scluster", "create", op_id):
return
@@ -1299,8 +1288,33 @@
self.logger.error(logging_text + "Cannot update database: {}".format(e))
self.lcm_tasks.remove("k8scluster", k8scluster_id, order_id)
- async def delete(self, k8scluster_content, order_id):
+ async def edit(self, k8scluster_content, order_id):
+ op_id = k8scluster_content.pop("op_id", None)
+ if not self.lcm_tasks.lock_HA("k8scluster", "edit", op_id):
+ return
+ k8scluster_id = k8scluster_content["_id"]
+
+ logging_text = "Task k8scluster_edit={} ".format(k8scluster_id)
+ self.logger.debug(logging_text + "Enter")
+
+ # TODO the implementation is pending and will be part of a new feature
+ # It will support rotation of certificates, update of credentials and K8S API endpoint
+ # At the moment the operation is set as completed
+
+ operation_state = "COMPLETED"
+ operation_details = "Not implemented"
+
+ self.lcm_tasks.unlock_HA(
+ "k8scluster",
+ "edit",
+ op_id,
+ operationState=operation_state,
+ detailed_status=operation_details,
+ )
+ self.lcm_tasks.remove("k8scluster", k8scluster_id, order_id)
+
+ async def delete(self, k8scluster_content, order_id):
# HA tasks and backward compatibility:
# If 'vim_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing.
@@ -1619,7 +1633,6 @@
self.lcm_tasks.remove("vca", vca_id, order_id)
async def delete(self, vca_content, order_id):
-
# HA tasks and backward compatibility:
# If "vim_content" does not include "op_id", we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, "op_id" is None, and lock_HA() will do nothing.
@@ -1698,7 +1711,6 @@
)
async def create(self, k8srepo_content, order_id):
-
# HA tasks and backward compatibility:
# If 'vim_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing.
@@ -1763,7 +1775,6 @@
self.lcm_tasks.remove("k8srepo", k8srepo_id, order_id)
async def delete(self, k8srepo_content, order_id):
-
# HA tasks and backward compatibility:
# If 'vim_content' does not include 'op_id', we a running a legacy NBI version.
# In such a case, HA is not supported by NBI, 'op_id' is None, and lock_HA() will do nothing.
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 2ec95c2..2c85a0f 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -14,21 +14,23 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#######################################################################################
-aiokafka==0.7.2
+aiokafka==0.8.0
# via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas
-async-timeout==3.0.1
+async-timeout==4.0.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
+ # aiokafka
# retrying-async
bcrypt==4.0.1
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# paramiko
-cachetools==5.2.0
+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.9.24
+certifi==2022.12.7
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# kubernetes
@@ -42,13 +44,13 @@
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# requests
-cryptography==38.0.1
+cryptography==39.0.0
# 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.12.0
+google-auth==2.16.0
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# kubernetes
@@ -66,7 +68,7 @@
# via
# -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas
# aiokafka
-kubernetes==24.2.0
+kubernetes==25.3.0
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# juju
@@ -76,20 +78,26 @@
# juju
# theblues
motor==1.3.1
- # via -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
+ # 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
mypy-extensions==0.4.3
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# typing-inspect
n2vc @ git+https://osm.etsi.org/gerrit/osm/N2VC.git@paas
# via -r requirements-dev.in
-oauthlib==3.2.1
+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
osm-common @ git+https://osm.etsi.org/gerrit/osm/common.git@paas
# via -r requirements-dev.in
-paramiko==2.11.0
+packaging==23.0
+ # via
+ # -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas
+ # aiokafka
+paramiko==2.12.0
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# juju
@@ -111,13 +119,13 @@
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# cffi
-pycrypto==2.6.1
+pycryptodome==3.17
# via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=paas
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.12.3
+pymongo==3.13.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
@@ -137,7 +145,7 @@
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# kubernetes
-pytz==2022.4
+pytz==2022.7.1
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# pyrfc3339
@@ -148,7 +156,7 @@
# juju
# jujubundlelib
# kubernetes
-requests==2.28.1
+requests==2.28.2
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# kubernetes
@@ -178,7 +186,7 @@
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# juju
-toposort==1.7
+toposort==1.9
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# juju
@@ -190,12 +198,12 @@
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# juju
-urllib3==1.26.12
+urllib3==1.26.14
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# kubernetes
# requests
-websocket-client==1.4.1
+websocket-client==1.5.0
# via
# -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=paas
# kubernetes
diff --git a/requirements-test.txt b/requirements-test.txt
index d157b15..4944259 100644
--- a/requirements-test.txt
+++ b/requirements-test.txt
@@ -16,7 +16,7 @@
#######################################################################################
asynctest==0.13.0
# via -r requirements-test.in
-coverage==7.0.5
+coverage==7.1.0
# via -r requirements-test.in
mock==5.0.1
# via -r requirements-test.in
diff --git a/requirements.in b/requirements.in
index 782bef5..8a96125 100644
--- a/requirements.in
+++ b/requirements.in
@@ -12,9 +12,10 @@
# under the License.
##
-aiohttp<3.8
-async-timeout<4
+aiohttp
+async-timeout
checksumdir
+config-man
grpcio-tools<1.48.2
grpclib
idna
@@ -22,5 +23,4 @@
pyyaml==5.4.1
pydantic
protobuf==3.20.3
-config-man==0.0.4
-temporalio
\ No newline at end of file
+temporalio
diff --git a/requirements.txt b/requirements.txt
index a14a076..5d912be 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -14,9 +14,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#######################################################################################
-aiohttp==3.7.4.post0
+aiohttp==3.8.3
# via -r requirements.in
-async-timeout==3.0.1
+aiosignal==1.3.1
+ # via aiohttp
+async-timeout==4.0.2
# via
# -r requirements.in
# aiohttp
@@ -28,7 +30,7 @@
# via
# face
# glom
-chardet==4.0.0
+charset-normalizer==2.1.1
# via aiohttp
checksumdir==1.2.0
# via -r requirements.in
@@ -36,6 +38,10 @@
# via -r requirements.in
face==20.1.1
# via glom
+frozenlist==1.3.3
+ # via
+ # aiohttp
+ # aiosignal
glom==23.1.1
# via config-man
grpcio==1.51.1
@@ -82,7 +88,6 @@
# via temporalio
typing-extensions==4.4.0
# via
- # aiohttp
# pydantic
# temporalio
yarl==1.8.2