Feature 10887: Add cross-model relations support
Changes:
- Update the `osm_lcm.ns.NsLcm._add_vca_relations` function, and
decouple it into simpler and smaller functions.
- Get relation data for the descriptor taking into account the changes
introduced here: https://osm.etsi.org/gerrit/11212/
- Add `osm_lcm.data_utils.vca` module to take care of VCA related parts
in the IM
- Add a couple of functions into the `osm_lcm.data_utils` package:
- nsd: get_vnf_profile(), get_ns_configuration(),
get_ns_configuration_relation_list()
- nsr: get_nsd(), get_deployed_vca_list(), get_deployed_vca()
- vnfd: get_relation_list()
- Rename `osm_lcm.data_utils.vnfd.get_kdu_profile` to `osm_lcm.data_utils.vnfd.get_kdu_resource_profile`
Change-Id: I6da29e656d092e17c85b44f5b3960a6ca3aa3ad8
Signed-off-by: David Garcia <david.garcia@canonical.com>
diff --git a/osm_lcm/data_utils/nsd.py b/osm_lcm/data_utils/nsd.py
index 2917c04..9b6fb81 100644
--- a/osm_lcm/data_utils/nsd.py
+++ b/osm_lcm/data_utils/nsd.py
@@ -23,11 +23,20 @@
##
import ast
+from osm_lcm.data_utils.list_utils import find_in_list
+
def get_vnf_profiles(nsd):
return nsd.get("df")[0].get("vnf-profile", ())
+def get_vnf_profile(nsd, vnf_profile_id):
+ return find_in_list(
+ get_vnf_profiles(nsd),
+ lambda vnf_profile: vnf_profile["id"] == vnf_profile_id,
+ )
+
+
def get_virtual_link_profiles(nsd):
return nsd.get("df")[0].get("virtual-link-profile", ())
@@ -36,3 +45,11 @@
dict_str = str(nsd)
dict_str.replace(old_vnf_id, new_vnf_id)
return ast.literal_eval(dict_str)
+
+
+def get_ns_configuration(nsd):
+ return nsd.get("ns-configuration", {})
+
+
+def get_ns_configuration_relation_list(nsd):
+ return get_ns_configuration(nsd).get("relation", [])