Removing blueprints-processor
[ccsdk/features.git] / sdnr / wt / devicemanager / provider / src / main / resources / preload.cache.schema / core-model@2017-03-20.yang
1 module core-model {\r
2     namespace "urn:onf:params:xml:ns:yang:core-model";\r
3     prefix core-model;\r
4     organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";\r
5     contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>\r
6              WG List:  <mailto:wireless-transport@login.opennetworking.org>\r
7              WG Chair: Lyndon Ong\r
8                        <mailto:lyong@ciena.com>\r
9              WG Chair: Giorgio Cazzaniga\r
10                        <mailto:giorgio.cazzaniga@sm-optics.com>\r
11              Editors:  Thorsten Heinze\r
12                        <mailto:thorsten.heinze@telefonica.com>\r
13                        Martin Skorupski\r
14                        <mailto:martin.skorupski@highstreet-technologies.com>";\r
15     description "This module contains a collection of YANG definitions for managing wireless networks.";\r
16     revision 2017-03-20 {\r
17         description "Initial version";\r
18         reference "ONF TR 532: A YANG Data Model for Wireless Networks.";\r
19     }\r
20     /***********************\r
21     * package core-network-model\r
22     **********************/ \r
23         /***********************\r
24         * package type-definitions\r
25         **********************/ \r
26             /***********************\r
27             * package resilience\r
28             **********************/ \r
29                 typedef protection-reason {\r
30                     type enumeration {\r
31                         enum wait-to-revert {\r
32                             description "The resource is selected as control is waiting to restore to a preferred resource.";\r
33                         }\r
34                         enum signal-degrade {\r
35                             description "The resource is selected as the best preferred resource is in signal degrade.";\r
36                         }\r
37                         enum signal-fail {\r
38                             description "The resource is selected as the best preferred resource is in signal fail.";\r
39                         }\r
40                     }\r
41                     description "The cause of the current protection state.";\r
42                 }\r
43                 typedef route-selection-control {\r
44                     type enumeration {\r
45                         enum normal {\r
46                             description "No administrative control applied to the switch.";\r
47                         }\r
48                         enum manual {\r
49                             description "Resource temporarily chosen by control configuration where the resource is not the preferred resource.\r
50                                 Preferred resource has highest priority.\r
51                                 Temporarily overrides reversion.\r
52                                 If this resource fails will switch to best available resource. \r
53                                 If resource selected is shared and another FC requires the resource then the selection control will change to Normal and switch to best available based upon normal rules.\r
54                                 If the resource selected is then set to LOCK_OUT then the the selection control will change to NORMAL and switch to best available based upon normal rules.\r
55                                 Can be returned to NORMAL by configuration action.";\r
56                         }\r
57                         enum forced {\r
58                             description "Resource temporarily chosen by control configuration where the resource is not the preferred resource.\r
59                                 Preferred resource has highest priority.\r
60                                 Temporarily overrides reversion.\r
61                                 If this resource fails will NOT switch. \r
62                                 If resource selected is shared and another FC requires the resource through a FORCE on that FC and the FC is of a higher FcPriority then the selection control will change to NORMAL and switch to best available based upon normal rules.\r
63                                 If the resource selected is then set to LOCK_OUT then the the selection control will change to NORMAL and switch to best available based upon normal rules.\r
64                                 Can be returned to NORMAL by configuration action.";\r
65                         }\r
66                         enum lock-out {\r
67                             description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.\r
68                                 This overrides all other protection control states including forced.\r
69                                 If the item is locked out then it cannot be used under any circumstances.\r
70                                 Note: Only relevant when part of a protection scheme.";\r
71                         }\r
72                     }\r
73                     description "Possible degrees of administrative control applied to the Route selection.";\r
74                 }\r
75                 typedef route-selection-reason {\r
76                     type enumeration {\r
77                         enum wait-to-revert {\r
78                             description "The resource is selected as control is waiting to restore to a preferred resource.";\r
79                         }\r
80                         enum signal-degrade {\r
81                             description "The resource is selected as the best preferred resource is in signal degrade.";\r
82                         }\r
83                         enum signal-fail {\r
84                             description "The resource is selected as the best preferred resource is in signal fail.";\r
85                         }\r
86                         enum normal {\r
87                             description "No administrative control applied to the switch.";\r
88                         }\r
89                         enum manual {\r
90                             description "Resource temporarily chosen by control configuration where the resource is not the preferred resource.\r
91                                 Preferred resource has highest priority.\r
92                                 Temporarily overrides reversion.\r
93                                 If this resource fails will switch to best available resource. \r
94                                 If resource selected is shared and another FC requires the resource then the selection control will change to Normal and switch to best available based upon normal rules.\r
95                                 If the resource selected is then set to LOCK_OUT then the the selection control will change to NORMAL and switch to best available based upon normal rules.\r
96                                 Can be returned to NORMAL by configuration action.";\r
97                         }\r
98                         enum forced {\r
99                             description "Resource temporarily chosen by control configuration where the resource is not the preferred resource.\r
100                                 Preferred resource has highest priority.\r
101                                 Temporarily overrides reversion.\r
102                                 If this resource fails will NOT switch. \r
103                                 If resource selected is shared and another FC requires the resource through a FORCE on that FC and the FC is of a higher FcPriority then the selection control will change to NORMAL and switch to best available based upon normal rules.\r
104                                 If the resource selected is then set to LOCK_OUT then the the selection control will change to NORMAL and switch to best available based upon normal rules.\r
105                                 Can be returned to NORMAL by configuration action.";\r
106                         }\r
107                         enum lock-out {\r
108                             description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.\r
109                                 This overrides all other protection control states including forced.\r
110                                 If the item is locked out then it cannot be used under any circumstances.\r
111                                 Note: Only relevant when part of a protection scheme.";\r
112                         }\r
113                     }\r
114                     description "The cause of the current route selection.";\r
115                 }\r
116                 typedef switch-control {\r
117                     type enumeration {\r
118                         enum normal {\r
119                             description "No administrative control applied to the switch.";\r
120                         }\r
121                         enum manual {\r
122                             description "Resource temporarily chosen by control configuration where the resource is not the preferred resource.\r
123                                 Preferred resource has highest priority.\r
124                                 Temporarily overrides reversion.\r
125                                 If this resource fails will switch to best available resource. \r
126                                 If resource selected is shared and another FC requires the resource then the selection control will change to Normal and switch to best available based upon normal rules.\r
127                                 If the resource selected is then set to LOCK_OUT then the the selection control will change to NORMAL and switch to best available based upon normal rules.\r
128                                 Can be returned to NORMAL by configuration action.";\r
129                         }\r
130                         enum forced {\r
131                             description "Resource temporarily chosen by control configuration where the resource is not the preferred resource.\r
132                                 Preferred resource has highest priority.\r
133                                 Temporarily overrides reversion.\r
134                                 If this resource fails will NOT switch. \r
135                                 If resource selected is shared and another FC requires the resource through a FORCE on that FC and the FC is of a higher FcPriority then the selection control will change to NORMAL and switch to best available based upon normal rules.\r
136                                 If the resource selected is then set to LOCK_OUT then the the selection control will change to NORMAL and switch to best available based upon normal rules.\r
137                                 Can be returned to NORMAL by configuration action.";\r
138                         }\r
139                     }\r
140                     description "none";\r
141                 }\r
142                 typedef switch-state-reason {\r
143                     type enumeration {\r
144                         enum wait-to-revert {\r
145                             description "The resource is selected as control is waiting to restore to a preferred resource.";\r
146                         }\r
147                         enum signal-degrade {\r
148                             description "The resource is selected as the best preferred resource is in signal degrade.";\r
149                         }\r
150                         enum signal-fail {\r
151                             description "The resource is selected as the best preferred resource is in signal fail.";\r
152                         }\r
153                         enum normal {\r
154                             description "No administrative control applied to the switch.";\r
155                         }\r
156                         enum manual {\r
157                             description "Resource temporarily chosen by control configuration where the resource is not the preferred resource.\r
158                                 Preferred resource has highest priority.\r
159                                 Temporarily overrides reversion.\r
160                                 If this resource fails will switch to best available resource. \r
161                                 If resource selected is shared and another FC requires the resource then the selection control will change to Normal and switch to best available based upon normal rules.\r
162                                 If the resource selected is then set to LOCK_OUT then the the selection control will change to NORMAL and switch to best available based upon normal rules.\r
163                                 Can be returned to NORMAL by configuration action.";\r
164                         }\r
165                         enum forced {\r
166                             description "Resource temporarily chosen by control configuration where the resource is not the preferred resource.\r
167                                 Preferred resource has highest priority.\r
168                                 Temporarily overrides reversion.\r
169                                 If this resource fails will NOT switch. \r
170                                 If resource selected is shared and another FC requires the resource through a FORCE on that FC and the FC is of a higher FcPriority then the selection control will change to NORMAL and switch to best available based upon normal rules.\r
171                                 If the resource selected is then set to LOCK_OUT then the the selection control will change to NORMAL and switch to best available based upon normal rules.\r
172                                 Can be returned to NORMAL by configuration action.";\r
173                         }\r
174                     }\r
175                     description "Explains the reason for the current switch state.";\r
176                 }\r
177                 typedef reversion-mode {\r
178                     type enumeration {\r
179                         enum revertive {\r
180                             description "An FC switched to a lower priority (non-preferred) resource will revert to a higher priority (preferred) resource when that recovers (potentially after some hold-off time).";\r
181                         }\r
182                         enum non-revertive {\r
183                             description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";\r
184                         }\r
185                     }\r
186                     description "The reversion mode associated with protection.";\r
187                 }\r
188                 grouping global-pac-g {\r
189                     uses global-class-g;\r
190                     description "Provides the properties of a GlobalClass via composition.";\r
191                 }\r
192                 grouping local-pac-g {\r
193                     uses local-class-g;\r
194                     description "Provides the properties of a LocalClass via composition.";\r
195                 }\r
196                 typedef protection-type {\r
197                     type string;\r
198                     description "Identifies the type of protection of an FcSwitch.";\r
199                 }\r
200 \r
201             typedef layer-protocol-name {\r
202                 type string;\r
203                 description "Provides a controlled list of layer protocol names and indicates the naming authority.\r
204                     Note that it is expected that attributes will be added to this structure to convey the naming authority name, the name of the layer protocol using a human readable string and any particular standard reference.\r
205                     Layer protocol names include:\r
206                     -    Layer 1 (L1): OTU, ODU\r
207                     -    Layer 2 (L2): Carrier Grade Ethernet (ETY, ETH), MPLS-TP (MT)\r
208                     ";\r
209             }\r
210             typedef port-role {\r
211                 type string;\r
212                 description "The role of a port in the context of the function of the forwarding entity that it bounds.";\r
213             }\r
214             typedef port-direction {\r
215                 type enumeration {\r
216                     enum bidirectional {\r
217                         description "The Port has both an INPUT flow and an OUTPUT flow defined.";\r
218                     }\r
219                     enum input {\r
220                         description "The Port only has definition for a flow into the Forwarding entity (i.e. an ingress flow).";\r
221                     }\r
222                     enum output {\r
223                         description "The Port only has definition for a flow out of the Forwarding entity (i.e. an egress flow).";\r
224                     }\r
225                     enum unidentified-or-unknown {\r
226                         description "Not a normal state. The system is unable to determine the correct value.";\r
227                     }\r
228                 }\r
229                 description "The orientation of flow at the Port of a Forwarding entity";\r
230             }\r
231             typedef forwarding-direction {\r
232                 type enumeration {\r
233                     enum bidirectional {\r
234                         description "The Forwarding entity supports both BIDIRECTIONAL flows at all Ports (i.e. all Ports have both an INPUT flow and an OUTPUT flow defined).";\r
235                     }\r
236                     enum unidirectional {\r
237                         description "The Forwarding entity has Ports that are either INPUT or OUTPUT. It has no BIDIRECTIONAL Ports.";\r
238                     }\r
239                     enum undefined-or-unknown {\r
240                         description "Not a normal state. The system is unable to determine the correct value.";\r
241                     }\r
242                 }\r
243                 description "The directionality of a Forwarding entity.";\r
244             }\r
245             typedef termination-direction {\r
246                 type enumeration {\r
247                     enum bidirectional {\r
248                         description "A Termination with both SINK and SOURCE flows.";\r
249                     }\r
250                     enum sink {\r
251                         description "The flow is up the layer stack from the server side to the client side. \r
252                             Considering an example of a Termination function within the termination entity, a SINK flow:\r
253                             - will arrive at at the base of the termination function (the server side) where it is essentially at an INPUT to the termination component\r
254                             - then will be decoded and deconstructed \r
255                             - then relevant parts of the flow will be sent out of the termination function (the client side) where it is essentially at an OUTPUT from the termination component\r
256                             A SINK termination is one that only supports a SINK flow.\r
257                             A SINK termiation can be bound to an OUTPUT Port of a Forwarding entity";\r
258                     }\r
259                     enum source {\r
260                         description "The flow is down the layer stack from the server side to the client side. \r
261                             Considering an example of a Termination function within the termination entity, a SOURCE flow:\r
262                             - will arrive at at the top of the termination function (the client side) where it is essentially at an INPUT to the termination component\r
263                             - then will be assembled with various overheads etc and will be coded \r
264                             - then coded form of the assembly of flow will be sent out of the termination function (the server side) where it is essentially at an OUTPUT from the termination component\r
265                             A SOURCE termination is one that only supports a SOURCE flow.\r
266                             A SOURCE termiation can be bound to an INPUT Port of a Forwarding entity";\r
267                     }\r
268                     enum undefined-or-unknown {\r
269                         description "Not a normal state. The system is unable to determine the correct value.";\r
270                     }\r
271                 }\r
272                 description "The directionality of a termination entity.";\r
273             }\r
274             typedef extended-termination-direction {\r
275                 type enumeration {\r
276                     enum bidirectional {\r
277                         description "A Termination with both SINK and SOURCE flows.";\r
278                     }\r
279                     enum sink {\r
280                         description "The flow is up the layer stack from the server side to the client side. \r
281                             Considering an example of a Termination function within the termination entity, a SINK flow:\r
282                             - will arrive at at the base of the termination function (the server side) where it is essentially at an INPUT to the termination component\r
283                             - then will be decoded and deconstructed \r
284                             - then relevant parts of the flow will be sent out of the termination function (the client side) where it is essentially at an OUTPUT from the termination component\r
285                             A SINK termination is one that only supports a SINK flow.\r
286                             A SINK termiation can be bound to an OUTPUT Port of a Forwarding entity";\r
287                     }\r
288                     enum source {\r
289                         description "The flow is down the layer stack from the server side to the client side. \r
290                             Considering an example of a Termination function within the termination entity, a SOURCE flow:\r
291                             - will arrive at at the top of the termination function (the client side) where it is essentially at an INPUT to the termination component\r
292                             - then will be assembled with various overheads etc and will be coded \r
293                             - then coded form of the assembly of flow will be sent out of the termination function (the server side) where it is essentially at an OUTPUT from the termination component\r
294                             A SOURCE termination is one that only supports a SOURCE flow.\r
295                             A SOURCE termiation can be bound to an INPUT Port of a Forwarding entity";\r
296                     }\r
297                     enum undefined-or-unknown {\r
298                         description "Not a normal state. The system is unable to determine the correct value.";\r
299                     }\r
300                     enum contra-direction-sink {\r
301                         description "The essential flow of the Termination entity is SINK (i.e. up the layer stack) but the INPUT flow of the Termination entity was provided by a SOURCE OUTPUT or taken from a SOURCE INPUT (duplicating the input signal) hence reversing the flow orientation from down the layer stack to up the layer stack.";\r
302                     }\r
303                     enum contra-direction-source {\r
304                         description "The essential flow of the Termination entity is SOURCE (i.e. down the layer stack) but the OUTPUT flow of the Termination entity was fed to (and replaces) a SINK OUTPUT or was fed to a SINK INPUT (replacing the normal flow) hence reversing the flow orientation from down the layer stack to up the layer stack.";\r
305                     }\r
306                 }\r
307                 description "Extended to include contra-direction considerations. Only applies to LP and elements of LP not to LTP.";\r
308             }\r
309             typedef termination-state {\r
310                 type enumeration {\r
311                     enum lp-can-never-terminate {\r
312                         description "A non-flexible case that can never be terminated.";\r
313                     }\r
314                     enum lt-not-terminated {\r
315                         description "A flexible termination that can terminate but is currently not terminated.";\r
316                     }\r
317                     enum terminated-server-to-client-flow {\r
318                         description "A flexible termination that is currently terminated for server to client flow only.";\r
319                     }\r
320                     enum terminated-client-to-server-flow {\r
321                         description "A flexible termination that is currently terminated for client to server flow only.";\r
322                     }\r
323                     enum terminated-bidirectional {\r
324                         description "A flexible termination that is currently terminated in both directions of flow.";\r
325                     }\r
326                     enum lt-permenantly-terminated {\r
327                         description "A non-flexible termination that is always terminated (in both directions of flow for a bidirectional case and in the one direction of flow for both unidirectional cases).";\r
328                     }\r
329                     enum termination-state-unknown {\r
330                         description "There TerminationState cannot be determined.";\r
331                     }\r
332                 }\r
333                 description "Provides support for the range of behaviours and specific states that an LP can take with respect to termination of the signal.\r
334                     Indicates to what degree the LayerTermination is terminated.";\r
335             }\r
336 \r
337         /***********************\r
338         * package object-classes\r
339         **********************/ \r
340             /***********************\r
341             * package resilience\r
342             **********************/ \r
343                 grouping configuration-and-switch-controller-g {\r
344                     leaf switch-rule {\r
345                         type to-be-defined;\r
346                         description "A sketch of the presence of complex rules governing the switch behavior.";\r
347                     }\r
348                     leaf-list fc-switch {\r
349                         type leafref {\r
350                             path '/forwarding-construct/fc-switch/uuid';\r
351                         }\r
352                         description "The switch being controlled.";\r
353                     }\r
354                     container control-parameters {\r
355                         uses control-parameters-pac-g;\r
356                         description "The control parameters to be applied if local parameters are used rather than profiles";\r
357                     }\r
358                     leaf-list profile-proxy {\r
359                         type string;\r
360                         description "Applied profiles.";\r
361                     }\r
362                     container local-pac {\r
363                         uses local-pac-g;\r
364                         description "none";\r
365                     }\r
366                     container global-pac {\r
367                         uses global-pac-g;\r
368                         description "none";\r
369                     }\r
370                     leaf is-frozen {\r
371                         type boolean;\r
372                         description "Temporarily prevents any switch action to be taken and, as such, freezes the current state. \r
373                             Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.\r
374                             All administrative controls of any aspect of protection are rejected.";\r
375                     }\r
376                     leaf is-coordinated-switching-both-ends {\r
377                         type boolean;\r
378                         description "The C&SC is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";\r
379                     }\r
380                     leaf-list subordinate-controller {\r
381                         type leafref {\r
382                             path '/network-element/ltp/lp/config-and-switch-controller/switch-rule';\r
383                         }\r
384                         description "A C&SC that is fully or partially subordinate this C&SC. \r
385                             A peer is considered as partially subordinate in that the peer will respond to requests for action from this C&SC but will also make requests for action to be carried out by this C&SC.\r
386                             Where there is a peer relationship each controller in the peering will see the other controller as subordinate.";\r
387                     }\r
388                     description "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme.";\r
389                 }\r
390                 grouping control-parameters-pac-g {\r
391                     leaf reversion-mode {\r
392                         type reversion-mode;\r
393                         description "Indcates whether the protection scheme is revertive or non-revertive.";\r
394                     }\r
395                     leaf wait-to-revert-time {\r
396                         type int64;\r
397                         default 15;\r
398                         description "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource.";\r
399                     }\r
400                     leaf prot-type {\r
401                         type protection-type;\r
402                         description "Indicates the protection scheme that is used for the ProtectionGroup.";\r
403                     }\r
404                     leaf hold-off-time {\r
405                         type int64;\r
406                         description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";\r
407                     }\r
408                     leaf network-scheme-specification {\r
409                         type string;\r
410                         description "none";\r
411                     }\r
412                     description "A list of control parameters to apply to a switch.";\r
413                 }\r
414                 grouping fc-switch-g {\r
415                     leaf hold-off-time {\r
416                         type int64;\r
417                         description "Moved to ControlParameter_Pac... This attribute indicates the time, in seconds, between declaration of unacceptable quality of signal on the currently selected FcPort, and the initialization of the protection switching algorithm. ";\r
418                     }\r
419                     leaf prot-type {\r
420                         type protection-type;\r
421                         description "Indicates the protection scheme that is used for the ProtectionGroup.";\r
422                     }\r
423                     leaf reversion-mode {\r
424                         type reversion-mode;\r
425                         description "Moved to ControlParameter_Pac... This attribute whether or not the protection scheme is revertive or non-revertive. ";\r
426                     }\r
427                     leaf-list selected-fc-port {\r
428                         type leafref {\r
429                             path '/forwarding-construct/fc-port/uuid';\r
430                         }\r
431                         description "Indicates which points are selected by the switch.\r
432                             Depending on the switch spec (via Fcspec)\r
433                             - more than one FcPort can be selected at any one time (e.g. egress switch, ingress packet switch)\r
434                             - zero FcPorts can  be selected. For an ingress switch this indicates that the switch common (egress) is 'high impedance'\r
435 .";\r
436                     }\r
437                     leaf-list profile-proxy {\r
438                         type string;\r
439                         description "Provides a set of predefined values for switch control in place of the direct values available via the FcSwitch or via _configurationAndSwitchControl.";\r
440                     }\r
441                     container internal-configuration-and-switch-control {\r
442                         uses configuration-and-switch-controller-g;\r
443                         description "A switch controller encapsulated in the FcSwitch.";\r
444                     }\r
445                     leaf switch-control {\r
446                         type switch-control;\r
447                         description "Degree of administrative control applied to the switch selection.";\r
448                     }\r
449                     leaf switch-selects-ports {\r
450                         type port-direction;\r
451                         description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";\r
452                     }\r
453                     leaf switch-selection-reason {\r
454                         type switch-state-reason;\r
455                         config false;\r
456                         description "The reason for the current switch selection.";\r
457                     }\r
458                     container control-parameters {\r
459                         uses control-parameters-pac-g;\r
460                         description "none";\r
461                     }\r
462                     leaf wait-to-restore-time {\r
463                         type int64;\r
464                         description "Moved to ControlParameter_Pac and changed to waitToRevert... If the protection system is revertive, this attribute specifies the amount of time, in seconds, to wait after the preferred FcPort returns to an acceptable state of operation (e.g. a fault has cleared) before restoring traffic to that preferred FcPort.";\r
465                     }\r
466                     uses local-class-g;\r
467                     description "The FcSwitch class models the switched forwarding of traffic (traffic flow) between FcPorts and is present where there is protection functionality in the FC. \r
468                         If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.\r
469                         The FC switch represents and defines a protection switch structure encapsulated in the FC. \r
470                         Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit. \r
471                         One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort.\r
472                         The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.\r
473                         It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1).\r
474                         It may be locked out (prevented from switching), force switched or manual switched.\r
475                         It will indicate switch state and change of state.\r
476                         The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is 'open').\r
477                         The ability for a Switch to be 'high impedance' allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict.\r
478                         This ability allows multiple alternate routes to be present that otherwise would be in conflict.";\r
479                 }\r
480 \r
481             grouping forwarding-domain-g {\r
482                 leaf-list layer-protocol-name {\r
483                     type layer-protocol-name;\r
484                     min-elements 1;\r
485                     description "One or more protocol layers at which the FD represents the opportunity to enable forwarding between LTP that bound it.";\r
486                 }\r
487                 leaf-list lower-level-fd {\r
488                     type leafref {\r
489                         path '/network-element/fd/uuid';\r
490                     }\r
491                     description "The FD class supports a recursive aggregation relationship (HigherLevelFdEncompassesLowerLevelFds) such that the internal construction of an FD can be exposed as multiple lower level FDs and associated Links (partitioning).\r
492                         The aggregated FDs and Links form an interconnected topology that provides and describes the capability of the aggregating FD.\r
493                         Note that the model actually represents aggregation of lower level FDs into higher level FDs as views rather than FD partition, and supports multiple views. \r
494                         Aggregation allow reallocation of capacity from lower level FDs to different higher level FDs as if the network is reorganized  (as the association is aggregation not composition).";\r
495                 }\r
496                 leaf-list fc {\r
497                     type leafref {\r
498                         path '/forwarding-construct/uuid';\r
499                     }\r
500                     description "An FD aggregares one or more FCs. A aggregated FC connects LTPs that bound the FD.";\r
501                 }\r
502                 leaf-list ltp {\r
503                     type leafref {\r
504                         path '/network-element/ltp/uuid';\r
505                     }\r
506                     description "An instance of FD is associated with zero or more LTP objects. \r
507                         The LTPs that bound the FD provide capacity for forwarding.";\r
508                 }\r
509                 leaf-list lower-level-link {\r
510                     type string;\r
511                     description "The FD encompasses Links that interconnect lower level FDs and collect links that are wholly within the bounds of the FD.\r
512                         See also _lowerLevelFd.";\r
513                 }\r
514                 uses global-class-g;\r
515                 description "The ForwardingDomain (FD) class models the topological component that represents the opportunity to enable forwarding (of specific transport characteristic information at one or more protocol layers) between points represented by the LTP in the model.\r
516                     The FD object provides the context for and constrains the formation, adjustment and removal of FCs and hence offers the potential to enable forwarding. \r
517                     The LTPs available are those defined at the boundary of the FD.\r
518                     At a lower level of recursion an FD could represent a fabric (switch matrix) in a Network Element (NE). \r
519                     An NE can encompass more than one switch matrix and hence more than one FD. The FD representing a switch matrix can be further partitioned.\r
520                     The FD corresponds to a subnetwork [ITU-T G.800], FlowDomain [TMF 612] and a MultiLayerSubNetwork (MLSN) [TMF 612]. As in the TMF concept of MLSN and unlike the ITU-T concet of subnetwork model the FD can support more than one layer-protocol.";\r
521             }\r
522             grouping forwarding-construct-g {\r
523                 leaf layer-protocol-name {\r
524                     type layer-protocol-name;\r
525                     description "The layerProtocol at which the FC enables the potential for forwarding.";\r
526                 }\r
527                 leaf-list lower-level-fc {\r
528                     type leafref {\r
529                         path '/forwarding-construct/uuid';\r
530                     }\r
531                     description "An FC object supports a recursive aggregation relationship such that the internal construction of an FC can be exposed as multiple lower level FC objects (partitioning).\r
532                         Aggregation is used as for the FD to allow changes in hierarchy. \r
533                         FC aggregation reflects FD aggregation. \r
534                         The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.\r
535                         ";\r
536                 }\r
537                 leaf-list fc-route {\r
538                     type string;\r
539                     description "An FC object can have zero or more routes, each of which is defined as a list of lower level FC objects describing the flow across the network.";\r
540                 }\r
541                 list fc-port {\r
542                     key 'uuid';\r
543                     min-elements 2;\r
544                     uses fc-port-g;\r
545                     description "The association of the FC to LTPs is made via FcPorts (essentially the ports of the FC).";\r
546                 }\r
547                 list fc-switch {\r
548                     key 'uuid';\r
549                     uses fc-switch-g;\r
550                     description "If an FC exposes protection (having two FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects.\r
551                         The arrangement of switches for a particular instance is described by a referenced FcSpec";\r
552                 }\r
553                 leaf forwarding-direction {\r
554                     type forwarding-direction;\r
555                     description "The directionality of the ForwardingConstruct. \r
556                         Is applicable to simple ForwardingConstructs where all FcPorts are BIDIRECTIONAL (the ForwardingConstruct will be BIDIRECTIONAL) or UNIDIRECTIONAL (the ForwardingConstruct will be UNIDIRECTIONAL). \r
557                         Is not present in more complex cases.";\r
558                 }\r
559                 leaf is-protection-lock-out {\r
560                     if-feature protection-exclude-server;\r
561                     type boolean;\r
562                     description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.\r
563                         This overrides all other protection control states including forced.\r
564                         If the item is locked out then it cannot be used under any circumstances.\r
565                         Note: Only relevant when part of a protection scheme.";\r
566                 }\r
567                 leaf service-priority {\r
568                     type int64;\r
569                     description "Relevant where 'service' FCs are competing for server resources.\r
570                         Used to determine which signal FC is allocated resource. \r
571                         The priority of the 'service' with respect to other 'services'. \r
572                         Lower numeric value means higher priority. \r
573                         Covers cases such as preemptable.";\r
574                 }\r
575                 leaf-list supported-link {\r
576                     type string;\r
577                     description "An FC that spans between LTPs that terminate the LayerProtocol usually supports one or more links in the client layer.";\r
578                 }\r
579                 uses global-class-g;\r
580                 description "The ForwardingConstruct (FC) class models enabled constrained potential for forwarding between two or more LTPs at a particular specific layerProtocol.\r
581                     Like the LTP, the FC supports any transport protocol including all circuit and packet forms.\r
582                     It is used to effect forwarding of transport characteristic (layer protocol) information.\r
583                     An FC can be in only one FD.\r
584                     The ForwardingConstruct is a Forwarding entity.\r
585                     At a low level of the recursion, a FC represents a cross-connection within an NE. It may also represent a fragment of a cross-connection under certain circumstances.\r
586                     The FC object can be used to represent many different structures including point-to-point (P2P), point-to-multipoint (P2MP), rooted-multipoint (RMP) and multipoint-to-multipoint (MP2MP) bridge and selector structures for linear, ring or mesh protection schemes.";\r
587             }\r
588             container network-element {\r
589                 presence  "";\r
590                 list fd {\r
591                     key 'uuid';\r
592                     uses forwarding-domain-g;\r
593                     description "Represents the FD that is completely within the boundary of the NE.\r
594                         At a low level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). \r
595                         Note that an NE can encompass multiple switch matrices (FDs) and the FD representing the switch matrix can be further partitioned.\r
596                         Where an FD is referenced by the NeEncompassesFd association, any FDs that it encompasses (i.e., that are associated with it by HigherLevelFdEncompassesLowerLevelFds), must also be encompassed by the NE and hence must have the NeEncompassesFd association.\r
597                         ";\r
598                 }\r
599                 list ltp {\r
600                     key 'uuid';\r
601                     uses logical-termination-point-g;\r
602                     description "An NE has associated LTPs that are at its boundary.\r
603                         The NeEncompassesFd association occurs for FDs that are within the bounds of the NetworkElement definition such that the FD is bounded by LTPs, all of which are on the boundary of the NetworkElement or are within the NetworkElement. \r
604                         An LTP can be independent of an NE.";\r
605                 }\r
606                 uses global-class-g;\r
607                 description "The Network Element (NE) class represents a network element (traditional NE) in the data plane.\r
608                     A data plane network element is essentially a consolidation of capabilities that can be viewed and controlled through a 'single' management-control port.\r
609                     In the direct interface from an SDN controller to a network element in the data plane, the NetworkElement object defines the scope of control for the resources within the network element\r
610                     For example internal transfer of user information between the external terminations (ports of the NE), encapsulation, multiplexing/demultiplexing, and OAM functions, etc. \r
611                     The NetworkElement provides the scope of the naming space for identifying objects representing the resources within the data plane network element.\r
612                     NE is really a product bundling or some view of management scope, management access, session. \r
613                     The NE is not directly part of topology but brings meaning to the FD context and the LTP context (and hence the links). ";\r
614             }\r
615             list forwarding-construct {\r
616                 key 'uuid';\r
617                 uses forwarding-construct-g;\r
618                 description "none";\r
619             }\r
620             grouping fc-port-g {\r
621                 leaf-list ltp {\r
622                     type leafref {\r
623                         path '/network-element/ltp/uuid';\r
624                     }\r
625                     max-elements 2;\r
626                     description "The FcPort may be associated with more than one LTP when the FcPort is bidirectional and the LTPs are unidirectional.\r
627                         Multiple Ltp\r
628                         - Bidirectional FcPort to two Uni Ltps\r
629                         Zero Ltp\r
630                         - BreakBeforeMake transition\r
631                         - Planned Ltp not yet in place\r
632                         - Off-network LTP referenced through other mechanism";\r
633                 }\r
634                 leaf role {\r
635                     type port-role;\r
636                     description "Each FcPort of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root) in the context of the FC with respect to the FC function. ";\r
637                 }\r
638                 leaf fc-port-direction {\r
639                     type port-direction;\r
640                     description "The orientation of defined flow at the FcPort.";\r
641                 }\r
642                 leaf is-protection-lock-out {\r
643                     if-feature protection-exclude-fc-port;\r
644                     type boolean;\r
645                     description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.\r
646                         This overrides all other protection control states including forced.\r
647                         If the item is locked out then it cannot be used under any circumstances.\r
648                         Note: Only relevant when part of a protection scheme.";\r
649                 }\r
650                 leaf selection-priority {\r
651                     type int64;\r
652                     description "The preference priority of the resource in the protection scheme for a particular FC. \r
653                         The lower the value the higher the priority.\r
654                         A lower value of selection priority is preferred\r
655                         If two resources have the same value they are of equal priory.\r
656                         There is no preference between equal priorities.\r
657                         If a resource with the lowest value selection priority fails then the next lowest value available (may be the same value) is picked.\r
658                         Hence on failure of the current resource the next best available will be selected.\r
659                         If there are several equal values the choice is essentially arbitrary).\r
660                         If the scheme is revertive then when a resource of higher priority than the currently selected resource recovers it will be selected.\r
661                         This is equivalent to working/protection but allows for all static scheme types with n:m capability. \r
662                         In simple schemes 0 = working and 1 = protecting.";\r
663                 }\r
664                 leaf is-internal-port {\r
665                     type boolean;\r
666                     config false;\r
667                     description "The FcPort is not exposed and cannot have associated LTPs.\r
668                         This form of FcPort is used to enable chaining of FcSwitches or FcRoutes in complex network protection scenarios.";\r
669                 }\r
670                 leaf-list fc-route-feeds-fc-port-egress {\r
671                     type string;\r
672                     description "Identifies which route(s) currently actively forward to the FcPort to exit the FC to an LTP (or for an internal FcPort to propagate to the next internal switch/route).";\r
673                 }\r
674                 uses local-class-g;\r
675                 description "The association of the FC to LTPs is made via FcPorts.\r
676                     The FcPort class models the access to the FC function. \r
677                     The traffic forwarding between the associated FcPorts of the FC depends upon the type of FC and may be associated with FcSwitch object instances.  \r
678                     In cases where there is resilience, the FcPort may convey the resilience role of the access to the FC. \r
679                     It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.\r
680                     The FcPort replaces the Protection Unit of a traditional protection model. \r
681                     The ForwardingConstruct can be considered as a component and the FcPort as a Port on that component.";\r
682             }\r
683             grouping layer-protocol-g {\r
684                 leaf layer-protocol-name {\r
685                     type layer-protocol-name;\r
686                     description "Indicate the specific layer-protocol described by the LayerProtocol entity.";\r
687                 }\r
688                 leaf configured-client-capacity {\r
689                     type to-be-defined;\r
690                     description "Provides a summarized view of the client capacity that is configurable for use.\r
691                         Note the client LTP association should provide all necessary detail hence this attribute is questionable.";\r
692                 }\r
693                 leaf lp-direction {\r
694                     type termination-direction;\r
695                     description "The overall directionality of the LP. \r
696                         - A BIDIRECTIONAL LP will have some SINK and/or SOURCE flows.\r
697                         - A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE flows\r
698                         - A SOURCE LP can only contain SOURCE flows or CONTRA_DIRECTION_SINK flows";\r
699                 }\r
700                 leaf termination-state {\r
701                     type termination-state;\r
702                     description "Indicates whether the layer is terminated and if so how.";\r
703                 }\r
704                 list config-and-switch-controller {\r
705                     key 'switch-rule';\r
706                     uses configuration-and-switch-controller-g;\r
707                     description "A switch controller external to the LayerProtocol.\r
708                         The controller will coordinate one or more switches in one or more FCs related to the LayerProtocol";\r
709                 }\r
710                 leaf is-protection-lock-out {\r
711                     if-feature protection-exclude-ltp;\r
712                     type boolean;\r
713                     description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.\r
714                         This overrides all other protection control states including forced.\r
715                         If the item is locked out then it cannot be used under any circumstances.\r
716                         Note: Only relevant when part of a protection scheme.";\r
717                 }\r
718                 leaf fc-blocks-signal-to-lp {\r
719                     type string;\r
720                     description "none";\r
721                 }\r
722                 uses local-class-g;\r
723                 description "The projection of an LTP into each transport layer is represented by a LayerProtocol (LP) instance. A LayerProtocol instances can be used for controlling termination and monitoring functionality. It can also be used for controlling the adaptation (i.e. encapsulation and/or multiplexing of client signal), tandem connection monitoring, traffic conditioning and/or shaping functionality at an intermediate point along a connection. Where the client - server relationship is fixed 1:1 and immutable, the layers can be encapsulated in a single LTP instance. Where there is a n:1 relationship between client and server, the layers must be split over two separate instances of LTP. ";\r
724             }\r
725             grouping logical-termination-point-g {\r
726                 leaf-list server-ltp {\r
727                     type leafref {\r
728                         path '/network-element/ltp/uuid';\r
729                     }\r
730                     description "References contained LTPs representing servers of this LTP in an inverse multiplexing configuration (e.g. VCAT).";\r
731                 }\r
732                 leaf-list client-ltp {\r
733                     type leafref {\r
734                         path '/network-element/ltp/uuid';\r
735                     }\r
736                     description "References contained LTPs representing client traffic of this LTP for normal cases of multiplexing.";\r
737                 }\r
738                 list lp {\r
739                     key 'uuid';\r
740                     min-elements 1;\r
741                     uses layer-protocol-g;\r
742                     description "Ordered list of LayerProtocols that this LTP is comprised of where the first entry in the list is the lowest server layer (e.g. physical).";\r
743                 }\r
744                 leaf connected-ltp {\r
745                     type leafref {\r
746                         path '/network-element/ltp/uuid';\r
747                     }\r
748                     description "Applicable in a simple context where two LTPs are associated via a non-adjustable enabled forwarding.\r
749                         Reduces clutter removing the need for two additional LTPs and an FC with a pair of FcPorts.";\r
750                 }\r
751                 leaf peer-ltp {\r
752                     type leafref {\r
753                         path '/network-element/ltp/uuid';\r
754                     }\r
755                     description "References contained LTPs representing the reversal of orientation of flow where two LTPs are associated via a non-adjustable enabled forwarding and where the referenced LTP is fully dependent on the this LTP.";\r
756                 }\r
757                 leaf-list physical-port-reference {\r
758                     type string;\r
759                     description "One or more text labels for the unmodelled physical port associated with the LTP.\r
760                         In many cases there is no associated physical port.";\r
761                 }\r
762                 leaf-list ltp-in-other-view {\r
763                     type leafref {\r
764                         path '/network-element/ltp/uuid';\r
765                     }\r
766                     description "References one or more LTPs in other views that represent this LTP. \r
767                         The referencing LTP is the provider of capability.";\r
768                 }\r
769                 leaf ltp-direction {\r
770                     type termination-direction;\r
771                     description "The overall directionality of the LTP. \r
772                         - A BIDIRECTIONAL LTP must have at least some LPs that are BIDIRECTIONAL but may also have some SINK and/or SOURCE LPs.\r
773                         - A SINK LTP can only contain SINK LPs\r
774                         - A SOURCE LTP can only contain SOURCE LPs";\r
775                 }\r
776                 uses global-class-g;\r
777                 description "The LogicalTerminationPoint (LTP) class encapsulates the termination and adaptation functions of one or more transport layers represented by instances of LayerProtocol.\r
778                     The encapsulated transport layers have a simple fixed 1:1 client-server relationship defined by association end ordering.\r
779                     The structure of LTP supports all transport protocols including circuit and packet forms.";\r
780             }\r
781             feature protection-exclude-server {\r
782                 description "In protection context if server of protection where entire server is to be excluded from use for protection.";\r
783             }\r
784             feature protection-exclude-fc-port {\r
785                 description "In protection context where the FcPort is to be excluded from use for protection.";\r
786             }\r
787             feature protection-exclude-ltp {\r
788                 description "In protection context if LTP of protection where entire LTP is to be excluded from use for protection.";\r
789             }\r
790 \r
791         /***********************\r
792         * package diagrams\r
793         **********************/ \r
794 \r
795         /***********************\r
796         * package associations\r
797         **********************/ \r
798 \r
799 \r
800     /***********************\r
801     * package core-foundation-model\r
802     **********************/ \r
803         /***********************\r
804         * package type-definitions\r
805         **********************/ \r
806             typedef date-and-time {\r
807                 type string;\r
808                 description "This primitive type defines the date and time according to the following structure:\r
809                     'yyyyMMddhhmmss.s[Z|{+|-}HHMm]' where:\r
810                     yyyy    '0000'..'9999'    year\r
811                     MM        '01'..'12'            month\r
812                     dd        '01'..'31'            day\r
813                     hh        '00'..'23'            hour\r
814                     mm        '00'..'59'            minute\r
815                     ss        '00'..'59'            second\r
816                     s        '.0'..'.9'            tenth of second (set to '.0' if EMS or NE cannot support this granularity)\r
817                     Z        'Z'                    indicates UTC (rather than local time)\r
818                     {+|-}    '+' or '-'            delta from UTC\r
819                     HH        '00'..'23'            time zone difference in hours\r
820                     Mm        '00'..'59'            time zone difference in minutes.";\r
821             }\r
822             typedef bit-string {\r
823                 type string;\r
824                 description "This primitive type defines a bit oriented string.\r
825                     The size of the BitString will be defined in the valueRange property of the attribute; according to ASN.1 (X.680).\r
826                     The semantic of each bit position will be defined in the Documentation field of the attribute.";\r
827             }\r
828             typedef real {\r
829                 type string;\r
830                 description "This primitive type maps to the 'realnumber' defined in Recommendation X.680.";\r
831             }\r
832             typedef printable-string {\r
833                 type string;\r
834                 description "A string that only includes printable characters.";\r
835             }\r
836             typedef to-be-defined {\r
837                 type string;\r
838                 description "This type is used when the actual type of the attrbute is expected to be complex but where the type has not yet been developed. \r
839                     This type should only be used for attributes that are experimental.";\r
840             }\r
841 \r
842         /***********************\r
843         * package super-classes-and-common-packages\r
844         **********************/ \r
845             /***********************\r
846             * package object-classes\r
847             **********************/ \r
848                 grouping name-g {\r
849                     list name {\r
850                         key 'value-name';\r
851                         min-elements 1;\r
852                         uses name-and-value-g;\r
853                         description "List of names.";\r
854                     }\r
855                     description "Name: A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";\r
856                 }\r
857                 grouping global-class-g {\r
858                     list local-id {\r
859                         key 'value-name';\r
860                         uses name-and-value-g;\r
861                         description "An identifier that is unique in the context of some scope that is less than the global scope.\r
862                             (consider in the context of Identifier: A property of an entity/role with a value that is unique within an identifier space, where the identifier space is itself unique, and immutable. The identifier therefore represents the identity of the entity/role. An identifier carries no semantics with respect to the purpose of the entity.)";\r
863                     }\r
864                     leaf uuid {\r
865                         type universal-id;\r
866                         description "UUID: An identifier that is universally unique\r
867                             (consider in the context of Identifier: A property of an entity/role with a value that is unique within an identifier space, where the identifier space is itself globally unique, and immutable. An identifier carries no semantics with respect to the purpose or state of the entity)\r
868                             The uuid should be treated as opaque by the user.";\r
869                     }\r
870                     uses name-g;\r
871                     uses label-g;\r
872                     uses extension-g;\r
873                     uses state-pac-g;\r
874                     description "Represents a type of thing (an Entity) that has instances which can exist in their own right (independently of any others).\r
875                         Entity: Has identity, defined boundary, properties, functionality and lifecycle in a global context.\r
876                         (consider in the context of a Class: (usage) The representation of a thing that may be an entity or an inseparable Entity Feature).";\r
877                 }\r
878                 grouping local-class-g {\r
879                     list local-id {\r
880                         key 'value-name';\r
881                         min-elements 1;\r
882                         uses name-and-value-g;\r
883                         description "An identifier that is unique in the context of some scope that is less than the global scope.\r
884                             (consider in the context of Identifier: A property of an entity/role with a value that is unique within an identifier space, where the identifier space is itself unique, and immutable. The identifier therefore represents the identity of the entity/role. An identifier carries no semantics with respect to the purpose of the entity.)";\r
885                     }\r
886                     leaf uuid {\r
887                         type universal-id;\r
888                         description "A global identifier for the LocalClass, which is used as reference.";\r
889                     }\r
890                     uses name-g;\r
891                     uses label-g;\r
892                     uses extension-g;\r
893                     uses state-pac-g;\r
894                     description "A LocalClass represents a Feature of an Entity. It is inseparable from a GlobalClass but is a distinct feature of that GlobalClass such that the instances of LocalClass are able to have associations to other instances..\r
895                         Feature of an Entity: An inseparable, externally distinguishable part of an entity.\r
896                         The mandatory LocalId of the LocalClass instance is unique in the context of the GlobalClass from which it is inseparable.\r
897                         (consider in the context of a Class: (usage) The representation of a thing that may be an entity or an inseparable feature of an entity)\r
898                         ";\r
899                 }\r
900                 grouping label-g {\r
901                     list label {\r
902                         key 'value-name';\r
903                         uses name-and-value-g;\r
904                         description "List of labels.";\r
905                     }\r
906                     description "A property of an entity with a value that is not expected to be unique and is allowed to change. A label carries no semantics with respect to the purpose of the entity and has no effect on the entity behavior or state.";\r
907                 }\r
908                 grouping extension-g {\r
909                     list extension {\r
910                         key 'value-name';\r
911                         uses name-and-value-g;\r
912                         description "List of simple name-value extensions.";\r
913                     }\r
914                     description "Extension provides an opportunity to define properties not declared in the class that extend the class enabling a realization with simple ad-hoc extension of standard classes to be conformant.";\r
915                 }\r
916                 grouping universal-id-authority-g {\r
917                     leaf uuid {\r
918                         type universal-id;\r
919                         description "The UUID for the UUID authority.";\r
920                     }\r
921                     description "Represents the authority that controls the allocation of UUIDs.";\r
922                 }\r
923                 grouping name-and-value-authority-g {\r
924                     leaf uuid {\r
925                         type universal-id;\r
926                         description "The UUID for the NameValueAuthority.";\r
927                     }\r
928                     description "Represents the authority that controls the legal values for the names and values of a name/value attribute.";\r
929                 }\r
930                 grouping conditional-package-g {\r
931                     uses extension-g;\r
932                     uses label-g;\r
933                     description "The base class for conditional packages.";\r
934                 }\r
935 \r
936             /***********************\r
937             * package type-definitions\r
938             **********************/ \r
939                 grouping name-and-value-g {\r
940                     leaf value-name {\r
941                         type string;\r
942                         description "The name of the value. The value need not have a name.";\r
943                     }\r
944                     leaf value {\r
945                         type string;\r
946                         description "The value.";\r
947                     }\r
948                     description "A scoped name-value pair.";\r
949                 }\r
950                 typedef universal-id {\r
951                     type string;\r
952                     description "The universal ID value where the mechanism for generation is defined by some authority not directly referenced in the structure.\r
953                         A example structure is [IETF RFC4122].";\r
954                 }\r
955                 grouping address-g {\r
956                     leaf address-name {\r
957                         type string;\r
958                         description "The name of the address (to allow the specific hierarchy to be distinguished from others for the same entity).";\r
959                     }\r
960                     list address-element {\r
961                         key 'uuid';\r
962                         uses address-element-g;\r
963                         description "The elements of the address that form the recursive scope narrowing.";\r
964                     }\r
965                     description "A description of location via a hierarchy of narrowing contexts.";\r
966                 }\r
967                 grouping local-id-and-class-g {\r
968                     leaf class-of-instance {\r
969                         type string;\r
970                         description "The class to which the name refers.";\r
971                     }\r
972                     container local-id {\r
973                         uses name-and-value-g;\r
974                         description "The localId of the entity.";\r
975                     }\r
976                     description "The localId and the class of entity that it identifies.";\r
977                 }\r
978                 grouping name-and-class-g {\r
979                     leaf class-of-instance {\r
980                         type string;\r
981                         description "The class to which the name refers.";\r
982                     }\r
983                     container name {\r
984                         uses name-and-value-g;\r
985                         description "If the element is a name.";\r
986                     }\r
987                     description "The name and the class of entity that it names.";\r
988                 }\r
989                 grouping address-element-g {\r
990                     leaf address-element-name {\r
991                         type string;\r
992                         description "The name of the address element (e.g. 'shelf' as an element of a shelf/slot/port addressing scheme).\r
993                             The remainder of the structure has the reference for the shelf.\r
994                             ";\r
995                     }\r
996                     container local-id {\r
997                         uses local-id-and-class-g;\r
998                         description "If the element is a localId (where the element above in the hierarchy must be the context in which the specific localId is relevant).";\r
999                     }\r
1000                     leaf uuid {\r
1001                         type universal-id;\r
1002                         description "If the element is a uuid (where this element could be the top of a hierarchy but may also be at some level in the hierarchy where address navigation is considered necessary to assist in location of the UUID).";\r
1003                     }\r
1004                     container name {\r
1005                         uses name-and-class-g;\r
1006                         description "If the element is a name.";\r
1007                     }\r
1008                     leaf arbitrary-element {\r
1009                         type string;\r
1010                         description "Where the element is from some external model that is not formally represented in this model.";\r
1011                     }\r
1012                     description "One element of a hierarchy of elements.\r
1013                         Note that the element must have one and only one value chosen from a list of potential value types.";\r
1014                 }\r
1015 \r
1016 \r
1017         /***********************\r
1018         * package state-model\r
1019         **********************/ \r
1020             /***********************\r
1021             * package object-classes\r
1022             **********************/ \r
1023                 grouping state-pac-g {\r
1024                     leaf operational-state {\r
1025                         type operational-state;\r
1026                         config false;\r
1027                         description "The operational state is used to indicate whether or not the resource is installed and working.";\r
1028                     }\r
1029                     leaf administrative-control {\r
1030                         type administrative-control;\r
1031                         description "The administrativeControl state provides control of the availability of specific resources without modification to the provisioning of those resources.\r
1032                             The value is the current control target. The actual administrativeState may or may not be at target.";\r
1033                     }\r
1034                     leaf administrative-state {\r
1035                         type administrative-state;\r
1036                         config false;\r
1037                         description "Shows whether or not the client has permission to use or has a prohibition against using the resource.\r
1038                             The administrative state expresses usage permissions for specific resources without modification to the provisioning of those resources.";\r
1039                     }\r
1040                     leaf lifecycle-state {\r
1041                         type lifecycle-state;\r
1042                         description "Used to track the planned deployment, allocation to clients and withdrawal of resources.";\r
1043                     }\r
1044                     description "Provides general state attributes.";\r
1045                 }\r
1046 \r
1047             /***********************\r
1048             * package type-definitions\r
1049             **********************/ \r
1050                 typedef operational-state {\r
1051                     type enumeration {\r
1052                         enum disabled {\r
1053                             description "The resource is unable to meet the SLA of the user of the resource. If no (explicit) SLA is defined the resource is disabled if it is totally inoperable and unable to provide service to the user.";\r
1054                         }\r
1055                         enum enabled {\r
1056                             description "The resource is partially or fully operable and available for use.";\r
1057                         }\r
1058                     }\r
1059                     description "The possible values of the operationalState.";\r
1060                 }\r
1061                 typedef administrative-state {\r
1062                     type enumeration {\r
1063                         enum locked {\r
1064                             description "Users are administratively prohibited from making use of the resource.";\r
1065                         }\r
1066                         enum unlocked {\r
1067                             description "Users are allowed to use the resource.";\r
1068                         }\r
1069                     }\r
1070                     description "The possible values of the administrativeState.";\r
1071                 }\r
1072                 typedef administrative-control {\r
1073                     type enumeration {\r
1074                         enum unlock {\r
1075                             description "The intention is for the entity to become unlocked.\r
1076                                 The entity may already be UNLOCKED.";\r
1077                         }\r
1078                         enum lock-passive {\r
1079                             description "The intention is for the entity to become locked but no effort is expected to move to the Locked state (the state will be achieved once all users stop using the resource). \r
1080                                 The entity may be LOCKED.";\r
1081                         }\r
1082                         enum lock-active {\r
1083                             description "The intention is for the entity to become locked and it is expected that effort will be made to move to the Locked state (users will be actively removed). \r
1084                                 The entity may already be LOCKED.";\r
1085                         }\r
1086                         enum lock-immediate {\r
1087                             description "The intention is for the entity to become locked and it is expected to move to the Locked state immediately (users will be force removed). \r
1088                                 The entity may already be LOCKED.";\r
1089                         }\r
1090                     }\r
1091                     description "Reflects the current control action when the entity is not in the desired state.\r
1092                         The possible values of the current target administrative state.";\r
1093                 }\r
1094                 typedef extended-admin-state {\r
1095                     type enumeration {\r
1096                         enum locked {\r
1097                             description "Users are administratively prohibited from making use of the resource.";\r
1098                         }\r
1099                         enum unlocked {\r
1100                             description "Users are allowed to use the resource.";\r
1101                         }\r
1102                         enum shutting-down-active {\r
1103                             description "The entity is administratively restricted to existing instances of use only. There are specific actions to remove existing uses. There may be no new instances of use enabled. This corresponds to a control of LOCK_ACTIVE.";\r
1104                         }\r
1105                         enum shutting-down-passive {\r
1106                             description "The entity is administratively restricted to existing instances of use only. There may be no new instances of use enabled. This corresponds to a control of LOCK_PASSIVE.";\r
1107                         }\r
1108                     }\r
1109                     description "Possible extensions to AdministrativeState.";\r
1110                 }\r
1111                 typedef lifecycle-state {\r
1112                     type enumeration {\r
1113                         enum planned {\r
1114                             description "The resource is planned but is not present in the network.";\r
1115                         }\r
1116                         enum potential {\r
1117                             description "The supporting resources are present in the network but are shared with other clients; or require further configuration before they can be used; or both.o    When a potential resource is configured and allocated to a client it is moved to the 'installed' state for that client.o    If the potential resource has been consumed (e.g. allocated to another client) it is moved to the 'planned' state for all other clients.";\r
1118                         }\r
1119                         enum installed {\r
1120                             description "The resource is present in the network and is capable of providing the service expected.";\r
1121                         }\r
1122                         enum pending-removal {\r
1123                             description "The resource has been marked for removal.";\r
1124                         }\r
1125                     }\r
1126                     description "The possible values of the lifecycleState.";\r
1127                 }\r
1128 \r
1129 \r
1130 \r
1131     /***********************\r
1132     * package core-operations-model\r
1133     **********************/ \r
1134         /***********************\r
1135         * package pattern\r
1136         **********************/ \r
1137             /***********************\r
1138             * package data-types\r
1139             **********************/ \r
1140                 typedef action-verbs {\r
1141                     type enumeration {\r
1142                         enum create-post-add {\r
1143                             description "none";\r
1144                         }\r
1145                         enum set-update-put-modify-write-add {\r
1146                             description "none";\r
1147                         }\r
1148                         enum get-read {\r
1149                             description "none";\r
1150                         }\r
1151                         enum delete-remove {\r
1152                             description "none";\r
1153                         }\r
1154                     }\r
1155                     description "none";\r
1156                 }\r
1157                 typedef test-type {\r
1158                     type string;\r
1159                     description "none";\r
1160                 }\r
1161                 typedef activity-directive {\r
1162                     type enumeration {\r
1163                         enum structure-is-not {\r
1164                             description "none";\r
1165                         }\r
1166                         enum new-structure-and-values {\r
1167                             description "none";\r
1168                         }\r
1169                         enum incremental-structure-and-values {\r
1170                             description "none";\r
1171                         }\r
1172                         enum only-values-in-existing-structure {\r
1173                             description "none";\r
1174                         }\r
1175                         enum defined-by-verb {\r
1176                             description "none";\r
1177                         }\r
1178                     }\r
1179                     description "none";\r
1180                 }\r
1181 \r
1182             /***********************\r
1183             * package diagrams\r
1184             **********************/ \r
1185                 typedef action-effort {\r
1186                     type enumeration {\r
1187                         enum best-effort {\r
1188                             description "none";\r
1189                         }\r
1190                         enum exact-match {\r
1191                             description "none";\r
1192                         }\r
1193                     }\r
1194                     description "none";\r
1195                 }\r
1196                 typedef pause-resume-rule {\r
1197                     type enumeration {\r
1198                         enum no-pause-possible {\r
1199                             description "none";\r
1200                         }\r
1201                     }\r
1202                     description "none";\r
1203                 }\r
1204 \r
1205             /***********************\r
1206             * package object-classes\r
1207             **********************/ \r
1208                 grouping general-directives-g {\r
1209                     description "none";\r
1210                 }\r
1211                 grouping necessary-initial-condition-constraints-g {\r
1212                     leaf is-not {\r
1213                         type boolean;\r
1214                         description "none";\r
1215                     }\r
1216                     description "none";\r
1217                 }\r
1218                 grouping operation-details-g {\r
1219                     leaf action-verb {\r
1220                         type action-verbs;\r
1221                         description "none";\r
1222                     }\r
1223                     list necessary-initialcondition-constraints {\r
1224                         key 'is-not';\r
1225                         uses necessary-initial-condition-constraints-g;\r
1226                         description "none";\r
1227                     }\r
1228                     description "none";\r
1229                 }\r
1230                 container operation-envelope {\r
1231                     presence  "";\r
1232                     list operation-set {\r
1233                         key 'effort-and-action';\r
1234                         min-elements 1;\r
1235                         uses operation-set-g;\r
1236                         description "none";\r
1237                     }\r
1238                     container generaldirectives {\r
1239                         uses general-directives-g;\r
1240                         description "none";\r
1241                     }\r
1242                     container operationidentifiers {\r
1243                         uses operation-identifiers-g;\r
1244                         description "none";\r
1245                     }\r
1246                     description "none";\r
1247                 }\r
1248                 grouping operation-identifiers-g {\r
1249                     description "none";\r
1250                 }\r
1251                 grouping operation-set-g {\r
1252                     leaf-list after-operation-set {\r
1253                         type leafref {\r
1254                             path '/operation-envelope/operation-set/effort-and-action';\r
1255                         }\r
1256                         description "none";\r
1257                     }\r
1258                     leaf-list before-operation-set {\r
1259                         type leafref {\r
1260                             path '/operation-envelope/operation-set/effort-and-action';\r
1261                         }\r
1262                         description "none";\r
1263                     }\r
1264                     leaf effort-and-action {\r
1265                         type action-effort;\r
1266                         description "none";\r
1267                     }\r
1268                     leaf pause-resume-rule {\r
1269                         type pause-resume-rule;\r
1270                         description "none";\r
1271                     }\r
1272                     leaf-list operationset {\r
1273                         type leafref {\r
1274                             path '/operation-envelope/operation-set/effort-and-action';\r
1275                         }\r
1276                         description "none";\r
1277                     }\r
1278                     leaf is-short-lived {\r
1279                         type boolean;\r
1280                         default true;\r
1281                         description "none";\r
1282                     }\r
1283                     list operation-details {\r
1284                         key 'action-verb';\r
1285                         min-elements 1;\r
1286                         uses operation-details-g;\r
1287                         description "none";\r
1288                     }\r
1289                     description "none";\r
1290                 }\r
1291 \r
1292 \r
1293 \r
1294     /***********************\r
1295     * package core-physical-model-initial\r
1296     **********************/ \r
1297         /***********************\r
1298         * package rule-models\r
1299         **********************/ \r
1300             /***********************\r
1301             * package connector-rules\r
1302             **********************/ \r
1303                 /***********************\r
1304                 * package object-classes\r
1305                 **********************/ \r
1306                     grouping connector-in-holder-g {\r
1307                         leaf connector-on-equipment-for-holder {\r
1308                             type universal-id;\r
1309                             description "none";\r
1310                         }\r
1311                         uses connector-g;\r
1312                         description "A rule class (an abstract specialization of Connector) that represents a connector that are only accessible to an equipment inserted in the holder.";\r
1313                     }\r
1314                     grouping connector-cable-end-g {\r
1315                         leaf connector-on-equipment-for-cable {\r
1316                             type universal-id;\r
1317                             description "none";\r
1318                         }\r
1319                         uses connector-g;\r
1320                         description "A rule class (an abstract specialization of Connector) that represents a connector on the end of a cable.";\r
1321                     }\r
1322                     grouping connector-on-equipment-for-cable-g {\r
1323                         leaf connector-cable-end {\r
1324                             type universal-id;\r
1325                             description "none";\r
1326                         }\r
1327                         uses connector-g;\r
1328                         description "A rule class (an abstract specialization of Connector) that represents a connector exposed on an equipment such that a cable may be plugged in.";\r
1329                     }\r
1330                     grouping connector-on-equipment-for-holder-g {\r
1331                         leaf connector-in-holder {\r
1332                             type universal-id;\r
1333                             description "none";\r
1334                         }\r
1335                         uses connector-g;\r
1336                         description "A rule class (an abstract specialization of Connector) that represents a connector on an equipment that is intended to mate with a connector in a holder.";\r
1337                     }\r
1338 \r
1339 \r
1340 \r
1341         /***********************\r
1342         * package equipment-detail\r
1343         **********************/ \r
1344             /***********************\r
1345             * package object-classes\r
1346             **********************/ \r
1347                 /***********************\r
1348                 * package dynamic-details\r
1349                 **********************/ \r
1350                     grouping function-enablers-g {\r
1351                         leaf power-state {\r
1352                             type to-be-defined;\r
1353                             description "none";\r
1354                         }\r
1355                         description "Represents the dynamic aspects of the properties that relate to the motive force that directly enable functionality to emerge from the equipment.";\r
1356                     }\r
1357                     grouping mechanical-functions-g {\r
1358                         leaf rotation-speed {\r
1359                             type to-be-defined;\r
1360                             description "none";\r
1361                         }\r
1362                         description "Represents the dynamic aspects of the mechanical functions of the equipment.";\r
1363                     }\r
1364                     grouping physical-properties-g {\r
1365                         leaf temperature {\r
1366                             type to-be-defined;\r
1367                             description "none";\r
1368                         }\r
1369                         description "Represents the dynamic aspects of the physical environmental properties of the equipment.";\r
1370                     }\r
1371                     grouping holder-monitors-g {\r
1372                         leaf is-active {\r
1373                             type boolean;\r
1374                             description "none";\r
1375                         }\r
1376                         leaf is-actual-mismatch-with-expected {\r
1377                             type boolean;\r
1378                             description "none";\r
1379                         }\r
1380                         leaf aggregate-function {\r
1381                             type string;\r
1382                             description "none";\r
1383                         }\r
1384                         description "Represents the dynamic state of the holder instance. ";\r
1385                     }\r
1386                     grouping location-g {\r
1387                         container equipment-location {\r
1388                             uses address-g;\r
1389                             description "none";\r
1390                         }\r
1391                         container geographical-location {\r
1392                             uses address-g;\r
1393                             description "none";\r
1394                         }\r
1395                         description "none";\r
1396                     }\r
1397 \r
1398                 /***********************\r
1399                 * package invariant-details\r
1400                 **********************/ \r
1401                     grouping category-g {\r
1402                         leaf category {\r
1403                             type equipment-category;\r
1404                             description "none";\r
1405                         }\r
1406                         description "Represents the form of the equipment.";\r
1407                     }\r
1408                     grouping equipment-instance-g {\r
1409                         leaf manufacture-date {\r
1410                             type string;\r
1411                             description "none";\r
1412                         }\r
1413                         leaf serial-number {\r
1414                             type string;\r
1415                             description "none";\r
1416                         }\r
1417                         leaf asset-instance-identifier {\r
1418                             type string;\r
1419                             description "none";\r
1420                         }\r
1421                         description "Represents the per instance invariant properties of the equipment.";\r
1422                     }\r
1423                     grouping equipment-type-g {\r
1424                         leaf description {\r
1425                             type string;\r
1426                             description "none";\r
1427                         }\r
1428                         leaf model-identifier {\r
1429                             type string;\r
1430                             description "none";\r
1431                         }\r
1432                         leaf part-type-identifier {\r
1433                             type string;\r
1434                             description "none";\r
1435                         }\r
1436                         leaf type-name {\r
1437                             type string;\r
1438                             description "none";\r
1439                         }\r
1440                         leaf version {\r
1441                             type string;\r
1442                             description "none";\r
1443                         }\r
1444                         description "Represents the invariant properties of the equipment that define and characterise the type.";\r
1445                     }\r
1446                     grouping holder-structure-g {\r
1447                         leaf holder-category {\r
1448                             type holder-category;\r
1449                             description "none";\r
1450                         }\r
1451                         leaf is-captive {\r
1452                             type boolean;\r
1453                             description "none";\r
1454                         }\r
1455                         leaf is-guided {\r
1456                             type boolean;\r
1457                             description "none";\r
1458                         }\r
1459                         leaf is-quantized-space {\r
1460                             type boolean;\r
1461                             description "none";\r
1462                         }\r
1463                         description "Represents the form of the holder.";\r
1464                     }\r
1465                     grouping manufactured-thing-g {\r
1466                         container manufacturer-properties {\r
1467                             uses manufacturer-properties-g;\r
1468                             description "none";\r
1469                         }\r
1470                         container equipment-type {\r
1471                             uses equipment-type-g;\r
1472                             description "none";\r
1473                         }\r
1474                         container equipment-instance {\r
1475                             uses equipment-instance-g;\r
1476                             description "none";\r
1477                         }\r
1478                         container operator-augmented-equipment-type {\r
1479                             uses operator-augmented-equipment-type-g;\r
1480                             description "none";\r
1481                         }\r
1482                         description "Collects all invariant aspects of a manufactured thing.";\r
1483                     }\r
1484                     grouping manufacturer-properties-g {\r
1485                         leaf manufacturer-identifier {\r
1486                             type string;\r
1487                             description "none";\r
1488                         }\r
1489                         leaf manufacturer-name {\r
1490                             type string;\r
1491                             description "none";\r
1492                         }\r
1493                         description "Represents the properties of the manufacturer.";\r
1494                     }\r
1495                     grouping mechanical-features-g {\r
1496                         description "Represents the invariant characteristics of dynamic mechanical features of a physical thing.";\r
1497                     }\r
1498                     grouping operator-augmented-equipment-type-g {\r
1499                         leaf asset-type-identifier {\r
1500                             type string;\r
1501                             description "none";\r
1502                         }\r
1503                         description "Represents the invariant properties of the equipment asset allocated by the operator that define and characterise the type.";\r
1504                     }\r
1505                     grouping physical-characteristics-g {\r
1506                         leaf weight-characteristics {\r
1507                             type to-be-defined;\r
1508                             description "none";\r
1509                         }\r
1510                         leaf fire-characteristics {\r
1511                             type to-be-defined;\r
1512                             description "none";\r
1513                         }\r
1514                         leaf materials {\r
1515                             type to-be-defined;\r
1516                             description "none";\r
1517                         }\r
1518                         description "Represents the invariant physical characteristics (including composition and physical robustness) of the type.";\r
1519                     }\r
1520                     grouping physical-rating-g {\r
1521                         leaf thermal-rating {\r
1522                             type to-be-defined;\r
1523                             description "none";\r
1524                         }\r
1525                         leaf power-rating {\r
1526                             type to-be-defined;\r
1527                             description "none";\r
1528                         }\r
1529                         description "Represents the invariant physical operational boundaries for the equipment/holder type.";\r
1530                     }\r
1531                     grouping position-g {\r
1532                         leaf relative-position {\r
1533                             type to-be-defined;\r
1534                             description "none";\r
1535                         }\r
1536                         description "Represents the invariant relative position of the holder (with respect to some frame of reference in an equipment) or connector on an equipment or pin in a connector.";\r
1537                     }\r
1538                     grouping spatial-properties-of-type-g {\r
1539                         leaf height {\r
1540                             type to-be-defined;\r
1541                             description "none";\r
1542                         }\r
1543                         leaf width {\r
1544                             type to-be-defined;\r
1545                             description "none";\r
1546                         }\r
1547                         leaf length {\r
1548                             type to-be-defined;\r
1549                             description "none";\r
1550                         }\r
1551                         description "Represents the basic invariant spatial properties of a physical thing.";\r
1552                     }\r
1553                     grouping swapability-g {\r
1554                         leaf is-hot-swappable {\r
1555                             type boolean;\r
1556                             default true;\r
1557                             description "none";\r
1558                         }\r
1559                         description "Represents the degree of field replacement that is possible for the equipment type.";\r
1560                     }\r
1561 \r
1562 \r
1563 \r
1564         /***********************\r
1565         * package equipment-pattern-structure\r
1566         **********************/ \r
1567             /***********************\r
1568             * package object-classes\r
1569             **********************/ \r
1570                 grouping cable-g {\r
1571                     list connector {\r
1572                         key 'uuid';\r
1573                         min-elements 1;\r
1574                         uses connector-g;\r
1575                         description "none";\r
1576                     }\r
1577                     container manufactured-thing {\r
1578                         uses manufactured-thing-g;\r
1579                         description "none";\r
1580                     }\r
1581                     container physical-characteristics {\r
1582                         uses physical-characteristics-g;\r
1583                         description "none";\r
1584                     }\r
1585                     container mechanical-features {\r
1586                         uses mechanical-features-g;\r
1587                         description "none";\r
1588                     }\r
1589                     container spatial-properties-of-type {\r
1590                         uses spatial-properties-of-type-g;\r
1591                         description "none";\r
1592                     }\r
1593                     uses global-class-g;\r
1594                     description "Basic model representing a cable with connectors fitted where the cable is 'short' (e.g.  patch cord, in-station cabling).\r
1595                         This is intentionally a very basic representation of a cable. \r
1596                         In a more sophisticated representation cable ends might be represented that then associate to the attached connector. \r
1597                         At this point it is assumed that the basic model is sufficient.";\r
1598                 }\r
1599                 grouping connector-g {\r
1600                     leaf connector {\r
1601                         type string;\r
1602                         description "none";\r
1603                     }\r
1604                     list pin {\r
1605                         key 'position';\r
1606                         min-elements 1;\r
1607                         uses pin-g;\r
1608                         description "none";\r
1609                     }\r
1610                     leaf orientation {\r
1611                         type connector-and-pin-orientation;\r
1612                         description "none";\r
1613                     }\r
1614                     container manufactured-thing {\r
1615                         uses manufactured-thing-g;\r
1616                         description "none";\r
1617                     }\r
1618                     container position {\r
1619                         uses position-g;\r
1620                         description "none";\r
1621                     }\r
1622                     container mechanical-features {\r
1623                         uses mechanical-features-g;\r
1624                         description "none";\r
1625                     }\r
1626                     container pin-layout {\r
1627                         uses pin-layout-g;\r
1628                         description "none";\r
1629                     }\r
1630                     leaf connector-type {\r
1631                         type to-be-defined;\r
1632                         description "none";\r
1633                     }\r
1634                     uses local-class-g;\r
1635                     uses group-of-pins-g;\r
1636                     description "Represents a connector that may be fully exposed (e.g. to plug in a cable or on the end of a cable) or partially exposed (e.g. backplane to plug in another piece of equipment such as a module).";\r
1637                 }\r
1638                 grouping equipment-g {\r
1639                     list connector {\r
1640                         key 'uuid';\r
1641                         uses connector-g;\r
1642                         description "none";\r
1643                     }\r
1644                     list contained-holder {\r
1645                         key 'uuid';\r
1646                         uses holder-g;\r
1647                         description "none";\r
1648                     }\r
1649                     list exposed-cable {\r
1650                         key 'uuid';\r
1651                         uses cable-g;\r
1652                         description "none";\r
1653                     }\r
1654                     container manufactured-thing {\r
1655                         uses manufactured-thing-g;\r
1656                         description "none";\r
1657                     }\r
1658                     container spatial-properties-of-type {\r
1659                         uses spatial-properties-of-type-g;\r
1660                         description "none";\r
1661                     }\r
1662                     container mechanical-features {\r
1663                         uses mechanical-features-g;\r
1664                         description "none";\r
1665                     }\r
1666                     container physical-properties {\r
1667                         uses physical-properties-g;\r
1668                         description "none";\r
1669                     }\r
1670                     container function-enablers {\r
1671                         uses function-enablers-g;\r
1672                         description "none";\r
1673                     }\r
1674                     container mechanical-functions {\r
1675                         uses mechanical-functions-g;\r
1676                         description "none";\r
1677                     }\r
1678                     container physical-characteristics {\r
1679                         uses physical-characteristics-g;\r
1680                         description "none";\r
1681                     }\r
1682                     container swapability {\r
1683                         uses swapability-g;\r
1684                         description "none";\r
1685                     }\r
1686                     container category {\r
1687                         uses category-g;\r
1688                         description "none";\r
1689                     }\r
1690                     container physical-rating {\r
1691                         uses physical-rating-g;\r
1692                         description "none";\r
1693                     }\r
1694                     leaf is-field-replaceable {\r
1695                         type boolean;\r
1696                         default true;\r
1697                         config false;\r
1698                         description "Indicates whether or not the equipment can be removed and replaced 'in the field' (i.e. in a deployment) by normal operations personnel. \r
1699                             ";\r
1700                     }\r
1701                     leaf-list function-block {\r
1702                         type string;\r
1703                         description "none";\r
1704                     }\r
1705                     container expected-equipment {\r
1706                         uses expected-equipment-g;\r
1707                         description "none";\r
1708                     }\r
1709                     container actual-equipment {\r
1710                         uses actual-equipment-g;\r
1711                         description "none";\r
1712                     }\r
1713                     container location {\r
1714                         uses location-g;\r
1715                         description "none";\r
1716                     }\r
1717                     uses global-class-g;\r
1718                     description "Represents any relevant physical thing. \r
1719                         Can be either field replaceable or not field replaceable.\r
1720                         Note: The model is currently constrained to inside plant.";\r
1721                 }\r
1722                 list equipment {\r
1723                     key 'uuid';\r
1724                     uses equipment-g;\r
1725                                 description "none";\r
1726 }\r
1727                 grouping holder-g {\r
1728                     leaf-list connector {\r
1729                         type leafref {\r
1730                             path '/equipment/exposed-cable/connector/uuid';\r
1731                         }\r
1732                         description "none";\r
1733                     }\r
1734                     leaf occupying-fru {\r
1735                         type leafref {\r
1736                             path '/equipment/uuid';\r
1737                         }\r
1738                         description "The FRU that is occupying the holder. \r
1739                             A holder may be unoccupied. \r
1740                             An FRU may occupy more hat one holder (using or blocking are intentionally not distinguished here).";\r
1741                     }\r
1742                     container spatial-properties-of-type {\r
1743                         uses spatial-properties-of-type-g;\r
1744                         description "none";\r
1745                     }\r
1746                     container holder-monitors {\r
1747                         uses holder-monitors-g;\r
1748                         description "none";\r
1749                     }\r
1750                     container holder-location {\r
1751                         uses address-g;\r
1752                         description "none";\r
1753                     }\r
1754                     container position {\r
1755                         uses position-g;\r
1756                         description "none";\r
1757                     }\r
1758                     container holder-structure {\r
1759                         uses holder-structure-g;\r
1760                         description "none";\r
1761                     }\r
1762                     container physical-rating {\r
1763                         uses physical-rating-g;\r
1764                         description "none";\r
1765                     }\r
1766                     leaf-list supported-equipment {\r
1767                         type string;\r
1768                         min-elements 1;\r
1769                         description "none";\r
1770                     }\r
1771                     container expected-holder {\r
1772                         uses expected-holder-g;\r
1773                         description "none";\r
1774                     }\r
1775                     container actual-holder {\r
1776                         uses actual-holder-g;\r
1777                         description "none";\r
1778                     }\r
1779                     uses local-class-g;\r
1780                     description "Represents a space in an equipment in which another equipment can be fitted in the field.";\r
1781                 }\r
1782 \r
1783             /***********************\r
1784             * package data-types\r
1785             **********************/ \r
1786                 typedef connector-and-pin-orientation {\r
1787                     type enumeration {\r
1788                         enum male {\r
1789                             description "The connecting elements are dominantly protrusions.";\r
1790                         }\r
1791                         enum female {\r
1792                             description "The connecting elements are dominantly indentations.";\r
1793                         }\r
1794                         enum symmetric-neutral {\r
1795                             description "The pin (and housing) orientation combination is such that it is symmetric so a connector is compatible with itself.\r
1796                                 The connecting element may be a surface rather than protrusions or indentations.";\r
1797                         }\r
1798                     }\r
1799                     description "Most connector schems are asymmetric such that there are two orientations of the connector where a mating is only possible between two connectors of different orientations. \r
1800                         A multi-pin connector may have a mix of pin orientations. In this case it is expected that the dominant orientation of pin is chosen for the connector orientation.";\r
1801                 }\r
1802                 typedef equipment-category {\r
1803                     type enumeration {\r
1804                         enum subrack {\r
1805                             description "An assembly with holders designed to accommodate CIRCUIT_PACKs. \r
1806                                 The assembly is designed to be mounted in a RACK.";\r
1807                         }\r
1808                         enum circuit-pack {\r
1809                             description "An assembly with connectors compatible with those in a holder.\r
1810                                 The assembly is designed to be mounted in a holder (SLOT) of a SUBRACK.\r
1811                                 May also support holders (SLOTs) for SMALL_FORMFACTOR_PLUGGABLEs";\r
1812                         }\r
1813                         enum small-formfactor-pluggable {\r
1814                             description "A small assembly (compared to a CIRCUIT_PACK) with connectors compatible with those in a holder.\r
1815                                 The assembly is designed to be mounted in a holder (SLOT) of a CIRCUIT_PACK or STAND_ALONE_UNIT.";\r
1816                         }\r
1817                         enum stand-alone-unit {\r
1818                             description "An assembly with connectors for cabling and potentially with holders.\r
1819                                 The assembly is designed to be mounted in a freeform environment (on a table or simple mechanical cabinet).\r
1820                                 May support holders (SLOTs) for CIRCUIT_PACKs or for SMALL_FORMFACTOR_PLUGGABLEs";\r
1821                         }\r
1822                         enum rack {\r
1823                             description "A mechanical assembly with cabling and predefined mounting points for particular SUBRACK types.\r
1824                                 The assembly is designed to be mounted on the floor in a row with other RACKs.";\r
1825                         }\r
1826                     }\r
1827                     description "The form of equipment.";\r
1828                 }\r
1829                 typedef holder-category {\r
1830                     type enumeration {\r
1831                         enum slot {\r
1832                             description "A guided holder with fixed connectors.\r
1833                                 The guided holder is designed to take a particular form of CIRCUIT_PACK or SMALL_FORMFACTOR_PLUGGABLE";\r
1834                         }\r
1835                     }\r
1836                     description "The form of holder.";\r
1837                 }\r
1838 \r
1839 \r
1840         /***********************\r
1841         * package expected-and-actual\r
1842         **********************/ \r
1843             /***********************\r
1844             * package object-classes\r
1845             **********************/ \r
1846                 grouping actual-holder-g {\r
1847                     description "A holder in the ActualEquipment.";\r
1848                 }\r
1849                 grouping expected-holder-g {\r
1850                     description "A definition of a holder expected in the ActualEquipment (i.e. an ActualHolder) as part of the constraints provided by the ExpectedEquipment.";\r
1851                 }\r
1852                 grouping actual-equipment-g {\r
1853                     description "The equipment that is actually present in the physical network.\r
1854                         It will expose all dynamic properties and some critical static properties.";\r
1855                 }\r
1856                 grouping expected-equipment-g {\r
1857                     description "A definition of the restrictions on the equipment that is expected to be present in the physical network at a particular 'place'.\r
1858                         The expected equipment will state the type and may constrain any other invariant properties. \r
1859                         It may also provide desired ranges for dynami properties.";\r
1860                 }\r
1861 \r
1862 \r
1863         /***********************\r
1864         * package connector-and-pin\r
1865         **********************/ \r
1866             /***********************\r
1867             * package object-classes\r
1868             **********************/ \r
1869                 grouping pin-g {\r
1870                     leaf position {\r
1871                         type leafref {\r
1872                             path '/equipment/exposed-cable/connector/position/relative-position';\r
1873                         }\r
1874                         description "none";\r
1875                     }\r
1876                     leaf orientation {\r
1877                         type connector-and-pin-orientation;\r
1878                         description "none";\r
1879                     }\r
1880                     description "An individual physical connection point (male or female).\r
1881                         May be capable of carrying electrical or optical signals. \r
1882                         A pin may have more than one wire/fiber attached but is such that all attached things get exactly the same signal set.";\r
1883                 }\r
1884                 grouping pin-group-g {\r
1885                     leaf-list pin {\r
1886                         type leafref {\r
1887                             path '/equipment/exposed-cable/connector/pin/position';\r
1888                         }\r
1889                         min-elements 1;\r
1890                         description "none";\r
1891                     }\r
1892                     uses port-g;\r
1893                     uses group-of-pins-g;\r
1894                     description "A group of pins that together provide signal group where any one pin removed from the group will prevent the signals of the signal group from flowing successfully.";\r
1895                 }\r
1896                 grouping pin-layout-g {\r
1897                     list position {\r
1898                         key 'relative-position';\r
1899                         min-elements 1;\r
1900                         uses position-g;\r
1901                         description "none";\r
1902                     }\r
1903                     description "The structuring of pins in a connector.";\r
1904                 }\r
1905                 grouping port-g {\r
1906                     description "A conceptual access point for a group of signals (where that group of signals cannot be separated).";\r
1907                 }\r
1908                 grouping signal-ref-pt-g {\r
1909                     leaf ltp {\r
1910                         type leafref {\r
1911                             path '/network-element/ltp/uuid';\r
1912                         }\r
1913                         description "none";\r
1914                     }\r
1915                     leaf-list elemental-signals {\r
1916                         type universal-id;\r
1917                         min-elements 1;\r
1918                         description "none";\r
1919                     }\r
1920                     description "A single coherent signal as processed by a single LTP.";\r
1921                 }\r
1922                 grouping signal-ref-pt-group-g {\r
1923                     leaf pin-group {\r
1924                         type universal-id;\r
1925                         description "none";\r
1926                     }\r
1927                     leaf-list signal-ref-pt {\r
1928                         type universal-id;\r
1929                         min-elements 1;\r
1930                         description "none";\r
1931                     }\r
1932                     uses port-g;\r
1933                     description "A physical indivisible group of signals.";\r
1934                 }\r
1935                 grouping elemental-signals-g {\r
1936                     leaf-list pin {\r
1937                         type leafref {\r
1938                             path '/equipment/exposed-cable/connector/pin/position';\r
1939                         }\r
1940                         min-elements 1;\r
1941                         description "none";\r
1942                     }\r
1943                     description "The elemental (sub-atomic) parts of an 'indivisible' signal where processing in the LTP is required to extract the elemental signals.";\r
1944                 }\r
1945                 grouping group-of-pins-g {\r
1946                     description "A group of pins from one or more connectors relevant for some purpose.";\r
1947                 }\r
1948 \r
1949 \r
1950 \r
1951 }\r