aboutsummaryrefslogtreecommitdiffstats
path: root/heat/vFW_CNF_CDS/templates/cba2dd.py
diff options
context:
space:
mode:
authorSamuli Silvius <s.silvius@partner.samsung.com>2020-02-27 21:59:51 +0200
committerSamuli Silvius <s.silvius@partner.samsung.com>2020-02-28 15:34:28 +0200
commit83e1a98bc9656ecaa6b99446a73513e9d3419937 (patch)
treebc3170f72661980816a4628c2d83325582c88c9c /heat/vFW_CNF_CDS/templates/cba2dd.py
parentbe3024dfe9b6c06419c6f4a5f724a01b7e0ab103 (diff)
Create complete Data Dictionary
Added helper script to generate Data Dictionary from enriched CBA model. Generated initial DD. Model still needs to be enriched and DD corrected if needed. Issue-ID: INT-1260 Signed-off-by: Samuli Silvius <s.silvius@partner.samsung.com> Change-Id: I082d2ce3c84b0c0a953722259997f23717198129
Diffstat (limited to 'heat/vFW_CNF_CDS/templates/cba2dd.py')
-rwxr-xr-xheat/vFW_CNF_CDS/templates/cba2dd.py91
1 files changed, 91 insertions, 0 deletions
diff --git a/heat/vFW_CNF_CDS/templates/cba2dd.py b/heat/vFW_CNF_CDS/templates/cba2dd.py
new file mode 100755
index 00000000..02cf6085
--- /dev/null
+++ b/heat/vFW_CNF_CDS/templates/cba2dd.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# COPYRIGHT NOTICE STARTS HERE
+
+# Copyright 2020 . Samsung Electronics Co., Ltd.
+#
+# 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.
+
+# COPYRIGHT NOTICE ENDS HERE
+
+import os
+import argparse
+import json
+
+#
+# Script to convert given Enriched CDS CBA model to Data Dictionary output
+# Usage:
+# ./cba2dd.py --cba_dir <path to cba main directory> | python3 -m json.tool
+#
+
+def get_resources_definition_file(cba_dir):
+ definitions_dir = cba_dir + os.sep + "Definitions"
+ resource_definition_file = definitions_dir + os.sep + "resources_definition_types.json"
+ if not os.path.exists(definitions_dir):
+ raise RuntimeError("'%s' directory does not exists or is not CBA directory" % cba_dir)
+ if not os.path.exists(resource_definition_file):
+ raise RuntimeError("'%s' file does not exists in CBA Definitions directory. CBA is not Enriched!" % resource_definition_file)
+ return resource_definition_file
+
+def create_dd(cba_dir):
+ with open(get_resources_definition_file(cba_dir)) as f:
+ output_json = json.load(f)
+ dd = []
+ for _, entry in output_json.items():
+ dd.append(build_dd_entry(entry))
+ print(json.dumps(dd))
+
+def build_dd_entry(definition_entry):
+ """Builds Data Dictionary entry from given dictionary entry. Given entry
+ itself is added as value for "definition" key.
+ {
+ "name": "",
+ "tags": "",
+ "data_type": "",
+ "description": "",
+ "entry_schema": "",
+ "updatedBy": "",
+ "definition": definition_entry
+ }
+ """
+ out_dict = {}
+ out_dict["name"] = definition_entry["name"]
+ out_dict["tags"] = definition_entry["tags"]
+ out_dict["data_type"] = definition_entry["property"]["type"]
+ out_dict["description"] = definition_entry["property"]["description"]
+ out_dict["entry_schema"] = definition_entry["property"]["type"]
+ out_dict["updatedBy"] = definition_entry["updated-by"]
+ out_dict["definition"] = definition_entry
+ return out_dict
+
+def main():
+ description = """Script to convert given Enriched CDS CBA model to Data Dictionary output.
+Example:
+ ./cba2dd.py --cba_dir cba | python3 -m json.tool
+ """
+ parser = argparse.ArgumentParser(description=description,
+ formatter_class=argparse.RawTextHelpFormatter)
+ parser.add_argument('--cba_dir',
+ help='Path to CDS CBA model main directory',
+ default='')
+ args = parser.parse_args()
+ try:
+ create_dd(args.cba_dir)
+ except Exception as e:
+ print(e)
+ parser.print_help()
+ exit(1)
+
+if __name__ == '__main__':
+ main()