for vdu_index, vdu in enumerate(get_iterable(vnfd, 'vdu')):
if vdu["id"] == vdu_id:
initial_config_primitive_list = vdu['vdu-configuration'].get(
- 'initial-config-primitive', ())
- break
+ 'initial-config-primitive', [])
+ break
else:
raise LcmException("Not found vdu_id={} at vnfd:vdu".format(vdu_id))
vdur = db_vnfrs[vnf_index]["vdur"][vdu_index]
add_params["rw_mgmt_ip"] = vdur["ip-address"]
else:
add_params["rw_mgmt_ip"] = db_vnfrs[vnf_index]["ip-address"]
- initial_config_primitive_list = vnfd["vnf-configuration"].get('initial-config-primitive', ())
+ initial_config_primitive_list = vnfd["vnf-configuration"].get('initial-config-primitive', [])
else:
if db_nsr.get("additionalParamsForNs"):
add_params = db_nsr["additionalParamsForNs"].copy()
if isinstance(v, str) and v.startswith("!!yaml "):
add_params[k] = yaml.safe_load(v[7:])
add_params["rw_mgmt_ip"] = None
+ initial_config_primitive_list = nsd["ns-configuration"].get('initial-config-primitive', [])
# add primitive verify-ssh-credentials to the list after config only when is a vnf or vdu charm
initial_config_primitive_list = initial_config_primitive_list.copy()
if initial_config_primitive_list and vnf_index:
- initial_config_primitive_list.insert(1, {"name": "verify-ssh-credentials", "paramter": []})
+ initial_config_primitive_list.insert(1, {"name": "verify-ssh-credentials", "parameter": []})
for initial_config_primitive in initial_config_primitive_list:
+ primitive_params_ = self._map_primitive_params(initial_config_primitive, {}, add_params)
+ self.logger.debug(logging_text + step + " primitive '{}' params '{}'"
+ .format(initial_config_primitive["name"], primitive_params_))
primitive_result, primitive_detail = await self._ns_execute_primitive(
db_nsr["_admin"]["deployed"], vnf_index, vdu_id, vdu_name, vdu_count_index,
initial_config_primitive["name"],
- self._map_primitive_params(initial_config_primitive, {}, add_params))
+ primitive_params_,
+ retries=10 if initial_config_primitive["name"] == "verify-ssh-credentials" else 0,
+ retries_interval=30)
if primitive_result != "COMPLETED":
- raise LcmException("charm error executing primitive {} for member_vnf_index={} vdu_id={}: '{}'"
+ raise LcmException("charm error executing primitive {} for member_vnf_index={} vdu_id={}: '{}'"
.format(initial_config_primitive["name"], vca_deployed["member-vnf-index"],
vca_deployed["vdu_id"], primitive_detail))
# waiting all charms are ok
configuration_failed = False
if number_to_configure:
+ step = "Waiting all charms are active"
old_status = "configuring: init: {}".format(number_to_configure)
db_nsr_update["config-status"] = old_status
db_nsr_update["detailed-status"] = old_status
return calculated_params
async def _ns_execute_primitive(self, db_deployed, member_vnf_index, vdu_id, vdu_name, vdu_count_index,
- primitive, primitive_params):
+ primitive, primitive_params, retries=0, retries_interval=30):
start_primitive_time = time()
try:
for vca_deployed in db_deployed["VCA"]:
await self.n2vc.login()
if primitive == "config":
primitive_params = {"params": primitive_params}
- primitive_id = await self.n2vc.ExecutePrimitive(
- model_name,
- application_name,
- primitive,
- callback,
- *callback_args,
- **primitive_params
- )
- while time() - start_primitive_time < self.timeout_primitive:
- primitive_result_ = await self.n2vc.GetPrimitiveStatus(model_name, primitive_id)
- if primitive_result_ in ("completed", "failed"):
- primitive_result = "COMPLETED" if primitive_result_ == "completed" else "FAILED"
- detailed_result = await self.n2vc.GetPrimitiveOutput(model_name, primitive_id)
- break
- elif primitive_result_ is None and primitive == "config":
- primitive_result = "COMPLETED"
- detailed_result = None
+ while retries >= 0:
+ primitive_id = await self.n2vc.ExecutePrimitive(
+ model_name,
+ application_name,
+ primitive,
+ callback,
+ *callback_args,
+ **primitive_params
+ )
+ while time() - start_primitive_time < self.timeout_primitive:
+ primitive_result_ = await self.n2vc.GetPrimitiveStatus(model_name, primitive_id)
+ if primitive_result_ in ("completed", "failed"):
+ primitive_result = "COMPLETED" if primitive_result_ == "completed" else "FAILED"
+ detailed_result = await self.n2vc.GetPrimitiveOutput(model_name, primitive_id)
+ break
+ elif primitive_result_ is None and primitive == "config":
+ primitive_result = "COMPLETED"
+ detailed_result = None
+ break
+ else: # ("running", "pending", None):
+ pass
+ await asyncio.sleep(5)
+ else:
+ raise LcmException("timeout after {} seconds".format(self.timeout_primitive))
+ if primitive_result == "COMPLETED":
break
- else: # ("running", "pending", None):
- pass
- await asyncio.sleep(5)
- else:
- raise LcmException("timeout after {} seconds".format(self.timeout_primitive))
+ retries -= 1
+ if retries >= 0:
+ await asyncio.sleep(retries_interval)
+
return primitive_result, detailed_result
except (N2VCPrimitiveExecutionFailed, LcmException) as e:
return "FAILED", str(e)