X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fengine.py;h=133cb9de65dc2ffc387b2045730cc3689d3ec7de;hp=34f0f14cf8501de3f54de3303a23d13b894f362b;hb=cddb07d092fdcf72ce2c87cd801b93732e64d3a9;hpb=9e87a7fbc49d98dfae5fc6b7f4c17b81729a2af7 diff --git a/osm_nbi/engine.py b/osm_nbi/engine.py index 34f0f14..133cb9d 100644 --- a/osm_nbi/engine.py +++ b/osm_nbi/engine.py @@ -25,11 +25,12 @@ from osm_nbi.authconn_keystone import AuthconnKeystone from osm_nbi.authconn_internal import AuthconnInternal from osm_nbi.base_topic import EngineException, versiontuple from osm_nbi.admin_topics import VimAccountTopic, WimAccountTopic, SdnTopic -from osm_nbi.admin_topics import K8sClusterTopic, K8sRepoTopic +from osm_nbi.admin_topics import K8sClusterTopic, K8sRepoTopic, OsmRepoTopic from osm_nbi.admin_topics import UserTopicAuth, ProjectTopicAuth, RoleTopicAuth from osm_nbi.descriptor_topics import VnfdTopic, NsdTopic, PduTopic, NstTopic, VnfPkgOpTopic from osm_nbi.instance_topics import NsrTopic, VnfrTopic, NsLcmOpTopic, NsiTopic, NsiLcmOpTopic from osm_nbi.pmjobs_topics import PmJobsTopic +from osm_nbi.subscription_topics import NslcmSubscriptionsTopic from base64 import b64encode from os import urandom # , path from threading import Lock @@ -52,12 +53,14 @@ class Engine(object): "sdns": SdnTopic, "k8sclusters": K8sClusterTopic, "k8srepos": K8sRepoTopic, + "osmrepos": OsmRepoTopic, "users": UserTopicAuth, # Valid for both internal and keystone authentication backends "projects": ProjectTopicAuth, # Valid for both internal and keystone authentication backends "roles": RoleTopicAuth, # Valid for both internal and keystone authentication backends "nsis": NsiTopic, "nsilcmops": NsiLcmOpTopic, "vnfpkgops": VnfPkgOpTopic, + "nslcm_subscriptions": NslcmSubscriptionsTopic, # [NEW_TOPIC]: add an entry here # "pm_jobs": PmJobsTopic will be added manually because it needs other parameters } @@ -214,29 +217,31 @@ class Engine(object): with self.write_lock: return self.map_topic[topic].upload_content(session, _id, indata, kwargs, headers) - def get_item_list(self, session, topic, filter_q=None): + def get_item_list(self, session, topic, filter_q=None, api_req=False): """ Get a list of items :param session: contains the used login username and working project :param topic: it can be: users, projects, vnfds, nsds, ... :param filter_q: filter of data to be applied + :param api_req: True if this call is serving an external API request. False if serving internal request. :return: The list, it can be empty if no one match the filter_q. """ if topic not in self.map_topic: raise EngineException("Unknown topic {}!!!".format(topic), HTTPStatus.INTERNAL_SERVER_ERROR) - return self.map_topic[topic].list(session, filter_q) + return self.map_topic[topic].list(session, filter_q, api_req) - def get_item(self, session, topic, _id): + def get_item(self, session, topic, _id, api_req=False): """ Get complete information on an item :param session: contains the used login username and working project :param topic: it can be: users, projects, vnfds, nsds, :param _id: server id of the item + :param api_req: True if this call is serving an external API request. False if serving internal request. :return: dictionary, raise exception if not found. """ if topic not in self.map_topic: raise EngineException("Unknown topic {}!!!".format(topic), HTTPStatus.INTERNAL_SERVER_ERROR) - return self.map_topic[topic].show(session, _id) + return self.map_topic[topic].show(session, _id, api_req) def get_file(self, session, topic, _id, path=None, accept_header=None): """