X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fnbi.py;h=ba2e14eab18f43d14d827f9d4905224fa85db55b;hp=1cd61d5af1e1e643e185dbf6082e76f53c5a5272;hb=a8d63635eecb1c8debab5f674931a453ea39e78d;hpb=0f98af53b320c8244b58d0d8751e28e157949e8e;ds=sidebyside diff --git a/osm_nbi/nbi.py b/osm_nbi/nbi.py index 1cd61d5..ba2e14e 100644 --- a/osm_nbi/nbi.py +++ b/osm_nbi/nbi.py @@ -8,9 +8,9 @@ import yaml import html_out as html import logging from engine import Engine, EngineException -from dbbase import DbException -from fsbase import FsException -from msgbase import MsgException +from osm_common.dbbase import DbException +from osm_common.fsbase import FsException +from osm_common.msgbase import MsgException from base64 import standard_b64decode #from os import getenv from http import HTTPStatus @@ -19,8 +19,11 @@ from codecs import getreader from os import environ __author__ = "Alfonso Tierno " -__version__ = "0.3" -version_date = "Mar 2018" + +# TODO consider to remove and provide version using the static version file +__version__ = "0.1.3" +version_date = "Apr 2018" +database_version = '1.0' """ North Bound Interface (O: OSM specific; 5,X: SOL005 not implemented yet; O5: SOL005 implemented) @@ -40,6 +43,8 @@ URL: /osm GET POST / 5 X /vnfpkgm/v1 + /vnf_packages_content O O + / O O /vnf_packages O5 O5 / O5 O5 5 /package_content O5 O5 @@ -54,10 +59,16 @@ URL: /osm GET POST / O O /ns_instances 5 5 / 5 5 - TO BE COMPLETED + instantiate O5 + terminate O5 + action O + scale O5 + heal 5 /ns_lcm_op_occs 5 5 / 5 5 5 TO BE COMPLETED 5 5 + /vnfrs O + / O /subscriptions 5 5 / 5 X /admin/v1 @@ -67,7 +78,7 @@ URL: /osm GET POST / O O /projects O O / O O - /vims O O + /vims_accounts (also vims for compatibility) O O / O O O /sdns O O / O O O @@ -140,6 +151,9 @@ class Server(object): "vims": {"METHODS": ("GET", "POST"), "": {"METHODS": ("GET", "DELETE")} }, + "vim_accounts": {"METHODS": ("GET", "POST"), + "": {"METHODS": ("GET", "DELETE")} + }, "sdns": {"METHODS": ("GET", "POST"), "": {"METHODS": ("GET", "DELETE")} }, @@ -193,9 +207,20 @@ class Server(object): "ns_instances_content": {"METHODS": ("GET", "POST"), "": {"METHODS": ("GET", "DELETE")} }, - "ns_instances": {"TODO": ("GET", "POST"), - "": {"TODO": ("GET", "DELETE")} - } + "ns_instances": {"METHODS": ("GET", "POST"), + "": {"TODO": ("GET", "DELETE"), + "scale": {"TODO": "POST"}, + "terminate": {"METHODS": "POST"}, + "instantiate": {"METHODS": "POST"}, + "action": {"METHODS": "POST"}, + } + }, + "ns_lcm_op_occs": {"METHODS": "GET", + "": {"METHODS": "GET"}, + }, + "vnfrs": {"METHODS": ("GET"), + "": {"METHODS": ("GET")} + }, } }, } @@ -332,7 +357,7 @@ class Server(object): 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: @@ -379,6 +404,25 @@ class Server(object): cherrypy.response.status = e.http_code.value return self._format_out("Welcome to OSM!", session) + @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": + raise NbiException("Only method GET is allowed", HTTPStatus.METHOD_NOT_ALLOWED) + elif args or kwargs: + raise NbiException("Invalid URL or query string for version", HTTPStatus.METHOD_NOT_ALLOWED) + return __version__ + " " + version_date + except NbiException as e: + cherrypy.response.status = e.http_code.value + problem_details = { + "code": e.http_code.name, + "status": e.http_code.value, + "detail": str(e), + } + return self._format_out(problem_details, None) + @cherrypy.expose def token(self, method, token_id=None, kwargs=None): session = None @@ -431,19 +475,12 @@ class Server(object): } return self._format_out(problem_details, session) - @cherrypy.expose - def test2(self, args0=None, args1=None, args2=None, args3=None, *args, **kwargs): - return_text = ( - "
\n{} {} {} {} {} {} \n".format(args0, args1, args2, args3, args, kwargs))
-        return_text += "
" - return return_text - @cherrypy.expose def test(self, *args, **kwargs): thread_info = None if args and args[0] == "help": return "
\ninit\nfile/  download file\ndb-clear/table\nprune\nlogin\nlogin2\n"\
-                    "sleep/
" + "sleep/