1 diff --git a/nemo-api/src/main/yang/nemo-common.yang b/nemo-api/src/main/yang/nemo-common.yang
2 index cbccc32..072745f 100644
3 --- a/nemo-api/src/main/yang/nemo-common.yang
4 +++ b/nemo-api/src/main/yang/nemo-common.yang
7 - * Copyright (c) 2015 Huawei Technologies Co., Ltd. and others. All rights reserved.
\r
8 + * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
\r
10 * This program and the accompanying materials are made available under the
\r
11 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
12 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
15 -module nemo-common{
\r
17 - namespace "urn:opendaylight:params:xml:ns:yang:nemo:common";
\r
18 - prefix "nemo-common";
\r
20 - revision "2015-06-29" {
\r
21 +module nemo-common {
\r
24 + namespace "urn:opendaylight:params:xml:ns:yang:nemo:common";
\r
25 + prefix "nemo-common";
\r
28 + "Common types and definitions for NEMO models";
\r
30 + revision "2015-10-10" {
\r
32 "Initial revision.";
\r
35 - /**********************
\r
37 - **********************/
\r
38 - typedef description {
\r
39 - description "A human-readable description for a object.";
\r
41 + // *********************
\r
43 + // *********************
\r
44 + typedef description {
\r
46 + "A human-readable description for a object.";
\r
56 "A generic string name type. Must start with a letter";
\r
58 @@ -34,8 +39,8 @@ module nemo-common{
63 - // UUID type from ietf-yang-types@2013-07-15
\r
65 + // UUID type from ietf-yang-types@2013-07-15
\r
68 pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
\r
69 @@ -43,8 +48,8 @@ module nemo-common{
72 "A Universally Unique IDentifier in the string representation
\r
73 - defined in RFC 4122. The canonical representation uses
\r
74 - lowercase characters.
\r
75 + defined in RFC 4122. The canonical representation uses
\r
76 + lower case characters.
\r
78 The following is an example of a UUID in string
\r
79 representation: f81d4fae-7dec-11d0-a765-00a0c91e6bf6";
\r
80 @@ -54,265 +59,179 @@ module nemo-common{
85 + "A globally unique identifier.";
\r
87 - description "A globally unique identifier";
\r
90 - /*********************
\r
92 - *********************/
\r
93 - typedef object-id {
\r
95 + // *********************
\r
97 + // *********************
\r
98 + typedef object-id {
\r
100 + "A unique ID for a parameterized object.";
\r
102 - description "A unique ID for a parameterized object";
\r
105 - typedef node-definition-id {
\r
107 - description "A unique ID for a node definition.";
\r
109 - typedef node-instance-id {
\r
111 - description "A unique ID for a node instance.";
\r
114 - typedef connection-definition-id {
\r
116 + typedef node-id {
\r
118 + "A unique ID for a node.";
\r
120 - description "A unique ID for a connection definition.";
\r
122 - typedef connection-instance-id {
\r
124 - description "A unique ID for a connection instance.";
\r
127 - typedef flow-definition-id {
\r
129 + typedef connection-id {
\r
131 + "A unique ID for a connection.";
\r
133 - description "A unique ID for a flow definition.";
\r
135 - typedef flow-instance-id {
\r
137 + typedef flow-id {
\r
139 + "A unique ID for a flow.";
\r
141 - description "A unique ID for a flow instance.";
\r
144 - typedef expected-definition-id {
\r
146 + typedef intent-id {
\r
148 + "A unique ID for an intent.";
\r
150 - description "A unique ID for an expected definition.";
\r
152 - typedef expected-instance-id {
\r
154 + typedef user-id {
\r
156 + "A unique ID for a user.";
\r
158 - description "A unique ID for an expected instance.";
\r
161 - typedef avoid-definition-id {
\r
163 + typedef operation-id {
\r
165 + "A unique ID for an operation.";
\r
167 - description "A unique ID for an avoid definition.";
\r
169 - typedef avoid-instance-id {
\r
171 - description "A unique ID for an avoid instance.";
\r
174 - typedef context-id {
\r
176 - description "A unique ID for a context.";
\r
179 - typedef intent-id {
\r
181 + typedef condition-segment-id {
\r
183 + "A unique ID for a segment of the condition in an operation.";
\r
185 - description "A unique ID for an intent.";
\r
188 - typedef user-id {
\r
190 + typedef query-condition-id {
\r
192 + "A unique ID for a condition of the advanced query.";
\r
194 - description "A unique ID for a user.";
\r
199 - /*********************
\r
201 - *********************/
\r
202 - typedef object-name {
\r
205 + // *********************
\r
207 + // *********************
\r
208 + typedef object-name {
\r
210 + "A name for a parameterized object";
\r
212 - description "A name for a parameterized object";
\r
215 - typedef node-instance-name {
\r
217 + typedef node-name {
\r
219 + "A name for a node instance.";
\r
221 - description "A name for a node instance.";
\r
224 - typedef connection-instance-name {
\r
227 + typedef connection-name {
\r
229 + "A name for a connection instance.";
\r
231 - description "A name for a connection instance.";
\r
234 - typedef flow-instance-name {
\r
237 + typedef flow-name {
\r
239 + "A name for a flow instance.";
\r
241 - description "A name for a flow instance.";
\r
244 - typedef node-property-name {
\r
246 - description "A name for a node property.";
\r
249 - typedef connection-property-name {
\r
252 + typedef match-item-name {
\r
254 + "A name for a match item.";
\r
256 - description "A name for a connection property.";
\r
260 - typedef match-item-name {
\r
261 + typedef property-name {
\r
263 + "A name for a property.";
\r
265 - description "A name for a flow match item.";
\r
268 - typedef property-name {
\r
270 + typedef parameter-name {
\r
272 + "A name for a parameter.";
\r
274 - description "A name for a property.";
\r
277 - typedef parameter-name {
\r
279 + typedef action-name {
\r
281 + "A name for an action.";
\r
283 - description "A name for a parameter.";
\r
286 - typedef action-definition-name {
\r
288 + typedef condition-parameter-name {
\r
290 + "A name for a parameter of condition.";
\r
292 - description "A name for an action definition.";
\r
294 - typedef action-instance-name {
\r
297 + typedef user-name {
\r
299 + "A name for a user.";
\r
301 - description "A name for an action instance.";
\r
303 - typedef condition-definition-name {
\r
306 + typedef user-password {
\r
308 + "A password for a user.";
\r
310 - description "A name for a condition definition.";
\r
312 - typedef condition-instance-name {
\r
314 - description "A name for a condition instance.";
\r
316 - typedef condition-parameter-name {
\r
318 - description "A name for a condition parameter.";
\r
320 - typedef constraint-definition-name {
\r
323 + typedef operation-name {
\r
325 + "A name for an operation.";
\r
327 - description "A name for a constraint definition.";
\r
329 - typedef constraint-instance-name {
\r
331 - description "A name for a constraint instance.";
\r
333 - typedef constraint-parameter-name {
\r
335 - description "A name for a constraint parameter.";
\r
339 - typedef data-name {
\r
341 - description "A name for an action data.";
\r
344 - typedef context-name {
\r
346 - description "A name for an context";
\r
349 - typedef intent-name {
\r
352 + typedef query-condition-name {
\r
354 + "A name for a query with condition.";
\r
356 - description "A name for an intent.";
\r
358 - typedef user-name {
\r
360 + typedef user-role-name {
\r
362 + "A role name for a user.";
\r
364 - description "A name for a user.";
\r
366 - typedef expected-instance-name {
\r
368 + typedef user-role-description {
\r
370 + "It describes the role characteristic and responsibility range.";
\r
374 + // *********************
\r
376 + // *********************
\r
377 + typedef node-type {
\r
379 + "The type for a node.";
\r
381 - description "A name for an expected instance.";
\r
383 - typedef avoid-instance-name {
\r
385 + typedef connection-type {
\r
387 + "The type for a connection.";
\r
389 - description "A name for an avoid instance.";
\r
394 - /*********************
\r
396 - *********************/
\r
397 - typedef node-definition-type {
\r
399 - description "A type for a node.";
\r
401 - typedef connection-definition-type {
\r
403 - description "A type for a connection.";
\r
405 - typedef flow-definition-type {
\r
407 - description "A type for a flow.";
\r
409 - typedef node-instance-type {
\r
411 - description "A type for a node instance.";
\r
413 - typedef connection-instance-type {
\r
415 - description "A type for a connection instance.";
\r
417 - typedef flow-instance-type {
\r
419 - description "A type for a flow instance.";
\r
423 + typedef flow-type {
\r
425 + "The type for a flow.";
\r
477 \ No newline at end of file
478 diff --git a/nemo-api/src/main/yang/nemo-intent.yang b/nemo-api/src/main/yang/nemo-intent.yang
479 index 21760a0..91876aa 100644
480 --- a/nemo-api/src/main/yang/nemo-intent.yang
481 +++ b/nemo-api/src/main/yang/nemo-intent.yang
484 - * Copyright (c) 2015 Huawei Technologies Co., Ltd. and others. All rights reserved.
\r
485 + * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
\r
487 * This program and the accompanying materials are made available under the
\r
488 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
489 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
493 module nemo-intent {
\r
495 - namespace "urn:opendaylight:params:xml:ns:yang:nemo:intent";
\r
496 - prefix "nemo-intent";
\r
498 - import nemo-common {prefix nemo-common;}
\r
499 - import nemo-object {prefix nemo-object;}
\r
500 - import nemo-operation {prefix nemo-operation;}
\r
501 - import nemo-result {prefix nemo-result;}
\r
503 - revision "2015-06-29" {
\r
506 + namespace "urn:opendaylight:params:xml:ns:yang:nemo:intent";
\r
507 + prefix "nemo-intent";
\r
509 + import nemo-common {prefix nemo-common;}
\r
510 + import nemo-object {prefix nemo-object;}
\r
511 + import nemo-operation {prefix nemo-operation;}
\r
512 + import nemo-user {prefix nemo-user;}
\r
514 + revision "2015-10-10" {
\r
516 "Initial revision.";
\r
519 - grouping intent-instance {
\r
522 - description "A unique ID for the intent";
\r
523 - type nemo-common:intent-id;
\r
526 - leaf intent-name {
\r
527 - description "A user-visible name for the intent";
\r
528 - type nemo-common:intent-name;
\r
530 - container objects {
\r
534 - uses nemo-object:node-instance;
\r
536 - list connection {
\r
537 - key "connection-id";
\r
538 - uses nemo-object:connection-instance;
\r
542 - uses nemo-object:flow-instance;
\r
546 - container operation {
\r
547 - leaf apply-on-object {
\r
548 - type nemo-common:object-id;
\r
555 - uses nemo-operation:condition-instance;
\r
556 - uses nemo-operation:action-instance;
\r
557 - uses nemo-operation:constraint-instance;
\r
560 - container result{
\r
561 - leaf result-to-object {
\r
562 - type nemo-common:object-id;
\r
569 - choice result-mode {
\r
571 - case expected-case {
\r
572 - uses nemo-result:expected-instance;
\r
575 - uses nemo-result:avoid-instance;
\r
579 - container contexts{
\r
581 - key "context-id";
\r
582 - leaf context-id {
\r
583 - type nemo-common:context-id;
\r
586 - leaf context-name{
\r
587 - type nemo-common:context-name;
\r
594 - container users {
\r
595 - description "The list of all known users";
\r
599 + grouping user-intent {
\r
601 + "User intent refers to a purpose in getting an ultimate result
\r
602 + or performing some specific operation on some objects.";
\r
604 + container objects {
\r
606 + "The element could be operated and managed by users.
\r
607 + It inludes resources to construct users' virtual network,
\r
608 + and the services in this network.In NEMO project, it is
\r
609 + abstracted into node, connection and flow";
\r
613 + uses nemo-object:node-instance;
\r
616 + list connection {
\r
617 + key "connection-id";
\r
618 + uses nemo-object:connection-instance;
\r
623 + uses nemo-object:flow-instance;
\r
627 + container operations {
\r
629 + "The operation is to dynamically adjust the behavior of network,
\r
630 + and it is applied on objects, that is, node, connection and flow";
\r
633 + key "operation-id";
\r
634 + uses nemo-operation:operation-instance;
\r
638 + container results {
\r
643 + container users {
\r
645 + "The list of all known users";
\r
649 + "A user is an administrative domain which is
\r
650 + logically separated from other users, and each
\r
651 + intent is specified by a particular user.";
\r
655 - description "A unique ID for the user";
\r
656 - type nemo-common:user-id;
\r
660 - description "A user-visible name for the user";
\r
661 - type nemo-common:user-name;
\r
666 - uses intent-instance;
\r
672 - rpc register-node-instance {
\r
675 - uses nemo-object:node-instance;
\r
679 - rpc unregister-node-instance {
\r
682 - uses nemo-object:node-instance;
\r
687 \ No newline at end of file
688 + uses nemo-user:user-instance;
\r
689 + uses user-intent;
\r
693 + container query-condition-definitions {
\r
695 + "Contains the definitions for all advanced query, which means
\r
696 + they are the query with conditions supported by the NEMO engine.
\r
697 + User will fetch all results which meet the condition.";
\r
699 + list query-condition-definition {
\r
701 + "Define the query with condition. For example, user may
\r
702 + intent to query all connection's name whose utilization is
\r
703 + beyond 80%. That is a query with condition.";
\r
705 + key "query-condition-name query-intent-type";
\r
706 + leaf query-condition-name {
\r
708 + "A user-visible name for the query condition definition.
\r
709 + The query condition name is usually to specify the
\r
710 + attribute or property of some kind of intent.
\r
711 + For the above example, the query-condition-name is utility.";
\r
712 + type nemo-common:query-condition-name;
\r
716 + leaf query-intent-type {
\r
718 + "The target for the query, and its attributes will be checked out
\r
719 + if meet the condition. In the above example, connection is the
\r
720 + target. So, connection will be the query-intent-type here.";
\r
721 + type enumeration {
\r
730 + leaf query-condition-value-type {
\r
732 + "The type of the target value for the query condition.
\r
733 + For the above example, the target-value is 80(%),
\r
734 + so the query-condition-value-type will be int.";
\r
736 + type enumeration {
\r
739 + "A string-valued target value.";
\r
743 + "An integer-valued target value.";
\r
747 + "An integer-range target value.";
\r
752 + container query-condition-match-patterns {
\r
754 + "The relationship between the value of query-condition-name
\r
755 + and query-condition-target-value. If an intent's attribute
\r
756 + or property specified by the query condition name matches
\r
757 + to the target value by the match pattern, this intent meets
\r
758 + the condition. For the above example, the condition's
\r
759 + query-condition-match-patterns could be less-than, not-less-than,
\r
760 + equal, not-equal, greater-than, not-greater-than, between.";
\r
762 + leaf-list query-condition-match-pattern {
\r
763 + type enumeration {
\r
765 + enum not-less-than;
\r
768 + enum greater-than;
\r
769 + enum not-greater-than;
\r
777 + grouping common-rpc-result {
\r
779 + "Common return result for all defined RPCs.";
\r
781 + leaf result-code {
\r
783 + "Result code which is convenient for processing in a program.";
\r
784 + type enumeration {
\r
787 + "The invoked RPC was executed successfully";
\r
791 + "There's an error while executing the RPC";
\r
798 + "A human-readable message for an error or exception";
\r
803 + grouping query-condition-instance {
\r
805 + "A query condition instance generated according to
\r
806 + a specified query condition definition.";
\r
808 + leaf query-condition-id {
\r
810 + "A unique ID for a query condition instance.";
\r
811 + type nemo-common:query-condition-id;
\r
815 + leaf query-condition-name {
\r
817 + "The name of the query condition definition.";
\r
818 + type nemo-common:query-condition-name;
\r
822 + leaf query-intent-type {
\r
824 + "The type of the intents that the user wants to query from through
\r
825 + the condition instance.";
\r
826 + type enumeration {
\r
835 + leaf query-condition-match-pattern {
\r
837 + "The match pattern the condition instance will use.";
\r
838 + type enumeration {
\r
840 + enum not-less-than;
\r
843 + enum greater-than;
\r
844 + enum not-greater-than;
\r
849 + container query-condition-target-value {
\r
851 + "The target value used to compare with the attribute
\r
852 + or property of the intents.";
\r
854 + leaf string-value {
\r
862 + container range-value {
\r
876 + rpc register-user {
\r
878 + "Register a user to the user repository.";
\r
881 + uses nemo-user:user-instance;
\r
885 + uses common-rpc-result;
\r
889 + rpc begin-transaction {
\r
891 + "Begin a transaction for the user";
\r
894 + uses nemo-user:user-instance;
\r
898 + uses common-rpc-result;
\r
902 + rpc end-transaction {
\r
904 + "Commit the user's current transaction";
\r
907 + uses nemo-user:user-instance;
\r
911 + uses common-rpc-result;
\r
915 + rpc language-style-nemo-request {
\r
917 + "Create, update or delete an intent of a user through an NEMO statement";
\r
920 + uses nemo-user:user-instance;
\r
922 + leaf nemo-statement {
\r
928 + uses common-rpc-result;
\r
932 + rpc structure-style-nemo-update {
\r
934 + "Create or update all or a part of the user's intents,
\r
935 + which are described as json or xml format.";
\r
938 + uses nemo-user:user-instance;
\r
939 + uses user-intent;
\r
943 + uses common-rpc-result;
\r
947 + rpc structure-style-nemo-delete {
\r
949 + "Delete some intents of a user from the user repository";
\r
952 + uses nemo-user:user-instance;
\r
954 + container objects {
\r
956 + type nemo-common:node-id;
\r
959 + leaf-list connection {
\r
960 + type nemo-common:connection-id;
\r
964 + type nemo-common:flow-id;
\r
968 + container operations {
\r
969 + leaf-list operation {
\r
970 + type nemo-common:operation-id;
\r
974 + container results {
\r
980 + uses common-rpc-result;
\r
984 + rpc advanced-nemo-query {
\r
986 + "Query some intents of a user from the user repository
\r
987 + according to several advanced query conditions.";
\r
990 + uses nemo-user:user-instance;
\r
992 + list query-condition {
\r
993 + key "query-condition-id";
\r
994 + uses query-condition-instance;
\r
999 + uses common-rpc-result;
\r
1000 + uses user-intent;
\r
1004 diff --git a/nemo-api/src/main/yang/nemo-object.yang b/nemo-api/src/main/yang/nemo-object.yang
1005 index 30500fd..347406d 100644
1006 --- a/nemo-api/src/main/yang/nemo-object.yang
1007 +++ b/nemo-api/src/main/yang/nemo-object.yang
1010 - * Copyright (c) 2015 Huawei Technologies Co., Ltd. and others. All rights reserved.
\r
1011 + * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
\r
1013 * This program and the accompanying materials are made available under the
\r
1014 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
1015 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
1018 -module nemo-object{
\r
1019 - yang-version 1;
\r
1020 - namespace "urn:opendaylight:params:xml:ns:yang:nemo:object";
\r
1021 - prefix "nemo-object";
\r
1023 - import nemo-common {prefix nemo-common;}
\r
1025 - revision "2015-06-29" {
\r
1026 +module nemo-object {
\r
1029 + namespace "urn:opendaylight:params:xml:ns:yang:nemo:object";
\r
1030 + prefix "nemo-object";
\r
1032 + import nemo-common {prefix nemo-common;}
\r
1034 + revision "2015-10-10" {
\r
1036 "Initial revision.";
\r
1039 - grouping property-definition {
\r
1044 - description "A user-visible name for the property";
\r
1046 + grouping property-definitions {
\r
1047 + list property-definition {
\r
1049 + "The property definitions for the type of node or connection.";
\r
1051 + key "property-name";
\r
1052 + leaf property-name {
\r
1054 + "A user-visible and unique name for the property.";
\r
1055 type nemo-common:property-name;
\r
1058 - leaf value-type {
\r
1059 - description "The type of the property";
\r
1061 + leaf property-value-type {
\r
1063 + "The type of the property value.";
\r
1065 type enumeration {
\r
1067 - description "A string-valued property";
\r
1069 + "An string-valued property.";
\r
1072 - description "An integer-valued property";
\r
1074 + "An integer-valued property.";
\r
1077 - description "An integer-range property";
\r
1079 + "An integer-range property.";
\r
1084 leaf is-required {
\r
1085 - description "Specify whether the property is
\r
1086 - required for object.";
\r
1088 + "Specify whether the property is required for the object.";
\r
1090 type enumeration {
\r
1092 - description "The property is required";
\r
1094 + "The property is required";
\r
1097 - description "The property is optional";
\r
1099 + "The property is optional";
\r
1105 - container node-definitions{
\r
1106 - list node-definition{
\r
1110 - description "A unique ID for a kind of node definition";
\r
1111 - type nemo-common:node-definition-id;
\r
1115 - description "A user-readable description";
\r
1116 - type nemo-common:node-definition-type;
\r
1117 - mandatory true;
\r
1119 - uses property-definition;
\r
1122 - container connection-definitions{
\r
1123 - list connection-definition{
\r
1126 - description "A unique ID for a kind of connection definition";
\r
1127 - type nemo-common:connection-definition-id;
\r
1130 - leaf connection-type{
\r
1131 - description "A user-readable description";
\r
1132 - type nemo-common:connection-definition-type;
\r
1133 - mandatory true;
\r
1135 - uses property-definition;
\r
1140 - grouping match-item-definition{
\r
1142 - list match-item {
\r
1146 - description "A user-visible name for the match-item";
\r
1148 + leaf is-read-only {
\r
1150 + "Specify whether the property is read-only for object.";
\r
1151 + default write-read;
\r
1152 + type enumeration {
\r
1153 + enum write-read {
\r
1155 + "The property can be read and written.";
\r
1157 + enum read-only {
\r
1159 + "The property is read-only.";
\r
1166 + container node-definitions {
\r
1167 + list node-definition {
\r
1169 + "Define new node model/type which can be used in other places,
\r
1170 + and include node type name and its property.";
\r
1172 + key "node-type";
\r
1173 + leaf node-type {
\r
1175 + "A user-visible and unique identifier for the node type.";
\r
1176 + type nemo-common:node-type;
\r
1180 + uses property-definitions;
\r
1184 + container connection-definitions {
\r
1185 + list connection-definition {
\r
1187 + "Define new connection model/type which can be used in other places,
\r
1188 + and include connection type name and its property.";
\r
1190 + key "connection-type";
\r
1191 + leaf connection-type {
\r
1193 + "A user-visible and unique identifier for the connection type.";
\r
1194 + type nemo-common:connection-type;
\r
1198 + uses property-definitions;
\r
1202 + container match-item-definitions {
\r
1203 + list match-item-definition {
\r
1205 + "Define the match item which uses to match the flow.";
\r
1207 + key "match-item-name";
\r
1208 + leaf match-item-name {
\r
1210 + "A user-visible and unique name for the match item.";
\r
1211 type nemo-common:match-item-name;
\r
1214 - leaf value-type {
\r
1215 - description "The type of the match item";
\r
1217 + leaf match-item-value-type {
\r
1219 + "The value type of the match item.";
\r
1221 type enumeration {
\r
1223 - description "A string-valued match item";
\r
1225 + "A string-valued match item.";
\r
1228 - description "An integer-valued match item";
\r
1230 + "An integer-valued match item.";
\r
1233 - description "An integer-range match item";
\r
1235 + "An integer-range match item.";
\r
1239 - leaf is-required {
\r
1240 - description "Specify whether the match item is required
\r
1242 - default optional;
\r
1243 - type enumeration {
\r
1245 - description "The match item is required";
\r
1248 - description "The match item is optional";
\r
1253 + container flow-property-definitions {
\r
1255 + "Contains the property definitions for the flow.";
\r
1257 + uses property-definitions;
\r
1260 + grouping property-instance {
\r
1262 + "The property instance and its associated metadata.";
\r
1264 + leaf property-name {
\r
1266 + "The name for the property which can be seen as a unique
\r
1267 + identifier of the property.";
\r
1268 + type nemo-common:property-name;
\r
1272 + container property-values {
\r
1274 + "The value list of the property.";
\r
1276 + list string-value {
\r
1277 + key "value order";
\r
1288 - container flow-definitions{
\r
1289 - list flow-definition{
\r
1292 - description "A unique ID for a kind of flow definition";
\r
1293 - type nemo-common:flow-definition-id;
\r
1297 - description "A user-readable description";
\r
1298 - type nemo-common:flow-definition-type;
\r
1299 - mandatory true;
\r
1301 - uses match-item-definition;
\r
1305 - grouping node-property-instance{
\r
1309 - type nemo-common:node-property-name;
\r
1312 - leaf string-value {
\r
1315 - leaf int-value {
\r
1318 - container range-value {
\r
1321 + list int-value {
\r
1322 + key "value order";
\r
1337 - grouping node-instance{
\r
1340 - description "A unique ID for the node instance";
\r
1341 - type nemo-common:node-instance-id;
\r
1344 - leaf node-name {
\r
1346 - "A user-visible name for the node definition";
\r
1347 - type nemo-common:node-instance-name;
\r
1349 - leaf node-type {
\r
1350 - type nemo-common:node-instance-type;
\r
1351 - mandatory true;
\r
1353 - container subnodes{
\r
1354 - leaf-list subnode-id{
\r
1355 - type nemo-common:node-instance-id;
\r
1358 - container property{
\r
1359 - uses node-property-instance;
\r
1363 - grouping connection-property-instance{
\r
1367 - type nemo-common:connection-property-name;
\r
1370 - leaf string-value {
\r
1373 - leaf int-value {
\r
1377 container range-value {
\r
1390 - grouping connection-instance {
\r
1392 - leaf connection-id {
\r
1393 - description "A unique ID for the connection instance";
\r
1394 - type nemo-common:connection-instance-id;
\r
1397 - leaf connection-name {
\r
1398 - description "A user-visible name for the connection instance";
\r
1399 - type nemo-common:connection-instance-name;
\r
1400 - mandatory false;
\r
1402 - leaf connection-type {
\r
1403 - type nemo-common:connection-instance-type;
\r
1404 - mandatory true;
\r
1406 - container endnodes{
\r
1410 - type nemo-common:node-instance-id;
\r
1414 - list the-other-end{
\r
1417 - type nemo-common:node-instance-id;
\r
1419 - min-elements 1;
\r
1422 - container property{
\r
1423 - uses connection-property-instance;
\r
1427 - grouping match-item-instance{
\r
1428 - list match-item {
\r
1436 + grouping node-instance {
\r
1438 + "It represents the node instance and its metadata.
\r
1439 + A node represents the functions a network node may provide in a
\r
1440 + network such as network services,or a group of network elements.";
\r
1444 + "A unique ID for a node instance";
\r
1445 + type nemo-common:node-id;
\r
1449 + leaf node-name {
\r
1451 + "A user-visible and unique name for a node instance.";
\r
1452 + type nemo-common:node-name;
\r
1456 + leaf node-type {
\r
1458 + "A user-visible and unique type identifier for a node instance.";
\r
1459 + type nemo-common:node-type;
\r
1465 + "Represents the sub-nodes which have been included
\r
1466 + by the node instance logically.";
\r
1471 + "A unique ID for a node instance.";
\r
1472 + type nemo-common:node-id;
\r
1477 + "Specify the order of the node in a sequence node list.";
\r
1484 + "The property list of a node instance.";
\r
1486 + key "property-name";
\r
1487 + uses property-instance;
\r
1491 + grouping connection-instance {
\r
1493 + "It represents the connection instance and its metadata.
\r
1494 + The Connection describes the resource between node entities.
\r
1495 + This connection is not limited to any physical link, but just
\r
1496 + expresses the communication capacity between nodes.";
\r
1498 + leaf connection-id {
\r
1500 + "A unique ID for a connection instance.";
\r
1501 + type nemo-common:connection-id;
\r
1505 + leaf connection-name {
\r
1507 + "A user-visible and unique name for a connection instance.";
\r
1508 + type nemo-common:connection-name;
\r
1512 + leaf connection-type {
\r
1514 + "A user-visible and unique type identifier for a connection instance.";
\r
1515 + type nemo-common:connection-type;
\r
1521 + "Represents the nodes which will be connected by connection.
\r
1522 + At least two nodes in the list.";
\r
1527 + "A unique ID for a node instance.";
\r
1528 + type nemo-common:node-id;
\r
1533 + "Specify the order of the node in a sequence node list";
\r
1542 + "The property list of a connection instance.";
\r
1544 + key "property-name";
\r
1545 + uses property-instance;
\r
1549 + grouping match-item-instance {
\r
1551 + "Represents the match item and its metadata.";
\r
1553 + leaf match-item-name {
\r
1555 + "A name for a match item.";
\r
1556 + type nemo-common:match-item-name;
\r
1560 + container match-item-value {
\r
1562 + "The value of a match item.";
\r
1564 leaf string-value {
\r
1572 container range-value {
\r
1585 - grouping has-direction {
\r
1586 - description "Object that have a directionality.";
\r
1587 - leaf direction {
\r
1588 - default bidirectional;
\r
1589 - type enumeration {
\r
1592 - "Applies to flow into provider node";
\r
1596 - "Applies to flow out of provider node";
\r
1598 - enum bidirectional {
\r
1600 - "Applies to flow in both directions";
\r
1605 - grouping flow-instance{
\r
1607 - description "A unique ID for the flow instance";
\r
1608 - type nemo-common:flow-instance-id;
\r
1611 - leaf flow-name {
\r
1612 - description "A user-visible name for the flow instance";
\r
1613 - type nemo-common:flow-instance-name;
\r
1614 - mandatory false;
\r
1616 - leaf flow-type {
\r
1617 - type nemo-common:flow-instance-type;
\r
1618 - mandatory true;
\r
1620 - container match {
\r
1621 - uses has-direction;
\r
1622 - uses match-item-instance;
\r
1628 + grouping flow-instance {
\r
1630 + "Represents the flow instance and its metadata.
\r
1631 + The flow refers to the traffic in network which describes
\r
1632 + data packets have some certain characters.";
\r
1636 + "A unique ID for a flow instance.";
\r
1637 + type nemo-common:flow-id;
\r
1641 + leaf flow-name {
\r
1643 + "A user-visible and unique name for a flow instance.";
\r
1644 + type nemo-common:flow-name;
\r
1648 + list match-item {
\r
1650 + "The match item list of a flow instance.";
\r
1652 + key "match-item-name";
\r
1653 + uses match-item-instance;
\r
1658 + "The property list of a flow instance.";
\r
1660 + key "property-name";
\r
1661 + uses property-instance;
\r
1665 diff --git a/nemo-api/src/main/yang/nemo-operation.yang b/nemo-api/src/main/yang/nemo-operation.yang
1666 index 219b192..8b4083a 100644
1667 --- a/nemo-api/src/main/yang/nemo-operation.yang
1668 +++ b/nemo-api/src/main/yang/nemo-operation.yang
1671 - * Copyright (c) 2015 Huawei Technologies Co., Ltd. and others. All rights reserved.
\r
1672 + * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
\r
1674 * This program and the accompanying materials are made available under the
\r
1675 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
1679 module nemo-operation {
\r
1682 - yang-version 1;
\r
1683 - namespace "urn:opendaylight:params:xml:ns:yang:nemo:operation";
\r
1684 - prefix "nemo-operation";
\r
1686 - import nemo-common {prefix nemo-common;}
\r
1688 - revision "2015-06-29" {
\r
1689 + namespace "urn:opendaylight:params:xml:ns:yang:nemo:operation";
\r
1690 + prefix "nemo-operation";
\r
1692 + import nemo-common {prefix nemo-common;}
\r
1694 + revision "2015-10-10" {
\r
1696 "Initial revision.";
\r
1699 - grouping parameter-definition {
\r
1701 - description "A user-visible name for parameter";
\r
1702 - type nemo-common:parameter-name;
\r
1706 - description "The type of the parameter";
\r
1708 - type enumeration {
\r
1710 - description "A string-valued parameter";
\r
1713 - description "An integer-valued parameter";
\r
1716 - description "An integer-range parameter";
\r
1720 - leaf is-required {
\r
1721 - description "Specify whether the parameter is required ";
\r
1722 - default optional;
\r
1723 - type enumeration {
\r
1725 - description "The parameter is required";
\r
1728 - description "The parameter is optional";
\r
1735 - container action-definitions {
\r
1736 - list action-definition {
\r
1737 - key "action-name";
\r
1738 - leaf action-name {
\r
1739 - description "A name for the action definition";
\r
1740 - type nemo-common:action-definition-name;
\r
1741 - mandatory true;
\r
1745 - "data for the action that can be passed in.";
\r
1747 - uses parameter-definition;
\r
1751 - grouping action-parameter-instance{
\r
1752 - leaf data-name {
\r
1753 - type nemo-common:data-name;
\r
1756 - leaf string-value {
\r
1759 - leaf int-value {
\r
1762 - container range-value {
\r
1773 - grouping action-instance{
\r
1774 - description " ";
\r
1775 - leaf action-name{
\r
1776 - type nemo-common:action-instance-name;
\r
1780 - key "data-name";
\r
1781 - uses action-parameter-instance;
\r
1785 - container condition-definitions {
\r
1786 - list condition-definition{
\r
1787 - key "condition-name";
\r
1788 - leaf condition-name{
\r
1789 - type nemo-common:condition-definition-name;
\r
1790 - mandatory true;
\r
1792 - list condition-parameter{
\r
1794 - uses parameter-definition;
\r
1799 - grouping conditon-parameter-instance{
\r
1800 - leaf parameter-name {
\r
1801 - type nemo-common:condition-parameter-name;
\r
1804 - leaf string-value {
\r
1807 - leaf int-value {
\r
1810 - container range-value {
\r
1821 - grouping condition-instance {
\r
1822 - description " ";
\r
1823 - leaf condition-name{
\r
1824 - type nemo-common:condition-instance-name;
\r
1825 - mandatory true;
\r
1827 - list condition-parameter{
\r
1828 - key "parameter-name";
\r
1829 - uses conditon-parameter-instance;
\r
1835 - container constraint-definitions {
\r
1836 - list constraint-definition{
\r
1837 - key "constraint-name";
\r
1838 - leaf constraint-name{
\r
1839 - type nemo-common:constraint-definition-name;
\r
1840 - mandatory true;
\r
1842 - list constraint-parameter{
\r
1844 - uses parameter-definition;
\r
1849 - grouping constraint-parameter-instance{
\r
1850 - leaf parameter-name {
\r
1851 - type nemo-common:constraint-parameter-name;
\r
1854 - leaf string-value {
\r
1857 - leaf int-value {
\r
1860 - container range-value {
\r
1871 - grouping constraint-instance {
\r
1872 - description " ";
\r
1873 - leaf constraint-name{
\r
1874 - type nemo-common:constraint-instance-name;
\r
1875 - mandatory true;
\r
1877 - list constraint-parameter{
\r
1878 - key "parameter-name";
\r
1879 - uses constraint-parameter-instance;
\r
1885 \ No newline at end of file
1887 + container condition-parameter-definitions {
\r
1888 + list condition-parameter-definition {
\r
1890 + "Defines the condition parameter with its metadata.";
\r
1892 + key "parameter-name";
\r
1893 + leaf parameter-name {
\r
1895 + "A name for the condition parameter.";
\r
1896 + type nemo-common:parameter-name;
\r
1900 + leaf parameter-value-type {
\r
1902 + "A type of value for the condition parameter.";
\r
1903 + type enumeration {
\r
1906 + "A string-valued parameter.";
\r
1910 + "An integer-valued parameter.";
\r
1914 + "An integer-range parameter.";
\r
1919 + container parameter-match-patterns {
\r
1921 + "Defines the match patterns of the condition parameter.";
\r
1923 + leaf-list parameter-match-pattern {
\r
1924 + type enumeration {
\r
1926 + enum not-less-than;
\r
1929 + enum greater-than;
\r
1930 + enum not-greater-than;
\r
1932 + enum periodical;
\r
1939 + container action-definitions {
\r
1940 + list action-definition {
\r
1942 + "Defines the actions which will be supported by the NEMO project.";
\r
1944 + key "action-name";
\r
1945 + leaf action-name {
\r
1947 + "A name for the action definition.";
\r
1948 + type nemo-common:action-name;
\r
1952 + leaf parameter-value-type {
\r
1954 + "The type of the action parameter.";
\r
1956 + type enumeration {
\r
1959 + "A string-valued parameter.";
\r
1963 + "An integer-valued parameter.";
\r
1967 + "An integer-range parameter.";
\r
1974 + grouping condition-instance {
\r
1976 + "Specific a instance of condition whose metadata has been filled in.";
\r
1978 + list condition-segment {
\r
1980 + "The segment entities will be composed into a whole condition entity.
\r
1981 + Each segment will be a sub expression of the condition.";
\r
1983 + key "condition-segment-id";
\r
1984 + leaf condition-segment-id {
\r
1986 + "A unique ID for a condition segment.";
\r
1987 + type nemo-common:condition-segment-id;
\r
1991 + leaf condition-parameter-name {
\r
1993 + "A name for a conditon parameter.";
\r
1994 + type nemo-common:condition-parameter-name;
\r
1997 + leaf condition-parameter-match-pattern {
\r
1999 + "The operator for the condition parameter and it's target value.";
\r
2000 + type enumeration {
\r
2002 + enum not-less-than;
\r
2005 + enum greater-than;
\r
2006 + enum not-greater-than;
\r
2008 + enum periodical;
\r
2012 + container condition-parameter-target-value {
\r
2014 + "The target value of condition parameter.";
\r
2016 + leaf string-value {
\r
2020 + leaf int-value {
\r
2024 + container range-value {
\r
2037 + leaf precursor-relation-operator {
\r
2039 + "The logical operator between current segment and the next segment.";
\r
2040 + type enumeration {
\r
2050 + "The order of the segment in the whole condition entity.";
\r
2056 + grouping action-instance {
\r
2058 + "Specific a action instance whose metadata has been filled in.";
\r
2060 + leaf action-name {
\r
2062 + "A name for a action instance.";
\r
2063 + type nemo-common:action-name;
\r
2067 + container parameter-values {
\r
2069 + "The parameter value list of an action.";
\r
2071 + list string-value {
\r
2072 + key "value order";
\r
2082 + list int-value {
\r
2083 + key "value order";
\r
2093 + container range-value {
\r
2107 + grouping operation-instance {
\r
2109 + "Specific an operation instance whose metadata has been filled in.
\r
2110 + Operation is a type of intent which refers to taking for some specific
\r
2111 + actions to realize the purpose.";
\r
2113 + leaf operation-id {
\r
2115 + "A unique ID for a operation instance.";
\r
2116 + type nemo-common:operation-id;
\r
2120 + leaf operation-name {
\r
2122 + "A user-visible and unique name for a operation instance.";
\r
2123 + type nemo-common:operation-name;
\r
2129 + "Defines the priority of a operation instance.";
\r
2134 + leaf target-object {
\r
2136 + "The target object which the operation instance will apply to.";
\r
2137 + type nemo-common:object-id;
\r
2141 + uses condition-instance;
\r
2145 + "The action list for the operation instance.";
\r
2147 + key "action-name";
\r
2148 + uses action-instance;
\r
2152 + "The order of an action instance in execution sequence.";
\r
2160 diff --git a/nemo-api/src/main/yang/nemo-result.yang b/nemo-api/src/main/yang/nemo-result.yang
2161 index b350c21..6daf69b 100644
2162 --- a/nemo-api/src/main/yang/nemo-result.yang
2163 +++ b/nemo-api/src/main/yang/nemo-result.yang
2166 - * Copyright (c) 2015 Huawei Technologies Co., Ltd. and others. All rights reserved.
\r
2167 + * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
\r
2169 * This program and the accompanying materials are made available under the
\r
2170 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
2171 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
2174 -module nemo-result{
\r
2175 +module nemo-result {
\r
2178 - yang-version 1;
\r
2179 - namespace "urn:opendaylight:params:xml:ns:yang:nemo:result";
\r
2180 - prefix "nemo-result";
\r
2182 - import nemo-common {prefix nemo-common;}
\r
2184 - revision "2015-06-29" {
\r
2185 + namespace "urn:opendaylight:params:xml:ns:yang:nemo:result";
\r
2186 + prefix "nemo-result";
\r
2188 + import nemo-common {prefix nemo-common;}
\r
2190 + revision "2015-10-10" {
\r
2192 "Initial revision.";
\r
2195 - container expected-definitons{
\r
2199 - grouping expected-instance {
\r
2200 - leaf expected-id {
\r
2201 - type nemo-common:expected-instance-id;
\r
2204 - leaf expected-name{
\r
2205 - type nemo-common:expected-instance-name;
\r
2206 - mandatory false;
\r
2208 - leaf expected-description {
\r
2209 - type nemo-common:description;
\r
2213 - container avoid-definitons{
\r
2217 - grouping avoid-instance {
\r
2219 - type nemo-common:avoid-instance-id;
\r
2222 - leaf avoid-name{
\r
2223 - type nemo-common:avoid-instance-name;
\r
2224 - mandatory false;
\r
2226 - leaf avoid-description {
\r
2227 - type nemo-common:description;
\r
2232 \ No newline at end of file
2235 diff --git a/nemo-features/pom.xml b/nemo-features/pom.xml
2236 index c678d52..e4db9ed 100644
2237 --- a/nemo-features/pom.xml
2238 +++ b/nemo-features/pom.xml
2239 @@ -26,10 +26,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2243 - <controller.mdsal.version>1.3.0-SNAPSHOT</controller.mdsal.version>
2244 <mdsal.model.version>0.8.0-SNAPSHOT</mdsal.model.version>
2245 + <mdsal.version>1.3.0-SNAPSHOT</mdsal.version>
2246 <restconf.version>1.3.0-SNAPSHOT</restconf.version>
2247 <dlux.version>0.3.0-SNAPSHOT</dlux.version>
2248 + <openflowplugin.version>0.2.0-SNAPSHOT</openflowplugin.version>
2251 <dependencyManagement>
2252 @@ -44,7 +45,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2254 <groupId>org.opendaylight.controller</groupId>
2255 <artifactId>mdsal-artifacts</artifactId>
2256 - <version>${controller.mdsal.version}</version>
2257 + <version>${mdsal.version}</version>
2259 <scope>import</scope>
2261 @@ -97,6 +98,22 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2263 <scope>runtime</scope>
2267 + <groupId>org.opendaylight.openflowplugin</groupId>
2268 + <artifactId>features-openflowplugin</artifactId>
2269 + <version>${openflowplugin.version}</version>
2270 + <classifier>features</classifier>
2274 + <groupId>org.opendaylight.openflowplugin</groupId>
2275 + <artifactId>features-openflowplugin-extension</artifactId>
2276 + <version>${openflowplugin.version}</version>
2277 + <classifier>features</classifier>
2282 <groupId>${project.groupId}</groupId>
2283 <artifactId>nemo-api</artifactId>
2284 @@ -109,6 +126,13 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2287 <groupId>${project.groupId}</groupId>
2288 + <artifactId>nemo-impl</artifactId>
2289 + <version>${project.version}</version>
2290 + <classifier>config</classifier>
2294 + <groupId>${project.groupId}</groupId>
2295 <artifactId>openflow-renderer</artifactId>
2296 <version>${project.version}</version>
2298 @@ -121,6 +145,13 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2301 <groupId>${project.groupId}</groupId>
2302 + <artifactId>openflow-renderer</artifactId>
2303 + <version>${project.version}</version>
2304 + <classifier>resource</classifier>
2308 + <groupId>${project.groupId}</groupId>
2309 <artifactId>nemo-ui</artifactId>
2310 <version>${project.version}</version>
2312 diff --git a/nemo-features/src/main/features/features.xml b/nemo-features/src/main/features/features.xml
2313 index 4cec890..f14ab7c 100644
2314 --- a/nemo-features/src/main/features/features.xml
2315 +++ b/nemo-features/src/main/features/features.xml
2316 @@ -9,28 +9,37 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2317 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
\r
2318 xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
\r
2319 <repository>mvn:org.opendaylight.mdsal.model/features-mdsal-model/${mdsal.model.version}/xml/features</repository>
\r
2320 - <repository>mvn:org.opendaylight.controller/features-mdsal/${controller.mdsal.version}/xml/features</repository>
\r
2321 + <repository>mvn:org.opendaylight.controller/features-mdsal/${mdsal.version}/xml/features</repository>
\r
2322 <repository>mvn:org.opendaylight.netconf/features-restconf/${restconf.version}/xml/features</repository>
\r
2323 <repository>mvn:org.opendaylight.dlux/features-dlux/${dlux.version}/xml/features</repository>
\r
2324 + <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/${openflowplugin.version}/xml/features</repository>
\r
2325 + <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin-extension/${openflowplugin.version}/xml/features</repository>
\r
2326 <feature name='odl-nemo-api' version='${project.version}' description='OpenDaylight :: NEMO :: API'>
\r
2327 <feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
\r
2328 <bundle>mvn:org.opendaylight.nemo/nemo-api/${project.version}</bundle>
\r
2330 <feature name='odl-nemo-engine' version='${project.version}' description='OpenDaylight :: NEMO :: Engine'>
\r
2331 - <feature version='${controller.mdsal.version}'>odl-mdsal-broker</feature>
\r
2332 + <feature version='${mdsal.version}'>odl-mdsal-broker</feature>
\r
2333 <feature version='${project.version}'>odl-nemo-api</feature>
\r
2334 <bundle>mvn:org.opendaylight.nemo/nemo-impl/${project.version}</bundle>
\r
2335 + <configfile finalname='etc/opendaylight/karaf/00-nemo-engine.xml'>mvn:org.opendaylight.nemo/nemo-impl/${project.version}/xml/config</configfile>
\r
2337 <feature name='odl-nemo-engine-rest' version='${project.version}' description='OpenDaylight :: NEMO :: Engine :: REST'>
\r
2338 <feature version='${restconf.version}'>odl-restconf</feature>
\r
2339 - <feature version='${restconf.version}'>odl-mdsal-apidocs</feature>
\r
2340 - <feature version='${controller.mdsal.version}'>odl-mdsal-xsql</feature>
\r
2341 + <feature version='${mdsal.version}'>odl-mdsal-apidocs</feature>
\r
2342 + <feature version='${mdsal.version}'>odl-mdsal-xsql</feature>
\r
2343 <feature version='${project.version}'>odl-nemo-engine</feature>
\r
2345 <feature name='odl-nemo-openflow-renderer' version='${project.version}' description='OpenDaylight :: NEMO :: OpenFlow Renderer'>
\r
2346 - <feature version='${project.version}'>odl-nemo-engine</feature>
\r
2347 + <feature version='${openflowplugin.version}'>odl-openflowplugin-flow-services</feature>
\r
2348 + <feature version='${openflowplugin.version}'>odl-openflowplugin-nxm-extensions</feature>
\r
2349 + <feature version='${project.version}'>odl-nemo-engine-rest</feature>
\r
2350 <bundle>mvn:org.opendaylight.nemo/openflow-renderer/${project.version}</bundle>
\r
2351 - <configfile finalname='etc/opendaylight/karaf/00-nemo-openflow-renderer.xml'>mvn:org.opendaylight.nemo/openflow-renderer/${project.version}/xml/config</configfile>
\r
2352 + <configfile finalname='etc/opendaylight/karaf/01-nemo-openflow-renderer.xml'>mvn:org.opendaylight.nemo/openflow-renderer/${project.version}/xml/config</configfile>
\r
2353 + <configfile finalname='etc/nemo/nemo-openflow-renderer-resource.json'>mvn:org.opendaylight.nemo/openflow-renderer/${project.version}/json/resource</configfile>
\r
2355 + <feature name='odl-nemo-cli-renderer' version='${project.version}' description='OpenDaylight :: NEMO :: CLI Renderer'>
\r
2356 + <feature version='${project.version}'>odl-nemo-engine-rest</feature>
\r
2358 <feature name='odl-nemo-engine-ui' version='${project.version}' description='OpenDaylight :: NEMO :: Engine :: UI'>
\r
2359 <feature version='${dlux.version}'>odl-dlux-core</feature>
\r
2360 diff --git a/nemo-impl/pom.xml b/nemo-impl/pom.xml
2361 index fdb8145..c66209c 100644
2362 --- a/nemo-impl/pom.xml
2363 +++ b/nemo-impl/pom.xml
2364 @@ -10,9 +10,9 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2365 <modelVersion>4.0.0</modelVersion>
2368 - <groupId>org.opendaylight.mdsal</groupId>
2369 - <artifactId>binding-parent</artifactId>
2370 - <version>0.8.0-SNAPSHOT</version>
2371 + <groupId>org.opendaylight.controller</groupId>
2372 + <artifactId>config-parent</artifactId>
2373 + <version>0.4.0-SNAPSHOT</version>
2377 @@ -24,15 +24,49 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2380 <jacoco.version>0.7.2.201409121644</jacoco.version>
2381 + <sonar.jacoco.reportPath>target/code-coverage/jacoco.exec</sonar.jacoco.reportPath>
2382 + <sonar.jacoco.itReportPath>target/code-coverage/jacoco-it.exec</sonar.jacoco.itReportPath>
2387 + <groupId>org.opendaylight.mdsal.model</groupId>
2388 + <artifactId>ietf-inet-types</artifactId>
2391 + <groupId>org.opendaylight.mdsal.model</groupId>
2392 + <artifactId>ietf-yang-types</artifactId>
2395 <groupId>${project.groupId}</groupId>
2396 <artifactId>nemo-api</artifactId>
2397 <version>${project.version}</version>
2400 + <groupId>net.sourceforge.collections</groupId>
2401 + <artifactId>collections-generic</artifactId>
2402 + <version>4.01</version>
2405 + <groupId>net.sf.jung</groupId>
2406 + <artifactId>jung-api</artifactId>
2407 + <version>2.0.1</version>
2410 + <groupId>net.sf.jung</groupId>
2411 + <artifactId>jung-graph-impl</artifactId>
2412 + <version>2.0.1</version>
2415 + <groupId>net.sf.jung</groupId>
2416 + <artifactId>jung-algorithms</artifactId>
2417 + <version>2.0.1</version>
2420 + <groupId>com.google.guava</groupId>
2421 + <artifactId>guava</artifactId>
2424 <groupId>junit</groupId>
2425 <artifactId>junit</artifactId>
2427 @@ -59,26 +93,101 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2431 - <groupId>org.jacoco</groupId>
2432 - <artifactId>jacoco-maven-plugin</artifactId>
2433 + <groupId>org.opendaylight.yangtools</groupId>
2434 + <artifactId>yang-maven-plugin</artifactId>
2438 + <goal>generate-sources</goal>
2441 + <yangFilesRootDir>src/main/yang</yangFilesRootDir>
2444 + <codeGeneratorClass>
2445 + org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl
2446 + </codeGeneratorClass>
2448 + ${salGeneratorPath}
2452 + <inspectDependencies>true</inspectDependencies>
2458 + <groupId>org.opendaylight.mdsal</groupId>
2459 + <artifactId>maven-sal-api-gen-plugin</artifactId>
2460 + <version>${yangtools.version}</version>
2466 + <groupId>org.apache.felix</groupId>
2467 + <artifactId>maven-bundle-plugin</artifactId>
2468 + <extensions>true</extensions>
2471 - <include>org.opendaylight.nemo.*</include>
2474 + <Bundle-ClassPath>.,{maven-dependencies}</Bundle-ClassPath>
2475 + <Import-Package>*;resolution:=optional</Import-Package>
2476 + <Embed-Dependency>
2477 + collections-generic,jung-api,jung-graph-impl,jung-algorithms
2478 + </Embed-Dependency>
2479 + <Embed-Transitive>true</Embed-Transitive>
2480 + <Embed-Directory>lib</Embed-Directory>
2481 + <Embed-StripGroup>true</Embed-StripGroup>
2482 + <_failok>true</_failok>
2483 + <_nouses>true</_nouses>
2485 + <manifestLocation>${project.build.outputDirectory}/META-INF</manifestLocation>
2489 + <groupId>org.codehaus.mojo</groupId>
2490 + <artifactId>build-helper-maven-plugin</artifactId>
2493 + <id>attach-artifacts</id>
2495 + <goal>attach-artifact</goal>
2497 + <phase>package</phase>
2501 + <file>${project.build.directory}/classes/etc/opendaylight/karaf/config.xml</file>
2503 + <classifier>config</classifier>
2511 + <groupId>org.jacoco</groupId>
2512 + <artifactId>jacoco-maven-plugin</artifactId>
2516 + <id>pre-unit-test</id>
2518 <goal>prepare-agent</goal>
2521 + <destFile>${sonar.jacoco.reportPath}</destFile>
2525 - <id>post-test</id>
2526 + <id>post-unit-test</id>
2530 - <phase>test</phase>
2532 + <dataFile>${sonar.jacoco.reportPath}</dataFile>
2537 diff --git a/nemo-impl/src/main/java/README b/nemo-impl/src/main/java/README
2538 deleted file mode 100644
2539 index e69de29..0000000
2540 diff --git a/nemo-impl/src/test/java/README b/nemo-impl/src/test/java/README
2541 deleted file mode 100644
2542 index e69de29..0000000
2543 diff --git a/nemo-karaf/pom.xml b/nemo-karaf/pom.xml
2544 index 7f23a37..c5520cc 100644
2545 --- a/nemo-karaf/pom.xml
2546 +++ b/nemo-karaf/pom.xml
2547 @@ -26,12 +26,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2551 - <feature.test.version>1.6.0-SNAPSHOT</feature.test.version>
2552 <feature.mdsal.version>1.3.0-SNAPSHOT</feature.mdsal.version>
2553 <feature.dlux.version>0.3.0-SNAPSHOT</feature.dlux.version>
2554 - <feature.flow.version>1.3.0-SNAPSHOT</feature.flow.version>
2555 - <feature.yangtools.version>0.8.0-SNAPSHOT</feature.yangtools.version>
2556 - <feature.adsal.version>0.10.0-SNAPSHOT</feature.adsal.version>
2559 <dependencyManagement>
2560 @@ -61,14 +57,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2561 <scope>runtime</scope>
2564 - <groupId>org.opendaylight.controller</groupId>
2565 - <artifactId>features-adsal</artifactId>
2566 - <classifier>features</classifier>
2567 - <version>${feature.adsal.version}</version>
2569 - <scope>runtime</scope>
2572 <groupId>org.opendaylight.dlux</groupId>
2573 <artifactId>features-dlux</artifactId>
2574 <version>${feature.dlux.version}</version>
2575 diff --git a/nemo-renderers/openflow-renderer/pom.xml b/nemo-renderers/openflow-renderer/pom.xml
2576 index a88e190..ab0b3f5 100644
2577 --- a/nemo-renderers/openflow-renderer/pom.xml
2578 +++ b/nemo-renderers/openflow-renderer/pom.xml
2579 @@ -24,9 +24,33 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2582 <jacoco.version>0.7.2.201409121644</jacoco.version>
2583 + <sonar.jacoco.reportPath>target/code-coverage/jacoco.exec</sonar.jacoco.reportPath>
2584 + <sonar.jacoco.itReportPath>target/code-coverage/jacoco-it.exec</sonar.jacoco.itReportPath>
2585 + <openflowplugin.version>0.2.0-SNAPSHOT</openflowplugin.version>
2586 + <liblldp.version>0.10.0-SNAPSHOT</liblldp.version>
2590 + <!-- model dependencies -->
2592 + <groupId>org.opendaylight.mdsal.model</groupId>
2593 + <artifactId>yang-ext</artifactId>
2595 + <!-- project specific dependencies -->
2597 + <groupId>org.opendaylight.openflowplugin</groupId>
2598 + <artifactId>openflowplugin-extension-nicira</artifactId>
2599 + <version>${openflowplugin.version}</version>
2602 + <groupId>org.opendaylight.controller</groupId>
2603 + <artifactId>liblldp</artifactId>
2604 + <version>${liblldp.version}</version>
2607 + <groupId>commons-net</groupId>
2608 + <artifactId>commons-net</artifactId>
2611 <groupId>${project.groupId}</groupId>
2612 <artifactId>nemo-api</artifactId>
2613 @@ -38,6 +62,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2614 <version>${project.version}</version>
2617 + <groupId>org.mockito</groupId>
2618 + <artifactId>mockito-all</artifactId>
2619 + <scope>test</scope>
2622 <groupId>junit</groupId>
2623 <artifactId>junit</artifactId>
2625 @@ -47,6 +76,18 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2629 + <groupId>com.fasterxml.jackson.core</groupId>
2630 + <artifactId>jackson-core</artifactId>
2633 + <groupId>com.fasterxml.jackson.core</groupId>
2634 + <artifactId>jackson-databind</artifactId>
2637 + <groupId>com.fasterxml.jackson.core</groupId>
2638 + <artifactId>jackson-annotations</artifactId>
2641 <groupId>org.codehaus.jettison</groupId>
2642 <artifactId>jettison</artifactId>
2644 @@ -64,6 +105,19 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2648 + <groupId>org.apache.felix</groupId>
2649 + <artifactId>maven-bundle-plugin</artifactId>
2652 + <Export-Package>org.codehaus.jackson,
2653 + org.codehaus.jackson.*,
2656 + <Import-Package>*</Import-Package>
2661 <groupId>org.opendaylight.yangtools</groupId>
2662 <artifactId>yang-maven-plugin</artifactId>
2664 @@ -108,6 +162,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2665 <phase>package</phase>
2669 + <file>${project.build.directory}/classes/etc/nemo/resource.json</file>
2671 + <classifier>resource</classifier>
2674 <file>${project.build.directory}/classes/etc/opendaylight/karaf/config.xml</file>
2676 @@ -128,17 +187,22 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2681 + <id>pre-unit-test</id>
2683 <goal>prepare-agent</goal>
2686 + <destFile>${sonar.jacoco.reportPath}</destFile>
2690 - <id>post-test</id>
2691 + <id>post-unit-test</id>
2695 - <phase>test</phase>
2697 + <dataFile>${sonar.jacoco.reportPath}</dataFile>
2702 diff --git a/nemo-renderers/openflow-renderer/src/main/java/README b/nemo-renderers/openflow-renderer/src/main/java/README
2703 deleted file mode 100644
2704 index e69de29..0000000
2705 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
2706 index dc8b4d9..0a1637e 100644
2707 --- a/nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer-impl.yang
2708 +++ b/nemo-renderers/openflow-renderer/src/main/yang/openflow-renderer-impl.yang
2709 @@ -19,7 +19,7 @@ module openflow-renderer-impl {
2710 "This module contains the base YANG definitions for
\r
2711 NEMO Openflow renderer implementation.";
\r
2713 - revision "2015-07-01" {
\r
2714 + revision "2015-10-10" {
\r
2716 "Initial revision.";
\r
2718 diff --git a/nemo-renderers/openflow-renderer/src/test/java/README b/nemo-renderers/openflow-renderer/src/test/java/README
2719 deleted file mode 100644
2720 index e69de29..0000000
2721 diff --git a/nemo-renderers/pom.xml b/nemo-renderers/pom.xml
2722 index 7066dda..1024502 100644
2723 --- a/nemo-renderers/pom.xml
2724 +++ b/nemo-renderers/pom.xml
2725 @@ -5,7 +5,8 @@ This program and the accompanying materials are made available under the
2726 terms of the Eclipse Public License v1.0 which accompanies this distribution,
2727 and is available at http://www.eclipse.org/legal/epl-v10.html
2729 -<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">
2730 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2731 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2732 <modelVersion>4.0.0</modelVersion>
2735 @@ -27,7 +28,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2737 <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
2738 <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
2740 <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
2745 \ No newline at end of file
2746 diff --git a/nemo-ui/src/main/resources/README b/nemo-ui/src/main/resources/README
2747 deleted file mode 100644
2748 index e69de29..0000000
2749 diff --git a/pom.xml b/pom.xml
2750 index 22b85c9..d898151 100644
2753 @@ -5,14 +5,15 @@ This program and the accompanying materials are made available under the
2754 terms of the Eclipse Public License v1.0 which accompanies this distribution,
2755 and is available at http://www.eclipse.org/legal/epl-v10.html
2757 -<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">
2758 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2759 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2760 <modelVersion>4.0.0</modelVersion>
2763 - <groupId>org.opendaylight.controller</groupId>
2764 - <artifactId>releasepom</artifactId>
2765 - <version>0.3.0-SNAPSHOT</version>
2766 - <relativePath></relativePath>
2767 + <groupId>org.opendaylight.odlparent</groupId>
2768 + <artifactId>odlparent</artifactId>
2769 + <version>1.6.0-SNAPSHOT</version>
2773 <groupId>org.opendaylight.nemo</groupId>
2774 @@ -30,10 +31,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2775 <module>nemo-artifacts</module>
2776 <module>nemo-api</module>
2777 <module>nemo-impl</module>
2778 + <module>nemo-renderers</module>
2779 <module>nemo-ui</module>
2780 <module>nemo-features</module>
2781 <module>nemo-karaf</module>
2782 - <module>nemo-renderers</module>
2785 <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
2786 @@ -58,7 +59,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2788 <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
2789 <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
2791 <url>https://wiki.opendaylight.org/view/NEMO:Main</url>