Feature 10909: Heal operation for VDU
Change-Id: I9cda701cc265f8acad82574dab96a374cc399fa2
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
diff --git a/osm_nbi/instance_topics.py b/osm_nbi/instance_topics.py
index 84aeda3..d371216 100644
--- a/osm_nbi/instance_topics.py
+++ b/osm_nbi/instance_topics.py
@@ -27,6 +27,7 @@
ns_action,
ns_scale,
ns_update,
+ ns_heal,
nsi_instantiate,
ns_migrate,
)
@@ -1163,6 +1164,7 @@
"action": ns_action,
"update": ns_update,
"scale": ns_scale,
+ "heal": ns_heal,
"terminate": ns_terminate,
"migrate": ns_migrate,
}
@@ -1175,7 +1177,7 @@
"""
Check that user has enter right parameters for the operation
:param session: contains "username", "admin", "force", "public", "project_id", "set_project"
- :param operation: it can be: instantiate, terminate, action, update. TODO: heal
+ :param operation: it can be: instantiate, terminate, action, update, heal
:param indata: descriptor with the parameters of the operation
:return: None
"""
@@ -1185,6 +1187,8 @@
self._check_scale_ns_operation(indata, nsr)
elif operation == "update":
self._check_update_ns_operation(indata, nsr)
+ elif operation == "heal":
+ self._check_heal_ns_operation(indata, nsr)
elif operation == "instantiate":
self._check_instantiate_ns_operation(indata, nsr, session)
@@ -1387,6 +1391,9 @@
)
)
+ def _check_heal_ns_operation(self, indata, nsr):
+ return
+
def _check_instantiate_ns_operation(self, indata, nsr, session):
vnf_member_index_to_vnfd = {} # map between vnf_member_index to vnf descriptor.
vim_accounts = []
diff --git a/osm_nbi/nbi.py b/osm_nbi/nbi.py
index 29e085a..de48c03 100644
--- a/osm_nbi/nbi.py
+++ b/osm_nbi/nbi.py
@@ -86,8 +86,8 @@
action O
scale O5
migrate O
- heal 5
update 05
+ heal O5
/ns_lcm_op_occs 5 5
/<nsLcmOpOccId> 5 5 5
TO BE COMPLETED 5 5
@@ -433,6 +433,10 @@
"<ID>": {
"METHODS": ("GET", "DELETE"),
"ROLE_PERMISSION": "ns_instances:id:",
+ "heal": {
+ "METHODS": ("POST",),
+ "ROLE_PERMISSION": "ns_instances:id:heal:",
+ },
"scale": {
"METHODS": ("POST",),
"ROLE_PERMISSION": "ns_instances:id:scale:",
diff --git a/osm_nbi/validation.py b/osm_nbi/validation.py
index ae9644c..7e50aa9 100644
--- a/osm_nbi/validation.py
+++ b/osm_nbi/validation.py
@@ -492,6 +492,7 @@
"required": ["primitive", "primitive_params"], # TODO add member_vnf_index
"additionalProperties": False,
}
+
ns_scale = { # TODO for the moment it is only VDU-scaling
"title": "ns scale input schema",
"$schema": "http://json-schema.org/draft-04/schema#",
@@ -549,6 +550,51 @@
"additionalProperties": False
}
+ns_heal = {
+ "title": "ns heal input schema",
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "lcmOperationType": string_schema,
+ "nsInstanceId": id_schema,
+ "timeout_ns_heal": integer1_schema,
+ "healVnfData": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "vnfInstanceId": id_schema,
+ "cause": description_schema,
+ "additionalParams": {
+ "type": "object",
+ "properties": {
+ "run-day1": bool_schema,
+ "vdu": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "run-day1": bool_schema,
+ "vdu-id": name_schema,
+ "count-index": integer0_schema,
+ },
+ "required": ["vdu-id"],
+ "additionalProperties": False,
+ },
+ },
+ },
+ "additionalProperties": False,
+ },
+ },
+ "required": ["vnfInstanceId"],
+ "additionalProperties": False,
+ },
+ },
+ },
+ "required": ["healVnfData"],
+ "additionalProperties": False,
+}
+
schema_version = {"type": "string", "enum": ["1.0"]}
schema_type = {"type": "string"}
vim_type = shortname_schema # {"enum": ["openstack", "openvim", "vmware", "opennebula", "aws", "azure", "fos"]}
@@ -1117,6 +1163,7 @@
"ns_action": ns_action,
"ns_scale": ns_scale,
"ns_update": ns_update,
+ "ns_heal": ns_heal,
"pdus": pdu_new_schema,
}