X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fnbi.py;h=a72fa58440ed4f215685fbadae36459e165d0676;hp=1cd61d5af1e1e643e185dbf6082e76f53c5a5272;hb=2102560198959215f59e9f0ab1d11b0f69b8bb75;hpb=0f98af53b320c8244b58d0d8751e28e157949e8e diff --git a/osm_nbi/nbi.py b/osm_nbi/nbi.py index 1cd61d5..a72fa58 100644 --- a/osm_nbi/nbi.py +++ b/osm_nbi/nbi.py @@ -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,7 +59,11 @@ 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 @@ -67,7 +76,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 +149,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,8 +205,16 @@ 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"}, } } }, @@ -332,7 +352,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 +399,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 +470,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/