X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fnbi.py;h=0417c9ea431d4b9afc0e73486f0e1341656ad23b;hp=46c7c9b5c21bbb78f711e4dd5858819f9ec43348;hb=f0637057dc1be391f068c7e2b9c8f81b16f0921e;hpb=eb8e4f7ca33fa567ba1db92b738fd709e08ae5af diff --git a/osm_nbi/nbi.py b/osm_nbi/nbi.py index 46c7c9b..0417c9e 100644 --- a/osm_nbi/nbi.py +++ b/osm_nbi/nbi.py @@ -27,6 +27,7 @@ import sys from authconn import AuthException from auth import Authenticator from engine import Engine, EngineException +from subscriptions import SubscriptionThread from validation import ValidationError from osm_common.dbbase import DbException from osm_common.fsbase import FsException @@ -37,11 +38,13 @@ from os import environ, path __author__ = "Alfonso Tierno " -# TODO consider to remove and provide version using the static version file __version__ = "0.1.3" -version_date = "Apr 2018" +version_date = "Jan 2019" database_version = '1.0' auth_database_version = '1.0' +nbi_server = None # instance of Server class +subscription_thread = None # instance of SubscriptionThread class + """ North Bound Interface (O: OSM specific; 5,X: SOL005 not implemented yet; O5: SOL005 implemented) @@ -898,13 +901,6 @@ class Server(object): # raise cherrypy.HTTPError(e.http_code.value, str(e)) -# def validate_password(realm, username, password): -# cherrypy.log("realm "+ str(realm)) -# if username == "admin" and password == "admin": -# return True -# return False - - def _start_service(): """ Callback function called when cherrypy.engine starts @@ -912,6 +908,8 @@ def _start_service(): Set database, storage, message configuration Init database with admin/admin user password """ + global nbi_server + global subscription_thread cherrypy.log.error("Starting osm_nbi") # update general cherrypy configuration update_dict = {} @@ -995,7 +993,19 @@ def _start_service(): cherrypy.tree.apps['/osm'].root.authenticator.start(engine_config) cherrypy.tree.apps['/osm'].root.engine.init_db(target_version=database_version) cherrypy.tree.apps['/osm'].root.authenticator.init_db(target_version=auth_database_version) - # getenv('OSMOPENMANO_TENANT', None) + + # start subscriptions thread: + subscription_thread = SubscriptionThread(config=engine_config, engine=nbi_server.engine) + subscription_thread.start() + # Do not capture except SubscriptionException + + # load and print version. Ignore possible errors, e.g. file not found + try: + with open("{}/version".format(engine_config["/static"]['tools.staticdir.dir'])) as version_file: + version_data = version_file.read() + cherrypy.log.error("Starting OSM NBI Version: {}".format(version_data.replace("\n", " "))) + except Exception: + pass def _stop_service(): @@ -1003,11 +1013,15 @@ def _stop_service(): Callback function called when cherrypy.engine stops TODO: Ending database connections. """ + global subscription_thread + subscription_thread.terminate() + subscription_thread = None cherrypy.tree.apps['/osm'].root.engine.stop() cherrypy.log.error("Stopping osm_nbi") def nbi(config_file): + global nbi_server # conf = { # '/': { # #'request.dispatch': cherrypy.dispatch.MethodDispatcher(), @@ -1025,9 +1039,10 @@ def nbi(config_file): # cherrypy.config.update({'tools.auth_basic.on': True, # 'tools.auth_basic.realm': 'localhost', # 'tools.auth_basic.checkpassword': validate_password}) + nbi_server = Server() cherrypy.engine.subscribe('start', _start_service) cherrypy.engine.subscribe('stop', _stop_service) - cherrypy.quickstart(Server(), '/osm', config_file) + cherrypy.quickstart(nbi_server, '/osm', config_file) def usage():