remove internal content at ns.nsd
[osm/NBI.git] / osm_nbi / nbi.py
index 06b39f3..bd0f2a1 100644 (file)
@@ -266,7 +266,9 @@ valid_url_methods = {
                                   "ROLE_PERMISSION": "k8srepos:id:"
                                   }
                          },
-
+            "domains": {"METHODS": ("GET", ),
+                        "ROLE_PERMISSION": "domains:",
+                        },
         }
     },
     "pdu": {
@@ -337,12 +339,21 @@ valid_url_methods = {
                                       "artifacts": {"*": {"METHODS": ("GET", ),
                                                           "ROLE_PERMISSION": "vnfds:id:vnfd_artifact:"
                                                           }
-                                                    }
+                                                    },
+                                      "action": {"METHODS": ("POST", ),
+                                                 "ROLE_PERMISSION": "vnfds:id:action:"
+                                                 },
                                       }
                              },
             "subscriptions": {"TODO": ("GET", "POST"),
                               "<ID>": {"TODO": ("GET", "DELETE")}
                               },
+            "vnfpkg_op_occs": {"METHODS": ("GET", ),
+                               "ROLE_PERMISSION": "vnfds:vnfpkgops:",
+                               "<ID>": {"METHODS": ("GET", ),
+                                        "ROLE_PERMISSION": "vnfds:vnfpkgops:id:"
+                                        }
+                               },
         }
     },
     "nslcm": {
@@ -648,6 +659,21 @@ class Server(object):
             }
             return self._format_out(problem_details, None)
 
+    def domain(self):
+        try:
+            domains = {
+                "user_domain_name": cherrypy.tree.apps['/osm'].config["authentication"].get("user_domain_name"),
+                "project_domain_name": cherrypy.tree.apps['/osm'].config["authentication"].get("project_domain_name")}
+            return self._format_out(domains)
+        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)
+
     @staticmethod
     def _format_login(token_info):
         """
@@ -966,6 +992,8 @@ class Server(object):
             if main_topic == "admin" and topic == "tokens":
                 return self.token(method, _id, kwargs)
             token_info = self.authenticator.authorize(role_permission, query_string_operations, _id)
+            if main_topic == "admin" and topic == "domains":
+                return self.domain()
             engine_session = self._manage_admin_query(token_info, kwargs, method, _id)
             indata = self._format_in(kwargs)
             engine_topic = topic
@@ -978,6 +1006,10 @@ class Server(object):
                 engine_topic = "nsds"
             elif main_topic == "vnfpkgm":
                 engine_topic = "vnfds"
+                if topic == "vnfpkg_op_occs":
+                    engine_topic = "vnfpkgops"
+                if topic == "vnf_packages" and item == "action":
+                    engine_topic = "vnfpkgops"
             elif main_topic == "nslcm":
                 engine_topic = "nsrs"
                 if topic == "ns_lcm_op_occs":
@@ -1015,6 +1047,7 @@ class Server(object):
                         # TODO check that project_id (_id in this context) has permissions
                         _id = args[0]
                     outdata = self.engine.get_item(engine_session, engine_topic, _id)
+
             elif method == "POST":
                 cherrypy.response.status = HTTPStatus.CREATED.value
                 if topic in ("ns_descriptors_content", "vnf_packages_content", "netslice_templates_content"):
@@ -1053,7 +1086,6 @@ class Server(object):
                     indata["netsliceInstanceId"] = _id
                     nsilcmop_id, _ = self.engine.new_item(rollback, engine_session, "nsilcmops", indata, kwargs)
                     outdata = {"id": _id, "nsilcmop_id": nsilcmop_id}
-
                 elif topic == "netslice_instances" and item:
                     indata["lcmOperationType"] = item
                     indata["netsliceInstanceId"] = _id
@@ -1061,6 +1093,13 @@ class Server(object):
                     self._set_location_header(main_topic, version, "nsi_lcm_op_occs", _id)
                     outdata = {"id": _id}
                     cherrypy.response.status = HTTPStatus.ACCEPTED.value
+                elif topic == "vnf_packages" and item == "action":
+                    indata["lcmOperationType"] = item
+                    indata["vnfPkgId"] = _id
+                    _id, _ = self.engine.new_item(rollback, engine_session, "vnfpkgops", indata, kwargs)
+                    self._set_location_header(main_topic, version, "vnfpkg_op_occs", _id)
+                    outdata = {"id": _id}
+                    cherrypy.response.status = HTTPStatus.ACCEPTED.value
                 else:
                     _id, op_id = self.engine.new_item(rollback, engine_session, engine_topic, indata, kwargs,
                                                       cherrypy.request.headers)
@@ -1083,7 +1122,7 @@ class Server(object):
                             "nsInstanceId": _id,
                             "autoremove": True
                         }
-                        opp_id, _ = self.engine.new_item(rollback, engine_session, "nslcmops", nslcmop_desc, None)
+                        opp_id, _ = self.engine.new_item(rollback, engine_session, "nslcmops", nslcmop_desc, kwargs)
                         if opp_id:
                             delete_in_process = True
                             outdata = {"_id": opp_id}