diff --git a/src/nbi/.gitlab-ci.yml b/src/nbi/.gitlab-ci.yml index d97fab701c9560ea3d7e5c04b60bbf35292a9d9b..0bcf058fb3175407fde952cf4660029ad823bb7a 100644 --- a/src/nbi/.gitlab-ci.yml +++ b/src/nbi/.gitlab-ci.yml @@ -62,7 +62,13 @@ unit_test nbi: fi script: - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG" - - docker run --name $IMAGE_NAME -d -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG + - > + docker run --name $IMAGE_NAME -d -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" + --network=teraflowbridge + --env LOG_LEVEL=DEBUG + --env FLASK_ENV=development + --env IETF_NETWORK_RENDERER=LIBYANG + $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG - sleep 5 - docker ps -a - docker logs $IMAGE_NAME diff --git a/src/nbi/Dockerfile b/src/nbi/Dockerfile index 5cddaf117e5cc8adff770010a877e2c69e3a519e..bd6ce77c72fed46495ff38698e38ddbaed4ac477 100644 --- a/src/nbi/Dockerfile +++ b/src/nbi/Dockerfile @@ -90,4 +90,4 @@ COPY src/tests/tools/mock_osm/. tests/tools/mock_osm/ # Start the service #ENTRYPOINT ["gunicorn", "-w", "4", "--worker-class", "eventlet", "-b", "0.0.0.0:8080", "nbi.service:nbi_app"] -ENTRYPOINT ["gunicorn", "-w", "4", "--worker-class", "geventwebsocket.gunicorn.workers.GeventWebSocketWorker", "-b", "0.0.0.0:8080", "nbi.service.app:nbi_app"] +ENTRYPOINT ["gunicorn", "-w", "4", "--worker-class", "geventwebsocket.gunicorn.workers.GeventWebSocketWorker", "-b", "0.0.0.0:8080", "nbi.service.app:app"] diff --git a/src/nbi/service/NbiApplication.py b/src/nbi/service/NbiApplication.py index 16e6998108aaf0270cf4545ad0e6995e09a0bc7b..9d17b88312e3cf9636e952d5a6484f3e6d8e2ac0 100644 --- a/src/nbi/service/NbiApplication.py +++ b/src/nbi/service/NbiApplication.py @@ -35,32 +35,39 @@ class NbiApplication: if base_url is None: base_url = '' self.base_url = base_url - self.app = Flask(__name__) - self.app.after_request(log_request) - self.api = Api(self.app, prefix=base_url) + self._app = Flask(__name__) + self._app.after_request(log_request) + self._api = Api(self._app, prefix=base_url) #websocket_path = '/'.join([base_url.rstrip('/'), 'websocket']) - self.sio = SocketIO(self.app, path=base_url, cors_allowed_origins="*") + self._sio = SocketIO(self._app, path=base_url, cors_allowed_origins="*") def add_rest_api_resource(self, resource_class : Resource, *urls, **kwargs) -> None: - self.api.add_resource(resource_class, *urls, **kwargs) + self._api.add_resource(resource_class, *urls, **kwargs) def add_websocket_namespace(self, namespace_class : Namespace, namespace_url : str) -> None: - self.sio.on_namespace(namespace_class(namespace=namespace_url)) + self._sio.on_namespace(namespace_class(namespace=namespace_url)) def websocket_emit_message( self, event : str, *args : Any, namespace : str = "/", to : Optional[str] = None ) -> None: - self.sio.emit(event, *args, namespace=namespace, to=to) + self._sio.emit(event, *args, namespace=namespace, to=to) + + def get_flask_app(self) -> Flask: + return self._app def dump_configuration(self) -> None: - LOGGER.debug('Configured Resources:') - for resource in self.api.resources: + LOGGER.debug('Configured REST-API Resources:') + for resource in self._api.resources: LOGGER.debug(' - {:s}'.format(str(resource))) - LOGGER.debug('Configured Rules:') - for rule in self.app.url_map.iter_rules(): + LOGGER.debug('Configured Flask Rules:') + for rule in self._app.url_map.iter_rules(): LOGGER.debug(' - {:s}'.format(str(rule))) + LOGGER.debug('Configured WebSocket Namespaces:') + for namespace in self._sio.server.handlers.keys(): + LOGGER.debug(' - {:s}'.format(str(namespace))) + def run_standalone( self, bind_address : Optional[str] = None, bind_port : Optional[int] = None ) -> None: @@ -75,4 +82,4 @@ class NbiApplication: endpoint = '/'.join([endpoint.rstrip('/'), self.base_url]) LOGGER.info('Listening on {:s}...'.format(endpoint)) - self.sio.run(self.app, host=bind_address, port=bind_port) + self._sio.run(self._app, host=bind_address, port=bind_port) diff --git a/src/nbi/service/app.py b/src/nbi/service/app.py index db696efd618206679990c33f246e4c92d47be2f4..320e7b344263c57c229326c1169d70a946b82551 100644 --- a/src/nbi/service/app.py +++ b/src/nbi/service/app.py @@ -107,3 +107,5 @@ if __name__ == '__main__': nbi_app.run_standalone( bind_address=BIND_ADDRESS, bind_port=BIND_PORT ) +else: + app = nbi_app.get_flask_app()