Clean up API YANG models with the help of pyang
[transportpce.git] / api / src / main / yang / service_path / transportpce-routing-constraints@2017-10-17.yang
1 module transportpce-routing-constraints {
2   namespace "http://org/transportpce/B-C-interface/routing/constraints";
3   prefix transportpce-routing-constraints;
4
5   organization
6     "transportPCE";
7   contact
8     "transportPCE committers - ODL";
9   description
10     "YANG definitions of B interface (transportPCE). Adapted from service definition (openroadm)
11      Copyright ©  2017 Orange, Inc. and others.  All rights reserved.
12      openroadm copyright:
13       Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
14       AT&T Intellectual Property.  All other rights reserved.
15
16       Redistribution and use in source and binary forms, with or without modification,
17       are permitted provided that the following conditions are met:
18
19       * Redistributions of source code must retain the above copyright notice, this
20         list of conditions and the following disclaimer.
21       * Redistributions in binary form must reproduce the above copyright notice,
22         this list of conditions and the following disclaimer in the documentation and/or
23         other materials provided with the distribution.
24       * Neither the Members of the Open ROADM MSA Agreement nor the names of its
25         contributors may be used to endorse or promote products derived from this software
26         without specific prior written permission.
27
28       THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT ''AS IS''
29       AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
30       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
31       IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT BE LIABLE FOR ANY DIRECT,
32       INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
33       NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;  LOSS OF USE, DATA,
34       OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
35       WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36       ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37       POSSIBILITY OF SUCH DAMAGE";
38
39   revision 2017-10-17 {
40       description
41         "Version 1.6";
42   }
43   revision 2017-04-26 {
44     description
45       "Version 1.5";
46   }
47
48
49   grouping common-constraints-sp {
50     leaf-list SRLG {
51       type string;
52     }
53     leaf-list clli {
54       type string;
55     }
56     leaf-list node-id {
57       type string;
58     }
59   }
60
61   grouping ordered-constraints-sp {
62     description
63       "";
64     container hop-type {
65       choice hop-type {
66         case SRLG {
67           leaf SRLG {
68             type string;
69             //to be clarified with topology model
70           }
71         }
72         case clli {
73           leaf clli {
74             type string;
75             //to be clarified with topology model
76           }
77         }
78         case node {
79           leaf node-id {
80             type string;
81             // to be clarified with topology model
82           }
83         }
84       }
85     }
86   }
87
88   grouping diversity-existing-service-contraints-sp {
89     leaf-list existing-service {
90       type string;
91       description
92         "Diverse from existing services identified by facility CLFI";
93     }
94     container existing-service-applicability {
95       leaf clli {
96         type boolean;
97       }
98       leaf node {
99         type boolean;
100       }
101       leaf srlg {
102         type boolean;
103       }
104     }
105   }
106
107   grouping routing-constraints-sp {
108     container hard-constraints {
109       uses constraints-sp;
110     }
111     container soft-constraints {
112       uses constraints-sp;
113     }
114     leaf pce-metric {
115       type enumeration {
116         enum hop-count;
117         enum propagation-delay;
118         enum TE-metric;
119         enum IGP-metric;
120       }
121     }
122     leaf locally-protected-links {
123       type boolean;
124       description
125         "indicates whether it must use locally protected links or not";
126     }
127   }
128
129   grouping constraints-sp {
130     leaf-list customer-code {
131       type string;
132     }
133     choice co-routing-or-general {
134       case general {
135         container diversity {
136           uses diversity-existing-service-contraints-sp;
137         }
138         container exclude_ {
139           uses common-constraints-sp;
140           leaf-list supporting-service-name {
141             type string;
142             description
143               "Supporting service(s) to exclude from this route.";
144           }
145           leaf affinity {
146             type uint32;
147           }
148         }
149         container include_ {
150           list ordered-hops {
151             key "hop-number";
152             leaf hop-number {
153               type uint16;
154               description
155                 "designates the id of the hop: node-id, SRLG-id, site-id";
156             }
157             uses ordered-constraints-sp;
158           }
159         }
160         container latency {
161           description
162             "Maximum latency allowed";
163           leaf max-latency {
164             type uint32;
165             units "ms";
166           }
167         }
168       }
169       case co-routing {
170         container co-routing {
171           leaf-list existing-service {
172             type string;
173             description
174               "Diverse from existing services identified by facility CLFI";
175           }
176         }
177       }
178     }
179   }
180 }