class Relation(dict):
"""Represents a relation"""
+
def __init__(self, name, provider: EERelation, requirer: EERelation) -> NoReturn:
"""
Args:
class DeployedComponent(dict):
"""Represents a deployed component (nsr["_admin"]["deployed"])"""
+
def __init__(self, data: Dict[str, Any]):
"""
Args:
class DeployedK8sResource(DeployedComponent):
"""Represents a deployed component for a kdu resource"""
+
def __init__(self, data: Dict[str, Any]):
super().__init__(data)
class DeployedVCA(DeployedComponent):
"""Represents a VCA deployed component"""
+
def __init__(self, nsr_id: str, deployed_vca: Dict[str, Any]) -> NoReturn:
"""
Args:
if vld_params.get("common_id"):
target_vld["common_id"] = vld_params.get("common_id")
+ # modify target["ns"]["vld"] with instantiation parameters to override vnf vim-account
+ def update_ns_vld_target(target, ns_params):
+ for vnf_params in ns_params.get("vnf", ()):
+ if vnf_params.get("vimAccountId"):
+ target_vnf = next(
+ (
+ vnfr
+ for vnfr in db_vnfrs.values()
+ if vnf_params["member-vnf-index"]
+ == vnfr["member-vnf-index-ref"]
+ ),
+ None,
+ )
+ vdur = next((vdur for vdur in target_vnf.get("vdur", ())), None)
+ for a_index, a_vld in enumerate(target["ns"]["vld"]):
+ target_vld = find_in_list(
+ get_iterable(vdur, "interfaces"),
+ lambda iface: iface.get("ns-vld-id") == a_vld["name"],
+ )
+ if target_vld:
+ if vnf_params.get("vimAccountId") not in a_vld.get(
+ "vim_info", {}
+ ):
+ target["ns"]["vld"][a_index].get("vim_info").update(
+ {
+ "vim:{}".format(vnf_params["vimAccountId"]): {
+ "vim_network_name": ""
+ }
+ }
+ )
+
nslcmop_id = db_nslcmop["_id"]
target = {
"name": db_nsr["name"],
vld_params.update(vld_instantiation_params)
parse_vld_instantiation_params(target_vim, target_vld, vld_params, None)
target["ns"]["vld"].append(target_vld)
+ # Update the target ns_vld if vnf vim_account is overriden by instantiation params
+ update_ns_vld_target(target, ns_params)
for vnfr in db_vnfrs.values():
vnfd = find_in_list(
base_folder["folder"],
base_folder["pkg-dir"],
"charms"
- if vca_type in ("native_charm", "lxc_proxy_charm", "k8s_proxy_charm")
+ if vca_type
+ in ("native_charm", "lxc_proxy_charm", "k8s_proxy_charm")
else "helm-charts",
vca_name,
)
artifact_path = "{}/Scripts/{}/{}/".format(
base_folder["folder"],
"charms"
- if vca_type in ("native_charm", "lxc_proxy_charm", "k8s_proxy_charm")
+ if vca_type
+ in ("native_charm", "lxc_proxy_charm", "k8s_proxy_charm")
else "helm-charts",
vca_name,
)
for job in prometheus_jobs:
self.db.set_one(
"prometheus_jobs",
- {
- "job_name": job["job_name"]
- },
+ {"job_name": job["job_name"]},
job,
upsert=True,
- fail_on_empty=False
+ fail_on_empty=False,
)
step = "instantiated at VCA"
if requirer_id != nsd["id"]:
requirer_dict["vnf-profile-id"] = requirer_id
else:
- raise Exception("provider/requirer or entities must be included in the relation.")
+ raise Exception(
+ "provider/requirer or entities must be included in the relation."
+ )
relation_provider = self._update_ee_relation_data_with_implicit_data(
nsr_id, nsd, provider_dict, cached_vnfds
)
if requirer_id != vnfd_id:
requirer_dict["vdu-profile-id"] = requirer_id
else:
- raise Exception("provider/requirer or entities must be included in the relation.")
+ raise Exception(
+ "provider/requirer or entities must be included in the relation."
+ )
relation_provider = self._update_ee_relation_data_with_implicit_data(
nsr_id, nsd, provider_dict, cached_vnfds, vnf_profile_id=vnf_profile_id
)
)
async def extract_prometheus_scrape_jobs(
- self,
- ee_id,
- artifact_path,
- ee_config_descriptor,
- vnfr_id,
- nsr_id,
- target_ip
+ self, ee_id, artifact_path, ee_config_descriptor, vnfr_id, nsr_id, target_ip
):
# look if exist a file called 'prometheus*.j2' and
artifact_content = self.fs.dir_ls(artifact_path)
class TestPrometheus(asynctest.TestCase):
-
def test_parse_job(self):
text_to_parse = """
# yaml format with jinja2
key1: "parsing var1='{{ var1 }}'"
key2: "parsing var2='{{ var2 }}'"
"""
- vars = {'var1': 'VAR1', 'var2': 'VAR2', 'var3': 'VAR3'}
- expected = {
- 'key1': "parsing var1='VAR1'",
- 'key2': "parsing var2='VAR2'"
- }
+ vars = {"var1": "VAR1", "var2": "VAR2", "var3": "VAR3"}
+ expected = {"key1": "parsing var1='VAR1'", "key2": "parsing var2='VAR2'"}
result = parse_job(text_to_parse, vars)
- self.assertEqual(result, expected, 'Error at jinja2 parse')
+ self.assertEqual(result, expected, "Error at jinja2 parse")
if __name__ == "__main__":