X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fnbi.py;h=2d2d6355ac77764275b3b7b6647f7c8f40512466;hp=f5d229338dcf89c8a169bb209ba0a7d49585b2f1;hb=5ec768a6eba4a4d15d1db362e2463db1a32c57ed;hpb=ad682a52ef94fa2662e2a0f6e3f81fb7c8f5e0fe diff --git a/osm_nbi/nbi.py b/osm_nbi/nbi.py index f5d2293..2d2d635 100644 --- a/osm_nbi/nbi.py +++ b/osm_nbi/nbi.py @@ -35,7 +35,7 @@ from osm_common.msgbase import MsgException from http import HTTPStatus from codecs import getreader from os import environ, path -from osm_nbi import version as _nbi_version, version_date as nbi_version_date +from osm_nbi import version as nbi_version, version_date as nbi_version_date __author__ = "Alfonso Tierno " @@ -46,8 +46,6 @@ database_version = '1.2' auth_database_version = '1.0' nbi_server = None # instance of Server class subscription_thread = None # instance of SubscriptionThread class -nbi_version = _nbi_version # by default this is fixed in the code - """ North Bound Interface (O: OSM specific; 5,X: SOL005 not implemented yet; O5: SOL005 implemented) @@ -339,12 +337,21 @@ valid_url_methods = { "artifacts": {"*": {"METHODS": ("GET", ), "ROLE_PERMISSION": "vnfds:id:vnfd_artifact:" } - } + }, + "action": {"METHODS": ("POST", ), + "ROLE_PERMISSION": "vnfds:id:action:" + }, } }, "subscriptions": {"TODO": ("GET", "POST"), "": {"TODO": ("GET", "DELETE")} }, + "vnfpkg_op_occs": {"METHODS": ("GET", ), + "ROLE_PERMISSION": "vnfds:vnfpkgops:", + "": {"METHODS": ("GET", ), + "ROLE_PERMISSION": "vnfds:vnfpkgops:id:" + } + }, } }, "nslcm": { @@ -980,6 +987,10 @@ class Server(object): engine_topic = "nsds" elif main_topic == "vnfpkgm": engine_topic = "vnfds" + if topic == "vnfpkg_op_occs": + engine_topic = "vnfpkgops" + if topic == "vnf_packages" and item == "action": + engine_topic = "vnfpkgops" elif main_topic == "nslcm": engine_topic = "nsrs" if topic == "ns_lcm_op_occs": @@ -1017,6 +1028,7 @@ class Server(object): # TODO check that project_id (_id in this context) has permissions _id = args[0] outdata = self.engine.get_item(engine_session, engine_topic, _id) + elif method == "POST": cherrypy.response.status = HTTPStatus.CREATED.value if topic in ("ns_descriptors_content", "vnf_packages_content", "netslice_templates_content"): @@ -1055,7 +1067,6 @@ class Server(object): indata["netsliceInstanceId"] = _id nsilcmop_id, _ = self.engine.new_item(rollback, engine_session, "nsilcmops", indata, kwargs) outdata = {"id": _id, "nsilcmop_id": nsilcmop_id} - elif topic == "netslice_instances" and item: indata["lcmOperationType"] = item indata["netsliceInstanceId"] = _id @@ -1063,6 +1074,13 @@ class Server(object): self._set_location_header(main_topic, version, "nsi_lcm_op_occs", _id) outdata = {"id": _id} cherrypy.response.status = HTTPStatus.ACCEPTED.value + elif topic == "vnf_packages" and item == "action": + indata["lcmOperationType"] = item + indata["vnfPkgId"] = _id + _id, _ = self.engine.new_item(rollback, engine_session, "vnfpkgops", indata, kwargs) + self._set_location_header(main_topic, version, "vnfpkg_op_occs", _id) + outdata = {"id": _id} + cherrypy.response.status = HTTPStatus.ACCEPTED.value else: _id, op_id = self.engine.new_item(rollback, engine_session, engine_topic, indata, kwargs, cherrypy.request.headers) @@ -1085,7 +1103,7 @@ class Server(object): "nsInstanceId": _id, "autoremove": True } - opp_id, _ = self.engine.new_item(rollback, engine_session, "nslcmops", nslcmop_desc, None) + opp_id, _ = self.engine.new_item(rollback, engine_session, "nslcmops", nslcmop_desc, kwargs) if opp_id: delete_in_process = True outdata = {"_id": opp_id} @@ -1183,18 +1201,6 @@ class Server(object): cherrypy.request.login += ";{}={}".format(logging_id, outdata[logging_id][:36]) -def _get_version(): - """ - Try to get version from package using pkg_resources (available with setuptools) - """ - global nbi_version - try: - from pkg_resources import get_distribution - nbi_version = get_distribution("osm_nbi").version - except Exception: - pass - - def _start_service(): """ Callback function called when cherrypy.engine starts @@ -1293,14 +1299,9 @@ def _start_service(): subscription_thread.start() # Do not capture except SubscriptionException - # load and print version. Ignore possible errors, e.g. file not found - try: - _get_version() - backend = engine_config["authentication"]["backend"] - cherrypy.log.error("Starting OSM NBI Version '{}' with '{}' authentication backend" - .format(nbi_version + " " + nbi_version_date, backend)) - except Exception: - pass + backend = engine_config["authentication"]["backend"] + cherrypy.log.error("Starting OSM NBI Version '{} {}' with '{}' authentication backend" + .format(nbi_version, nbi_version_date, backend)) def _stop_service():