summaryrefslogtreecommitdiffstats
path: root/grToolkit/model
diff options
context:
space:
mode:
Diffstat (limited to 'grToolkit/model')
-rwxr-xr-xgrToolkit/model/.gitignore1
-rwxr-xr-xgrToolkit/model/pom.xml27
-rwxr-xr-xgrToolkit/model/scripts/python/yang2props.py78
-rwxr-xr-xgrToolkit/model/src/main/yang/gr-toolkit.yang199
4 files changed, 305 insertions, 0 deletions
diff --git a/grToolkit/model/.gitignore b/grToolkit/model/.gitignore
new file mode 100755
index 000000000..eacf31a67
--- /dev/null
+++ b/grToolkit/model/.gitignore
@@ -0,0 +1 @@
+/target-ide/
diff --git a/grToolkit/model/pom.xml b/grToolkit/model/pom.xml
new file mode 100755
index 000000000..5d518d744
--- /dev/null
+++ b/grToolkit/model/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.ccsdk.parent</groupId>
+ <artifactId>binding-parent</artifactId>
+ <version>2.1.0</version>
+ <relativePath/>
+ </parent>
+
+ <groupId>org.onap.ccsdk.sli.plugins</groupId>
+ <artifactId>gr-toolkit-model</artifactId>
+ <version>1.1.1-SNAPSHOT</version>
+ <packaging>bundle</packaging>
+
+ <name>ccsdk-sli-plugins :: gr-toolkit :: ${project.artifactId}</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
+ <artifactId>rfc6991</artifactId>
+ </dependency>
+
+
+ </dependencies>
+</project>
diff --git a/grToolkit/model/scripts/python/yang2props.py b/grToolkit/model/scripts/python/yang2props.py
new file mode 100755
index 000000000..85daccfbd
--- /dev/null
+++ b/grToolkit/model/scripts/python/yang2props.py
@@ -0,0 +1,78 @@
+#!/usr/bin/python
+
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2018 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.
+# 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.
+# ============LICENSE_END=========================================================
+###
+
+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()
+
+
diff --git a/grToolkit/model/src/main/yang/gr-toolkit.yang b/grToolkit/model/src/main/yang/gr-toolkit.yang
new file mode 100755
index 000000000..cc21400a7
--- /dev/null
+++ b/grToolkit/model/src/main/yang/gr-toolkit.yang
@@ -0,0 +1,199 @@
+module gr-toolkit{
+ namespace "org:onap:ccsdk:sli:plugins:gr-toolkit";
+ prefix gr-toolkit;
+
+ import ietf-inet-types {
+ prefix inet;
+ }
+ import ietf-yang-types {
+ prefix yang;
+ }
+ description
+ "This ODL feature is designed to gauge the health of all cluster members.";
+ revision "2018-09-26" {
+ description
+ "Release 19.02 draft";
+ }
+
+ grouping member {
+ leaf address {
+ type string;
+ mandatory true;
+ }
+ leaf role {
+ type string;
+ mandatory true;
+ }
+ leaf up {
+ type boolean;
+ mandatory true;
+ }
+ leaf unreachable {
+ type boolean;
+ mandatory true;
+ }
+ leaf voting {
+ type boolean;
+ mandatory true;
+ }
+ list leader {
+ leaf shard {
+ type string;
+ mandatory true;
+ }
+ }
+ list replicas {
+ leaf shard {
+ type string;
+ mandatory true;
+ }
+ }
+ list commit-status {
+ leaf shard {
+ type string;
+ mandatory true;
+ }
+ leaf delta {
+ type int32;
+ mandatory true;
+ }
+ }
+ }
+
+ grouping site {
+ leaf id {
+ type string;
+ mandatory true;
+ }
+ leaf role {
+ type string;
+ mandatory true;
+ }
+ leaf health {
+ type string;
+ mandatory true;
+ }
+ }
+
+ grouping node {
+ leaf node {
+ type string;
+ mandatory true;
+ }
+ leaf port {
+ type string;
+ mandatory true;
+ }
+ }
+
+ rpc cluster-health {
+ description
+ "Parses akka.conf for seed nodes and queries Jolokia for the health
+ of each node.";
+ output {
+ leaf status { type string; }
+ leaf message { type string; }
+ leaf served-by { type string; }
+ leaf site1-health { type string; }
+ leaf site2-health { type string; }
+ list members {
+ uses member;
+ }
+ }
+ }
+
+ rpc database-health {
+ description
+ "Uses DbLibService connection info to determine if the database is reachable.";
+ output {
+ leaf status { type string; }
+ leaf health { type string; }
+ leaf served-by { type string; }
+ }
+ }
+
+ rpc admin-health {
+ description
+ "Pings the admin portal health check to determine if the admin portal is reachable.";
+ output {
+ leaf status { type string; }
+ leaf health { type string; }
+ leaf served-by { type string; }
+ }
+ }
+
+ rpc site-health {
+ description
+ "Gathers health information on the ODL cluster, database, and admin portal
+ to determine if the entire site is in a healthy state.";
+ output {
+ leaf status { type string; }
+ leaf served-by { type string; }
+ list sites {
+ uses site;
+ }
+ }
+ }
+
+ rpc site-identifier {
+ description
+ "Returns the unique site identifier.";
+ output {
+ leaf status { type string; }
+ leaf served-by { type string; }
+ leaf id { type string; mandatory true; }
+ }
+ }
+
+ rpc halt-akka-traffic {
+ description
+ "Executes IP Tables commands to halt traffic to the akka port.";
+ input {
+ list node-info {
+ uses node;
+ }
+ }
+ output {
+ leaf status { type string; }
+ leaf served-by { type string; }
+ }
+ }
+
+ rpc resume-akka-traffic {
+ description
+ "Executes IP Tables commands to resume traffic to the akka port.";
+ input {
+ list node-info {
+ uses node;
+ }
+ }
+ output {
+ leaf status { type string; }
+ leaf served-by { type string; }
+ }
+ }
+
+ rpc failover {
+ description
+ "Performs a failover from primary site to standby site.";
+ input {
+ leaf backupData {
+ type string;
+ default "false";
+ }
+ leaf isolate {
+ type string;
+ default "false";
+ }
+ leaf downUnreachable {
+ type string;
+ default "false";
+ }
+ }
+ output {
+ leaf status { type string; }
+ leaf message { type string; }
+ leaf served-by { type string; }
+ }
+ }
+}