Merge of new rebased code

Change-Id: I9b8d1f69eb3e0af1935ed8304fea4bf54c1aac47
Signed-off-by: Patrick Brady <pb071s@att.com>
diff --git a/appc-oam/appc-oam-model/pom.xml b/appc-oam/appc-oam-model/pom.xml
new file mode 100644
index 0000000..e44d9a0
--- /dev/null
+++ b/appc-oam/appc-oam-model/pom.xml
@@ -0,0 +1,98 @@
+<?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>
+        <artifactId>appc-oam</artifactId>
+        <groupId>org.openecomp.appc</groupId>
+        <version>1.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>appc-oam-model</artifactId>
+    <packaging>bundle</packaging>
+
+    <build>
+
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Import-Package>*</Import-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.opendaylight.yangtools</groupId>
+                <artifactId>yang-maven-plugin</artifactId>
+                <version>${odl.yangtools.version}</version>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.opendaylight.mdsal</groupId>
+                        <artifactId>maven-sal-api-gen-plugin</artifactId>
+                        <version>${odl.sal.api.gen.plugin.version}</version>
+                        <type>jar</type>
+                    </dependency>
+                </dependencies>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate-sources</goal>
+                        </goals>
+                        <configuration>
+                            <yangFilesRootDir>${yang.file.directory}</yangFilesRootDir>
+                            <codeGenerators>
+                                <generator>
+                                    <codeGeneratorClass>org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl</codeGeneratorClass>
+                                    <outputBaseDir>${salGeneratorPath}</outputBaseDir>
+                                </generator>
+                            </codeGenerators>
+                            <inspectDependencies>true</inspectDependencies>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-install-plugin</artifactId>
+                <version>2.5.2</version>
+                <executions>
+                    <execution>
+                        <id>yang</id>
+                        <phase>initialize</phase>
+                        <goals>
+                            <goal>install-file</goal>
+                        </goals>
+                        <configuration>
+                            <file>${project.basedir}/src/main/yang/appc-oam.yang</file>
+                            <groupId>${project.groupId}</groupId>
+                            <artifactId>${project.artifactId}</artifactId>
+                            <version>${project.version}</version>
+                            <packaging>yang</packaging>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+
+    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>yang-binding</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal.model</groupId>
+            <artifactId>ietf-inet-types</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal.model</groupId>
+            <artifactId>ietf-yang-types</artifactId>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/appc-oam/appc-oam-model/src/main/yang/appc-oam.yang b/appc-oam/appc-oam-model/src/main/yang/appc-oam.yang
new file mode 100644
index 0000000..4611a32
--- /dev/null
+++ b/appc-oam/appc-oam-model/src/main/yang/appc-oam.yang
@@ -0,0 +1,137 @@
+/*
+ * Yang model for the OAM component of Application Controller (APP-C) component of ONAP
+ *
+ * This model is used to define the data and services of the OAM component of APP-C.
+ *
+ * The services exposed by this component are:
+ *
+ * get-metrics:
+ *    Used to retrieve current metric data from APP-C.
+ *
+ */
+
+module appc-oam {
+
+    yang-version 1;
+    namespace "org:openecomp:appc:oam";
+    prefix appc-oam;
+    organization "Copyright 2017 AT&T Intellectual Property.";
+
+    description
+        "Defines the services and request/response requirements for the
+        APP-C OAM component.";
+
+    /*
+     * Note, the revision changes the package name of the generated java code.  Do not
+     * change the revision unless you also update all references to the bindings.
+     */
+    revision "2017-03-03" {
+        description
+                "APP-C OAM interface version 1.5.00";
+    }
+
+    grouping common-header {
+        description "A common header for all APP-C requests";
+        container common-header {
+            description "A common header for all APP-C requests";
+
+            leaf originator-id {
+                description "originator-id an identifier of the calling system which can be
+                                    used addressing purposes, i.e. returning asynchronous response
+                                    to the proper destination over UEB (especially in case of multiple
+                                    consumers of APP-C APIs)";
+                type string;
+                mandatory true;
+            }
+
+            leaf request-id {
+                description "UUID for the request ID. An OSS/BSS identifier for the request
+                                that caused the current action. Multiple API calls may be made
+                                with the same request-id The request-id shall be recorded throughout
+                                the operations on a single request";
+                type string;
+                mandatory true;
+            }
+
+        }
+    }
+
+    grouping status {
+        description "The specific response codes are to be aligned with ASDC reference
+                doc (main table removed to avoid duplication and digression from
+                main table). See ASDC and ECOMP Distribution Consumer Interface
+                Agreement";
+        container status {
+            description "The specific response codes are to be aligned with ASDC reference
+                        doc (main table removed to avoid duplication and digression from
+                        main table). See ASDC and ECOMP Distribution Consumer Interface
+                        Agreement";
+            leaf code {
+                description "Response code";
+                type uint16;
+                mandatory true;
+            }
+            leaf message {
+                description "Response message";
+                type string;
+                mandatory true;
+            }
+        }
+    }
+
+    rpc get-metrics {
+        description "An operation to get list of registered Metrics in APP-C";
+        output {
+            list metrics {
+                key kpi-name;
+                description "KPI metrics definition";
+                leaf kpi-name {
+                    description "metrics name";
+                    type string;
+                    mandatory true;
+                }
+                leaf last-reset-time {
+                    description "Last reset time";
+                    type string;
+                    mandatory true;
+                }
+                list kpi-values {
+                    key name;
+                    description "KPI properties in form of key value pairs";
+                    leaf name {
+                        description "KPI property name";
+                        type string;
+                    }
+                    leaf value {
+                        description "KPI property value";
+                        type string;
+                    }
+                }
+            }
+        }
+    }
+
+    rpc stop {
+        description "An operation that disables appc-provider-lcm so that it no longer accepts LCM request.  This
+                         operation has no impact on queued and currently executing LCM request.  A notification will be
+                         sent out indicating the APP-C  is idle once all LCM request have completed execution.  ";
+        input {
+           uses common-header;
+        }
+        output {
+            uses common-header;
+            uses status;
+        }
+    }
+
+    rpc start {
+        description "An operation that enables appc-provider-lcm so that it can begin to accepts LCM request. ";
+        input {
+           uses common-header;
+        }
+        output {
+            uses common-header;
+            uses status;
+        }
+    }
+}