1 # ==================================================================================
2 # Copyright (c) 2019 Nokia
3 # Copyright (c) 2018-2019 AT&T Intellectual Property.
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 # ==================================================================================
18 from jsonschema import validate
19 from a1 import get_module_logger
20 from a1 import exceptions
23 logger = get_module_logger(__name__)
26 def _get_rmr_mapping_table(cache={}):
28 Get the rmr mapping file
29 Broken out for ease of unit testing
32 return open("/opt/rmr_string_int_mapping.txt", "r").readlines()
33 except FileNotFoundError:
34 logger.error("Missing RMR Mapping!")
35 raise exceptions.MissingRmrMapping
41 def validate_json(instance, schema):
43 validate incoming policy payloads
45 validate(instance=instance, schema=schema)
48 def get_ric_manifest():
50 Get the ric level manifest
53 with open("/opt/ricmanifest.json", "r") as f:
55 manifest = json.loads(content)
57 except FileNotFoundError:
58 logger.error("Missing A1 Manifest!")
59 raise exceptions.MissingManifest
62 def rmr_string_to_int(rmrs, cache={}):
64 map an rmr string to an int.
65 TODO: should we allow for dynamic updates to this file? If so, we shouldn't cache
67 if cache == {}: # fill the cache if not populated
68 lines = _get_rmr_mapping_table()
71 cache[items[0]] = int(items[1])
75 raise exceptions.MissingRmrString(rmrs)