Initial nemo project structure. 66/24366/1
authorA H <an.ho@huawei.com>
Wed, 22 Jul 2015 00:43:37 +0000 (17:43 -0700)
committerA H <an.ho@huawei.com>
Wed, 22 Jul 2015 00:43:37 +0000 (17:43 -0700)
Change-Id: I90fb136e0ca5207d42455b07f9d0133a1b2bab18
Signed-off-by: A H <an.ho@huawei.com>
25 files changed:
.gitignore [new file with mode: 0644]
.gitreview [new file with mode: 0644]
nemo-api/pom.xml [new file with mode: 0644]
nemo-api/src/main/yang/nemo-common.yang [new file with mode: 0644]
nemo-api/src/main/yang/nemo-intent.yang [new file with mode: 0644]
nemo-api/src/main/yang/nemo-object.yang [new file with mode: 0644]
nemo-api/src/main/yang/nemo-operation.yang [new file with mode: 0644]
nemo-api/src/main/yang/nemo-result.yang [new file with mode: 0644]
nemo-artifacts/pom.xml [new file with mode: 0644]
nemo-features/pom.xml [new file with mode: 0644]
nemo-features/src/main/features/features.xml [new file with mode: 0644]
nemo-impl/pom.xml [new file with mode: 0644]
nemo-impl/src/main/java/README [new file with mode: 0644]
nemo-impl/src/test/java/README [new file with mode: 0644]
nemo-karaf/pom.xml [new file with mode: 0644]
nemo-renderers/openflow-renderer/pom.xml [new file with mode: 0644]
nemo-renderers/openflow-renderer/src/main/java/README [new file with mode: 0644]
nemo-renderers/openflow-renderer/src/main/resources/etc/opendaylight/karaf/config.xml [new file with mode: 0644]
nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer-impl.yang [new file with mode: 0644]
nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer.yang [new file with mode: 0644]
nemo-renderers/openflow-renderer/src/test/java/README [new file with mode: 0644]
nemo-renderers/pom.xml [new file with mode: 0644]
nemo-ui/pom.xml [new file with mode: 0644]
nemo-ui/src/main/resources/README [new file with mode: 0644]
pom.xml [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..9c1b6f5
--- /dev/null
@@ -0,0 +1,18 @@
+# NEMO
+.classpath
+.project
+.settings
+.metadata
+*/.classpath
+*/.project
+*/.settings
+*/.metadata
+
+# OS
+*~
+
+# Maven
+target/
+
+# ODL
+yang-gen-*/
diff --git a/.gitreview b/.gitreview
new file mode 100644 (file)
index 0000000..c3b6472
--- /dev/null
@@ -0,0 +1,5 @@
+[gerrit]
+host=git.opendaylight.org
+port=29418
+project=nemo.git
+defaultbranch=master
diff --git a/nemo-api/pom.xml b/nemo-api/pom.xml
new file mode 100644 (file)
index 0000000..68ef166
--- /dev/null
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Huawei, Inc and others. All rights reserved.
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v1.0 which accompanies this distribution,
+and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<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.opendaylight.yangtools</groupId>
+    <artifactId>binding-parent</artifactId>
+    <version>0.8.0-SNAPSHOT</version>
+    <relativePath />
+  </parent>
+
+  <groupId>org.opendaylight.nemo</groupId>
+  <artifactId>nemo-api</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+  <name>${project.artifactId}</name>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.opendaylight.yangtools</groupId>
+        <artifactId>yang-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>generate-sources</goal>
+            </goals>
+            <configuration>
+              <yangFilesRootDir>src/main/yang</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>
+        <dependencies>
+          <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>maven-sal-api-gen-plugin</artifactId>
+            <version>${yangtools.version}</version>
+            <type>jar</type>
+          </dependency>
+        </dependencies>
+      </plugin>
+    </plugins>
+  </build>
+
+  <scm>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
+    <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
+    <tag>HEAD</tag>
+  </scm>
+</project>
\ No newline at end of file
diff --git a/nemo-api/src/main/yang/nemo-common.yang b/nemo-api/src/main/yang/nemo-common.yang
new file mode 100644 (file)
index 0000000..cbccc32
--- /dev/null
@@ -0,0 +1,318 @@
+/*\r
+ * Copyright (c) 2015  Huawei Technologies Co., Ltd. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+module nemo-common{\r
+       yang-version 1; \r
+       namespace "urn:opendaylight:params:xml:ns:yang:nemo:common";    \r
+       prefix "nemo-common";\r
+       \r
+       revision "2015-06-29" {\r
+        description\r
+            "Initial revision.";\r
+    }\r
+       \r
+       /**********************\r
+     * Base types\r
+    **********************/\r
+       typedef description {\r
+        description "A human-readable description for a object.";\r
+        type string {\r
+            length "1..4096";\r
+        }\r
+    }\r
+       \r
+       typedef name {\r
+        description\r
+            "A generic string name type. Must start with a letter";\r
+        type string {\r
+            pattern '[a-zA-Z]([a-zA-Z0-9\-_.])*';\r
+            length "1..256";\r
+        }\r
+    }\r
+       \r
+       // UUID type from ietf-yang-types@2013-07-15\r
+    typedef uuid {\r
+        type string {\r
+            pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'\r
+                + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';\r
+        }\r
+        description\r
+            "A Universally Unique IDentifier in the string representation\r
+             defined in RFC 4122.  The canonical representation uses\r
+             lowercase characters.\r
+\r
+             The following is an example of a UUID in string\r
+             representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";\r
+        reference\r
+            "RFC 4122: A Universally Unique IDentifier (UUID) URN\r
+             Namespace";\r
+    }\r
+\r
+    typedef unique-id {\r
+        type uuid;\r
+        description "A globally unique identifier";\r
+    }\r
+       \r
+       /*********************\r
+     * Unique IDs\r
+     *********************/    \r
+       typedef object-id {\r
+        type unique-id;\r
+        description "A unique ID for a parameterized object";\r
+    }\r
+       \r
+       typedef node-definition-id {\r
+        type object-id;\r
+        description "A unique ID for a node definition.";\r
+    }\r
+       typedef node-instance-id {\r
+        type object-id;\r
+        description "A unique ID for a node instance.";\r
+    }          \r
+       \r
+       typedef connection-definition-id {\r
+        type object-id;\r
+        description "A unique ID for a connection definition.";\r
+    }\r
+       typedef connection-instance-id {\r
+        type object-id;\r
+        description "A unique ID for a connection instance.";\r
+    }          \r
+       \r
+       typedef flow-definition-id {\r
+        type object-id;\r
+        description "A unique ID for a flow definition.";\r
+    }\r
+       typedef flow-instance-id {\r
+        type object-id;\r
+        description "A unique ID for a flow instance.";\r
+    }\r
+       \r
+       typedef expected-definition-id {\r
+        type unique-id;\r
+        description "A unique ID for an expected definition.";\r
+    }\r
+       typedef expected-instance-id {\r
+        type unique-id;\r
+        description "A unique ID for an expected instance.";\r
+    }\r
+       \r
+       typedef avoid-definition-id {\r
+        type unique-id;\r
+        description "A unique ID for an avoid definition.";\r
+    }\r
+       typedef avoid-instance-id {\r
+        type unique-id;\r
+        description "A unique ID for an avoid instance.";\r
+    }\r
+       \r
+       typedef context-id {\r
+               type unique-id;\r
+        description "A unique ID for a context.";\r
+       }\r
+       \r
+       typedef intent-id {\r
+        type unique-id;\r
+        description "A unique ID for an intent.";\r
+    }\r
+       \r
+       typedef user-id {\r
+        type unique-id;\r
+        description "A unique ID for a user.";\r
+    }\r
+       \r
+       \r
+       \r
+       /*********************\r
+     * names\r
+     *********************/    \r
+       typedef object-name {\r
+        type name;\r
+        description "A name for a parameterized object";\r
+    }\r
+       \r
+       typedef node-instance-name {\r
+        type object-name;\r
+        description "A name for a node instance.";\r
+    } \r
+       \r
+       typedef connection-instance-name {\r
+        type object-name;\r
+        description "A name for a connection instance.";\r
+    }  \r
+                \r
+       typedef flow-instance-name {\r
+        type object-name;\r
+        description "A name for a flow instance.";\r
+    } \r
+       \r
+       typedef node-property-name {\r
+        type name;\r
+        description "A name for a node property.";\r
+    } \r
+       \r
+       typedef connection-property-name {\r
+        type name;\r
+        description "A name for a connection property.";\r
+    } \r
+\r
+       typedef  match-item-name {\r
+        type name;\r
+        description "A name for a flow match item.";\r
+    }\r
+       \r
+       typedef property-name {\r
+        type name;\r
+        description "A name for a property.";\r
+    }\r
+       \r
+       typedef parameter-name {\r
+        type name;\r
+        description "A name for a parameter.";\r
+    }\r
+       \r
+       typedef action-definition-name {\r
+        type name;\r
+        description "A name for an action definition.";\r
+    }  \r
+       typedef action-instance-name {\r
+        type name;\r
+        description "A name for an action instance.";\r
+    }  \r
+       typedef condition-definition-name {\r
+        type name;\r
+        description "A name for a condition definition.";\r
+    }\r
+       typedef condition-instance-name {\r
+               type name;\r
+        description "A name for a condition instance.";\r
+       }\r
+       typedef condition-parameter-name {\r
+               type name;\r
+        description "A name for a condition parameter.";\r
+       }\r
+       typedef constraint-definition-name {\r
+        type name;\r
+        description "A name for a constraint definition.";\r
+    }\r
+       typedef constraint-instance-name {\r
+               type name;\r
+        description "A name for a constraint instance.";\r
+       }\r
+       typedef constraint-parameter-name {\r
+               type name;\r
+        description "A name for a constraint parameter.";\r
+       }\r
+       \r
+\r
+    typedef data-name {\r
+               type name;\r
+               description "A name for an action data.";\r
+       }\r
+       \r
+       typedef context-name {\r
+               type name;\r
+               description "A name for an context";\r
+       }\r
+       \r
+       typedef intent-name {\r
+        type name;\r
+        description "A name for an intent.";\r
+    }\r
+       typedef user-name {\r
+        type name;\r
+        description "A name for a user.";\r
+    }\r
+       typedef expected-instance-name {\r
+        type name;\r
+        description "A name for an expected instance.";\r
+    }\r
+       typedef avoid-instance-name {\r
+        type name;\r
+        description "A name for an avoid instance.";\r
+    }\r
+       \r
+       \r
+       \r
+       /*********************\r
+     * types\r
+     *********************/    \r
+       typedef node-definition-type {\r
+               type name;\r
+           description "A type for a node."; \r
+       }\r
+       typedef connection-definition-type {\r
+               type name;\r
+           description "A type for a connection."; \r
+       }\r
+       typedef flow-definition-type {\r
+               type name;\r
+           description "A type for a flow."; \r
+       }       \r
+       typedef node-instance-type  {\r
+               type name;\r
+           description "A type for a node instance."; \r
+       }       \r
+       typedef connection-instance-type  {\r
+               type name;\r
+           description "A type for a connection instance."; \r
+       }\r
+       typedef flow-instance-type {\r
+               type name;\r
+               description "A type for a flow instance."; \r
+       }\r
+\r
+}\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\r
\ No newline at end of file
diff --git a/nemo-api/src/main/yang/nemo-intent.yang b/nemo-api/src/main/yang/nemo-intent.yang
new file mode 100644 (file)
index 0000000..21760a0
--- /dev/null
@@ -0,0 +1,136 @@
+/*\r
+ * Copyright (c) 2015  Huawei Technologies Co., Ltd. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
\r
+module nemo-intent {\r
+       yang-version 1; \r
+       namespace "urn:opendaylight:params:xml:ns:yang:nemo:intent";    \r
+       prefix "nemo-intent";\r
+       \r
+       import nemo-common {prefix nemo-common;}\r
+       import nemo-object {prefix nemo-object;}\r
+       import nemo-operation {prefix nemo-operation;}\r
+       import nemo-result {prefix nemo-result;}\r
+       \r
+       revision "2015-06-29" {\r
+        description\r
+            "Initial revision.";\r
+    }\r
+               \r
+       grouping intent-instance {\r
+               description "";\r
+               leaf intent-id {\r
+                       description "A unique ID for the intent";\r
+                       type nemo-common:intent-id;                     \r
+                       mandatory true;\r
+               }       \r
+               leaf intent-name {\r
+                       description "A user-visible name for the intent";\r
+                       type nemo-common:intent-name;\r
+               }       \r
+               container objects {\r
+                       description "";\r
+                       list node {\r
+                               key "node-id";\r
+                               uses nemo-object:node-instance;\r
+                       }                       \r
+                       list connection {\r
+                               key "connection-id";\r
+                               uses nemo-object:connection-instance;\r
+                       }                               \r
+                       list flow {\r
+                               key "flow-id";\r
+                               uses nemo-object:flow-instance;\r
+                       }                                                       \r
+               }\r
+               \r
+               container operation {\r
+                       leaf apply-on-object {\r
+                               type nemo-common:object-id;\r
+                               mandatory true;\r
+                       }               \r
+                       leaf priority{\r
+                               type int64;\r
+                               default 1;\r
+                       }\r
+                       uses nemo-operation:condition-instance;\r
+                       uses nemo-operation:action-instance;\r
+                       uses nemo-operation:constraint-instance;                        \r
+               }\r
+               \r
+               container result{\r
+                       leaf result-to-object {\r
+                               type nemo-common:object-id;\r
+                               mandatory true;\r
+                       }               \r
+                       leaf priority{\r
+                               type int64;\r
+                               default 1;\r
+                       }\r
+                       choice result-mode {\r
+                               mandatory true;\r
+                               case expected-case {\r
+                                       uses nemo-result:expected-instance;\r
+                               }\r
+                               case avoid-case{\r
+                                       uses nemo-result:avoid-instance;\r
+                               }               \r
+                       }                                               \r
+               }       \r
+               container contexts{\r
+                       list context {\r
+                               key "context-id";\r
+                               leaf context-id {\r
+                                       type nemo-common:context-id;\r
+                                       mandatory true;\r
+                               }\r
+                               leaf context-name{\r
+                                       type nemo-common:context-name;\r
+                                       mandatory true;\r
+                               }\r
+                       }                       \r
+               }\r
+       }\r
+               \r
+       container users {\r
+               description "The list of all known users";\r
+               list user {\r
+            description "";\r
+            key "user-id";\r
+            leaf user-id {\r
+                description "A unique ID for the user";             \r
+                type nemo-common:user-id;\r
+                               mandatory true;\r
+            }\r
+            leaf user-name {\r
+                description "A user-visible name for the user";\r
+                type nemo-common:user-name;\r
+                               mandatory false;\r
+            }          \r
+                       list intent{\r
+                               key "intent-id";\r
+                               uses intent-instance;\r
+                               min-elements 1;\r
+                       }\r
+               }               \r
+       }\r
+       \r
+       rpc register-node-instance {\r
+           description "";\r
+               input {\r
+                       uses nemo-object:node-instance;\r
+               }\r
+       }\r
+       \r
+       rpc unregister-node-instance {\r
+           description "";\r
+               input {\r
+                       uses nemo-object:node-instance;\r
+               }\r
+       }\r
+               \r
+}
\ No newline at end of file
diff --git a/nemo-api/src/main/yang/nemo-object.yang b/nemo-api/src/main/yang/nemo-object.yang
new file mode 100644 (file)
index 0000000..30500fd
--- /dev/null
@@ -0,0 +1,331 @@
+/*\r
+ * Copyright (c) 2015  Huawei Technologies Co., Ltd. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+module nemo-object{\r
+       yang-version 1;         \r
+       namespace "urn:opendaylight:params:xml:ns:yang:nemo:object";    \r
+       prefix "nemo-object";\r
+       \r
+       import nemo-common {prefix nemo-common;}\r
+       \r
+       revision "2015-06-29" {\r
+        description\r
+            "Initial revision.";\r
+    }\r
+               \r
+       grouping property-definition {  \r
+               list property {\r
+            description "";\r
+            key "name";\r
+            leaf name {\r
+                description "A user-visible name for the property";\r
+                type nemo-common:property-name;\r
+                mandatory true;\r
+            }\r
+            leaf value-type {\r
+                description "The type of the property";\r
+                default string;\r
+                type enumeration {\r
+                    enum string {\r
+                        description "A string-valued property";\r
+                    }\r
+                    enum int {\r
+                        description "An integer-valued property";\r
+                    }\r
+                    enum range {\r
+                        description "An integer-range property";\r
+                    }\r
+                }\r
+            }\r
+            leaf is-required {\r
+                description "Specify whether the property is\r
+                             required for object.";\r
+                default optional;\r
+                type enumeration {\r
+                    enum required {\r
+                        description "The property is required";\r
+                    }\r
+                    enum optional {\r
+                        description "The property is optional";\r
+                    }\r
+                }\r
+            }\r
+        }                              \r
+       }                               \r
+       container node-definitions{\r
+               list node-definition{\r
+                       description "";\r
+                       key "id";\r
+                       leaf id {\r
+                               description "A unique ID for a kind of node definition";\r
+                           type nemo-common:node-definition-id;\r
+                               mandatory true;\r
+                   } \r
+                       leaf node-type{\r
+                               description "A user-readable description";\r
+                               type nemo-common:node-definition-type;\r
+                               mandatory true;                                         \r
+                       }\r
+                       uses property-definition;                               \r
+               }               \r
+       }               \r
+       container connection-definitions{\r
+               list connection-definition{\r
+                       key "id";\r
+                       leaf id {\r
+                               description "A unique ID for a kind of connection definition";\r
+                           type nemo-common:connection-definition-id;\r
+                               mandatory true;\r
+                   } \r
+                       leaf connection-type{\r
+                               description "A user-readable description";\r
+                               type nemo-common:connection-definition-type;\r
+                               mandatory true;                                         \r
+                       }\r
+                       uses property-definition;                       \r
+               }       \r
+       }\r
+       \r
+       \r
+       grouping match-item-definition{\r
+       \r
+               list match-item {\r
+            description "";\r
+            key "name";\r
+            leaf name {\r
+                description "A user-visible name for the match-item";\r
+                type nemo-common:match-item-name;\r
+                mandatory true;\r
+            }\r
+            leaf value-type {\r
+                description "The type of the match item";\r
+                default string;\r
+                type enumeration {\r
+                    enum string {\r
+                        description "A string-valued match item";\r
+                    }\r
+                    enum int {\r
+                        description "An integer-valued match item";\r
+                    }\r
+                    enum range {\r
+                        description "An integer-range match item";\r
+                    }\r
+                }\r
+            }\r
+            leaf is-required {\r
+                description "Specify whether the match item is required \r
+                                            for the flow.";\r
+                default optional;\r
+                type enumeration {\r
+                    enum required {\r
+                        description "The  match item is required";\r
+                    }\r
+                    enum optional {\r
+                        description "The  match item is optional";\r
+                    }\r
+                }\r
+            }\r
+        }                              \r
+       }       \r
+    container flow-definitions{\r
+               list flow-definition{\r
+                       key "id";\r
+                       leaf id {\r
+                               description "A unique ID for a kind of flow definition";\r
+                           type nemo-common:flow-definition-id;\r
+                               mandatory true;\r
+                   } \r
+                       leaf flow-type{\r
+                               description "A user-readable description";\r
+                               type nemo-common:flow-definition-type;\r
+                               mandatory true;                                         \r
+                       }\r
+                       uses match-item-definition;                             \r
+               }       \r
+       }\r
+       \r
+       grouping node-property-instance{\r
+               list property {\r
+            key "name";\r
+            leaf name {\r
+                               type nemo-common:node-property-name;\r
+                mandatory true;\r
+            }\r
+            leaf string-value {\r
+                type string;\r
+            }\r
+            leaf int-value {\r
+                type int64;\r
+            }\r
+            container range-value {\r
+                leaf min {\r
+                    type int64;\r
+                    mandatory true;\r
+                }\r
+                leaf max {\r
+                    type int64;\r
+                    mandatory true;\r
+                }\r
+            }\r
+        }      \r
+       }                       \r
+       grouping node-instance{\r
+               description "";\r
+               leaf node-id {\r
+                       description "A unique ID for the node instance";\r
+                       type nemo-common:node-instance-id;\r
+                       mandatory true;\r
+               }\r
+               leaf node-name {\r
+                       description\r
+                               "A user-visible name for the node definition";\r
+                       type nemo-common:node-instance-name;\r
+               }\r
+               leaf node-type {\r
+                       type nemo-common:node-instance-type;\r
+                       mandatory true;                 \r
+               }\r
+               container subnodes{                             \r
+                       leaf-list  subnode-id{\r
+                               type nemo-common:node-instance-id;                              \r
+                       }                       \r
+               }\r
+               container property{\r
+                       uses node-property-instance;                    \r
+               }               \r
+       }\r
+       \r
+       grouping connection-property-instance{\r
+               list property {\r
+            key "name";\r
+            leaf name {\r
+                               type nemo-common:connection-property-name;\r
+                mandatory true;\r
+            }\r
+            leaf string-value {\r
+                type string;\r
+            }\r
+            leaf int-value {\r
+                type int64;\r
+            }\r
+            container range-value {\r
+                leaf min {\r
+                    type int64;\r
+                    mandatory true;\r
+                }\r
+                leaf max {\r
+                    type int64;\r
+                    mandatory true;\r
+                }\r
+            }\r
+        }      \r
+       }                       \r
+       grouping connection-instance {\r
+               description "";\r
+               leaf connection-id {\r
+                       description "A unique ID for the connection instance";\r
+                       type nemo-common:connection-instance-id;\r
+                       mandatory true;\r
+               }\r
+               leaf connection-name {\r
+                       description  "A user-visible name for the connection instance";\r
+                       type nemo-common:connection-instance-name;\r
+                       mandatory false;\r
+               }\r
+               leaf connection-type {\r
+                       type nemo-common:connection-instance-type;\r
+                       mandatory true;                 \r
+               }\r
+               container endnodes{\r
+                       list one-end{\r
+                               key "node-id";\r
+                               leaf node-id{\r
+                                       type nemo-common:node-instance-id;                                              \r
+                               }\r
+                               min-elements 1;\r
+                       }                       \r
+                       list the-other-end{\r
+                               key "node-id";\r
+                               leaf node-id{\r
+                                       type nemo-common:node-instance-id;\r
+                               }\r
+                               min-elements 1;                         \r
+                       }                       \r
+               }\r
+               container property{\r
+                       uses connection-property-instance;                      \r
+               }                                       \r
+       }\r
+               \r
+       grouping match-item-instance{\r
+               list match-item {\r
+            key "name";\r
+            leaf name {\r
+                               type string;\r
+                mandatory true;\r
+            }\r
+            leaf string-value {\r
+                type string;\r
+            }\r
+            leaf int-value {\r
+                type int64;\r
+            }\r
+            container range-value {\r
+                leaf min {\r
+                    type int64;\r
+                    mandatory true;\r
+                }\r
+                leaf max {\r
+                    type int64;\r
+                    mandatory true;\r
+                }\r
+            }\r
+        }      \r
+       }\r
+       grouping has-direction {\r
+        description "Object that have a directionality.";      \r
+        leaf direction {\r
+            default bidirectional;\r
+            type enumeration {\r
+                enum in {\r
+                    description\r
+                        "Applies to flow into provider node";\r
+                }\r
+                enum out {\r
+                    description\r
+                        "Applies to flow out of provider node";\r
+                }\r
+                enum bidirectional {\r
+                    description\r
+                        "Applies to flow in both directions";\r
+                }\r
+            }\r
+        }\r
+    }  \r
+       grouping flow-instance{\r
+               leaf flow-id {\r
+                       description "A unique ID for the flow instance";\r
+                       type nemo-common:flow-instance-id;\r
+                       mandatory true;\r
+               }\r
+               leaf flow-name {\r
+                       description "A user-visible name for the flow instance";\r
+                       type nemo-common:flow-instance-name;\r
+                       mandatory false;\r
+               }\r
+               leaf flow-type {\r
+                       type nemo-common:flow-instance-type;\r
+                       mandatory true;                 \r
+               }\r
+               container match {\r
+                       uses has-direction;\r
+                       uses match-item-instance;\r
+               }\r
+       }       \r
+       \r
+}\r
diff --git a/nemo-api/src/main/yang/nemo-operation.yang b/nemo-api/src/main/yang/nemo-operation.yang
new file mode 100644 (file)
index 0000000..219b192
--- /dev/null
@@ -0,0 +1,207 @@
+/*\r
+ * Copyright (c) 2015  Huawei Technologies Co., Ltd. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+module nemo-operation {\r
+\r
+       yang-version 1; \r
+       namespace "urn:opendaylight:params:xml:ns:yang:nemo:operation"; \r
+       prefix "nemo-operation";\r
+       \r
+       import nemo-common {prefix nemo-common;}\r
+       \r
+       revision "2015-06-29" {\r
+        description\r
+            "Initial revision.";\r
+    }\r
+       \r
+       grouping parameter-definition {\r
+               leaf name {\r
+                       description "A user-visible name for parameter";\r
+                       type nemo-common:parameter-name;\r
+                       mandatory true;\r
+               }       \r
+               leaf type {\r
+                       description "The type of the parameter";\r
+                       default string;\r
+                       type enumeration {\r
+                               enum string {\r
+                                       description "A string-valued parameter";\r
+                               }\r
+                               enum int {\r
+                                       description "An integer-valued parameter";\r
+                               }\r
+                               enum range {\r
+                                       description "An integer-range parameter";\r
+                               }\r
+                       }\r
+               }       \r
+               leaf is-required {\r
+                       description "Specify whether the parameter is required ";\r
+                       default optional;\r
+                       type enumeration {\r
+                               enum required {\r
+                                       description "The parameter is required";\r
+                               }\r
+                               enum optional {\r
+                                       description "The parameter is optional";\r
+                               }\r
+                       }\r
+               }       \r
+       }\r
+       \r
+       \r
+       container action-definitions {\r
+           list action-definition {            \r
+                       key "action-name";\r
+                       leaf action-name {\r
+                               description "A name for the action definition";\r
+                               type nemo-common:action-definition-name;\r
+                           mandatory true;                     \r
+                   }                   \r
+               list data {\r
+                               description\r
+                                       "data for the action that can be passed in.";\r
+                               key "name";                     \r
+                               uses parameter-definition;              \r
+                   }           \r
+           }\r
+       }       \r
+       grouping action-parameter-instance{\r
+               leaf data-name {\r
+                       type nemo-common:data-name;\r
+                       mandatory true;\r
+               }\r
+               leaf string-value {\r
+                       type string;\r
+               }\r
+               leaf int-value {\r
+                       type int64;\r
+               }\r
+               container range-value {\r
+                       leaf min {\r
+                               type int64;\r
+                               mandatory true;\r
+                       }\r
+                       leaf max {\r
+                               type int64;\r
+                               mandatory true;\r
+                       }\r
+               }       \r
+       }       \r
+       grouping action-instance{\r
+               description " ";\r
+               leaf action-name{\r
+                       type nemo-common:action-instance-name;\r
+                       mandatory true;\r
+               }\r
+               list data {\r
+                       key "data-name";\r
+                       uses action-parameter-instance;                 \r
+               }               \r
+       }\r
+               \r
+       container condition-definitions {\r
+               list condition-definition{\r
+                       key "condition-name";\r
+                       leaf condition-name{\r
+                               type nemo-common:condition-definition-name;\r
+                               mandatory true;         \r
+                       }\r
+                       list condition-parameter{\r
+                               key "name";\r
+                               uses parameter-definition;\r
+                               min-elements 1;\r
+                       }       \r
+               }\r
+       }\r
+       grouping conditon-parameter-instance{\r
+               leaf parameter-name {\r
+                   type nemo-common:condition-parameter-name;\r
+                       mandatory true;\r
+               }\r
+               leaf string-value {\r
+                       type string;\r
+               }\r
+               leaf int-value {\r
+                       type int64;\r
+               }\r
+               container range-value {\r
+                       leaf min {\r
+                               type int64;\r
+                               mandatory true;\r
+                       }\r
+                       leaf max {\r
+                               type int64;\r
+                               mandatory true;\r
+                       }\r
+               }       \r
+       }       \r
+       grouping condition-instance {\r
+               description " ";\r
+               leaf condition-name{\r
+                       type nemo-common:condition-instance-name;\r
+                       mandatory true;                         \r
+               }       \r
+               list condition-parameter{\r
+                       key "parameter-name";\r
+                       uses conditon-parameter-instance;\r
+                       min-elements 1;\r
+               }\r
+       }\r
+       \r
+       \r
+       container constraint-definitions {\r
+               list constraint-definition{\r
+                       key "constraint-name";\r
+                       leaf constraint-name{\r
+                               type nemo-common:constraint-definition-name;\r
+                               mandatory true;         \r
+                       }\r
+                       list constraint-parameter{\r
+                               key "name";\r
+                               uses parameter-definition;\r
+                               min-elements 1;\r
+                       }       \r
+               }\r
+       }\r
+       grouping constraint-parameter-instance{\r
+               leaf parameter-name {\r
+                       type nemo-common:constraint-parameter-name;\r
+                       mandatory true;\r
+               }\r
+               leaf string-value {\r
+                       type string;\r
+               }\r
+               leaf int-value {\r
+                       type int64;\r
+               }\r
+               container range-value {\r
+                       leaf min {\r
+                               type int64;\r
+                               mandatory true;\r
+                       }\r
+                       leaf max {\r
+                               type int64;\r
+                               mandatory true;\r
+                       }\r
+               }       \r
+       }       \r
+       grouping constraint-instance {\r
+               description " ";\r
+               leaf constraint-name{\r
+                       type nemo-common:constraint-instance-name;\r
+                       mandatory true;                         \r
+               }       \r
+               list constraint-parameter{\r
+                       key "parameter-name";\r
+                       uses constraint-parameter-instance;\r
+                       min-elements 1;\r
+               }\r
+       }\r
+       \r
+}
\ No newline at end of file
diff --git a/nemo-api/src/main/yang/nemo-result.yang b/nemo-api/src/main/yang/nemo-result.yang
new file mode 100644 (file)
index 0000000..b350c21
--- /dev/null
@@ -0,0 +1,58 @@
+/*\r
+ * Copyright (c) 2015  Huawei Technologies Co., Ltd. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+module nemo-result{\r
+\r
+       yang-version 1; \r
+       namespace "urn:opendaylight:params:xml:ns:yang:nemo:result";    \r
+       prefix "nemo-result";\r
+       \r
+       import nemo-common {prefix nemo-common;}\r
+       \r
+       revision "2015-06-29" {\r
+        description\r
+            "Initial revision.";\r
+    }\r
+       \r
+       container expected-definitons{\r
+       \r
+       }       \r
+       \r
+       grouping expected-instance {\r
+               leaf expected-id {\r
+                       type nemo-common:expected-instance-id;\r
+                       mandatory true;\r
+               }\r
+               leaf expected-name{\r
+                       type nemo-common:expected-instance-name;\r
+                       mandatory false;\r
+               }\r
+               leaf expected-description {\r
+                       type nemo-common:description;\r
+               }               \r
+       }\r
+       \r
+       container avoid-definitons{\r
+       \r
+       }\r
+\r
+       grouping avoid-instance {\r
+               leaf avoid-id {\r
+                       type nemo-common:avoid-instance-id;\r
+                       mandatory true;\r
+               }\r
+               leaf avoid-name{\r
+                       type nemo-common:avoid-instance-name;\r
+                       mandatory false;\r
+               }\r
+               leaf avoid-description {\r
+                       type nemo-common:description;\r
+               }               \r
+       }\r
+       \r
+}
\ No newline at end of file
diff --git a/nemo-artifacts/pom.xml b/nemo-artifacts/pom.xml
new file mode 100644 (file)
index 0000000..a78d80d
--- /dev/null
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Huawei, Inc and others. All rights reserved.
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v1.0 which accompanies this distribution,
+and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<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>
+
+  <groupId>org.opendaylight.nemo</groupId>
+  <artifactId>nemo-artifacts</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>${project.artifactId}</name>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>nemo-api</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>nemo-impl</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>openflow-renderer</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>nemo-ui</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>nemo-features</artifactId>
+        <version>${project.version}</version>
+        <classifier>features</classifier>
+        <type>xml</type>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <scm>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
+    <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
+    <tag>HEAD</tag>
+  </scm>
+</project>
\ No newline at end of file
diff --git a/nemo-features/pom.xml b/nemo-features/pom.xml
new file mode 100644 (file)
index 0000000..3e7cadc
--- /dev/null
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Huawei, Inc and others. All rights reserved.
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v1.0 which accompanies this distribution,
+and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<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.opendaylight.odlparent</groupId>
+    <artifactId>features-parent</artifactId>
+    <version>1.6.0-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
+
+  <groupId>org.opendaylight.nemo</groupId>
+  <artifactId>nemo-features</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <name>${project.artifactId}</name>
+
+  <prerequisites>
+    <maven>3.1.1</maven>
+  </prerequisites>
+
+  <properties>
+    <mdsal.version>1.3.0-SNAPSHOT</mdsal.version>
+    <yangtools.version>0.8.0-SNAPSHOT</yangtools.version>
+    <dlux.version>0.3.0-SNAPSHOT</dlux.version>
+  </properties>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.opendaylight.controller</groupId>
+        <artifactId>mdsal-artifacts</artifactId>
+        <version>${mdsal.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.opendaylight.dlux</groupId>
+        <artifactId>features-dlux</artifactId>
+        <version>${dlux.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.opendaylight.yangtools</groupId>
+      <artifactId>features-yangtools</artifactId>
+      <version>${yangtools.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>features-mdsal</artifactId>
+      <classifier>features</classifier>
+      <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>features-restconf</artifactId>
+      <classifier>features</classifier>
+      <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.dlux</groupId>
+      <artifactId>features-dlux</artifactId>
+      <version>${dlux.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>nemo-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>nemo-impl</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>openflow-renderer</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>openflow-renderer</artifactId>
+      <version>${project.version}</version>
+      <classifier>config</classifier>
+      <type>xml</type>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>nemo-ui</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+
+  <scm>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
+    <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
+    <tag>HEAD</tag>
+  </scm>
+</project>
\ No newline at end of file
diff --git a/nemo-features/src/main/features/features.xml b/nemo-features/src/main/features/features.xml
new file mode 100644 (file)
index 0000000..7a0cda5
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Copyright (c) 2015 Huawei, Inc and others. All rights reserved.\r
+This program and the accompanying materials are made available under the\r
+terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+and is available at http://www.eclipse.org/legal/epl-v10.html\r
+-->\r
+<features name="odl-nemo-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"\r
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+  xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">\r
+  <repository>mvn:org.opendaylight.yangtools/features-yangtools/${yangtools.version}/xml/features</repository>\r
+  <repository>mvn:org.opendaylight.controller/features-mdsal/${mdsal.version}/xml/features</repository>\r
+  <repository>mvn:org.opendaylight.controller/features-restconf/${mdsal.version}/xml/features</repository>\r
+  <repository>mvn:org.opendaylight.dlux/features-dlux/${dlux.version}/xml/features</repository>\r
+  <feature name='odl-nemo-api' version='${project.version}' description='OpenDaylight :: NEMO :: API'>\r
+    <feature version='${yangtools.version}'>odl-yangtools-models</feature>\r
+    <bundle>mvn:org.opendaylight.nemo/nemo-api/${project.version}</bundle>\r
+  </feature>\r
+  <feature name='odl-nemo-engine' version='${project.version}' description='OpenDaylight :: NEMO :: Engine'>\r
+    <feature version='${mdsal.version}'>odl-mdsal-broker</feature>\r
+    <feature version='${project.version}'>odl-nemo-api</feature>\r
+    <bundle>mvn:org.opendaylight.nemo/nemo-impl/${project.version}</bundle>\r
+  </feature>\r
+  <feature name='odl-nemo-engine-rest' version='${project.version}' description='OpenDaylight :: NEMO :: Engine :: REST'>\r
+    <feature version='${mdsal.version}'>odl-restconf</feature>\r
+    <feature version='${mdsal.version}'>odl-mdsal-apidocs</feature>\r
+    <feature version='${mdsal.version}'>odl-mdsal-xsql</feature>\r
+    <feature version='${project.version}'>odl-nemo-engine</feature>\r
+  </feature>\r
+  <feature name='odl-nemo-openflow-renderer' version='${project.version}' description='OpenDaylight :: NEMO :: OpenFlow Renderer'>\r
+    <feature version='${project.version}'>odl-nemo-engine</feature>\r
+    <bundle>mvn:org.opendaylight.nemo/openflow-renderer/${project.version}</bundle>\r
+    <configfile finalname='etc/opendaylight/karaf/00-nemo-openflow-renderer.xml'>mvn:org.opendaylight.nemo/openflow-renderer/${project.version}/xml/config</configfile>\r
+  </feature>\r
+  <feature name='odl-nemo-engine-ui' version='${project.version}' description='OpenDaylight :: NEMO :: Engine :: UI'>\r
+    <feature version='${dlux.version}'>odl-dlux-core</feature>\r
+    <feature version='${project.version}'>odl-nemo-engine-rest</feature>\r
+    <bundle>mvn:org.opendaylight.nemo/nemo-ui/${project.version}</bundle>\r
+  </feature>\r
+</features>
\ No newline at end of file
diff --git a/nemo-impl/pom.xml b/nemo-impl/pom.xml
new file mode 100644 (file)
index 0000000..a363555
--- /dev/null
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Huawei, Inc and others. All rights reserved.
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v1.0 which accompanies this distribution,
+and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<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.opendaylight.yangtools</groupId>
+    <artifactId>binding-parent</artifactId>
+    <version>0.8.0-SNAPSHOT</version>
+    <relativePath />
+  </parent>
+
+  <groupId>org.opendaylight.nemo</groupId>
+  <artifactId>nemo-impl</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+  <name>${project.artifactId}</name>
+
+  <properties>
+    <jacoco.version>0.7.2.201409121644</jacoco.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>nemo-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.jettison</groupId>
+      <artifactId>jettison</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.jacoco</groupId>
+          <artifactId>jacoco-maven-plugin</artifactId>
+          <version>${jacoco.version}</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.jacoco</groupId>
+        <artifactId>jacoco-maven-plugin</artifactId>
+        <configuration>
+          <includes>
+            <include>org.opendaylight.nemo.*</include>
+          </includes>
+        </configuration>
+        <executions>
+          <execution>
+            <id>pre-test</id>
+            <goals>
+              <goal>prepare-agent</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>post-test</id>
+            <goals>
+              <goal>report</goal>
+            </goals>
+            <phase>test</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <scm>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
+    <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
+    <tag>HEAD</tag>
+  </scm>
+</project>
\ No newline at end of file
diff --git a/nemo-impl/src/main/java/README b/nemo-impl/src/main/java/README
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/nemo-impl/src/test/java/README b/nemo-impl/src/test/java/README
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/nemo-karaf/pom.xml b/nemo-karaf/pom.xml
new file mode 100644 (file)
index 0000000..7f23a37
--- /dev/null
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Huawei, Inc and others. All rights reserved.
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v1.0 which accompanies this distribution,
+and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<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.opendaylight.controller</groupId>
+    <artifactId>karaf-parent</artifactId>
+    <version>1.6.0-SNAPSHOT</version>
+    <relativePath />
+  </parent>
+
+  <groupId>org.opendaylight.nemo</groupId>
+  <artifactId>nemo-karaf</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <name>${project.artifactId}</name>
+
+  <prerequisites>
+    <maven>3.1.1</maven>
+  </prerequisites>
+
+  <properties>
+    <feature.test.version>1.6.0-SNAPSHOT</feature.test.version>
+    <feature.mdsal.version>1.3.0-SNAPSHOT</feature.mdsal.version>
+    <feature.dlux.version>0.3.0-SNAPSHOT</feature.dlux.version>
+    <feature.flow.version>1.3.0-SNAPSHOT</feature.flow.version>
+    <feature.yangtools.version>0.8.0-SNAPSHOT</feature.yangtools.version>
+    <feature.adsal.version>0.10.0-SNAPSHOT</feature.adsal.version>
+  </properties>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>nemo-artifacts</artifactId>
+        <version>${project.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.karaf.features</groupId>
+      <artifactId>framework</artifactId>
+      <type>kar</type>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>features-mdsal</artifactId>
+      <version>${feature.mdsal.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>features-adsal</artifactId>
+      <classifier>features</classifier>
+      <version>${feature.adsal.version}</version>
+      <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.dlux</groupId>
+      <artifactId>features-dlux</artifactId>
+      <version>${feature.dlux.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>nemo-features</artifactId>
+      <version>${project.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+      <scope>runtime</scope>
+    </dependency>
+  </dependencies>
+
+  <scm>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
+    <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
+    <tag>HEAD</tag>
+  </scm>
+</project>
\ No newline at end of file
diff --git a/nemo-renderers/openflow-renderer/pom.xml b/nemo-renderers/openflow-renderer/pom.xml
new file mode 100644 (file)
index 0000000..277aa67
--- /dev/null
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Huawei, Inc and others. All rights reserved.
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v1.0 which accompanies this distribution,
+and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<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.opendaylight.controller</groupId>
+    <artifactId>config-parent</artifactId>
+    <version>0.4.0-SNAPSHOT</version>
+    <relativePath />
+  </parent>
+
+  <groupId>org.opendaylight.nemo</groupId>
+  <artifactId>openflow-renderer</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+  <name>${project.artifactId}</name>
+
+  <properties>
+    <jacoco.version>0.7.2.201409121644</jacoco.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>nemo-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>nemo-impl</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.jettison</groupId>
+      <artifactId>jettison</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.jacoco</groupId>
+          <artifactId>jacoco-maven-plugin</artifactId>
+          <version>${jacoco.version}</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.opendaylight.yangtools</groupId>
+        <artifactId>yang-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>generate-sources</goal>
+            </goals>
+            <configuration>
+              <yangFilesRootDir>src/main/yang</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>
+        <dependencies>
+          <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>maven-sal-api-gen-plugin</artifactId>
+            <version>${yangtools.version}</version>
+            <type>jar</type>
+          </dependency>
+        </dependencies>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>attach-artifacts</id>
+            <goals>
+              <goal>attach-artifact</goal>
+            </goals>
+            <phase>package</phase>
+            <configuration>
+              <artifacts>
+                <artifact>
+                  <file>${project.build.directory}/classes/etc/opendaylight/karaf/config.xml</file>
+                  <type>xml</type>
+                  <classifier>config</classifier>
+                </artifact>
+              </artifacts>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.jacoco</groupId>
+        <artifactId>jacoco-maven-plugin</artifactId>
+        <configuration>
+          <includes>
+            <include>org.opendaylight.nemo.*</include>
+          </includes>
+        </configuration>
+        <executions>
+          <execution>
+            <id>pre-test</id>
+            <goals>
+              <goal>prepare-agent</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>post-test</id>
+            <goals>
+              <goal>report</goal>
+            </goals>
+            <phase>test</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <scm>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
+    <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
+    <tag>HEAD</tag>
+  </scm>
+</project>
\ No newline at end of file
diff --git a/nemo-renderers/openflow-renderer/src/main/java/README b/nemo-renderers/openflow-renderer/src/main/java/README
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/nemo-renderers/openflow-renderer/src/main/resources/etc/opendaylight/karaf/config.xml b/nemo-renderers/openflow-renderer/src/main/resources/etc/opendaylight/karaf/config.xml
new file mode 100644 (file)
index 0000000..1ed3756
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Copyright (c) 2015 Huawei, Inc and others. All rights reserved.\r
+This program and the accompanying materials are made available under the\r
+terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+and is available at http://www.eclipse.org/legal/epl-v10.html\r
+-->\r
+<snapshot>\r
+  <configuration>\r
+    <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">\r
+      <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">\r
+        <module>\r
+          <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:nemo:openflow:renderer:impl">prefix:openflow-renderer-impl</type>\r
+          <name>openflow-renderer-impl</name>\r
+          <data-broker>\r
+            <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>\r
+            <name>binding-data-broker</name>\r
+          </data-broker>\r
+          <rpc-registry>\r
+            <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>\r
+            <name>binding-rpc-broker</name>\r
+          </rpc-registry>\r
+          <notification-service>\r
+            <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-notification-service</type>\r
+            <name>binding-notification-broker</name>\r
+          </notification-service>\r
+        </module>\r
+      </modules>\r
+    </data>\r
+  </configuration>\r
+\r
+  <required-capabilities></required-capabilities>\r
+</snapshot>
\ No newline at end of file
diff --git a/nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer-impl.yang b/nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer-impl.yang
new file mode 100644 (file)
index 0000000..dc8b4d9
--- /dev/null
@@ -0,0 +1,62 @@
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+module openflow-renderer-impl {\r
+    yang-version 1;\r
+\r
+    namespace "urn:opendaylight:params:xml:ns:yang:nemo:openflow:renderer:impl";\r
+    prefix "openflow-renderer-impl";\r
+\r
+    import config { prefix config; revision-date 2013-04-05; }\r
+    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }\r
+\r
+    description\r
+        "This module contains the base YANG definitions for\r
+         NEMO Openflow renderer implementation.";\r
+\r
+    revision "2015-07-01" {\r
+        description\r
+            "Initial revision.";\r
+    }\r
+\r
+    identity openflow-renderer-impl {\r
+        base config:module-type;\r
+        config:java-name-prefix OpenflowRenderer;\r
+    }\r
+\r
+    augment "/config:modules/config:module/config:configuration" {\r
+        case openflow-renderer-impl {\r
+            when "/config:modules/config:module/config:type = 'openflow-renderer-impl'";\r
+\r
+            container data-broker {\r
+                uses config:service-ref {\r
+                    refine type {\r
+                        mandatory false;\r
+                        config:required-identity mdsal:binding-async-data-broker;\r
+                    }\r
+                }\r
+            }\r
+            container rpc-registry {\r
+                uses config:service-ref {\r
+                    refine type {\r
+                        mandatory true;\r
+                        config:required-identity mdsal:binding-rpc-registry;\r
+                    }\r
+                }\r
+            }\r
+            container notification-service {\r
+                uses config:service-ref {\r
+                    refine type {\r
+                        mandatory true;\r
+                        config:required-identity mdsal:binding-notification-service;\r
+                    }\r
+                }\r
+            }\r
+        }\r
+    }\r
+}\r
diff --git a/nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer.yang b/nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer.yang
new file mode 100644 (file)
index 0000000..499d2a9
--- /dev/null
@@ -0,0 +1,22 @@
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+module openflow-renderer {\r
+    yang-version 1;\r
+\r
+    namespace "urn:opendaylight:params:xml:ns:yang:nemo:openflow:renderer";\r
+    prefix "openflow-renderer";\r
+\r
+    description\r
+        "This module defines the NEMO Openflow renderer model.";\r
+\r
+    revision "2015-07-01" {\r
+        description\r
+            "Initial revision.";\r
+    }\r
+}\r
diff --git a/nemo-renderers/openflow-renderer/src/test/java/README b/nemo-renderers/openflow-renderer/src/test/java/README
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/nemo-renderers/pom.xml b/nemo-renderers/pom.xml
new file mode 100644 (file)
index 0000000..1024502
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Huawei, Inc and others. All rights reserved.
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v1.0 which accompanies this distribution,
+and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<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.opendaylight.nemo</groupId>
+    <artifactId>nemo.project</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+  </parent>
+
+  <groupId>org.opendaylight.nemo</groupId>
+  <artifactId>nemo-renderers</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>${project.artifactId}</name>
+
+  <modules>
+    <module>openflow-renderer</module>
+  </modules>
+
+  <scm>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
+    <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
+    <tag>HEAD</tag>
+  </scm>
+</project>
\ No newline at end of file
diff --git a/nemo-ui/pom.xml b/nemo-ui/pom.xml
new file mode 100644 (file)
index 0000000..b77c89c
--- /dev/null
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Huawei, Inc and others. All rights reserved.
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v1.0 which accompanies this distribution,
+and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<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.opendaylight.yangtools</groupId>
+    <artifactId>binding-parent</artifactId>
+    <version>0.8.0-SNAPSHOT</version>
+    <relativePath />
+  </parent>
+
+  <groupId>org.opendaylight.nemo</groupId>
+  <artifactId>nemo-ui</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+  <name>${project.artifactId}</name>
+
+  <properties>
+    <dlux.version>0.3.0-SNAPSHOT</dlux.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.opendaylight.dlux</groupId>
+      <artifactId>loader</artifactId>
+      <version>${dlux.version}</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>target/generated-resources</directory>
+      </resource>
+      <resource>
+        <directory>src/main/resources</directory>
+      </resource>
+    </resources>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <version>2.6</version>
+        <executions>
+          <execution>
+            <id>unpack-loader-resources</id>
+            <goals>
+              <goal>unpack-dependencies</goal>
+            </goals>
+            <phase>generate-resources</phase>
+            <configuration>
+              <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
+              <groupId>org.opendaylight.nemo</groupId>
+              <includeArtifactIds>nemo-ui</includeArtifactIds>
+              <excludes>META-INF\/**</excludes>
+              <excludeTransitive>true</excludeTransitive>
+              <ignorePermissions>false</ignorePermissions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+            <Import-Package>
+              org.osgi.service.http,
+              org.osgi.framework;version="1.0.0",
+              org.opendaylight.dlux.loader,
+              org.slf4j
+            </Import-Package>
+            <Export-Package></Export-Package>
+          </instructions>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <scm>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
+    <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
+    <tag>HEAD</tag>
+  </scm>
+</project>
\ No newline at end of file
diff --git a/nemo-ui/src/main/resources/README b/nemo-ui/src/main/resources/README
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/pom.xml b/pom.xml
new file mode 100644 (file)
index 0000000..5403f36
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2015 Huawei, Inc and others. All rights reserved.
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v1.0 which accompanies this distribution,
+and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<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.opendaylight.controller</groupId>
+    <artifactId>releasepom</artifactId>
+    <version>0.3.0-SNAPSHOT</version>
+    <relativePath />
+  </parent>
+
+  <groupId>org.opendaylight.nemo</groupId>
+  <artifactId>nemo.project</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>nemo</name>
+  <description>OpenDaylight NEMO</description>
+
+  <prerequisites>
+    <maven>3.1.1</maven>
+  </prerequisites>
+
+  <modules>
+    <module>nemo-artifacts</module>
+    <module>nemo-api</module>
+    <module>nemo-impl</module>
+    <module>nemo-ui</module>
+    <module>nemo-features</module>
+    <module>nemo-karaf</module>
+    <module>nemo-renderers</module>
+  </modules>
+
+  <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
+
+  <licenses>
+    <license>
+      <name>Eclipse Public License v1.0</name>
+      <url>http://www.eclipse.org/legal/epl-v10.html</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+
+  <developers>
+    <developer>
+      <name>Zhigang Ji</name>
+      <email>jizhigang@huawei.com</email>
+      <organization>Huawei, Inc</organization>
+      <organizationUrl>http://www.huawei.com</organizationUrl>
+    </developer>
+  </developers>
+
+  <scm>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
+    <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
+    <tag>HEAD</tag>
+  </scm>
+</project>
\ No newline at end of file