aboutsummaryrefslogtreecommitdiffstats
path: root/appc-inbound/appc-artifact-handler/model/scripts/python
diff options
context:
space:
mode:
authorSkip Wonnell <kw5258@att.com>2017-08-14 17:47:10 -0500
committerPatrick Brady <pb071s@att.com>2017-08-18 05:46:15 +0000
commitab6c2c0cd441cf40723016e9a82aeeeb933fec7e (patch)
tree10d9de942694ca129cfc78d13cf2269f5c37cfc9 /appc-inbound/appc-artifact-handler/model/scripts/python
parent5166a76913fcb658be58adffed441590979e41cf (diff)
Initial adds artifact handler and design services
asdc-artifact-handler: an interface to receive artifacts distributed by SDC and persist them into the local database. appc-design-services: an interface to manage VNF configuration artifacts, primarily those generated by the configuration design tool. Includes these user stories: APPC-28/85 Change-Id: Ib207070d4593554fa424fc69d9c77a6cd5349fec Signed-off-by: Skip Wonnell <kw5258@att.com> Issue-Id: APPC-9
Diffstat (limited to 'appc-inbound/appc-artifact-handler/model/scripts/python')
-rwxr-xr-xappc-inbound/appc-artifact-handler/model/scripts/python/yang2props.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/appc-inbound/appc-artifact-handler/model/scripts/python/yang2props.py b/appc-inbound/appc-artifact-handler/model/scripts/python/yang2props.py
new file mode 100755
index 000000000..559d31b8b
--- /dev/null
+++ b/appc-inbound/appc-artifact-handler/model/scripts/python/yang2props.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+
+import re
+import sys
+
+
+# Convert word from foo-bar to FooBar
+# words begining with a digit will be converted to _digit
+def to_enum(s):
+ if s[0].isdigit():
+ s = "_" + s
+ else:
+ s = s[0].upper() + s[1:]
+ return re.sub(r'(?!^)-([a-zA-Z])', lambda m: m.group(1).upper(), s)
+
+leaf = ""
+val = ""
+li = []
+
+if len(sys.argv) < 3:
+ print 'yang2props.py <input yang> <output properties>'
+ sys.exit(2)
+
+with open(sys.argv[1], "r") as ins:
+ for line in ins:
+ # if we see a leaf save the name for later
+ if "leaf " in line:
+ match = re.search(r'leaf (\S+)', line)
+ if match:
+ leaf = match.group(1)
+
+ # if we see enum convert the value to enum format and see if it changed
+ # if the value is different write a property entry
+ if "enum " in line:
+ match = re.search(r'enum "(\S+)";', line)
+ if match:
+ val = match.group(1)
+ enum = to_enum(val)
+
+ # see if converting to enum changed the string
+ if val != enum:
+ property = "yang."+leaf+"."+enum+"="+val
+ if property not in li:
+ li.append( property)
+
+
+# Open output file
+fo = open(sys.argv[2], "wb")
+fo.write("# yang conversion properties \n")
+fo.write("# used to convert Enum back to the original yang value \n")
+fo.write("\n".join(li))
+fo.write("\n")
+
+# Close opend file
+fo.close()
+
+