X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fdescriptor_topics.py;h=5612fdfdb74ffcf0ce774a5ac9d24b840f6b8e4f;hp=71f51e251ff19dcd21b5d9feb90c26c77e22b965;hb=e36ab859d275c9c1b863bbb6564a1da56cabe2dd;hpb=5a5c2189a5a6cc2561b2ec16d28a70b00d5e0ff2 diff --git a/osm_nbi/descriptor_topics.py b/osm_nbi/descriptor_topics.py index 71f51e2..5612fdf 100644 --- a/osm_nbi/descriptor_topics.py +++ b/osm_nbi/descriptor_topics.py @@ -1,5 +1,18 @@ # -*- coding: utf-8 -*- +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import tarfile import yaml import json @@ -726,10 +739,6 @@ class NstTopic(DescriptorTopic): return {} clean_indata = indata - if clean_indata.get('nst:nst'): - clean_indata = clean_indata['nst:nst'] - elif clean_indata.get('nst'): - clean_indata = clean_indata['nst'] if clean_indata.get('nst'): if not isinstance(clean_indata['nst'], list) or len(clean_indata['nst']) != 1: raise EngineException("'nst' must be a list only one element") @@ -740,6 +749,9 @@ class NstTopic(DescriptorTopic): # TODO validate with pyangbind, serialize return indata + def _validate_input_new(self, indata, force=False): + return indata.copy() + def _check_descriptor_dependencies(self, session, descriptor): """ Check that the dependent descriptors exist on a new descriptor or edition @@ -777,13 +789,15 @@ class NstTopic(DescriptorTopic): # Get Network Slice Template from Database _filter = self._get_project_filter(session, write=False, show_all=False) _filter["_id"] = _id - nst = self.db.get_one("nst", _filter) + nst = self.db.get_one("nsts", _filter) # Search NSIs using NST via nst-ref _filter = self._get_project_filter(session, write=False, show_all=False) _filter["nst-ref"] = nst["id"] - if self.db.get_list("nsis", _filter): - raise EngineException("There is some NSIS that depends on this NST", http_code=HTTPStatus.CONFLICT) + nsis_list = self.db.get_list("nsis", _filter) + for nsi_item in nsis_list: + if nsi_item["_admin"].get("nsiState") != "TERMINATED": + raise EngineException("There is some NSIS that depends on this NST", http_code=HTTPStatus.CONFLICT) class PduTopic(BaseTopic):