Pull JSON schemas at build/test not run time
[dcaegen2/platform.git] / adapter / acumos / aoconversion / utils.py
index a5aae75..7403505 100644 (file)
@@ -1,7 +1,7 @@
 # ============LICENSE_START====================================================
 # org.onap.dcae
 # =============================================================================
-# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
 # =============================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 import json
 
 
+class FetchSchemaError(RuntimeError):
+    pass
+
+
+class _Schema:
+    def __init__(self, path):
+        self.ret = None
+        self.path = path
+
+    def get(self):
+        try:
+            if self.ret is None:
+                with open(self.path, 'r') as f:
+                    self.ret = json.loads(f.read())
+            return self.ret
+        except Exception as e:
+            raise FetchSchemaError("Unexpected error from fetching schema", e)
+
+
+schema_schema = _Schema('schemas/schema.json')
+component_schema = _Schema('schemas/compspec.json')
+dataformat_schema = _Schema('schemas/dataformat.json')
+
+
 def get_metadata(model_repo_path, model_name):
     # for now, assume it's called "metadata.json"
     return json.loads(open("{0}/{1}/metadata.json".format(model_repo_path, model_name), "r").read())