Adding nemo engine.
[nemo.git] / diff.log
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
5 @@ -1,32 +1,37 @@
6  /*\r
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
9   *\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
13   */\r
14  \r
15 -module nemo-common{\r
16 -       yang-version 1; \r
17 -       namespace "urn:opendaylight:params:xml:ns:yang:nemo:common";    \r
18 -       prefix "nemo-common";\r
19 -       \r
20 -       revision "2015-06-29" {\r
21 +module nemo-common {\r
22 +    yang-version 1;\r
23 +\r
24 +    namespace "urn:opendaylight:params:xml:ns:yang:nemo:common";\r
25 +    prefix "nemo-common";\r
26 +\r
27 +    description\r
28 +        "Common types and definitions for NEMO models";\r
29 +\r
30 +    revision "2015-10-10" {\r
31          description\r
32              "Initial revision.";\r
33      }\r
34 -       \r
35 -       /**********************\r
36 -     * Base types\r
37 -    **********************/\r
38 -       typedef description {\r
39 -        description "A human-readable description for a object.";\r
40 +\r
41 +    // *********************\r
42 +    // * Base Types\r
43 +    // *********************\r
44 +    typedef description {\r
45 +        description\r
46 +            "A human-readable description for a object.";\r
47          type string {\r
48              length "1..4096";\r
49          }\r
50      }\r
51 -       \r
52 -       typedef name {\r
53 +\r
54 +    typedef name {\r
55          description\r
56              "A generic string name type. Must start with a letter";\r
57          type string {\r
58 @@ -34,8 +39,8 @@ module nemo-common{
59              length "1..256";\r
60          }\r
61      }\r
62 -       \r
63 -       // UUID type from ietf-yang-types@2013-07-15\r
64 +\r
65 +    // UUID type from ietf-yang-types@2013-07-15\r
66      typedef uuid {\r
67          type string {\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{
70          }\r
71          description\r
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
77  \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{
81      }\r
82  \r
83      typedef unique-id {\r
84 +        description\r
85 +            "A globally unique identifier.";\r
86          type uuid;\r
87 -        description "A globally unique identifier";\r
88      }\r
89 -       \r
90 -       /*********************\r
91 -     * Unique IDs\r
92 -     *********************/    \r
93 -       typedef object-id {\r
94 +\r
95 +    // *********************\r
96 +    // * Unique IDs\r
97 +    // *********************\r
98 +    typedef object-id {\r
99 +        description\r
100 +            "A unique ID for a parameterized object.";\r
101          type unique-id;\r
102 -        description "A unique ID for a parameterized object";\r
103      }\r
104 -       \r
105 -       typedef node-definition-id {\r
106 -        type object-id;\r
107 -        description "A unique ID for a node definition.";\r
108 -    }\r
109 -       typedef node-instance-id {\r
110 -        type object-id;\r
111 -        description "A unique ID for a node instance.";\r
112 -    }          \r
113 -       \r
114 -       typedef connection-definition-id {\r
115 +\r
116 +    typedef node-id {\r
117 +        description\r
118 +            "A unique ID for a node.";\r
119          type object-id;\r
120 -        description "A unique ID for a connection definition.";\r
121      }\r
122 -       typedef connection-instance-id {\r
123 -        type object-id;\r
124 -        description "A unique ID for a connection instance.";\r
125 -    }          \r
126 -       \r
127 -       typedef flow-definition-id {\r
128 +\r
129 +    typedef connection-id {\r
130 +        description\r
131 +            "A unique ID for a connection.";\r
132          type object-id;\r
133 -        description "A unique ID for a flow definition.";\r
134      }\r
135 -       typedef flow-instance-id {\r
136 +\r
137 +    typedef flow-id {\r
138 +        description\r
139 +            "A unique ID for a flow.";\r
140          type object-id;\r
141 -        description "A unique ID for a flow instance.";\r
142      }\r
143 -       \r
144 -       typedef expected-definition-id {\r
145 +\r
146 +    typedef intent-id {\r
147 +        description\r
148 +            "A unique ID for an intent.";\r
149          type unique-id;\r
150 -        description "A unique ID for an expected definition.";\r
151      }\r
152 -       typedef expected-instance-id {\r
153 +\r
154 +    typedef user-id {\r
155 +        description\r
156 +            "A unique ID for a user.";\r
157          type unique-id;\r
158 -        description "A unique ID for an expected instance.";\r
159      }\r
160 -       \r
161 -       typedef avoid-definition-id {\r
162 +\r
163 +    typedef operation-id {\r
164 +        description\r
165 +            "A unique ID for an operation.";\r
166          type unique-id;\r
167 -        description "A unique ID for an avoid definition.";\r
168      }\r
169 -       typedef avoid-instance-id {\r
170 -        type unique-id;\r
171 -        description "A unique ID for an avoid instance.";\r
172 -    }\r
173 -       \r
174 -       typedef context-id {\r
175 -               type unique-id;\r
176 -        description "A unique ID for a context.";\r
177 -       }\r
178 -       \r
179 -       typedef intent-id {\r
180 +\r
181 +    typedef condition-segment-id {\r
182 +        description\r
183 +            "A unique ID for a segment of the condition in an operation.";\r
184          type unique-id;\r
185 -        description "A unique ID for an intent.";\r
186      }\r
187 -       \r
188 -       typedef user-id {\r
189 +\r
190 +    typedef query-condition-id {\r
191 +        description\r
192 +            "A unique ID for a condition of the advanced query.";\r
193          type unique-id;\r
194 -        description "A unique ID for a user.";\r
195 -    }\r
196 -       \r
197 -       \r
198 -       \r
199 -       /*********************\r
200 -     * names\r
201 -     *********************/    \r
202 -       typedef object-name {\r
203 +    }\r
204 +\r
205 +    // *********************\r
206 +    // * Names\r
207 +    // *********************\r
208 +    typedef object-name {\r
209 +        description\r
210 +            "A name for a parameterized object";\r
211          type name;\r
212 -        description "A name for a parameterized object";\r
213      }\r
214 -       \r
215 -       typedef node-instance-name {\r
216 +\r
217 +    typedef node-name {\r
218 +        description\r
219 +            "A name for a node instance.";\r
220          type object-name;\r
221 -        description "A name for a node instance.";\r
222 -    } \r
223 -       \r
224 -       typedef connection-instance-name {\r
225 +    }\r
226 +\r
227 +    typedef connection-name {\r
228 +        description\r
229 +            "A name for a connection instance.";\r
230          type object-name;\r
231 -        description "A name for a connection instance.";\r
232 -    }  \r
233 -                \r
234 -       typedef flow-instance-name {\r
235 +    }\r
236 +\r
237 +    typedef flow-name {\r
238 +        description\r
239 +            "A name for a flow instance.";\r
240          type object-name;\r
241 -        description "A name for a flow instance.";\r
242 -    } \r
243 -       \r
244 -       typedef node-property-name {\r
245 -        type name;\r
246 -        description "A name for a node property.";\r
247 -    } \r
248 -       \r
249 -       typedef connection-property-name {\r
250 +    }\r
251 +\r
252 +    typedef  match-item-name {\r
253 +        description\r
254 +            "A name for a match item.";\r
255          type name;\r
256 -        description "A name for a connection property.";\r
257 -    } \r
258 +    }\r
259  \r
260 -       typedef  match-item-name {\r
261 +    typedef property-name {\r
262 +        description\r
263 +            "A name for a property.";\r
264          type name;\r
265 -        description "A name for a flow match item.";\r
266      }\r
267 -       \r
268 -       typedef property-name {\r
269 +\r
270 +    typedef parameter-name {\r
271 +        description\r
272 +            "A name for a parameter.";\r
273          type name;\r
274 -        description "A name for a property.";\r
275      }\r
276 -       \r
277 -       typedef parameter-name {\r
278 +\r
279 +    typedef action-name {\r
280 +        description\r
281 +            "A name for an action.";\r
282          type name;\r
283 -        description "A name for a parameter.";\r
284      }\r
285 -       \r
286 -       typedef action-definition-name {\r
287 +\r
288 +    typedef condition-parameter-name {\r
289 +        description\r
290 +            "A name for a parameter of condition.";\r
291          type name;\r
292 -        description "A name for an action definition.";\r
293 -    }  \r
294 -       typedef action-instance-name {\r
295 +    }\r
296 +\r
297 +    typedef user-name {\r
298 +        description\r
299 +            "A name for a user.";\r
300          type name;\r
301 -        description "A name for an action instance.";\r
302 -    }  \r
303 -       typedef condition-definition-name {\r
304 +    }\r
305 +\r
306 +    typedef user-password {\r
307 +        description\r
308 +            "A password for a user.";\r
309          type name;\r
310 -        description "A name for a condition definition.";\r
311 -    }\r
312 -       typedef condition-instance-name {\r
313 -               type name;\r
314 -        description "A name for a condition instance.";\r
315 -       }\r
316 -       typedef condition-parameter-name {\r
317 -               type name;\r
318 -        description "A name for a condition parameter.";\r
319 -       }\r
320 -       typedef constraint-definition-name {\r
321 +    }\r
322 +\r
323 +    typedef operation-name {\r
324 +        description\r
325 +            "A name for an operation.";\r
326          type name;\r
327 -        description "A name for a constraint definition.";\r
328 -    }\r
329 -       typedef constraint-instance-name {\r
330 -               type name;\r
331 -        description "A name for a constraint instance.";\r
332 -       }\r
333 -       typedef constraint-parameter-name {\r
334 -               type name;\r
335 -        description "A name for a constraint parameter.";\r
336 -       }\r
337 -       \r
338 -\r
339 -    typedef data-name {\r
340 -               type name;\r
341 -               description "A name for an action data.";\r
342 -       }\r
343 -       \r
344 -       typedef context-name {\r
345 -               type name;\r
346 -               description "A name for an context";\r
347 -       }\r
348 -       \r
349 -       typedef intent-name {\r
350 +    }\r
351 +\r
352 +    typedef query-condition-name {\r
353 +        description\r
354 +            "A name for a query with condition.";\r
355          type name;\r
356 -        description "A name for an intent.";\r
357      }\r
358 -       typedef user-name {\r
359 +\r
360 +    typedef user-role-name {\r
361 +        description\r
362 +            "A role name for a user.";\r
363          type name;\r
364 -        description "A name for a user.";\r
365      }\r
366 -       typedef expected-instance-name {\r
367 +\r
368 +    typedef user-role-description {\r
369 +        description\r
370 +            "It describes the role characteristic and responsibility range.";\r
371 +        type string;\r
372 +    }\r
373 +\r
374 +    // *********************\r
375 +    // * Types\r
376 +    // *********************\r
377 +    typedef node-type {\r
378 +        description\r
379 +            "The type for a node.";\r
380          type name;\r
381 -        description "A name for an expected instance.";\r
382      }\r
383 -       typedef avoid-instance-name {\r
384 +\r
385 +    typedef connection-type {\r
386 +        description\r
387 +            "The type for a connection.";\r
388          type name;\r
389 -        description "A name for an avoid instance.";\r
390 -    }\r
391 -       \r
392 -       \r
393 -       \r
394 -       /*********************\r
395 -     * types\r
396 -     *********************/    \r
397 -       typedef node-definition-type {\r
398 -               type name;\r
399 -           description "A type for a node."; \r
400 -       }\r
401 -       typedef connection-definition-type {\r
402 -               type name;\r
403 -           description "A type for a connection."; \r
404 -       }\r
405 -       typedef flow-definition-type {\r
406 -               type name;\r
407 -           description "A type for a flow."; \r
408 -       }       \r
409 -       typedef node-instance-type  {\r
410 -               type name;\r
411 -           description "A type for a node instance."; \r
412 -       }       \r
413 -       typedef connection-instance-type  {\r
414 -               type name;\r
415 -           description "A type for a connection instance."; \r
416 -       }\r
417 -       typedef flow-instance-type {\r
418 -               type name;\r
419 -               description "A type for a flow instance."; \r
420 -       }\r
421 +    }\r
422  \r
423 +    typedef flow-type {\r
424 +        description\r
425 +            "The type for a flow.";\r
426 +        type name;\r
427 +    }\r
428  }\r
429\r
430\r
431\r
432\r
433\r
434\r
435\r
436\r
437\r
438\r
439\r
440\r
441\r
442\r
443\r
444\r
445\r
446\r
447\r
448\r
449\r
450\r
451\r
452\r
453\r
454\r
455\r
456\r
457\r
458\r
459\r
460\r
461\r
462\r
463\r
464\r
465\r
466\r
467\r
468\r
469\r
470\r
471\r
472\r
473\r
474\r
475\r
476
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
482 @@ -1,136 +1,395 @@
483  /*\r
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
486   *\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
490   */\r
491\r
492 +\r
493  module nemo-intent {\r
494 -       yang-version 1; \r
495 -       namespace "urn:opendaylight:params:xml:ns:yang:nemo:intent";    \r
496 -       prefix "nemo-intent";\r
497 -       \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
502 -       \r
503 -       revision "2015-06-29" {\r
504 +    yang-version 1;\r
505 +\r
506 +    namespace "urn:opendaylight:params:xml:ns:yang:nemo:intent";\r
507 +    prefix "nemo-intent";\r
508 +\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
513 +\r
514 +    revision "2015-10-10" {\r
515          description\r
516              "Initial revision.";\r
517      }\r
518 -               \r
519 -       grouping intent-instance {\r
520 -               description "";\r
521 -               leaf intent-id {\r
522 -                       description "A unique ID for the intent";\r
523 -                       type nemo-common:intent-id;                     \r
524 -                       mandatory true;\r
525 -               }       \r
526 -               leaf intent-name {\r
527 -                       description "A user-visible name for the intent";\r
528 -                       type nemo-common:intent-name;\r
529 -               }       \r
530 -               container objects {\r
531 -                       description "";\r
532 -                       list node {\r
533 -                               key "node-id";\r
534 -                               uses nemo-object:node-instance;\r
535 -                       }                       \r
536 -                       list connection {\r
537 -                               key "connection-id";\r
538 -                               uses nemo-object:connection-instance;\r
539 -                       }                               \r
540 -                       list flow {\r
541 -                               key "flow-id";\r
542 -                               uses nemo-object:flow-instance;\r
543 -                       }                                                       \r
544 -               }\r
545 -               \r
546 -               container operation {\r
547 -                       leaf apply-on-object {\r
548 -                               type nemo-common:object-id;\r
549 -                               mandatory true;\r
550 -                       }               \r
551 -                       leaf priority{\r
552 -                               type int64;\r
553 -                               default 1;\r
554 -                       }\r
555 -                       uses nemo-operation:condition-instance;\r
556 -                       uses nemo-operation:action-instance;\r
557 -                       uses nemo-operation:constraint-instance;                        \r
558 -               }\r
559 -               \r
560 -               container result{\r
561 -                       leaf result-to-object {\r
562 -                               type nemo-common:object-id;\r
563 -                               mandatory true;\r
564 -                       }               \r
565 -                       leaf priority{\r
566 -                               type int64;\r
567 -                               default 1;\r
568 -                       }\r
569 -                       choice result-mode {\r
570 -                               mandatory true;\r
571 -                               case expected-case {\r
572 -                                       uses nemo-result:expected-instance;\r
573 -                               }\r
574 -                               case avoid-case{\r
575 -                                       uses nemo-result:avoid-instance;\r
576 -                               }               \r
577 -                       }                                               \r
578 -               }       \r
579 -               container contexts{\r
580 -                       list context {\r
581 -                               key "context-id";\r
582 -                               leaf context-id {\r
583 -                                       type nemo-common:context-id;\r
584 -                                       mandatory true;\r
585 -                               }\r
586 -                               leaf context-name{\r
587 -                                       type nemo-common:context-name;\r
588 -                                       mandatory true;\r
589 -                               }\r
590 -                       }                       \r
591 -               }\r
592 -       }\r
593 -               \r
594 -       container users {\r
595 -               description "The list of all known users";\r
596 -               list user {\r
597 -            description "";\r
598 +\r
599 +    grouping user-intent {\r
600 +        description\r
601 +            "User intent refers to a purpose in getting an ultimate result\r
602 +             or performing some specific operation on some objects.";\r
603 +\r
604 +        container objects {\r
605 +            description\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
610 +\r
611 +            list node {\r
612 +                key "node-id";\r
613 +                uses nemo-object:node-instance;\r
614 +            }\r
615 +\r
616 +            list connection {\r
617 +                key "connection-id";\r
618 +                uses nemo-object:connection-instance;\r
619 +            }\r
620 +\r
621 +            list flow {\r
622 +                key "flow-id";\r
623 +                uses nemo-object:flow-instance;\r
624 +            }\r
625 +        }\r
626 +\r
627 +        container operations {\r
628 +            description\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
631 +\r
632 +            list operation {\r
633 +                key "operation-id";\r
634 +                uses nemo-operation:operation-instance;\r
635 +            }\r
636 +        }\r
637 +\r
638 +        container results {\r
639 +            // TBD\r
640 +        }\r
641 +    }\r
642 +\r
643 +    container users {\r
644 +        description\r
645 +            "The list of all known users";\r
646 +\r
647 +        list user {\r
648 +            description\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
652 +\r
653              key "user-id";\r
654 -            leaf user-id {\r
655 -                description "A unique ID for the user";             \r
656 -                type nemo-common:user-id;\r
657 -                               mandatory true;\r
658 -            }\r
659 -            leaf user-name {\r
660 -                description "A user-visible name for the user";\r
661 -                type nemo-common:user-name;\r
662 -                               mandatory false;\r
663 -            }          \r
664 -                       list intent{\r
665 -                               key "intent-id";\r
666 -                               uses intent-instance;\r
667 -                               min-elements 1;\r
668 -                       }\r
669 -               }               \r
670 -       }\r
671 -       \r
672 -       rpc register-node-instance {\r
673 -           description "";\r
674 -               input {\r
675 -                       uses nemo-object:node-instance;\r
676 -               }\r
677 -       }\r
678 -       \r
679 -       rpc unregister-node-instance {\r
680 -           description "";\r
681 -               input {\r
682 -                       uses nemo-object:node-instance;\r
683 -               }\r
684 -       }\r
685 -               \r
686 -}
687 \ No newline at end of file
688 +            uses nemo-user:user-instance;\r
689 +            uses user-intent;\r
690 +        }\r
691 +    }\r
692 +\r
693 +    container query-condition-definitions {\r
694 +        description\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
698 +\r
699 +        list query-condition-definition {\r
700 +            description\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
704 +\r
705 +            key "query-condition-name query-intent-type";\r
706 +            leaf query-condition-name {\r
707 +                description\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
713 +                mandatory true;\r
714 +            }\r
715 +\r
716 +            leaf query-intent-type {\r
717 +                description\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
722 +                    enum node;\r
723 +                    enum connection;\r
724 +                    enum flow;\r
725 +                    enum operation;\r
726 +                    enum result;\r
727 +                }\r
728 +            }\r
729 +\r
730 +            leaf query-condition-value-type {\r
731 +                description\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
735 +                default string;\r
736 +                type enumeration {\r
737 +                    enum string {\r
738 +                        description\r
739 +                            "A string-valued target value.";\r
740 +                    }\r
741 +                    enum int {\r
742 +                        description\r
743 +                            "An integer-valued target value.";\r
744 +                    }\r
745 +                    enum range {\r
746 +                        description\r
747 +                            "An integer-range target value.";\r
748 +                    }\r
749 +                }\r
750 +            }\r
751 +\r
752 +            container query-condition-match-patterns {\r
753 +                description\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
761 +\r
762 +                leaf-list query-condition-match-pattern {\r
763 +                    type enumeration {\r
764 +                        enum less-than;\r
765 +                        enum not-less-than;\r
766 +                        enum equal;\r
767 +                        enum not-equal;\r
768 +                        enum greater-than;\r
769 +                        enum not-greater-than;\r
770 +                        enum between;\r
771 +                    }\r
772 +                }\r
773 +            }\r
774 +        }\r
775 +    }\r
776 +\r
777 +    grouping common-rpc-result {\r
778 +        description\r
779 +            "Common return result for all defined RPCs.";\r
780 +\r
781 +        leaf result-code {\r
782 +            description\r
783 +                "Result code which is convenient for processing in a program.";\r
784 +            type enumeration {\r
785 +                enum ok {\r
786 +                    description\r
787 +                        "The invoked RPC was executed successfully";\r
788 +                }\r
789 +                enum error {\r
790 +                    description\r
791 +                        "There's an error while executing the RPC";\r
792 +                }\r
793 +            }\r
794 +        }\r
795 +\r
796 +        leaf message {\r
797 +            description\r
798 +                "A human-readable message for an error or exception";\r
799 +            type string;\r
800 +        }\r
801 +    }\r
802 +\r
803 +    grouping query-condition-instance {\r
804 +        description\r
805 +            "A query condition instance generated according to\r
806 +             a specified query condition definition.";\r
807 +\r
808 +        leaf query-condition-id {\r
809 +            description\r
810 +                "A unique ID for a query condition instance.";\r
811 +            type nemo-common:query-condition-id;\r
812 +            mandatory true;\r
813 +        }\r
814 +\r
815 +        leaf query-condition-name {\r
816 +            description\r
817 +                "The name of the query condition definition.";\r
818 +            type nemo-common:query-condition-name;\r
819 +            mandatory true;\r
820 +        }\r
821 +\r
822 +        leaf query-intent-type {\r
823 +            description\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
827 +                enum node;\r
828 +                enum connection;\r
829 +                enum flow;\r
830 +                enum operation;\r
831 +                enum result;\r
832 +            }\r
833 +        }\r
834 +\r
835 +        leaf query-condition-match-pattern {\r
836 +            description\r
837 +                "The match pattern the condition instance will use.";\r
838 +            type enumeration {\r
839 +                enum less-than;\r
840 +                enum not-less-than;\r
841 +                enum equal;\r
842 +                enum not-equal;\r
843 +                enum greater-than;\r
844 +                enum not-greater-than;\r
845 +                enum between;\r
846 +            }\r
847 +        }\r
848 +\r
849 +        container query-condition-target-value {\r
850 +            description\r
851 +                "The target value used to compare with the attribute\r
852 +                 or property of the intents.";\r
853 +\r
854 +            leaf string-value {\r
855 +                type string;\r
856 +            }\r
857 +\r
858 +            leaf int-value {\r
859 +                type int64;\r
860 +            }\r
861 +\r
862 +            container range-value {\r
863 +                leaf min {\r
864 +                    type int64;\r
865 +                    mandatory true;\r
866 +                }\r
867 +\r
868 +                leaf max {\r
869 +                    type int64;\r
870 +                    mandatory true;\r
871 +                }\r
872 +            }\r
873 +        }\r
874 +    }\r
875 +\r
876 +    rpc register-user {\r
877 +        description\r
878 +            "Register a user to the user repository.";\r
879 +\r
880 +        input {\r
881 +            uses nemo-user:user-instance;\r
882 +        }\r
883 +\r
884 +        output {\r
885 +            uses common-rpc-result;\r
886 +        }\r
887 +    }\r
888 +\r
889 +    rpc begin-transaction {\r
890 +        description\r
891 +            "Begin a transaction for the user";\r
892 +\r
893 +        input {\r
894 +            uses nemo-user:user-instance;\r
895 +        }\r
896 +\r
897 +        output {\r
898 +            uses common-rpc-result;\r
899 +        }\r
900 +    }\r
901 +\r
902 +    rpc end-transaction {\r
903 +        description\r
904 +            "Commit the user's current transaction";\r
905 +\r
906 +        input {\r
907 +            uses nemo-user:user-instance;\r
908 +        }\r
909 +\r
910 +        output {\r
911 +            uses common-rpc-result;\r
912 +        }\r
913 +    }\r
914 +\r
915 +    rpc language-style-nemo-request {\r
916 +        description\r
917 +            "Create, update or delete an intent of a user through an NEMO statement";\r
918 +\r
919 +        input {\r
920 +            uses nemo-user:user-instance;\r
921 +\r
922 +            leaf nemo-statement {\r
923 +                type string;\r
924 +            }\r
925 +        }\r
926 +\r
927 +        output {\r
928 +            uses common-rpc-result;\r
929 +        }\r
930 +    }\r
931 +\r
932 +    rpc structure-style-nemo-update {\r
933 +        description\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
936 +\r
937 +        input {\r
938 +            uses nemo-user:user-instance;\r
939 +            uses user-intent;\r
940 +        }\r
941 +\r
942 +        output {\r
943 +            uses common-rpc-result;\r
944 +        }\r
945 +    }\r
946 +\r
947 +    rpc structure-style-nemo-delete {\r
948 +        description\r
949 +            "Delete some intents of a user from the user repository";\r
950 +\r
951 +        input {\r
952 +            uses nemo-user:user-instance;\r
953 +\r
954 +            container objects {\r
955 +                leaf-list node {\r
956 +                    type nemo-common:node-id;\r
957 +                }\r
958 +\r
959 +                leaf-list connection {\r
960 +                    type nemo-common:connection-id;\r
961 +                }\r
962 +\r
963 +                leaf-list flow {\r
964 +                    type nemo-common:flow-id;\r
965 +                }\r
966 +            }\r
967 +\r
968 +            container operations {\r
969 +                leaf-list operation {\r
970 +                    type nemo-common:operation-id;\r
971 +                }\r
972 +            }\r
973 +\r
974 +            container results {\r
975 +                // TBD\r
976 +            }\r
977 +        }\r
978 +\r
979 +        output {\r
980 +            uses common-rpc-result;\r
981 +        }\r
982 +    }\r
983 +\r
984 +    rpc advanced-nemo-query {\r
985 +        description\r
986 +            "Query some intents of a user from the user repository\r
987 +             according to several advanced query conditions.";\r
988 +\r
989 +        input {\r
990 +            uses nemo-user:user-instance;\r
991 +\r
992 +            list query-condition {\r
993 +                key "query-condition-id";\r
994 +                uses query-condition-instance;\r
995 +            }\r
996 +        }\r
997 +\r
998 +        output {\r
999 +            uses common-rpc-result;\r
1000 +            uses user-intent;\r
1001 +        }\r
1002 +    }\r
1003 +}\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
1008 @@ -1,331 +1,405 @@
1009  /*\r
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
1012   *\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
1016   */\r
1017  \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
1022 -       \r
1023 -       import nemo-common {prefix nemo-common;}\r
1024 -       \r
1025 -       revision "2015-06-29" {\r
1026 +module nemo-object {\r
1027 +    yang-version 1;\r
1028 +\r
1029 +    namespace "urn:opendaylight:params:xml:ns:yang:nemo:object";\r
1030 +    prefix "nemo-object";\r
1031 +\r
1032 +    import nemo-common {prefix nemo-common;}\r
1033 +\r
1034 +    revision "2015-10-10" {\r
1035          description\r
1036              "Initial revision.";\r
1037      }\r
1038 -               \r
1039 -       grouping property-definition {  \r
1040 -               list property {\r
1041 -            description "";\r
1042 -            key "name";\r
1043 -            leaf name {\r
1044 -                description "A user-visible name for the property";\r
1045 +\r
1046 +    grouping property-definitions {\r
1047 +        list property-definition {\r
1048 +            description\r
1049 +                "The property definitions for the type of node or connection.";\r
1050 +\r
1051 +            key "property-name";\r
1052 +            leaf property-name {\r
1053 +                description\r
1054 +                    "A user-visible and unique name for the property.";\r
1055                  type nemo-common:property-name;\r
1056                  mandatory true;\r
1057              }\r
1058 -            leaf value-type {\r
1059 -                description "The type of the property";\r
1060 +\r
1061 +            leaf property-value-type {\r
1062 +                description\r
1063 +                    "The type of the property value.";\r
1064                  default string;\r
1065                  type enumeration {\r
1066                      enum string {\r
1067 -                        description "A string-valued property";\r
1068 +                        description\r
1069 +                            "An string-valued property.";\r
1070                      }\r
1071                      enum int {\r
1072 -                        description "An integer-valued property";\r
1073 +                        description\r
1074 +                            "An integer-valued property.";\r
1075                      }\r
1076                      enum range {\r
1077 -                        description "An integer-range property";\r
1078 +                        description\r
1079 +                            "An integer-range property.";\r
1080                      }\r
1081                  }\r
1082              }\r
1083 +\r
1084              leaf is-required {\r
1085 -                description "Specify whether the property is\r
1086 -                             required for object.";\r
1087 +                description\r
1088 +                    "Specify whether the property is required for the object.";\r
1089                  default optional;\r
1090                  type enumeration {\r
1091                      enum required {\r
1092 -                        description "The property is required";\r
1093 +                        description\r
1094 +                            "The property is required";\r
1095                      }\r
1096                      enum optional {\r
1097 -                        description "The property is optional";\r
1098 +                        description\r
1099 +                            "The property is optional";\r
1100                      }\r
1101                  }\r
1102              }\r
1103 -        }                              \r
1104 -       }                               \r
1105 -       container node-definitions{\r
1106 -               list node-definition{\r
1107 -                       description "";\r
1108 -                       key "id";\r
1109 -                       leaf id {\r
1110 -                               description "A unique ID for a kind of node definition";\r
1111 -                           type nemo-common:node-definition-id;\r
1112 -                               mandatory true;\r
1113 -                   } \r
1114 -                       leaf node-type{\r
1115 -                               description "A user-readable description";\r
1116 -                               type nemo-common:node-definition-type;\r
1117 -                               mandatory true;                                         \r
1118 -                       }\r
1119 -                       uses property-definition;                               \r
1120 -               }               \r
1121 -       }               \r
1122 -       container connection-definitions{\r
1123 -               list connection-definition{\r
1124 -                       key "id";\r
1125 -                       leaf id {\r
1126 -                               description "A unique ID for a kind of connection definition";\r
1127 -                           type nemo-common:connection-definition-id;\r
1128 -                               mandatory true;\r
1129 -                   } \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
1134 -                       }\r
1135 -                       uses property-definition;                       \r
1136 -               }       \r
1137 -       }\r
1138 -       \r
1139 -       \r
1140 -       grouping match-item-definition{\r
1141 -       \r
1142 -               list match-item {\r
1143 -            description "";\r
1144 -            key "name";\r
1145 -            leaf name {\r
1146 -                description "A user-visible name for the match-item";\r
1147 +\r
1148 +            leaf is-read-only {\r
1149 +                description\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
1154 +                        description\r
1155 +                            "The property can be read and written.";\r
1156 +                    }\r
1157 +                    enum read-only {\r
1158 +                        description\r
1159 +                            "The property is read-only.";\r
1160 +                    }\r
1161 +                }\r
1162 +            }\r
1163 +        }\r
1164 +    }\r
1165 +\r
1166 +    container node-definitions {\r
1167 +        list node-definition {\r
1168 +            description\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
1171 +\r
1172 +            key "node-type";\r
1173 +            leaf node-type {\r
1174 +                description\r
1175 +                    "A user-visible and unique identifier for the node type.";\r
1176 +                type nemo-common:node-type;\r
1177 +                mandatory true;\r
1178 +            }\r
1179 +\r
1180 +            uses property-definitions;\r
1181 +        }\r
1182 +    }\r
1183 +\r
1184 +    container connection-definitions {\r
1185 +        list connection-definition {\r
1186 +            description\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
1189 +\r
1190 +            key "connection-type";\r
1191 +            leaf connection-type {\r
1192 +                description\r
1193 +                    "A user-visible and unique identifier for the connection type.";\r
1194 +                type nemo-common:connection-type;\r
1195 +                mandatory true;\r
1196 +            }\r
1197 +\r
1198 +            uses property-definitions;\r
1199 +        }\r
1200 +    }\r
1201 +\r
1202 +    container match-item-definitions {\r
1203 +        list match-item-definition {\r
1204 +            description\r
1205 +                "Define the match item which uses to match the flow.";\r
1206 +\r
1207 +            key "match-item-name";\r
1208 +            leaf match-item-name {\r
1209 +                description\r
1210 +                    "A user-visible and unique name for the match item.";\r
1211                  type nemo-common:match-item-name;\r
1212                  mandatory true;\r
1213              }\r
1214 -            leaf value-type {\r
1215 -                description "The type of the match item";\r
1216 +\r
1217 +            leaf match-item-value-type {\r
1218 +                description\r
1219 +                    "The value type of the match item.";\r
1220                  default string;\r
1221                  type enumeration {\r
1222                      enum string {\r
1223 -                        description "A string-valued match item";\r
1224 +                        description\r
1225 +                            "A string-valued match item.";\r
1226                      }\r
1227                      enum int {\r
1228 -                        description "An integer-valued match item";\r
1229 +                        description\r
1230 +                            "An integer-valued match item.";\r
1231                      }\r
1232                      enum range {\r
1233 -                        description "An integer-range match item";\r
1234 +                        description\r
1235 +                            "An integer-range match item.";\r
1236                      }\r
1237                  }\r
1238              }\r
1239 -            leaf is-required {\r
1240 -                description "Specify whether the match item is required \r
1241 -                                            for the flow.";\r
1242 -                default optional;\r
1243 -                type enumeration {\r
1244 -                    enum required {\r
1245 -                        description "The  match item is required";\r
1246 -                    }\r
1247 -                    enum optional {\r
1248 -                        description "The  match item is optional";\r
1249 -                    }\r
1250 +        }\r
1251 +    }\r
1252 +\r
1253 +    container flow-property-definitions {\r
1254 +        description\r
1255 +            "Contains the property definitions for the flow.";\r
1256 +\r
1257 +        uses property-definitions;\r
1258 +    }\r
1259 +\r
1260 +    grouping property-instance {\r
1261 +        description\r
1262 +            "The property instance and its associated metadata.";\r
1263 +\r
1264 +        leaf property-name {\r
1265 +            description\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
1269 +            mandatory true;\r
1270 +        }\r
1271 +\r
1272 +        container property-values {\r
1273 +            description\r
1274 +                "The value list of the property.";\r
1275 +\r
1276 +            list string-value {\r
1277 +                key "value order";\r
1278 +                leaf value {\r
1279 +                    type string;\r
1280 +                }\r
1281 +\r
1282 +                leaf order {\r
1283 +                    type uint32;\r
1284                  }\r
1285              }\r
1286 -        }                              \r
1287 -       }       \r
1288 -    container flow-definitions{\r
1289 -               list flow-definition{\r
1290 -                       key "id";\r
1291 -                       leaf id {\r
1292 -                               description "A unique ID for a kind of flow definition";\r
1293 -                           type nemo-common:flow-definition-id;\r
1294 -                               mandatory true;\r
1295 -                   } \r
1296 -                       leaf flow-type{\r
1297 -                               description "A user-readable description";\r
1298 -                               type nemo-common:flow-definition-type;\r
1299 -                               mandatory true;                                         \r
1300 -                       }\r
1301 -                       uses match-item-definition;                             \r
1302 -               }       \r
1303 -       }\r
1304 -       \r
1305 -       grouping node-property-instance{\r
1306 -               list property {\r
1307 -            key "name";\r
1308 -            leaf name {\r
1309 -                               type nemo-common:node-property-name;\r
1310 -                mandatory true;\r
1311 -            }\r
1312 -            leaf string-value {\r
1313 -                type string;\r
1314 -            }\r
1315 -            leaf int-value {\r
1316 -                type int64;\r
1317 -            }\r
1318 -            container range-value {\r
1319 -                leaf min {\r
1320 +\r
1321 +            list int-value {\r
1322 +                key "value order";\r
1323 +                leaf value {\r
1324                      type int64;\r
1325 -                    mandatory true;\r
1326                  }\r
1327 -                leaf max {\r
1328 -                    type int64;\r
1329 -                    mandatory true;\r
1330 +\r
1331 +                leaf order {\r
1332 +                    type uint32;\r
1333                  }\r
1334              }\r
1335 -        }      \r
1336 -       }                       \r
1337 -       grouping node-instance{\r
1338 -               description "";\r
1339 -               leaf node-id {\r
1340 -                       description "A unique ID for the node instance";\r
1341 -                       type nemo-common:node-instance-id;\r
1342 -                       mandatory true;\r
1343 -               }\r
1344 -               leaf node-name {\r
1345 -                       description\r
1346 -                               "A user-visible name for the node definition";\r
1347 -                       type nemo-common:node-instance-name;\r
1348 -               }\r
1349 -               leaf node-type {\r
1350 -                       type nemo-common:node-instance-type;\r
1351 -                       mandatory true;                 \r
1352 -               }\r
1353 -               container subnodes{                             \r
1354 -                       leaf-list  subnode-id{\r
1355 -                               type nemo-common:node-instance-id;                              \r
1356 -                       }                       \r
1357 -               }\r
1358 -               container property{\r
1359 -                       uses node-property-instance;                    \r
1360 -               }               \r
1361 -       }\r
1362 -       \r
1363 -       grouping connection-property-instance{\r
1364 -               list property {\r
1365 -            key "name";\r
1366 -            leaf name {\r
1367 -                               type nemo-common:connection-property-name;\r
1368 -                mandatory true;\r
1369 -            }\r
1370 -            leaf string-value {\r
1371 -                type string;\r
1372 -            }\r
1373 -            leaf int-value {\r
1374 -                type int64;\r
1375 -            }\r
1376 +\r
1377              container range-value {\r
1378                  leaf min {\r
1379                      type int64;\r
1380                      mandatory true;\r
1381                  }\r
1382 +\r
1383                  leaf max {\r
1384                      type int64;\r
1385                      mandatory true;\r
1386                  }\r
1387              }\r
1388 -        }      \r
1389 -       }                       \r
1390 -       grouping connection-instance {\r
1391 -               description "";\r
1392 -               leaf connection-id {\r
1393 -                       description "A unique ID for the connection instance";\r
1394 -                       type nemo-common:connection-instance-id;\r
1395 -                       mandatory true;\r
1396 -               }\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
1401 -               }\r
1402 -               leaf connection-type {\r
1403 -                       type nemo-common:connection-instance-type;\r
1404 -                       mandatory true;                 \r
1405 -               }\r
1406 -               container endnodes{\r
1407 -                       list one-end{\r
1408 -                               key "node-id";\r
1409 -                               leaf node-id{\r
1410 -                                       type nemo-common:node-instance-id;                                              \r
1411 -                               }\r
1412 -                               min-elements 1;\r
1413 -                       }                       \r
1414 -                       list the-other-end{\r
1415 -                               key "node-id";\r
1416 -                               leaf node-id{\r
1417 -                                       type nemo-common:node-instance-id;\r
1418 -                               }\r
1419 -                               min-elements 1;                         \r
1420 -                       }                       \r
1421 -               }\r
1422 -               container property{\r
1423 -                       uses connection-property-instance;                      \r
1424 -               }                                       \r
1425 -       }\r
1426 -               \r
1427 -       grouping match-item-instance{\r
1428 -               list match-item {\r
1429 -            key "name";\r
1430 -            leaf name {\r
1431 -                               type string;\r
1432 -                mandatory true;\r
1433 +        }\r
1434 +    }\r
1435 +\r
1436 +    grouping node-instance {\r
1437 +        description\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
1441 +\r
1442 +        leaf node-id {\r
1443 +            description\r
1444 +                "A unique ID for a node instance";\r
1445 +            type nemo-common:node-id;\r
1446 +            mandatory true;\r
1447 +        }\r
1448 +\r
1449 +        leaf node-name {\r
1450 +            description\r
1451 +                "A user-visible and unique name for a node instance.";\r
1452 +            type nemo-common:node-name;\r
1453 +            mandatory true;\r
1454 +        }\r
1455 +\r
1456 +        leaf node-type {\r
1457 +            description\r
1458 +                "A user-visible and unique type identifier for a node instance.";\r
1459 +            type nemo-common:node-type;\r
1460 +            mandatory true;\r
1461 +        }\r
1462 +\r
1463 +        list sub-node {\r
1464 +            description\r
1465 +                "Represents the sub-nodes which have been included\r
1466 +                 by the node instance logically.";\r
1467 +\r
1468 +            key "node-id";\r
1469 +            leaf node-id {\r
1470 +                description\r
1471 +                    "A unique ID for a node instance.";\r
1472 +                type nemo-common:node-id;\r
1473 +            }\r
1474 +\r
1475 +            leaf order {\r
1476 +                description\r
1477 +                    "Specify the order of the node in a sequence node list.";\r
1478 +                type uint32;\r
1479 +            }\r
1480 +        }\r
1481 +\r
1482 +        list property {\r
1483 +            description\r
1484 +                "The property list of a node instance.";\r
1485 +\r
1486 +            key "property-name";\r
1487 +            uses property-instance;\r
1488 +        }\r
1489 +    }\r
1490 +\r
1491 +    grouping connection-instance {\r
1492 +        description\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
1497 +\r
1498 +        leaf connection-id {\r
1499 +            description\r
1500 +                "A unique ID for a connection instance.";\r
1501 +            type nemo-common:connection-id;\r
1502 +            mandatory true;\r
1503 +        }\r
1504 +\r
1505 +        leaf connection-name {\r
1506 +            description\r
1507 +                "A user-visible and unique name for a connection instance.";\r
1508 +            type nemo-common:connection-name;\r
1509 +            mandatory true;\r
1510 +        }\r
1511 +\r
1512 +        leaf connection-type {\r
1513 +            description\r
1514 +                "A user-visible and unique type identifier for a connection instance.";\r
1515 +            type nemo-common:connection-type;\r
1516 +            mandatory true;\r
1517 +        }\r
1518 +\r
1519 +        list end-node {\r
1520 +            description\r
1521 +                "Represents the nodes which will be connected by connection.\r
1522 +                 At least two nodes in the list.";\r
1523 +\r
1524 +            key "node-id";\r
1525 +            leaf node-id {\r
1526 +                description\r
1527 +                    "A unique ID for a node instance.";\r
1528 +                type nemo-common:node-id;\r
1529 +            }\r
1530 +\r
1531 +            leaf order {\r
1532 +                description\r
1533 +                    "Specify the order of the node in a sequence node list";\r
1534 +                type uint32;\r
1535              }\r
1536 +\r
1537 +            min-elements 2;\r
1538 +        }\r
1539 +\r
1540 +        list property {\r
1541 +            description\r
1542 +                "The property list of a connection instance.";\r
1543 +\r
1544 +            key "property-name";\r
1545 +            uses property-instance;\r
1546 +        }\r
1547 +    }\r
1548 +\r
1549 +    grouping match-item-instance {\r
1550 +        description\r
1551 +            "Represents the match item and its metadata.";\r
1552 +\r
1553 +        leaf match-item-name {\r
1554 +            description\r
1555 +                "A name for a match item.";\r
1556 +            type nemo-common:match-item-name;\r
1557 +            mandatory true;\r
1558 +        }\r
1559 +\r
1560 +        container match-item-value {\r
1561 +            description\r
1562 +                "The value of a match item.";\r
1563 +\r
1564              leaf string-value {\r
1565                  type string;\r
1566              }\r
1567 +\r
1568              leaf int-value {\r
1569                  type int64;\r
1570              }\r
1571 +\r
1572              container range-value {\r
1573                  leaf min {\r
1574                      type int64;\r
1575                      mandatory true;\r
1576                  }\r
1577 +\r
1578                  leaf max {\r
1579                      type int64;\r
1580                      mandatory true;\r
1581                  }\r
1582              }\r
1583 -        }      \r
1584 -       }\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
1590 -                enum in {\r
1591 -                    description\r
1592 -                        "Applies to flow into provider node";\r
1593 -                }\r
1594 -                enum out {\r
1595 -                    description\r
1596 -                        "Applies to flow out of provider node";\r
1597 -                }\r
1598 -                enum bidirectional {\r
1599 -                    description\r
1600 -                        "Applies to flow in both directions";\r
1601 -                }\r
1602 -            }\r
1603          }\r
1604 -    }  \r
1605 -       grouping flow-instance{\r
1606 -               leaf flow-id {\r
1607 -                       description "A unique ID for the flow instance";\r
1608 -                       type nemo-common:flow-instance-id;\r
1609 -                       mandatory true;\r
1610 -               }\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
1615 -               }\r
1616 -               leaf flow-type {\r
1617 -                       type nemo-common:flow-instance-type;\r
1618 -                       mandatory true;                 \r
1619 -               }\r
1620 -               container match {\r
1621 -                       uses has-direction;\r
1622 -                       uses match-item-instance;\r
1623 -               }\r
1624 -       }       \r
1625 -       \r
1626 +    }\r
1627 +\r
1628 +    grouping flow-instance {\r
1629 +        description\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
1633 +\r
1634 +        leaf flow-id {\r
1635 +            description\r
1636 +                "A unique ID for a flow instance.";\r
1637 +            type nemo-common:flow-id;\r
1638 +            mandatory true;\r
1639 +        }\r
1640 +\r
1641 +        leaf flow-name {\r
1642 +            description\r
1643 +                "A user-visible and unique name for a flow instance.";\r
1644 +            type nemo-common:flow-name;\r
1645 +            mandatory true;\r
1646 +        }\r
1647 +\r
1648 +        list match-item {\r
1649 +            description\r
1650 +                "The match item list of a flow instance.";\r
1651 +\r
1652 +            key "match-item-name";\r
1653 +            uses match-item-instance;\r
1654 +        }\r
1655 +\r
1656 +        list property {\r
1657 +            description\r
1658 +                "The property list of a flow instance.";\r
1659 +\r
1660 +            key "property-name";\r
1661 +            uses property-instance;\r
1662 +        }\r
1663 +    }\r
1664  }\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
1669 @@ -1,5 +1,5 @@
1670  /*\r
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
1673   *\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
1676 @@ -7,201 +7,288 @@
1677   */\r
1678  \r
1679  module nemo-operation {\r
1680 +    yang-version 1;\r
1681  \r
1682 -       yang-version 1; \r
1683 -       namespace "urn:opendaylight:params:xml:ns:yang:nemo:operation"; \r
1684 -       prefix "nemo-operation";\r
1685 -       \r
1686 -       import nemo-common {prefix nemo-common;}\r
1687 -       \r
1688 -       revision "2015-06-29" {\r
1689 +    namespace "urn:opendaylight:params:xml:ns:yang:nemo:operation";\r
1690 +    prefix "nemo-operation";\r
1691 +\r
1692 +    import nemo-common {prefix nemo-common;}\r
1693 +\r
1694 +    revision "2015-10-10" {\r
1695          description\r
1696              "Initial revision.";\r
1697      }\r
1698 -       \r
1699 -       grouping parameter-definition {\r
1700 -               leaf name {\r
1701 -                       description "A user-visible name for parameter";\r
1702 -                       type nemo-common:parameter-name;\r
1703 -                       mandatory true;\r
1704 -               }       \r
1705 -               leaf type {\r
1706 -                       description "The type of the parameter";\r
1707 -                       default string;\r
1708 -                       type enumeration {\r
1709 -                               enum string {\r
1710 -                                       description "A string-valued parameter";\r
1711 -                               }\r
1712 -                               enum int {\r
1713 -                                       description "An integer-valued parameter";\r
1714 -                               }\r
1715 -                               enum range {\r
1716 -                                       description "An integer-range parameter";\r
1717 -                               }\r
1718 -                       }\r
1719 -               }       \r
1720 -               leaf is-required {\r
1721 -                       description "Specify whether the parameter is required ";\r
1722 -                       default optional;\r
1723 -                       type enumeration {\r
1724 -                               enum required {\r
1725 -                                       description "The parameter is required";\r
1726 -                               }\r
1727 -                               enum optional {\r
1728 -                                       description "The parameter is optional";\r
1729 -                               }\r
1730 -                       }\r
1731 -               }       \r
1732 -       }\r
1733 -       \r
1734 -       \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
1742 -                   }                   \r
1743 -               list data {\r
1744 -                               description\r
1745 -                                       "data for the action that can be passed in.";\r
1746 -                               key "name";                     \r
1747 -                               uses parameter-definition;              \r
1748 -                   }           \r
1749 -           }\r
1750 -       }       \r
1751 -       grouping action-parameter-instance{\r
1752 -               leaf data-name {\r
1753 -                       type nemo-common:data-name;\r
1754 -                       mandatory true;\r
1755 -               }\r
1756 -               leaf string-value {\r
1757 -                       type string;\r
1758 -               }\r
1759 -               leaf int-value {\r
1760 -                       type int64;\r
1761 -               }\r
1762 -               container range-value {\r
1763 -                       leaf min {\r
1764 -                               type int64;\r
1765 -                               mandatory true;\r
1766 -                       }\r
1767 -                       leaf max {\r
1768 -                               type int64;\r
1769 -                               mandatory true;\r
1770 -                       }\r
1771 -               }       \r
1772 -       }       \r
1773 -       grouping action-instance{\r
1774 -               description " ";\r
1775 -               leaf action-name{\r
1776 -                       type nemo-common:action-instance-name;\r
1777 -                       mandatory true;\r
1778 -               }\r
1779 -               list data {\r
1780 -                       key "data-name";\r
1781 -                       uses action-parameter-instance;                 \r
1782 -               }               \r
1783 -       }\r
1784 -               \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
1791 -                       }\r
1792 -                       list condition-parameter{\r
1793 -                               key "name";\r
1794 -                               uses parameter-definition;\r
1795 -                               min-elements 1;\r
1796 -                       }       \r
1797 -               }\r
1798 -       }\r
1799 -       grouping conditon-parameter-instance{\r
1800 -               leaf parameter-name {\r
1801 -                   type nemo-common:condition-parameter-name;\r
1802 -                       mandatory true;\r
1803 -               }\r
1804 -               leaf string-value {\r
1805 -                       type string;\r
1806 -               }\r
1807 -               leaf int-value {\r
1808 -                       type int64;\r
1809 -               }\r
1810 -               container range-value {\r
1811 -                       leaf min {\r
1812 -                               type int64;\r
1813 -                               mandatory true;\r
1814 -                       }\r
1815 -                       leaf max {\r
1816 -                               type int64;\r
1817 -                               mandatory true;\r
1818 -                       }\r
1819 -               }       \r
1820 -       }       \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
1826 -               }       \r
1827 -               list condition-parameter{\r
1828 -                       key "parameter-name";\r
1829 -                       uses conditon-parameter-instance;\r
1830 -                       min-elements 1;\r
1831 -               }\r
1832 -       }\r
1833 -       \r
1834 -       \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
1841 -                       }\r
1842 -                       list constraint-parameter{\r
1843 -                               key "name";\r
1844 -                               uses parameter-definition;\r
1845 -                               min-elements 1;\r
1846 -                       }       \r
1847 -               }\r
1848 -       }\r
1849 -       grouping constraint-parameter-instance{\r
1850 -               leaf parameter-name {\r
1851 -                       type nemo-common:constraint-parameter-name;\r
1852 -                       mandatory true;\r
1853 -               }\r
1854 -               leaf string-value {\r
1855 -                       type string;\r
1856 -               }\r
1857 -               leaf int-value {\r
1858 -                       type int64;\r
1859 -               }\r
1860 -               container range-value {\r
1861 -                       leaf min {\r
1862 -                               type int64;\r
1863 -                               mandatory true;\r
1864 -                       }\r
1865 -                       leaf max {\r
1866 -                               type int64;\r
1867 -                               mandatory true;\r
1868 -                       }\r
1869 -               }       \r
1870 -       }       \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
1876 -               }       \r
1877 -               list constraint-parameter{\r
1878 -                       key "parameter-name";\r
1879 -                       uses constraint-parameter-instance;\r
1880 -                       min-elements 1;\r
1881 -               }\r
1882 -       }\r
1883 -       \r
1884 -}
1885 \ No newline at end of file
1886 +\r
1887 +    container condition-parameter-definitions {\r
1888 +        list condition-parameter-definition {\r
1889 +            description\r
1890 +                "Defines the condition parameter with its metadata.";\r
1891 +\r
1892 +            key "parameter-name";\r
1893 +            leaf parameter-name {\r
1894 +                description\r
1895 +                    "A name for the condition parameter.";\r
1896 +                type nemo-common:parameter-name;\r
1897 +                mandatory true;\r
1898 +            }\r
1899 +\r
1900 +            leaf parameter-value-type {\r
1901 +                description\r
1902 +                    "A type of value for the condition parameter.";\r
1903 +                type enumeration {\r
1904 +                    enum string {\r
1905 +                        description\r
1906 +                            "A string-valued parameter.";\r
1907 +                    }\r
1908 +                    enum int {\r
1909 +                        description\r
1910 +                            "An integer-valued parameter.";\r
1911 +                    }\r
1912 +                    enum range {\r
1913 +                        description\r
1914 +                            "An integer-range parameter.";\r
1915 +                    }\r
1916 +                }\r
1917 +            }\r
1918 +\r
1919 +            container parameter-match-patterns {\r
1920 +                description\r
1921 +                    "Defines the match patterns of the condition parameter.";\r
1922 +\r
1923 +                leaf-list parameter-match-pattern {\r
1924 +                    type enumeration {\r
1925 +                        enum less-than;\r
1926 +                        enum not-less-than;\r
1927 +                        enum equal;\r
1928 +                        enum not-equal;\r
1929 +                        enum greater-than;\r
1930 +                        enum not-greater-than;\r
1931 +                        enum between;\r
1932 +                        enum periodical;\r
1933 +                    }\r
1934 +                }\r
1935 +            }\r
1936 +        }\r
1937 +    }\r
1938 +\r
1939 +    container action-definitions {\r
1940 +        list action-definition {\r
1941 +            description\r
1942 +                "Defines the actions which will be supported by the NEMO project.";\r
1943 +\r
1944 +            key "action-name";\r
1945 +            leaf action-name {\r
1946 +                description\r
1947 +                    "A name for the action definition.";\r
1948 +                type nemo-common:action-name;\r
1949 +                mandatory true;\r
1950 +            }\r
1951 +\r
1952 +            leaf parameter-value-type {\r
1953 +                description\r
1954 +                    "The type of the action parameter.";\r
1955 +                default string;\r
1956 +                type enumeration {\r
1957 +                    enum string {\r
1958 +                        description\r
1959 +                            "A string-valued parameter.";\r
1960 +                    }\r
1961 +                    enum int {\r
1962 +                        description\r
1963 +                            "An integer-valued parameter.";\r
1964 +                    }\r
1965 +                    enum range {\r
1966 +                        description\r
1967 +                            "An integer-range parameter.";\r
1968 +                    }\r
1969 +                }\r
1970 +            }\r
1971 +        }\r
1972 +    }\r
1973 +\r
1974 +    grouping condition-instance {\r
1975 +        description\r
1976 +            "Specific a instance of condition whose metadata has been filled in.";\r
1977 +\r
1978 +        list condition-segment {\r
1979 +            description\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
1982 +\r
1983 +            key "condition-segment-id";\r
1984 +            leaf condition-segment-id {\r
1985 +                description\r
1986 +                    "A unique ID for a condition segment.";\r
1987 +                type nemo-common:condition-segment-id;\r
1988 +                mandatory true;\r
1989 +            }\r
1990 +\r
1991 +            leaf condition-parameter-name {\r
1992 +                description\r
1993 +                    "A name for a conditon parameter.";\r
1994 +                type nemo-common:condition-parameter-name;\r
1995 +            }\r
1996 +\r
1997 +            leaf condition-parameter-match-pattern {\r
1998 +                description\r
1999 +                    "The operator for the condition parameter and it's target value.";\r
2000 +                type enumeration {\r
2001 +                    enum less-than;\r
2002 +                    enum not-less-than;\r
2003 +                    enum equal;\r
2004 +                    enum not-equal;\r
2005 +                    enum greater-than;\r
2006 +                    enum not-greater-than;\r
2007 +                    enum between;\r
2008 +                    enum periodical;\r
2009 +                }\r
2010 +            }\r
2011 +\r
2012 +            container condition-parameter-target-value {\r
2013 +                description\r
2014 +                    "The target value of condition parameter.";\r
2015 +\r
2016 +                leaf string-value {\r
2017 +                    type string;\r
2018 +                }\r
2019 +\r
2020 +                leaf int-value {\r
2021 +                    type int64;\r
2022 +                }\r
2023 +\r
2024 +                container range-value {\r
2025 +                    leaf min {\r
2026 +                        type int64;\r
2027 +                        mandatory true;\r
2028 +                    }\r
2029 +\r
2030 +                    leaf max {\r
2031 +                        type int64;\r
2032 +                        mandatory true;\r
2033 +                    }\r
2034 +                }\r
2035 +            }\r
2036 +\r
2037 +            leaf precursor-relation-operator {\r
2038 +                description\r
2039 +                    "The logical operator between current segment and the next segment.";\r
2040 +                type enumeration {\r
2041 +                    enum none;\r
2042 +                    enum and;\r
2043 +                    enum or;\r
2044 +                    enum not;\r
2045 +                }\r
2046 +            }\r
2047 +\r
2048 +            leaf order {\r
2049 +                description\r
2050 +                    "The order of the segment in the whole condition entity.";\r
2051 +                type uint32;\r
2052 +            }\r
2053 +        }\r
2054 +    }\r
2055 +\r
2056 +    grouping action-instance {\r
2057 +        description\r
2058 +            "Specific a action instance whose metadata has been filled in.";\r
2059 +\r
2060 +        leaf action-name {\r
2061 +            description\r
2062 +                "A name for a action instance.";\r
2063 +            type nemo-common:action-name;\r
2064 +            mandatory true;\r
2065 +        }\r
2066 +\r
2067 +        container parameter-values {\r
2068 +            description\r
2069 +                "The parameter value list of an action.";\r
2070 +\r
2071 +            list string-value {\r
2072 +                key "value order";\r
2073 +                leaf value {\r
2074 +                    type string;\r
2075 +                }\r
2076 +\r
2077 +                leaf order {\r
2078 +                    type uint32;\r
2079 +                }\r
2080 +            }\r
2081 +\r
2082 +            list int-value {\r
2083 +                key "value order";\r
2084 +                leaf value {\r
2085 +                    type int64;\r
2086 +                }\r
2087 +\r
2088 +                leaf order {\r
2089 +                    type uint32;\r
2090 +                }\r
2091 +            }\r
2092 +\r
2093 +            container range-value {\r
2094 +                leaf min {\r
2095 +                    type int64;\r
2096 +                    mandatory true;\r
2097 +                }\r
2098 +\r
2099 +                leaf max {\r
2100 +                    type int64;\r
2101 +                    mandatory true;\r
2102 +                }\r
2103 +            }\r
2104 +        }\r
2105 +    }\r
2106 +\r
2107 +    grouping operation-instance {\r
2108 +        description\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
2112 +\r
2113 +        leaf operation-id {\r
2114 +            description\r
2115 +                "A unique ID for a operation instance.";\r
2116 +            type nemo-common:operation-id;\r
2117 +            mandatory true;\r
2118 +        }\r
2119 +\r
2120 +        leaf operation-name {\r
2121 +            description\r
2122 +                "A user-visible and unique name for a operation instance.";\r
2123 +            type nemo-common:operation-name;\r
2124 +            mandatory true;\r
2125 +        }\r
2126 +\r
2127 +        leaf priority {\r
2128 +            description\r
2129 +                "Defines the priority of a operation instance.";\r
2130 +            type uint32;\r
2131 +            default 0;\r
2132 +        }\r
2133 +\r
2134 +        leaf target-object {\r
2135 +            description\r
2136 +                "The target object which the operation instance will apply to.";\r
2137 +            type nemo-common:object-id;\r
2138 +            mandatory true;\r
2139 +        }\r
2140 +\r
2141 +        uses condition-instance;\r
2142 +\r
2143 +        list action {\r
2144 +            description\r
2145 +                "The action list for the operation instance.";\r
2146 +\r
2147 +            key "action-name";\r
2148 +            uses action-instance;\r
2149 +\r
2150 +            leaf order {\r
2151 +                description\r
2152 +                    "The order of an action instance in execution sequence.";\r
2153 +                type uint32;\r
2154 +            }\r
2155 +\r
2156 +            min-elements 1;\r
2157 +        }\r
2158 +    }\r
2159 +}\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
2164 @@ -1,58 +1,23 @@
2165  /*\r
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
2168   *\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
2172   */\r
2173  \r
2174 -module nemo-result{\r
2175 +module nemo-result {\r
2176 +    yang-version 1;\r
2177  \r
2178 -       yang-version 1; \r
2179 -       namespace "urn:opendaylight:params:xml:ns:yang:nemo:result";    \r
2180 -       prefix "nemo-result";\r
2181 -       \r
2182 -       import nemo-common {prefix nemo-common;}\r
2183 -       \r
2184 -       revision "2015-06-29" {\r
2185 +    namespace "urn:opendaylight:params:xml:ns:yang:nemo:result";\r
2186 +    prefix "nemo-result";\r
2187 +\r
2188 +    import nemo-common {prefix nemo-common;}\r
2189 +\r
2190 +    revision "2015-10-10" {\r
2191          description\r
2192              "Initial revision.";\r
2193      }\r
2194 -       \r
2195 -       container expected-definitons{\r
2196 -       \r
2197 -       }       \r
2198 -       \r
2199 -       grouping expected-instance {\r
2200 -               leaf expected-id {\r
2201 -                       type nemo-common:expected-instance-id;\r
2202 -                       mandatory true;\r
2203 -               }\r
2204 -               leaf expected-name{\r
2205 -                       type nemo-common:expected-instance-name;\r
2206 -                       mandatory false;\r
2207 -               }\r
2208 -               leaf expected-description {\r
2209 -                       type nemo-common:description;\r
2210 -               }               \r
2211 -       }\r
2212 -       \r
2213 -       container avoid-definitons{\r
2214 -       \r
2215 -       }\r
2216  \r
2217 -       grouping avoid-instance {\r
2218 -               leaf avoid-id {\r
2219 -                       type nemo-common:avoid-instance-id;\r
2220 -                       mandatory true;\r
2221 -               }\r
2222 -               leaf avoid-name{\r
2223 -                       type nemo-common:avoid-instance-name;\r
2224 -                       mandatory false;\r
2225 -               }\r
2226 -               leaf avoid-description {\r
2227 -                       type nemo-common:description;\r
2228 -               }               \r
2229 -       }\r
2230 -       \r
2231 -}
2232 \ No newline at end of file
2233 +    // TBD\r
2234 +}\r
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
2240    </prerequisites>
2241  
2242    <properties>
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>
2249    </properties>
2250  
2251    <dependencyManagement>
2252 @@ -44,7 +45,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2253        <dependency>
2254          <groupId>org.opendaylight.controller</groupId>
2255          <artifactId>mdsal-artifacts</artifactId>
2256 -        <version>${controller.mdsal.version}</version>
2257 +        <version>${mdsal.version}</version>
2258          <type>pom</type>
2259          <scope>import</scope>
2260        </dependency>
2261 @@ -97,6 +98,22 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2262        <type>xml</type>
2263        <scope>runtime</scope>
2264      </dependency>
2265 +       
2266 +       <dependency>
2267 +      <groupId>org.opendaylight.openflowplugin</groupId>
2268 +      <artifactId>features-openflowplugin</artifactId>
2269 +         <version>${openflowplugin.version}</version>
2270 +      <classifier>features</classifier>
2271 +      <type>xml</type>
2272 +    </dependency>
2273 +    <dependency>
2274 +      <groupId>org.opendaylight.openflowplugin</groupId>
2275 +      <artifactId>features-openflowplugin-extension</artifactId>
2276 +      <version>${openflowplugin.version}</version>
2277 +      <classifier>features</classifier>
2278 +      <type>xml</type>
2279 +    </dependency>
2280 +       
2281      <dependency>
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
2285      </dependency>
2286      <dependency>
2287        <groupId>${project.groupId}</groupId>
2288 +      <artifactId>nemo-impl</artifactId>
2289 +      <version>${project.version}</version>
2290 +      <classifier>config</classifier>
2291 +      <type>xml</type>
2292 +    </dependency>
2293 +    <dependency>
2294 +      <groupId>${project.groupId}</groupId>
2295        <artifactId>openflow-renderer</artifactId>
2296        <version>${project.version}</version>
2297      </dependency>
2298 @@ -121,6 +145,13 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2299      </dependency>
2300      <dependency>
2301        <groupId>${project.groupId}</groupId>
2302 +      <artifactId>openflow-renderer</artifactId>
2303 +      <version>${project.version}</version>
2304 +      <classifier>resource</classifier>
2305 +      <type>json</type>
2306 +    </dependency>
2307 +    <dependency>
2308 +      <groupId>${project.groupId}</groupId>
2309        <artifactId>nemo-ui</artifactId>
2310        <version>${project.version}</version>
2311      </dependency>
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
2329    </feature>\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
2336    </feature>\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
2344    </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
2354 +  </feature>\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
2357    </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>
2366  
2367    <parent>
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>
2374      <relativePath />
2375    </parent>
2376  
2377 @@ -24,15 +24,49 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2378  
2379    <properties>
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>
2383    </properties>
2384  
2385    <dependencies>
2386      <dependency>
2387 +      <groupId>org.opendaylight.mdsal.model</groupId>
2388 +      <artifactId>ietf-inet-types</artifactId>
2389 +    </dependency>
2390 +    <dependency>
2391 +      <groupId>org.opendaylight.mdsal.model</groupId>
2392 +      <artifactId>ietf-yang-types</artifactId>
2393 +    </dependency>
2394 +    <dependency>
2395        <groupId>${project.groupId}</groupId>
2396        <artifactId>nemo-api</artifactId>
2397        <version>${project.version}</version>
2398      </dependency>
2399      <dependency>
2400 +      <groupId>net.sourceforge.collections</groupId>
2401 +      <artifactId>collections-generic</artifactId>
2402 +      <version>4.01</version>
2403 +    </dependency>
2404 +    <dependency>
2405 +      <groupId>net.sf.jung</groupId>
2406 +      <artifactId>jung-api</artifactId>
2407 +      <version>2.0.1</version>
2408 +    </dependency>
2409 +    <dependency>
2410 +      <groupId>net.sf.jung</groupId>
2411 +      <artifactId>jung-graph-impl</artifactId>
2412 +      <version>2.0.1</version>
2413 +    </dependency>
2414 +    <dependency>
2415 +      <groupId>net.sf.jung</groupId>
2416 +      <artifactId>jung-algorithms</artifactId>
2417 +      <version>2.0.1</version>
2418 +    </dependency>
2419 +    <dependency>
2420 +      <groupId>com.google.guava</groupId>
2421 +      <artifactId>guava</artifactId>
2422 +    </dependency>
2423 +    <dependency>
2424        <groupId>junit</groupId>
2425        <artifactId>junit</artifactId>
2426      </dependency>
2427 @@ -59,26 +93,101 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2428      </pluginManagement>
2429      <plugins>
2430        <plugin>
2431 -        <groupId>org.jacoco</groupId>
2432 -        <artifactId>jacoco-maven-plugin</artifactId>
2433 +        <groupId>org.opendaylight.yangtools</groupId>
2434 +        <artifactId>yang-maven-plugin</artifactId>
2435 +        <executions>
2436 +          <execution>
2437 +            <goals>
2438 +              <goal>generate-sources</goal>
2439 +            </goals>
2440 +            <configuration>
2441 +              <yangFilesRootDir>src/main/yang</yangFilesRootDir>
2442 +              <codeGenerators>
2443 +                <generator>
2444 +                  <codeGeneratorClass>
2445 +                    org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl
2446 +                  </codeGeneratorClass>
2447 +                  <outputBaseDir>
2448 +                    ${salGeneratorPath}
2449 +                  </outputBaseDir>
2450 +                </generator>
2451 +              </codeGenerators>
2452 +              <inspectDependencies>true</inspectDependencies>
2453 +            </configuration>
2454 +          </execution>
2455 +        </executions>
2456 +        <dependencies>
2457 +          <dependency>
2458 +            <groupId>org.opendaylight.mdsal</groupId>
2459 +            <artifactId>maven-sal-api-gen-plugin</artifactId>
2460 +            <version>${yangtools.version}</version>
2461 +            <type>jar</type>
2462 +          </dependency>
2463 +        </dependencies>
2464 +      </plugin>
2465 +      <plugin>
2466 +        <groupId>org.apache.felix</groupId>
2467 +        <artifactId>maven-bundle-plugin</artifactId>
2468 +        <extensions>true</extensions>
2469          <configuration>
2470 -          <includes>
2471 -            <include>org.opendaylight.nemo.*</include>
2472 -          </includes>
2473 +          <instructions>
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>
2484 +          </instructions>
2485 +          <manifestLocation>${project.build.outputDirectory}/META-INF</manifestLocation>
2486          </configuration>
2487 +      </plugin>
2488 +      <plugin>
2489 +        <groupId>org.codehaus.mojo</groupId>
2490 +        <artifactId>build-helper-maven-plugin</artifactId>
2491 +        <executions>
2492 +          <execution>
2493 +            <id>attach-artifacts</id>
2494 +            <goals>
2495 +              <goal>attach-artifact</goal>
2496 +            </goals>
2497 +            <phase>package</phase>
2498 +            <configuration>
2499 +              <artifacts>
2500 +                <artifact>
2501 +                  <file>${project.build.directory}/classes/etc/opendaylight/karaf/config.xml</file>
2502 +                  <type>xml</type>
2503 +                  <classifier>config</classifier>
2504 +                </artifact>
2505 +              </artifacts>
2506 +            </configuration>
2507 +          </execution>
2508 +        </executions>
2509 +      </plugin>
2510 +      <plugin>
2511 +        <groupId>org.jacoco</groupId>
2512 +        <artifactId>jacoco-maven-plugin</artifactId>
2513          <executions>
2514            <execution>
2515 -            <id>pre-test</id>
2516 +            <id>pre-unit-test</id>
2517              <goals>
2518                <goal>prepare-agent</goal>
2519              </goals>
2520 +            <configuration>
2521 +              <destFile>${sonar.jacoco.reportPath}</destFile>
2522 +            </configuration>
2523            </execution>
2524            <execution>
2525 -            <id>post-test</id>
2526 +            <id>post-unit-test</id>
2527              <goals>
2528                <goal>report</goal>
2529              </goals>
2530 -            <phase>test</phase>
2531 +            <configuration>
2532 +              <dataFile>${sonar.jacoco.reportPath}</dataFile>
2533 +            </configuration>
2534            </execution>
2535          </executions>
2536        </plugin>
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
2548    </prerequisites>
2549  
2550    <properties>
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>
2557    </properties>
2558  
2559    <dependencyManagement>
2560 @@ -61,14 +57,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2561        <scope>runtime</scope>
2562      </dependency>
2563      <dependency>
2564 -      <groupId>org.opendaylight.controller</groupId>
2565 -      <artifactId>features-adsal</artifactId>
2566 -      <classifier>features</classifier>
2567 -      <version>${feature.adsal.version}</version>
2568 -      <type>xml</type>
2569 -      <scope>runtime</scope>
2570 -    </dependency>
2571 -    <dependency>
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
2580  
2581    <properties>
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>
2587    </properties>
2588  
2589    <dependencies>
2590 +    <!-- model dependencies -->
2591 +    <dependency>
2592 +      <groupId>org.opendaylight.mdsal.model</groupId>
2593 +      <artifactId>yang-ext</artifactId>
2594 +    </dependency>
2595 +    <!-- project specific dependencies -->
2596 +    <dependency>
2597 +      <groupId>org.opendaylight.openflowplugin</groupId>
2598 +      <artifactId>openflowplugin-extension-nicira</artifactId>
2599 +      <version>${openflowplugin.version}</version>
2600 +    </dependency>
2601 +    <dependency>
2602 +      <groupId>org.opendaylight.controller</groupId>
2603 +      <artifactId>liblldp</artifactId>
2604 +      <version>${liblldp.version}</version>
2605 +    </dependency>
2606 +    <dependency>
2607 +      <groupId>commons-net</groupId>
2608 +      <artifactId>commons-net</artifactId>
2609 +    </dependency>
2610      <dependency>
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>
2615      </dependency>
2616      <dependency>
2617 +      <groupId>org.mockito</groupId>
2618 +      <artifactId>mockito-all</artifactId>
2619 +      <scope>test</scope>
2620 +    </dependency>
2621 +    <dependency>
2622        <groupId>junit</groupId>
2623        <artifactId>junit</artifactId>
2624      </dependency>
2625 @@ -47,6 +76,18 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2626        <scope>test</scope>
2627      </dependency>
2628      <dependency>
2629 +      <groupId>com.fasterxml.jackson.core</groupId>
2630 +      <artifactId>jackson-core</artifactId>
2631 +    </dependency>
2632 +    <dependency>
2633 +      <groupId>com.fasterxml.jackson.core</groupId>
2634 +      <artifactId>jackson-databind</artifactId>
2635 +    </dependency>
2636 +    <dependency>
2637 +      <groupId>com.fasterxml.jackson.core</groupId>
2638 +      <artifactId>jackson-annotations</artifactId>
2639 +    </dependency>
2640 +    <dependency>
2641        <groupId>org.codehaus.jettison</groupId>
2642        <artifactId>jettison</artifactId>
2643      </dependency>
2644 @@ -64,6 +105,19 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2645      </pluginManagement>
2646      <plugins>
2647        <plugin>
2648 +        <groupId>org.apache.felix</groupId>
2649 +        <artifactId>maven-bundle-plugin</artifactId>
2650 +        <configuration>
2651 +          <instructions>
2652 +            <Export-Package>org.codehaus.jackson,
2653 +              org.codehaus.jackson.*,
2654 +              org.joda.time.*,
2655 +            </Export-Package>
2656 +            <Import-Package>*</Import-Package>
2657 +          </instructions>
2658 +        </configuration>
2659 +      </plugin>
2660 +      <plugin>
2661          <groupId>org.opendaylight.yangtools</groupId>
2662          <artifactId>yang-maven-plugin</artifactId>
2663          <executions>
2664 @@ -108,6 +162,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2665              <phase>package</phase>
2666              <configuration>
2667                <artifacts>
2668 +               <artifact>
2669 +                  <file>${project.build.directory}/classes/etc/nemo/resource.json</file>
2670 +                  <type>json</type>
2671 +                  <classifier>resource</classifier>
2672 +                </artifact>
2673                  <artifact>
2674                    <file>${project.build.directory}/classes/etc/opendaylight/karaf/config.xml</file>
2675                    <type>xml</type>
2676 @@ -128,17 +187,22 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2677          </configuration>
2678          <executions>
2679            <execution>
2680 -            <id>pre-test</id>
2681 +            <id>pre-unit-test</id>
2682              <goals>
2683                <goal>prepare-agent</goal>
2684              </goals>
2685 +            <configuration>
2686 +              <destFile>${sonar.jacoco.reportPath}</destFile>
2687 +            </configuration>
2688            </execution>
2689            <execution>
2690 -            <id>post-test</id>
2691 +            <id>post-unit-test</id>
2692              <goals>
2693                <goal>report</goal>
2694              </goals>
2695 -            <phase>test</phase>
2696 +            <configuration>
2697 +              <dataFile>${sonar.jacoco.reportPath}</dataFile>
2698 +            </configuration>
2699            </execution>
2700          </executions>
2701        </plugin>
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
2712  \r
2713 -    revision "2015-07-01" {\r
2714 +    revision "2015-10-10" {\r
2715          description\r
2716              "Initial revision.";\r
2717      }\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
2728  -->
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>
2733  
2734    <parent>
2735 @@ -27,7 +28,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
2736    <scm>
2737      <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
2738      <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
2739 -    <tag>HEAD</tag>
2740      <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
2741 +    <tag>HEAD</tag>
2742    </scm>
2743 -</project>
2744 +</project>
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
2751 --- a/pom.xml
2752 +++ b/pom.xml
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
2756  -->
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>
2761  
2762    <parent>
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>
2770 +    <relativePath />
2771    </parent>
2772  
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>
2783    </modules>
2784  
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
2787    <scm>
2788      <connection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</connection>
2789      <developerConnection>scm:git:ssh://git.opendaylight.org:29418/nemo.git</developerConnection>
2790 -    <tag>HEAD</tag>
2791      <url>https://wiki.opendaylight.org/view/NEMO:Main</url>
2792 +    <tag>HEAD</tag>
2793    </scm>
2794  </project>