from os import environ
__author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
-__version__ = "0.3"
+
+# TODO consider to remove and provide version using the static version file
+__version__ = "0.1.3"
version_date = "Apr 2018"
database_version = '1.0'
/<nsInstanceId> O O
/ns_instances 5 5
/<nsInstanceId> 5 5
- TO BE COMPLETED
+ instantiate O5
+ terminate O5
+ action O
+ scale O5
+ heal 5
/ns_lcm_op_occs 5 5
/<nsLcmOpOccId> 5 5 5
TO BE COMPLETED 5 5
/<id> O O
/projects O O
/<id> O O
- /vims O O
+ /vims_accounts (also vims for compatibility) O O
/<id> O O O
/sdns O O
/<id> O O O
"vims": {"METHODS": ("GET", "POST"),
"<ID>": {"METHODS": ("GET", "DELETE")}
},
+ "vim_accounts": {"METHODS": ("GET", "POST"),
+ "<ID>": {"METHODS": ("GET", "DELETE")}
+ },
"sdns": {"METHODS": ("GET", "POST"),
"<ID>": {"METHODS": ("GET", "DELETE")}
},
"ns_instances_content": {"METHODS": ("GET", "POST"),
"<ID>": {"METHODS": ("GET", "DELETE")}
},
- "ns_instances": {"TODO": ("GET", "POST"),
- "<ID>": {"TODO": ("GET", "DELETE")}
+ "ns_instances": {"METHODS": ("GET", "POST"),
+ "<ID>": {"TODO": ("GET", "DELETE"),
+ "scale": {"TODO": "POST"},
+ "terminate": {"METHODS": "POST"},
+ "instantiate": {"METHODS": "POST"},
+ "action": {"METHODS": "POST"},
+ }
+ },
+ "ns_lcm_op_occs": {"METHODS": "GET",
+ "<ID>": {"METHODS": "GET"},
}
}
},
if data is None:
if accept and "text/html" in accept:
return html.format(data, cherrypy.request, cherrypy.response, session)
- cherrypy.response.status = HTTPStatus.NO_CONTENT.value
+ # cherrypy.response.status = HTTPStatus.NO_CONTENT.value
return
elif hasattr(data, "read"): # file object
if _format:
@cherrypy.expose
def version(self, *args, **kwargs):
+ # TODO consider to remove and provide version using the static version file
global __version__, version_date
try:
if cherrypy.request.method != "GET":
engine_item = "vnfds"
elif topic == "nslcm":
engine_item = "nsrs"
+ if item == "ns_lcm_op_occs":
+ engine_item = "nslcmops"
+ if engine_item == "vims": # TODO this is for backward compatibility, it will remove in the future
+ engine_item = "vim_accounts"
if method == "GET":
if item2 in ("nsd_content", "package_content", "artifacts", "vnfd", "nsd"):
else:
cherrypy.response.headers["Transaction-Id"] = _id
outdata = {"id": _id}
- elif item in ("ns_descriptors", "vnf_packages"):
- _id = self.engine.new_item(session, engine_item, indata, kwargs, cherrypy.request.headers)
+ elif item == "ns_instances_content":
+ _id = self.engine.new_item(session, engine_item, indata, kwargs)
+ self.engine.ns_action(session, _id, "instantiate", {}, None)
self._set_location_header(topic, version, item, _id)
- #TODO form NsdInfo
outdata = {"id": _id}
+ elif item == "ns_instances" and item2:
+ _id = self.engine.ns_action(session, _id, item2, indata, kwargs)
+ self._set_location_header(topic, version, "ns_lcm_op_occs", _id)
+ outdata = {"id": _id}
+ cherrypy.response.status = HTTPStatus.ACCEPTED.value
else:
_id = self.engine.new_item(session, engine_item, indata, kwargs, cherrypy.request.headers)
self._set_location_header(topic, version, item, _id)
outdata = {"id": _id}
+ # TODO form NsdInfo when item in ("ns_descriptors", "vnf_packages")
cherrypy.response.status = HTTPStatus.CREATED.value
+
elif method == "DELETE":
if not _id:
outdata = self.engine.del_item_list(session, engine_item, kwargs)
+ cherrypy.response.status = HTTPStatus.OK.value
else: # len(args) > 1
- # TODO return 202 ACCEPTED for nsrs vims
- self.engine.del_item(session, engine_item, _id)
- outdata = None
+ if item == "ns_instances_content":
+ self.engine.ns_action(session, _id, "terminate", {"autoremove": True}, None)
+ cherrypy.response.status = HTTPStatus.ACCEPTED.value
+ else:
+ force = kwargs.get("FORCE")
+ self.engine.del_item(session, engine_item, _id, force)
+ cherrypy.response.status = HTTPStatus.NO_CONTENT.value
+ if engine_item in ("vim_accounts", "sdns"):
+ cherrypy.response.status = HTTPStatus.ACCEPTED.value
+
elif method == "PUT":
if not indata and not kwargs:
raise NbiException("Nothing to update. Provide payload and/or query string",
completed = self.engine.upload_content(session, engine_item, _id, indata, kwargs, cherrypy.request.headers)
if not completed:
cherrypy.response.headers["Transaction-Id"] = id
+ cherrypy.response.status = HTTPStatus.NO_CONTENT.value
outdata = None
else:
outdata = {"id": self.engine.edit_item(session, engine_item, args[1], indata, kwargs)}