Merge "OF plugin classes must have a strict dependency on Connection Service"
[controller.git] / opendaylight / sal / yang-prototype / code-generator / binding-generator-impl / src / test / resources / leafref-test-models / abstract-topology@2013-02-08.yang
1 module abstract-topology {
2     yang-version 1;
3     namespace "urn:model:abstract:topology";
4     prefix "tp";
5
6     import ietf-inet-types {
7         prefix "inet";
8         revision-date 2010-09-24;
9     }
10
11     import ietf-interfaces {
12         prefix "if";
13         revision-date 2012-11-15;
14     }
15
16     organization "OPEN DAYLIGHT";
17     contact "http://www.opendaylight.org/";
18
19     description
20         "This module contains the definitions of elements that creates network 
21     topology i.e. definition of network nodes and links. This module is not designed to be used solely for network representation. This module SHOULD be used as base module in defining the network topology.";
22
23     revision "2013-02-08" {
24         reference "~~~ WILL BE DEFINED LATER";
25     }
26     
27     revision "2013-01-01" {
28         reference "~~~ WILL BE DEFINED LATER";
29     }
30     
31     typedef node-id-ref {
32         type leafref {
33             path "/tp:topology/tp:network-nodes/tp:network-node/tp:node-id";
34         }
35         description "This type is used for leafs that reference network node instance.";
36     }
37
38     typedef link-id-ref {
39         type leafref {
40             path "/tp:topology/tp:network-links/tp:network-link/tp:link-id";
41         }
42         description "This type is used for leafs that reference network link instance.";
43     }
44
45     typedef interface-id-ref {
46         type leafref {
47             path "/tp:topology/tp:interfaces/tp:interface/tp:interface-id";
48         }
49     }
50
51     container topology {
52         description "This is the model of abstract topology which contains only Network Nodes and Network Links. Each topology MUST be identified by unique topology-id for reason that the store could contain many topologies.";
53
54         leaf topology-id {
55             type inet:uri;
56             description "It is presumed that datastore will contain many topologies. To distinguish between topologies it is vital to have
57             UNIQUE topology identifier.";
58         }
59
60         leaf cond-leafref {
61             type leafref {
62                 path "/tp:topology/tp:network-nodes/tp:network-node[node-id = 'super-node']";
63             }
64         }
65
66         container network-nodes {
67             list network-node {
68                 key "node-id";
69
70                 leaf node-id {
71                     type inet:uri;
72                     description "The Topology identifier of network-node.";
73                 }
74
75                 container attributes {
76                     description "Aditional attributes that can Network Node contains.";
77                 }
78                 description "The list of network nodes defined for topology.";
79             }
80         }
81
82         container interfaces {
83             list interface {
84                 key "interface-id";
85
86                 leaf interface-id {
87                     type leafref {
88                         path "/if:interfaces/if:interface/if:name";
89                     }
90                 }
91
92                 leaf-list higher-layer-if {
93                     type leafref {
94                         path "/if:interfaces/if:interface/if:higher-layer-if";
95                     }
96                 }
97             }
98         }
99         
100         container network-links {
101             list network-link {
102                 key "link-id";
103
104                 leaf link-id {
105                     type inet:uri;
106                     description "";
107                 }
108
109                 container source-node {
110                     leaf id {
111                         type node-id-ref;
112                         description "Source node identifier.";
113                     }
114                 }
115
116                 container destination-node {
117                     leaf id {
118                         type node-id-ref;
119                         description "Destination node identifier.";
120                     }
121                 }
122
123                 container tunnels {
124                     list tunnel {
125                         key "tunnel-id";
126
127                         leaf tunnel-id {
128                             type leafref {
129                                 path "../../../link-id";
130                             }
131                         }
132                     }
133                 }
134
135                 leaf interface {
136                     type interface-id-ref;
137                 }
138
139                 container attributes {
140                     description "Aditional attributes that can Network Link contains.";
141                 }
142                 description "The Network Link which is defined by Local (Source) and Remote (Destination) Network Nodes. Every link MUST be defined either by identifier and
143                 his local and remote Network Nodes (In real applications it is common that many links are originated from one node and end up in same remote node). To ensure that we would always know to distinguish between links, every link SHOULD have identifier.";
144             }
145         }
146     }
147 }