From 8bdb39a32f7b0377b8743e7b156ab32bda0c2b94 Mon Sep 17 00:00:00 2001 From: A H Date: Tue, 21 Jul 2015 17:43:37 -0700 Subject: [PATCH] Initial nemo project structure. Change-Id: I90fb136e0ca5207d42455b07f9d0133a1b2bab18 Signed-off-by: A H --- .gitignore | 18 + .gitreview | 5 + nemo-api/pom.xml | 69 ++++ nemo-api/src/main/yang/nemo-common.yang | 318 +++++++++++++++++ nemo-api/src/main/yang/nemo-intent.yang | 136 +++++++ nemo-api/src/main/yang/nemo-object.yang | 331 ++++++++++++++++++ nemo-api/src/main/yang/nemo-operation.yang | 207 +++++++++++ nemo-api/src/main/yang/nemo-result.yang | 58 +++ nemo-artifacts/pom.xml | 56 +++ nemo-features/pom.xml | 119 +++++++ nemo-features/src/main/features/features.xml | 40 +++ nemo-impl/pom.xml | 94 +++++ nemo-impl/src/main/java/README | 0 nemo-impl/src/test/java/README | 0 nemo-karaf/pom.xml | 95 +++++ nemo-renderers/openflow-renderer/pom.xml | 154 ++++++++ .../openflow-renderer/src/main/java/README | 0 .../etc/opendaylight/karaf/config.xml | 33 ++ .../src/main/yang/openflow-renderer-impl.yang | 62 ++++ .../src/main/yang/openflow-renderer.yang | 22 ++ .../openflow-renderer/src/test/java/README | 0 nemo-renderers/pom.xml | 34 ++ nemo-ui/pom.xml | 94 +++++ nemo-ui/src/main/resources/README | 0 pom.xml | 65 ++++ 25 files changed, 2010 insertions(+) create mode 100644 .gitignore create mode 100644 .gitreview create mode 100644 nemo-api/pom.xml create mode 100644 nemo-api/src/main/yang/nemo-common.yang create mode 100644 nemo-api/src/main/yang/nemo-intent.yang create mode 100644 nemo-api/src/main/yang/nemo-object.yang create mode 100644 nemo-api/src/main/yang/nemo-operation.yang create mode 100644 nemo-api/src/main/yang/nemo-result.yang create mode 100644 nemo-artifacts/pom.xml create mode 100644 nemo-features/pom.xml create mode 100644 nemo-features/src/main/features/features.xml create mode 100644 nemo-impl/pom.xml create mode 100644 nemo-impl/src/main/java/README create mode 100644 nemo-impl/src/test/java/README create mode 100644 nemo-karaf/pom.xml create mode 100644 nemo-renderers/openflow-renderer/pom.xml create mode 100644 nemo-renderers/openflow-renderer/src/main/java/README create mode 100644 nemo-renderers/openflow-renderer/src/main/resources/etc/opendaylight/karaf/config.xml create mode 100644 nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer-impl.yang create mode 100644 nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer.yang create mode 100644 nemo-renderers/openflow-renderer/src/test/java/README create mode 100644 nemo-renderers/pom.xml create mode 100644 nemo-ui/pom.xml create mode 100644 nemo-ui/src/main/resources/README create mode 100644 pom.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9c1b6f5 --- /dev/null +++ b/.gitignore @@ -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 index 0000000..c3b6472 --- /dev/null +++ b/.gitreview @@ -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 index 0000000..68ef166 --- /dev/null +++ b/nemo-api/pom.xml @@ -0,0 +1,69 @@ + + + + 4.0.0 + + + org.opendaylight.yangtools + binding-parent + 0.8.0-SNAPSHOT + + + + org.opendaylight.nemo + nemo-api + 1.0.0-SNAPSHOT + bundle + ${project.artifactId} + + + + + org.opendaylight.yangtools + yang-maven-plugin + + + + generate-sources + + + src/main/yang + + + + org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl + + + ${salGeneratorPath} + + + + true + + + + + + org.opendaylight.yangtools + maven-sal-api-gen-plugin + ${yangtools.version} + jar + + + + + + + + scm:git:ssh://git.opendaylight.org:29418/nemo.git + scm:git:ssh://git.opendaylight.org:29418/nemo.git + https://wiki.opendaylight.org/view/NEMO:Main + HEAD + + \ 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 index 0000000..cbccc32 --- /dev/null +++ b/nemo-api/src/main/yang/nemo-common.yang @@ -0,0 +1,318 @@ +/* + * Copyright (c) 2015 Huawei Technologies Co., Ltd. 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 + */ + +module nemo-common{ + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:nemo:common"; + prefix "nemo-common"; + + revision "2015-06-29" { + description + "Initial revision."; + } + + /********************** + * Base types + **********************/ + typedef description { + description "A human-readable description for a object."; + type string { + length "1..4096"; + } + } + + typedef name { + description + "A generic string name type. Must start with a letter"; + type string { + pattern '[a-zA-Z]([a-zA-Z0-9\-_.])*'; + length "1..256"; + } + } + + // UUID type from ietf-yang-types@2013-07-15 + typedef uuid { + type string { + pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; + } + description + "A Universally Unique IDentifier in the string representation + defined in RFC 4122. The canonical representation uses + lowercase characters. + + The following is an example of a UUID in string + representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6"; + reference + "RFC 4122: A Universally Unique IDentifier (UUID) URN + Namespace"; + } + + typedef unique-id { + type uuid; + description "A globally unique identifier"; + } + + /********************* + * Unique IDs + *********************/ + typedef object-id { + type unique-id; + description "A unique ID for a parameterized object"; + } + + typedef node-definition-id { + type object-id; + description "A unique ID for a node definition."; + } + typedef node-instance-id { + type object-id; + description "A unique ID for a node instance."; + } + + typedef connection-definition-id { + type object-id; + description "A unique ID for a connection definition."; + } + typedef connection-instance-id { + type object-id; + description "A unique ID for a connection instance."; + } + + typedef flow-definition-id { + type object-id; + description "A unique ID for a flow definition."; + } + typedef flow-instance-id { + type object-id; + description "A unique ID for a flow instance."; + } + + typedef expected-definition-id { + type unique-id; + description "A unique ID for an expected definition."; + } + typedef expected-instance-id { + type unique-id; + description "A unique ID for an expected instance."; + } + + typedef avoid-definition-id { + type unique-id; + description "A unique ID for an avoid definition."; + } + typedef avoid-instance-id { + type unique-id; + description "A unique ID for an avoid instance."; + } + + typedef context-id { + type unique-id; + description "A unique ID for a context."; + } + + typedef intent-id { + type unique-id; + description "A unique ID for an intent."; + } + + typedef user-id { + type unique-id; + description "A unique ID for a user."; + } + + + + /********************* + * names + *********************/ + typedef object-name { + type name; + description "A name for a parameterized object"; + } + + typedef node-instance-name { + type object-name; + description "A name for a node instance."; + } + + typedef connection-instance-name { + type object-name; + description "A name for a connection instance."; + } + + typedef flow-instance-name { + type object-name; + description "A name for a flow instance."; + } + + typedef node-property-name { + type name; + description "A name for a node property."; + } + + typedef connection-property-name { + type name; + description "A name for a connection property."; + } + + typedef match-item-name { + type name; + description "A name for a flow match item."; + } + + typedef property-name { + type name; + description "A name for a property."; + } + + typedef parameter-name { + type name; + description "A name for a parameter."; + } + + typedef action-definition-name { + type name; + description "A name for an action definition."; + } + typedef action-instance-name { + type name; + description "A name for an action instance."; + } + typedef condition-definition-name { + type name; + description "A name for a condition definition."; + } + typedef condition-instance-name { + type name; + description "A name for a condition instance."; + } + typedef condition-parameter-name { + type name; + description "A name for a condition parameter."; + } + typedef constraint-definition-name { + type name; + description "A name for a constraint definition."; + } + typedef constraint-instance-name { + type name; + description "A name for a constraint instance."; + } + typedef constraint-parameter-name { + type name; + description "A name for a constraint parameter."; + } + + + typedef data-name { + type name; + description "A name for an action data."; + } + + typedef context-name { + type name; + description "A name for an context"; + } + + typedef intent-name { + type name; + description "A name for an intent."; + } + typedef user-name { + type name; + description "A name for a user."; + } + typedef expected-instance-name { + type name; + description "A name for an expected instance."; + } + typedef avoid-instance-name { + type name; + description "A name for an avoid instance."; + } + + + + /********************* + * types + *********************/ + typedef node-definition-type { + type name; + description "A type for a node."; + } + typedef connection-definition-type { + type name; + description "A type for a connection."; + } + typedef flow-definition-type { + type name; + description "A type for a flow."; + } + typedef node-instance-type { + type name; + description "A type for a node instance."; + } + typedef connection-instance-type { + type name; + description "A type for a connection instance."; + } + typedef flow-instance-type { + type name; + description "A type for a flow instance."; + } + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 index 0000000..21760a0 --- /dev/null +++ b/nemo-api/src/main/yang/nemo-intent.yang @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2015 Huawei Technologies Co., Ltd. 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 + */ + +module nemo-intent { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:nemo:intent"; + prefix "nemo-intent"; + + import nemo-common {prefix nemo-common;} + import nemo-object {prefix nemo-object;} + import nemo-operation {prefix nemo-operation;} + import nemo-result {prefix nemo-result;} + + revision "2015-06-29" { + description + "Initial revision."; + } + + grouping intent-instance { + description ""; + leaf intent-id { + description "A unique ID for the intent"; + type nemo-common:intent-id; + mandatory true; + } + leaf intent-name { + description "A user-visible name for the intent"; + type nemo-common:intent-name; + } + container objects { + description ""; + list node { + key "node-id"; + uses nemo-object:node-instance; + } + list connection { + key "connection-id"; + uses nemo-object:connection-instance; + } + list flow { + key "flow-id"; + uses nemo-object:flow-instance; + } + } + + container operation { + leaf apply-on-object { + type nemo-common:object-id; + mandatory true; + } + leaf priority{ + type int64; + default 1; + } + uses nemo-operation:condition-instance; + uses nemo-operation:action-instance; + uses nemo-operation:constraint-instance; + } + + container result{ + leaf result-to-object { + type nemo-common:object-id; + mandatory true; + } + leaf priority{ + type int64; + default 1; + } + choice result-mode { + mandatory true; + case expected-case { + uses nemo-result:expected-instance; + } + case avoid-case{ + uses nemo-result:avoid-instance; + } + } + } + container contexts{ + list context { + key "context-id"; + leaf context-id { + type nemo-common:context-id; + mandatory true; + } + leaf context-name{ + type nemo-common:context-name; + mandatory true; + } + } + } + } + + container users { + description "The list of all known users"; + list user { + description ""; + key "user-id"; + leaf user-id { + description "A unique ID for the user"; + type nemo-common:user-id; + mandatory true; + } + leaf user-name { + description "A user-visible name for the user"; + type nemo-common:user-name; + mandatory false; + } + list intent{ + key "intent-id"; + uses intent-instance; + min-elements 1; + } + } + } + + rpc register-node-instance { + description ""; + input { + uses nemo-object:node-instance; + } + } + + rpc unregister-node-instance { + description ""; + input { + uses nemo-object:node-instance; + } + } + +} \ 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 index 0000000..30500fd --- /dev/null +++ b/nemo-api/src/main/yang/nemo-object.yang @@ -0,0 +1,331 @@ +/* + * Copyright (c) 2015 Huawei Technologies Co., Ltd. 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 + */ + +module nemo-object{ + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:nemo:object"; + prefix "nemo-object"; + + import nemo-common {prefix nemo-common;} + + revision "2015-06-29" { + description + "Initial revision."; + } + + grouping property-definition { + list property { + description ""; + key "name"; + leaf name { + description "A user-visible name for the property"; + type nemo-common:property-name; + mandatory true; + } + leaf value-type { + description "The type of the property"; + default string; + type enumeration { + enum string { + description "A string-valued property"; + } + enum int { + description "An integer-valued property"; + } + enum range { + description "An integer-range property"; + } + } + } + leaf is-required { + description "Specify whether the property is + required for object."; + default optional; + type enumeration { + enum required { + description "The property is required"; + } + enum optional { + description "The property is optional"; + } + } + } + } + } + container node-definitions{ + list node-definition{ + description ""; + key "id"; + leaf id { + description "A unique ID for a kind of node definition"; + type nemo-common:node-definition-id; + mandatory true; + } + leaf node-type{ + description "A user-readable description"; + type nemo-common:node-definition-type; + mandatory true; + } + uses property-definition; + } + } + container connection-definitions{ + list connection-definition{ + key "id"; + leaf id { + description "A unique ID for a kind of connection definition"; + type nemo-common:connection-definition-id; + mandatory true; + } + leaf connection-type{ + description "A user-readable description"; + type nemo-common:connection-definition-type; + mandatory true; + } + uses property-definition; + } + } + + + grouping match-item-definition{ + + list match-item { + description ""; + key "name"; + leaf name { + description "A user-visible name for the match-item"; + type nemo-common:match-item-name; + mandatory true; + } + leaf value-type { + description "The type of the match item"; + default string; + type enumeration { + enum string { + description "A string-valued match item"; + } + enum int { + description "An integer-valued match item"; + } + enum range { + description "An integer-range match item"; + } + } + } + leaf is-required { + description "Specify whether the match item is required + for the flow."; + default optional; + type enumeration { + enum required { + description "The match item is required"; + } + enum optional { + description "The match item is optional"; + } + } + } + } + } + container flow-definitions{ + list flow-definition{ + key "id"; + leaf id { + description "A unique ID for a kind of flow definition"; + type nemo-common:flow-definition-id; + mandatory true; + } + leaf flow-type{ + description "A user-readable description"; + type nemo-common:flow-definition-type; + mandatory true; + } + uses match-item-definition; + } + } + + grouping node-property-instance{ + list property { + key "name"; + leaf name { + type nemo-common:node-property-name; + mandatory true; + } + leaf string-value { + type string; + } + leaf int-value { + type int64; + } + container range-value { + leaf min { + type int64; + mandatory true; + } + leaf max { + type int64; + mandatory true; + } + } + } + } + grouping node-instance{ + description ""; + leaf node-id { + description "A unique ID for the node instance"; + type nemo-common:node-instance-id; + mandatory true; + } + leaf node-name { + description + "A user-visible name for the node definition"; + type nemo-common:node-instance-name; + } + leaf node-type { + type nemo-common:node-instance-type; + mandatory true; + } + container subnodes{ + leaf-list subnode-id{ + type nemo-common:node-instance-id; + } + } + container property{ + uses node-property-instance; + } + } + + grouping connection-property-instance{ + list property { + key "name"; + leaf name { + type nemo-common:connection-property-name; + mandatory true; + } + leaf string-value { + type string; + } + leaf int-value { + type int64; + } + container range-value { + leaf min { + type int64; + mandatory true; + } + leaf max { + type int64; + mandatory true; + } + } + } + } + grouping connection-instance { + description ""; + leaf connection-id { + description "A unique ID for the connection instance"; + type nemo-common:connection-instance-id; + mandatory true; + } + leaf connection-name { + description "A user-visible name for the connection instance"; + type nemo-common:connection-instance-name; + mandatory false; + } + leaf connection-type { + type nemo-common:connection-instance-type; + mandatory true; + } + container endnodes{ + list one-end{ + key "node-id"; + leaf node-id{ + type nemo-common:node-instance-id; + } + min-elements 1; + } + list the-other-end{ + key "node-id"; + leaf node-id{ + type nemo-common:node-instance-id; + } + min-elements 1; + } + } + container property{ + uses connection-property-instance; + } + } + + grouping match-item-instance{ + list match-item { + key "name"; + leaf name { + type string; + mandatory true; + } + leaf string-value { + type string; + } + leaf int-value { + type int64; + } + container range-value { + leaf min { + type int64; + mandatory true; + } + leaf max { + type int64; + mandatory true; + } + } + } + } + grouping has-direction { + description "Object that have a directionality."; + leaf direction { + default bidirectional; + type enumeration { + enum in { + description + "Applies to flow into provider node"; + } + enum out { + description + "Applies to flow out of provider node"; + } + enum bidirectional { + description + "Applies to flow in both directions"; + } + } + } + } + grouping flow-instance{ + leaf flow-id { + description "A unique ID for the flow instance"; + type nemo-common:flow-instance-id; + mandatory true; + } + leaf flow-name { + description "A user-visible name for the flow instance"; + type nemo-common:flow-instance-name; + mandatory false; + } + leaf flow-type { + type nemo-common:flow-instance-type; + mandatory true; + } + container match { + uses has-direction; + uses match-item-instance; + } + } + +} diff --git a/nemo-api/src/main/yang/nemo-operation.yang b/nemo-api/src/main/yang/nemo-operation.yang new file mode 100644 index 0000000..219b192 --- /dev/null +++ b/nemo-api/src/main/yang/nemo-operation.yang @@ -0,0 +1,207 @@ +/* + * Copyright (c) 2015 Huawei Technologies Co., Ltd. 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 + */ + +module nemo-operation { + + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:nemo:operation"; + prefix "nemo-operation"; + + import nemo-common {prefix nemo-common;} + + revision "2015-06-29" { + description + "Initial revision."; + } + + grouping parameter-definition { + leaf name { + description "A user-visible name for parameter"; + type nemo-common:parameter-name; + mandatory true; + } + leaf type { + description "The type of the parameter"; + default string; + type enumeration { + enum string { + description "A string-valued parameter"; + } + enum int { + description "An integer-valued parameter"; + } + enum range { + description "An integer-range parameter"; + } + } + } + leaf is-required { + description "Specify whether the parameter is required "; + default optional; + type enumeration { + enum required { + description "The parameter is required"; + } + enum optional { + description "The parameter is optional"; + } + } + } + } + + + container action-definitions { + list action-definition { + key "action-name"; + leaf action-name { + description "A name for the action definition"; + type nemo-common:action-definition-name; + mandatory true; + } + list data { + description + "data for the action that can be passed in."; + key "name"; + uses parameter-definition; + } + } + } + grouping action-parameter-instance{ + leaf data-name { + type nemo-common:data-name; + mandatory true; + } + leaf string-value { + type string; + } + leaf int-value { + type int64; + } + container range-value { + leaf min { + type int64; + mandatory true; + } + leaf max { + type int64; + mandatory true; + } + } + } + grouping action-instance{ + description " "; + leaf action-name{ + type nemo-common:action-instance-name; + mandatory true; + } + list data { + key "data-name"; + uses action-parameter-instance; + } + } + + container condition-definitions { + list condition-definition{ + key "condition-name"; + leaf condition-name{ + type nemo-common:condition-definition-name; + mandatory true; + } + list condition-parameter{ + key "name"; + uses parameter-definition; + min-elements 1; + } + } + } + grouping conditon-parameter-instance{ + leaf parameter-name { + type nemo-common:condition-parameter-name; + mandatory true; + } + leaf string-value { + type string; + } + leaf int-value { + type int64; + } + container range-value { + leaf min { + type int64; + mandatory true; + } + leaf max { + type int64; + mandatory true; + } + } + } + grouping condition-instance { + description " "; + leaf condition-name{ + type nemo-common:condition-instance-name; + mandatory true; + } + list condition-parameter{ + key "parameter-name"; + uses conditon-parameter-instance; + min-elements 1; + } + } + + + container constraint-definitions { + list constraint-definition{ + key "constraint-name"; + leaf constraint-name{ + type nemo-common:constraint-definition-name; + mandatory true; + } + list constraint-parameter{ + key "name"; + uses parameter-definition; + min-elements 1; + } + } + } + grouping constraint-parameter-instance{ + leaf parameter-name { + type nemo-common:constraint-parameter-name; + mandatory true; + } + leaf string-value { + type string; + } + leaf int-value { + type int64; + } + container range-value { + leaf min { + type int64; + mandatory true; + } + leaf max { + type int64; + mandatory true; + } + } + } + grouping constraint-instance { + description " "; + leaf constraint-name{ + type nemo-common:constraint-instance-name; + mandatory true; + } + list constraint-parameter{ + key "parameter-name"; + uses constraint-parameter-instance; + min-elements 1; + } + } + +} \ 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 index 0000000..b350c21 --- /dev/null +++ b/nemo-api/src/main/yang/nemo-result.yang @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2015 Huawei Technologies Co., Ltd. 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 + */ + +module nemo-result{ + + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:nemo:result"; + prefix "nemo-result"; + + import nemo-common {prefix nemo-common;} + + revision "2015-06-29" { + description + "Initial revision."; + } + + container expected-definitons{ + + } + + grouping expected-instance { + leaf expected-id { + type nemo-common:expected-instance-id; + mandatory true; + } + leaf expected-name{ + type nemo-common:expected-instance-name; + mandatory false; + } + leaf expected-description { + type nemo-common:description; + } + } + + container avoid-definitons{ + + } + + grouping avoid-instance { + leaf avoid-id { + type nemo-common:avoid-instance-id; + mandatory true; + } + leaf avoid-name{ + type nemo-common:avoid-instance-name; + mandatory false; + } + leaf avoid-description { + type nemo-common:description; + } + } + +} \ No newline at end of file diff --git a/nemo-artifacts/pom.xml b/nemo-artifacts/pom.xml new file mode 100644 index 0000000..a78d80d --- /dev/null +++ b/nemo-artifacts/pom.xml @@ -0,0 +1,56 @@ + + + + 4.0.0 + + org.opendaylight.nemo + nemo-artifacts + 1.0.0-SNAPSHOT + pom + ${project.artifactId} + + + + + ${project.groupId} + nemo-api + ${project.version} + + + ${project.groupId} + nemo-impl + ${project.version} + + + ${project.groupId} + openflow-renderer + ${project.version} + + + ${project.groupId} + nemo-ui + ${project.version} + + + ${project.groupId} + nemo-features + ${project.version} + features + xml + + + + + + scm:git:ssh://git.opendaylight.org:29418/nemo.git + scm:git:ssh://git.opendaylight.org:29418/nemo.git + https://wiki.opendaylight.org/view/NEMO:Main + HEAD + + \ No newline at end of file diff --git a/nemo-features/pom.xml b/nemo-features/pom.xml new file mode 100644 index 0000000..3e7cadc --- /dev/null +++ b/nemo-features/pom.xml @@ -0,0 +1,119 @@ + + + + 4.0.0 + + + org.opendaylight.odlparent + features-parent + 1.6.0-SNAPSHOT + + + + org.opendaylight.nemo + nemo-features + 1.0.0-SNAPSHOT + ${project.artifactId} + + + 3.1.1 + + + + 1.3.0-SNAPSHOT + 0.8.0-SNAPSHOT + 0.3.0-SNAPSHOT + + + + + + org.opendaylight.controller + mdsal-artifacts + ${mdsal.version} + pom + import + + + org.opendaylight.dlux + features-dlux + ${dlux.version} + pom + import + + + + + + + org.opendaylight.yangtools + features-yangtools + ${yangtools.version} + features + xml + runtime + + + org.opendaylight.controller + features-mdsal + features + xml + runtime + + + org.opendaylight.controller + features-restconf + features + xml + runtime + + + org.opendaylight.dlux + features-dlux + ${dlux.version} + features + xml + runtime + + + ${project.groupId} + nemo-api + ${project.version} + + + ${project.groupId} + nemo-impl + ${project.version} + + + ${project.groupId} + openflow-renderer + ${project.version} + + + ${project.groupId} + openflow-renderer + ${project.version} + config + xml + + + ${project.groupId} + nemo-ui + ${project.version} + + + + + scm:git:ssh://git.opendaylight.org:29418/nemo.git + scm:git:ssh://git.opendaylight.org:29418/nemo.git + https://wiki.opendaylight.org/view/NEMO:Main + HEAD + + \ 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 index 0000000..7a0cda5 --- /dev/null +++ b/nemo-features/src/main/features/features.xml @@ -0,0 +1,40 @@ + + + + mvn:org.opendaylight.yangtools/features-yangtools/${yangtools.version}/xml/features + mvn:org.opendaylight.controller/features-mdsal/${mdsal.version}/xml/features + mvn:org.opendaylight.controller/features-restconf/${mdsal.version}/xml/features + mvn:org.opendaylight.dlux/features-dlux/${dlux.version}/xml/features + + odl-yangtools-models + mvn:org.opendaylight.nemo/nemo-api/${project.version} + + + odl-mdsal-broker + odl-nemo-api + mvn:org.opendaylight.nemo/nemo-impl/${project.version} + + + odl-restconf + odl-mdsal-apidocs + odl-mdsal-xsql + odl-nemo-engine + + + odl-nemo-engine + mvn:org.opendaylight.nemo/openflow-renderer/${project.version} + mvn:org.opendaylight.nemo/openflow-renderer/${project.version}/xml/config + + + odl-dlux-core + odl-nemo-engine-rest + mvn:org.opendaylight.nemo/nemo-ui/${project.version} + + \ No newline at end of file diff --git a/nemo-impl/pom.xml b/nemo-impl/pom.xml new file mode 100644 index 0000000..a363555 --- /dev/null +++ b/nemo-impl/pom.xml @@ -0,0 +1,94 @@ + + + + 4.0.0 + + + org.opendaylight.yangtools + binding-parent + 0.8.0-SNAPSHOT + + + + org.opendaylight.nemo + nemo-impl + 1.0.0-SNAPSHOT + bundle + ${project.artifactId} + + + 0.7.2.201409121644 + + + + + ${project.groupId} + nemo-api + ${project.version} + + + junit + junit + + + org.slf4j + slf4j-simple + test + + + org.codehaus.jettison + jettison + + + + + + + + org.jacoco + jacoco-maven-plugin + ${jacoco.version} + + + + + + org.jacoco + jacoco-maven-plugin + + + org.opendaylight.nemo.* + + + + + pre-test + + prepare-agent + + + + post-test + + report + + test + + + + + + + + scm:git:ssh://git.opendaylight.org:29418/nemo.git + scm:git:ssh://git.opendaylight.org:29418/nemo.git + https://wiki.opendaylight.org/view/NEMO:Main + HEAD + + \ 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 index 0000000..e69de29 diff --git a/nemo-impl/src/test/java/README b/nemo-impl/src/test/java/README new file mode 100644 index 0000000..e69de29 diff --git a/nemo-karaf/pom.xml b/nemo-karaf/pom.xml new file mode 100644 index 0000000..7f23a37 --- /dev/null +++ b/nemo-karaf/pom.xml @@ -0,0 +1,95 @@ + + + + 4.0.0 + + + org.opendaylight.controller + karaf-parent + 1.6.0-SNAPSHOT + + + + org.opendaylight.nemo + nemo-karaf + 1.0.0-SNAPSHOT + ${project.artifactId} + + + 3.1.1 + + + + 1.6.0-SNAPSHOT + 1.3.0-SNAPSHOT + 0.3.0-SNAPSHOT + 1.3.0-SNAPSHOT + 0.8.0-SNAPSHOT + 0.10.0-SNAPSHOT + + + + + + ${project.groupId} + nemo-artifacts + ${project.version} + pom + import + + + + + + + org.apache.karaf.features + framework + kar + + + org.opendaylight.controller + features-mdsal + ${feature.mdsal.version} + features + xml + runtime + + + org.opendaylight.controller + features-adsal + features + ${feature.adsal.version} + xml + runtime + + + org.opendaylight.dlux + features-dlux + ${feature.dlux.version} + features + xml + runtime + + + ${project.groupId} + nemo-features + ${project.version} + features + xml + runtime + + + + + scm:git:ssh://git.opendaylight.org:29418/nemo.git + scm:git:ssh://git.opendaylight.org:29418/nemo.git + https://wiki.opendaylight.org/view/NEMO:Main + HEAD + + \ 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 index 0000000..277aa67 --- /dev/null +++ b/nemo-renderers/openflow-renderer/pom.xml @@ -0,0 +1,154 @@ + + + + 4.0.0 + + + org.opendaylight.controller + config-parent + 0.4.0-SNAPSHOT + + + + org.opendaylight.nemo + openflow-renderer + 1.0.0-SNAPSHOT + bundle + ${project.artifactId} + + + 0.7.2.201409121644 + + + + + ${project.groupId} + nemo-api + ${project.version} + + + ${project.groupId} + nemo-impl + ${project.version} + + + junit + junit + + + org.slf4j + slf4j-simple + test + + + org.codehaus.jettison + jettison + + + + + + + + org.jacoco + jacoco-maven-plugin + ${jacoco.version} + + + + + + org.opendaylight.yangtools + yang-maven-plugin + + + + generate-sources + + + src/main/yang + + + + org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl + + + ${salGeneratorPath} + + + + true + + + + + + org.opendaylight.yangtools + maven-sal-api-gen-plugin + ${yangtools.version} + jar + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-artifacts + + attach-artifact + + package + + + + ${project.build.directory}/classes/etc/opendaylight/karaf/config.xml + xml + config + + + + + + + + org.jacoco + jacoco-maven-plugin + + + org.opendaylight.nemo.* + + + + + pre-test + + prepare-agent + + + + post-test + + report + + test + + + + + + + + scm:git:ssh://git.opendaylight.org:29418/nemo.git + scm:git:ssh://git.opendaylight.org:29418/nemo.git + https://wiki.opendaylight.org/view/NEMO:Main + HEAD + + \ 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 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 index 0000000..1ed3756 --- /dev/null +++ b/nemo-renderers/openflow-renderer/src/main/resources/etc/opendaylight/karaf/config.xml @@ -0,0 +1,33 @@ + + + + + + + + prefix:openflow-renderer-impl + openflow-renderer-impl + + binding:binding-async-data-broker + binding-data-broker + + + binding:binding-rpc-registry + binding-rpc-broker + + + binding:binding-notification-service + binding-notification-broker + + + + + + + + \ 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 index 0000000..dc8b4d9 --- /dev/null +++ b/nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer-impl.yang @@ -0,0 +1,62 @@ +/* + * 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 + */ + +module openflow-renderer-impl { + yang-version 1; + + namespace "urn:opendaylight:params:xml:ns:yang:nemo:openflow:renderer:impl"; + prefix "openflow-renderer-impl"; + + import config { prefix config; revision-date 2013-04-05; } + import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; } + + description + "This module contains the base YANG definitions for + NEMO Openflow renderer implementation."; + + revision "2015-07-01" { + description + "Initial revision."; + } + + identity openflow-renderer-impl { + base config:module-type; + config:java-name-prefix OpenflowRenderer; + } + + augment "/config:modules/config:module/config:configuration" { + case openflow-renderer-impl { + when "/config:modules/config:module/config:type = 'openflow-renderer-impl'"; + + container data-broker { + uses config:service-ref { + refine type { + mandatory false; + config:required-identity mdsal:binding-async-data-broker; + } + } + } + container rpc-registry { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity mdsal:binding-rpc-registry; + } + } + } + container notification-service { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity mdsal:binding-notification-service; + } + } + } + } + } +} 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 index 0000000..499d2a9 --- /dev/null +++ b/nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer.yang @@ -0,0 +1,22 @@ +/* + * 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 + */ + +module openflow-renderer { + yang-version 1; + + namespace "urn:opendaylight:params:xml:ns:yang:nemo:openflow:renderer"; + prefix "openflow-renderer"; + + description + "This module defines the NEMO Openflow renderer model."; + + revision "2015-07-01" { + description + "Initial revision."; + } +} diff --git a/nemo-renderers/openflow-renderer/src/test/java/README b/nemo-renderers/openflow-renderer/src/test/java/README new file mode 100644 index 0000000..e69de29 diff --git a/nemo-renderers/pom.xml b/nemo-renderers/pom.xml new file mode 100644 index 0000000..1024502 --- /dev/null +++ b/nemo-renderers/pom.xml @@ -0,0 +1,34 @@ + + + + 4.0.0 + + + org.opendaylight.nemo + nemo.project + 1.0.0-SNAPSHOT + + + org.opendaylight.nemo + nemo-renderers + 1.0.0-SNAPSHOT + pom + ${project.artifactId} + + + openflow-renderer + + + + scm:git:ssh://git.opendaylight.org:29418/nemo.git + scm:git:ssh://git.opendaylight.org:29418/nemo.git + https://wiki.opendaylight.org/view/NEMO:Main + HEAD + + \ No newline at end of file diff --git a/nemo-ui/pom.xml b/nemo-ui/pom.xml new file mode 100644 index 0000000..b77c89c --- /dev/null +++ b/nemo-ui/pom.xml @@ -0,0 +1,94 @@ + + + + 4.0.0 + + + org.opendaylight.yangtools + binding-parent + 0.8.0-SNAPSHOT + + + + org.opendaylight.nemo + nemo-ui + 1.0.0-SNAPSHOT + bundle + ${project.artifactId} + + + 0.3.0-SNAPSHOT + + + + + org.opendaylight.dlux + loader + ${dlux.version} + + + + + + + target/generated-resources + + + src/main/resources + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.6 + + + unpack-loader-resources + + unpack-dependencies + + generate-resources + + ${project.build.directory}/generated-resources + org.opendaylight.nemo + nemo-ui + META-INF\/** + true + false + + + + + + org.apache.felix + maven-bundle-plugin + true + + + + org.osgi.service.http, + org.osgi.framework;version="1.0.0", + org.opendaylight.dlux.loader, + org.slf4j + + + + + + + + + + scm:git:ssh://git.opendaylight.org:29418/nemo.git + scm:git:ssh://git.opendaylight.org:29418/nemo.git + https://wiki.opendaylight.org/view/NEMO:Main + HEAD + + \ 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 index 0000000..e69de29 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..5403f36 --- /dev/null +++ b/pom.xml @@ -0,0 +1,65 @@ + + + + 4.0.0 + + + org.opendaylight.controller + releasepom + 0.3.0-SNAPSHOT + + + + org.opendaylight.nemo + nemo.project + 1.0.0-SNAPSHOT + pom + nemo + OpenDaylight NEMO + + + 3.1.1 + + + + nemo-artifacts + nemo-api + nemo-impl + nemo-ui + nemo-features + nemo-karaf + nemo-renderers + + + https://wiki.opendaylight.org/view/NEMO:Main + + + + Eclipse Public License v1.0 + http://www.eclipse.org/legal/epl-v10.html + repo + + + + + + Zhigang Ji + jizhigang@huawei.com + Huawei, Inc + http://www.huawei.com + + + + + scm:git:ssh://git.opendaylight.org:29418/nemo.git + scm:git:ssh://git.opendaylight.org:29418/nemo.git + https://wiki.opendaylight.org/view/NEMO:Main + HEAD + + \ No newline at end of file -- 2.36.6