gnpy-api 0.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. gnpy_api-0.0.0.dist-info/METADATA +78 -0
  2. gnpy_api-0.0.0.dist-info/RECORD +40 -0
  3. gnpy_api-0.0.0.dist-info/WHEEL +5 -0
  4. gnpy_api-0.0.0.dist-info/licenses/AUTHORS +1 -0
  5. gnpy_api-0.0.0.dist-info/licenses/LICENSE +28 -0
  6. gnpy_api-0.0.0.dist-info/pbr.json +1 -0
  7. gnpy_api-0.0.0.dist-info/top_level.txt +1 -0
  8. gnpyapi/__init__.py +0 -0
  9. gnpyapi/core/__init__.py +12 -0
  10. gnpyapi/core/exception/__init__.py +1 -0
  11. gnpyapi/core/exception/config_error.py +14 -0
  12. gnpyapi/core/exception/equipment_error.py +14 -0
  13. gnpyapi/core/exception/exception_handler.py +34 -0
  14. gnpyapi/core/exception/path_computation_error.py +14 -0
  15. gnpyapi/core/exception/topology_error.py +13 -0
  16. gnpyapi/core/model/__init__.py +1 -0
  17. gnpyapi/core/model/error.py +17 -0
  18. gnpyapi/core/model/result.py +8 -0
  19. gnpyapi/core/route/__init__.py +1 -0
  20. gnpyapi/core/route/path_request_route.py +28 -0
  21. gnpyapi/core/route/status_route.py +8 -0
  22. gnpyapi/core/service/__init__.py +1 -0
  23. gnpyapi/core/service/config_service.py +4 -0
  24. gnpyapi/core/service/equipment_service.py +5 -0
  25. gnpyapi/core/service/path_request_service.py +36 -0
  26. gnpyapi/core/service/topology_service.py +5 -0
  27. gnpyapi/exampledata/planning_demand_example.json +1578 -0
  28. gnpyapi/tools/__init__.py +0 -0
  29. gnpyapi/yang/gnpy-api@2021-01-06.yang +81 -0
  30. gnpyapi/yang/gnpy-eqpt-config@2020-10-22.yang +442 -0
  31. gnpyapi/yang/gnpy-eqpt-config@2025-01-20.yang +770 -0
  32. gnpyapi/yang/gnpy-network-topology@2020-10-22.yang +300 -0
  33. gnpyapi/yang/gnpy-network-topology@2025-01-20.yang +594 -0
  34. gnpyapi/yang/gnpy-path-computation-simplified@2020-10-22.yang +559 -0
  35. gnpyapi/yang/gnpy-path-computation@2025-01-21.yang +632 -0
  36. gnpyapi/yang/ietf-layer0-types@2024-03-04.yang +2247 -0
  37. gnpyapi/yang/ietf-optical-impairment-topology@2024-05-21.yang +1776 -0
  38. gnpyapi/yang/ietf-routing-types@2017-12-04.yang +771 -0
  39. gnpyapi/yang/ietf-te-topology@2020-08-06.yang +1952 -0
  40. gnpyapi/yang/ietf-te-types@2022-10-21.yang +3458 -0
@@ -0,0 +1,1952 @@
1
+ module ietf-te-topology {
2
+ yang-version 1.1;
3
+ namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
4
+ prefix tet;
5
+
6
+ import ietf-yang-types {
7
+ prefix yang;
8
+ reference
9
+ "RFC 6991: Common YANG Data Types";
10
+ }
11
+ import ietf-inet-types {
12
+ prefix inet;
13
+ reference
14
+ "RFC 6991: Common YANG Data Types";
15
+ }
16
+ import ietf-te-types {
17
+ prefix te-types;
18
+ reference
19
+ "RFC 8776: Common YANG Data Types for Traffic Engineering";
20
+ }
21
+ import ietf-network {
22
+ prefix nw;
23
+ reference
24
+ "RFC 8345: A YANG Data Model for Network Topologies";
25
+ }
26
+ import ietf-network-topology {
27
+ prefix nt;
28
+ reference
29
+ "RFC 8345: A YANG Data Model for Network Topologies";
30
+ }
31
+
32
+ organization
33
+ "IETF Traffic Engineering Architecture and Signaling (TEAS)
34
+ Working Group";
35
+ contact
36
+ "WG Web: <https://datatracker.ietf.org/wg/teas/>
37
+ WG List: <mailto:teas@ietf.org>
38
+
39
+ Editor: Xufeng Liu
40
+ <mailto:xufeng.liu.ietf@gmail.com>
41
+
42
+ Editor: Igor Bryskin
43
+ <mailto:i_bryskin@yahoo.com>
44
+
45
+ Editor: Vishnu Pavan Beeram
46
+ <mailto:vbeeram@juniper.net>
47
+
48
+ Editor: Tarek Saad
49
+ <mailto:tsaad@juniper.net>
50
+
51
+ Editor: Himanshu Shah
52
+ <mailto:hshah@ciena.com>
53
+
54
+ Editor: Oscar Gonzalez de Dios
55
+ <mailto:oscar.gonzalezdedios@telefonica.com>";
56
+ description
57
+ "This YANG module defines a TE topology model for representing,
58
+ retrieving, and manipulating technology-agnostic TE topologies.
59
+
60
+ Copyright (c) 2020 IETF Trust and the persons identified as
61
+ authors of the code. All rights reserved.
62
+
63
+ Redistribution and use in source and binary forms, with or
64
+ without modification, is permitted pursuant to, and subject to
65
+ the license terms contained in, the Simplified BSD License set
66
+ forth in Section 4.c of the IETF Trust's Legal Provisions
67
+ Relating to IETF Documents
68
+ (https://trustee.ietf.org/license-info).
69
+
70
+ This version of this YANG module is part of RFC 8795; see the
71
+ RFC itself for full legal notices.";
72
+
73
+ revision 2020-08-06 {
74
+ description
75
+ "Initial revision.";
76
+ reference
77
+ "RFC 8795: YANG Data Model for Traffic Engineering (TE)
78
+ Topologies";
79
+ }
80
+
81
+ /*
82
+ * Features
83
+ */
84
+
85
+ feature nsrlg {
86
+ description
87
+ "This feature indicates that the system supports NSRLGs
88
+ (Non-Shared Risk Link Groups).";
89
+ }
90
+
91
+ feature te-topology-hierarchy {
92
+ description
93
+ "This feature indicates that the system allows an underlay
94
+ and/or overlay TE topology hierarchy.";
95
+ }
96
+
97
+ feature template {
98
+ description
99
+ "This feature indicates that the system supports
100
+ template configuration.";
101
+ }
102
+
103
+ /*
104
+ * Typedefs
105
+ */
106
+
107
+ typedef geographic-coordinate-degree {
108
+ type decimal64 {
109
+ fraction-digits 8;
110
+ }
111
+ description
112
+ "Decimal degree (DD) used to express latitude and longitude
113
+ geographic coordinates.";
114
+ }
115
+ // geographic-coordinate-degree
116
+
117
+ typedef te-info-source {
118
+ type enumeration {
119
+ enum unknown {
120
+ description
121
+ "The source is unknown.";
122
+ }
123
+ enum locally-configured {
124
+ description
125
+ "Configured entity.";
126
+ }
127
+ enum ospfv2 {
128
+ description
129
+ "OSPFv2.";
130
+ }
131
+ enum ospfv3 {
132
+ description
133
+ "OSPFv3.";
134
+ }
135
+ enum isis {
136
+ description
137
+ "IS-IS.";
138
+ }
139
+ enum bgp-ls {
140
+ description
141
+ "BGP-LS.";
142
+ reference
143
+ "RFC 7752: North-Bound Distribution of Link-State and
144
+ Traffic Engineering (TE) Information Using BGP";
145
+ }
146
+ enum system-processed {
147
+ description
148
+ "System-processed entity.";
149
+ }
150
+ enum other {
151
+ description
152
+ "Other source.";
153
+ }
154
+ }
155
+ description
156
+ "Describes the type of source that has provided the
157
+ related information, and the source's credibility.";
158
+ }
159
+ // te-info-source
160
+
161
+ /*
162
+ * Groupings
163
+ */
164
+
165
+ grouping connectivity-matrix-entry-path-attributes {
166
+ description
167
+ "Attributes of a connectivity matrix entry.";
168
+ leaf is-allowed {
169
+ type boolean;
170
+ description
171
+ "'true' - switching is allowed;
172
+ 'false' - switching is disallowed.";
173
+ }
174
+ container underlay {
175
+ if-feature "te-topology-hierarchy";
176
+ description
177
+ "Attributes of the TE link underlay.";
178
+ reference
179
+ "RFC 4206: Label Switched Paths (LSP) Hierarchy with
180
+ Generalized Multi-Protocol Label Switching (GMPLS)
181
+ Traffic Engineering (TE)";
182
+ uses te-link-underlay-attributes;
183
+ }
184
+ uses te-types:generic-path-constraints;
185
+ uses te-types:generic-path-optimization;
186
+ uses te-types:generic-path-properties;
187
+ }
188
+ // connectivity-matrix-entry-path-attributes
189
+
190
+ grouping geolocation-container {
191
+ description
192
+ "Contains a GPS location.";
193
+ container geolocation {
194
+ config false;
195
+ description
196
+ "Contains a GPS location.";
197
+ leaf altitude {
198
+ type int64;
199
+ units "millimeters";
200
+ description
201
+ "Distance above sea level.";
202
+ }
203
+ leaf latitude {
204
+ type geographic-coordinate-degree {
205
+ range "-90..90";
206
+ }
207
+ description
208
+ "Relative position north or south on the Earth's surface.";
209
+ }
210
+ leaf longitude {
211
+ type geographic-coordinate-degree {
212
+ range "-180..180";
213
+ }
214
+ description
215
+ "Angular distance east or west on the Earth's surface.";
216
+ }
217
+ }
218
+ // geolocation
219
+ }
220
+ // geolocation-container
221
+
222
+ grouping information-source-state-attributes {
223
+ description
224
+ "The attributes identifying the source that has provided the
225
+ related information, and the source's credibility.";
226
+ leaf credibility-preference {
227
+ type uint16;
228
+ description
229
+ "The preference value for calculating the Traffic
230
+ Engineering database credibility value used for
231
+ tie-break selection between different information-source
232
+ values. A higher value is preferable.";
233
+ }
234
+ leaf logical-network-element {
235
+ type string;
236
+ description
237
+ "When applicable, this is the name of a logical network
238
+ element from which the information is learned.";
239
+ }
240
+ leaf network-instance {
241
+ type string;
242
+ description
243
+ "When applicable, this is the name of a network instance
244
+ from which the information is learned.";
245
+ }
246
+ }
247
+ // information-source-state-attributes
248
+
249
+ grouping information-source-per-link-attributes {
250
+ description
251
+ "Per-node container of the attributes identifying the source
252
+ that has provided the related information, and the source's
253
+ credibility.";
254
+ leaf information-source {
255
+ type te-info-source;
256
+ config false;
257
+ description
258
+ "Indicates the type of information source.";
259
+ }
260
+ leaf information-source-instance {
261
+ type string;
262
+ config false;
263
+ description
264
+ "The name indicating the instance of the information
265
+ source.";
266
+ }
267
+ container information-source-state {
268
+ config false;
269
+ description
270
+ "Contains state attributes related to the information
271
+ source.";
272
+ uses information-source-state-attributes;
273
+ container topology {
274
+ description
275
+ "When the information is processed by the system,
276
+ the attributes in this container indicate which topology
277
+ is used to generate the result information.";
278
+ uses nt:link-ref;
279
+ }
280
+ }
281
+ }
282
+ // information-source-per-link-attributes
283
+
284
+ grouping information-source-per-node-attributes {
285
+ description
286
+ "Per-node container of the attributes identifying the source
287
+ that has provided the related information, and the source's
288
+ credibility.";
289
+ leaf information-source {
290
+ type te-info-source;
291
+ config false;
292
+ description
293
+ "Indicates the type of information source.";
294
+ }
295
+ leaf information-source-instance {
296
+ type string;
297
+ config false;
298
+ description
299
+ "The name indicating the instance of the information
300
+ source.";
301
+ }
302
+ container information-source-state {
303
+ config false;
304
+ description
305
+ "Contains state attributes related to the information
306
+ source.";
307
+ uses information-source-state-attributes;
308
+ container topology {
309
+ description
310
+ "When the information is processed by the system,
311
+ the attributes in this container indicate which topology
312
+ is used to generate the result information.";
313
+ uses nw:node-ref;
314
+ }
315
+ }
316
+ }
317
+ // information-source-per-node-attributes
318
+
319
+ grouping interface-switching-capability-list {
320
+ description
321
+ "List of Interface Switching Capability Descriptors (ISCDs).";
322
+ list interface-switching-capability {
323
+ key "switching-capability encoding";
324
+ description
325
+ "List of ISCDs for this link.";
326
+ reference
327
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
328
+ Signaling Functional Description
329
+ RFC 4203: OSPF Extensions in Support of Generalized
330
+ Multi-Protocol Label Switching (GMPLS)";
331
+ leaf switching-capability {
332
+ type identityref {
333
+ base te-types:switching-capabilities;
334
+ }
335
+ description
336
+ "Switching capability for this interface.";
337
+ }
338
+ leaf encoding {
339
+ type identityref {
340
+ base te-types:lsp-encoding-types;
341
+ }
342
+ description
343
+ "Encoding supported by this interface.";
344
+ }
345
+ uses te-link-iscd-attributes;
346
+ }
347
+ // interface-switching-capability
348
+ }
349
+ // interface-switching-capability-list
350
+
351
+ grouping statistics-per-link {
352
+ description
353
+ "Statistics attributes per TE link.";
354
+ leaf discontinuity-time {
355
+ type yang:date-and-time;
356
+ description
357
+ "The time of the most recent occasion at which any one or
358
+ more of this interface's counters suffered a
359
+ discontinuity. If no such discontinuities have occurred
360
+ since the last re-initialization of the local management
361
+ subsystem, then this node contains the time the local
362
+ management subsystem re-initialized itself.";
363
+ }
364
+ /* Administrative attributes */
365
+ leaf disables {
366
+ type yang:counter32;
367
+ description
368
+ "Number of times that a link was disabled.";
369
+ }
370
+ leaf enables {
371
+ type yang:counter32;
372
+ description
373
+ "Number of times that a link was enabled.";
374
+ }
375
+ leaf maintenance-clears {
376
+ type yang:counter32;
377
+ description
378
+ "Number of times that a link was taken out of maintenance.";
379
+ }
380
+ leaf maintenance-sets {
381
+ type yang:counter32;
382
+ description
383
+ "Number of times that a link was put in maintenance.";
384
+ }
385
+ leaf modifies {
386
+ type yang:counter32;
387
+ description
388
+ "Number of times that a link was modified.";
389
+ }
390
+ /* Operational attributes */
391
+ leaf downs {
392
+ type yang:counter32;
393
+ description
394
+ "Number of times that a link was set to an operational state
395
+ of 'down'.";
396
+ }
397
+ leaf ups {
398
+ type yang:counter32;
399
+ description
400
+ "Number of times that a link was set to an operational state
401
+ of 'up'.";
402
+ }
403
+ /* Recovery attributes */
404
+ leaf fault-clears {
405
+ type yang:counter32;
406
+ description
407
+ "Number of times that a link experienced a fault-clear
408
+ event.";
409
+ }
410
+ leaf fault-detects {
411
+ type yang:counter32;
412
+ description
413
+ "Number of times that a link experienced fault detection.";
414
+ }
415
+ leaf protection-switches {
416
+ type yang:counter32;
417
+ description
418
+ "Number of times that a link experienced protection
419
+ switchover.";
420
+ }
421
+ leaf protection-reverts {
422
+ type yang:counter32;
423
+ description
424
+ "Number of times that a link experienced protection
425
+ reversion.";
426
+ }
427
+ leaf restoration-failures {
428
+ type yang:counter32;
429
+ description
430
+ "Number of times that a link experienced restoration
431
+ failure.";
432
+ }
433
+ leaf restoration-starts {
434
+ type yang:counter32;
435
+ description
436
+ "Number of times that a link experienced restoration
437
+ start.";
438
+ }
439
+ leaf restoration-successes {
440
+ type yang:counter32;
441
+ description
442
+ "Number of times that a link experienced restoration
443
+ success.";
444
+ }
445
+ leaf restoration-reversion-failures {
446
+ type yang:counter32;
447
+ description
448
+ "Number of times that a link experienced restoration
449
+ reversion failure.";
450
+ }
451
+ leaf restoration-reversion-starts {
452
+ type yang:counter32;
453
+ description
454
+ "Number of times that a link experienced restoration
455
+ reversion start.";
456
+ }
457
+ leaf restoration-reversion-successes {
458
+ type yang:counter32;
459
+ description
460
+ "Number of times that a link experienced restoration
461
+ reversion success.";
462
+ }
463
+ }
464
+ // statistics-per-link
465
+
466
+ grouping statistics-per-node {
467
+ description
468
+ "Statistics attributes per TE node.";
469
+ leaf discontinuity-time {
470
+ type yang:date-and-time;
471
+ description
472
+ "The time of the most recent occasion at which any one or
473
+ more of this interface's counters suffered a
474
+ discontinuity. If no such discontinuities have occurred
475
+ since the last re-initialization of the local management
476
+ subsystem, then this node contains the time the local
477
+ management subsystem re-initialized itself.";
478
+ }
479
+ container node {
480
+ description
481
+ "Contains statistics attributes at the TE node level.";
482
+ leaf disables {
483
+ type yang:counter32;
484
+ description
485
+ "Number of times that a node was disabled.";
486
+ }
487
+ leaf enables {
488
+ type yang:counter32;
489
+ description
490
+ "Number of times that a node was enabled.";
491
+ }
492
+ leaf maintenance-sets {
493
+ type yang:counter32;
494
+ description
495
+ "Number of times that a node was put in maintenance.";
496
+ }
497
+ leaf maintenance-clears {
498
+ type yang:counter32;
499
+ description
500
+ "Number of times that a node was taken out of
501
+ maintenance.";
502
+ }
503
+ leaf modifies {
504
+ type yang:counter32;
505
+ description
506
+ "Number of times that a node was modified.";
507
+ }
508
+ }
509
+ // node
510
+ container connectivity-matrix-entry {
511
+ description
512
+ "Contains statistics attributes at the level of a
513
+ connectivity matrix entry.";
514
+ leaf creates {
515
+ type yang:counter32;
516
+ description
517
+ "Number of times that a connectivity matrix entry was
518
+ created.";
519
+ reference
520
+ "RFC 6241: Network Configuration Protocol (NETCONF),
521
+ Section 7.2, 'create' operation";
522
+ }
523
+ leaf deletes {
524
+ type yang:counter32;
525
+ description
526
+ "Number of times that a connectivity matrix entry was
527
+ deleted.";
528
+ reference
529
+ "RFC 6241: Network Configuration Protocol (NETCONF),
530
+ Section 7.2, 'delete' operation";
531
+ }
532
+ leaf disables {
533
+ type yang:counter32;
534
+ description
535
+ "Number of times that a connectivity matrix entry was
536
+ disabled.";
537
+ }
538
+ leaf enables {
539
+ type yang:counter32;
540
+ description
541
+ "Number of times that a connectivity matrix entry was
542
+ enabled.";
543
+ }
544
+ leaf modifies {
545
+ type yang:counter32;
546
+ description
547
+ "Number of times that a connectivity matrix entry was
548
+ modified.";
549
+ }
550
+ }
551
+ // connectivity-matrix-entry
552
+ }
553
+ // statistics-per-node
554
+
555
+ grouping statistics-per-ttp {
556
+ description
557
+ "Statistics attributes per TE TTP (Tunnel Termination Point).";
558
+ leaf discontinuity-time {
559
+ type yang:date-and-time;
560
+ description
561
+ "The time of the most recent occasion at which any one or
562
+ more of this interface's counters suffered a
563
+ discontinuity. If no such discontinuities have occurred
564
+ since the last re-initialization of the local management
565
+ subsystem, then this node contains the time the local
566
+ management subsystem re-initialized itself.";
567
+ }
568
+ container tunnel-termination-point {
569
+ description
570
+ "Contains statistics attributes at the TE TTP level.";
571
+ /* Administrative attributes */
572
+ leaf disables {
573
+ type yang:counter32;
574
+ description
575
+ "Number of times that a TTP was disabled.";
576
+ }
577
+ leaf enables {
578
+ type yang:counter32;
579
+ description
580
+ "Number of times that a TTP was enabled.";
581
+ }
582
+ leaf maintenance-clears {
583
+ type yang:counter32;
584
+ description
585
+ "Number of times that a TTP was taken out of maintenance.";
586
+ }
587
+ leaf maintenance-sets {
588
+ type yang:counter32;
589
+ description
590
+ "Number of times that a TTP was put in maintenance.";
591
+ }
592
+ leaf modifies {
593
+ type yang:counter32;
594
+ description
595
+ "Number of times that a TTP was modified.";
596
+ }
597
+ /* Operational attributes */
598
+ leaf downs {
599
+ type yang:counter32;
600
+ description
601
+ "Number of times that a TTP was set to an operational state
602
+ of 'down'.";
603
+ }
604
+ leaf ups {
605
+ type yang:counter32;
606
+ description
607
+ "Number of times that a TTP was set to an operational state
608
+ of 'up'.";
609
+ }
610
+ leaf in-service-clears {
611
+ type yang:counter32;
612
+ description
613
+ "Number of times that a TTP was taken out of service
614
+ (TE tunnel was released).";
615
+ }
616
+ leaf in-service-sets {
617
+ type yang:counter32;
618
+ description
619
+ "Number of times that a TTP was put in service by a TE
620
+ tunnel (TE tunnel was set up).";
621
+ }
622
+ }
623
+ // tunnel-termination-point
624
+ container local-link-connectivity {
625
+ description
626
+ "Contains statistics attributes at the TE LLCL (Local Link
627
+ Connectivity List) level.";
628
+ leaf creates {
629
+ type yang:counter32;
630
+ description
631
+ "Number of times that an LLCL entry was created.";
632
+ reference
633
+ "RFC 6241: Network Configuration Protocol (NETCONF),
634
+ Section 7.2, 'create' operation";
635
+ }
636
+ leaf deletes {
637
+ type yang:counter32;
638
+ description
639
+ "Number of times that an LLCL entry was deleted.";
640
+ reference
641
+ "RFC 6241: Network Configuration Protocol (NETCONF),
642
+ Section 7.2, 'delete' operation";
643
+ }
644
+ leaf disables {
645
+ type yang:counter32;
646
+ description
647
+ "Number of times that an LLCL entry was disabled.";
648
+ }
649
+ leaf enables {
650
+ type yang:counter32;
651
+ description
652
+ "Number of times that an LLCL entry was enabled.";
653
+ }
654
+ leaf modifies {
655
+ type yang:counter32;
656
+ description
657
+ "Number of times that an LLCL entry was modified.";
658
+ }
659
+ }
660
+ // local-link-connectivity
661
+ }
662
+ // statistics-per-ttp
663
+
664
+ grouping te-link-augment {
665
+ description
666
+ "Augmentation for a TE link.";
667
+ uses te-link-config;
668
+ uses te-link-state-derived;
669
+ container statistics {
670
+ config false;
671
+ description
672
+ "Statistics data.";
673
+ uses statistics-per-link;
674
+ }
675
+ }
676
+ // te-link-augment
677
+
678
+ grouping te-link-config {
679
+ description
680
+ "TE link configuration grouping.";
681
+ choice bundle-stack-level {
682
+ description
683
+ "The TE link can be partitioned into bundled links or
684
+ component links.";
685
+ case bundle {
686
+ container bundled-links {
687
+ description
688
+ "A set of bundled links.";
689
+ reference
690
+ "RFC 4201: Link Bundling in MPLS Traffic
691
+ Engineering (TE)";
692
+ list bundled-link {
693
+ key "sequence";
694
+ description
695
+ "Specifies a bundled interface that is
696
+ further partitioned.";
697
+ leaf sequence {
698
+ type uint32;
699
+ description
700
+ "Identifies the sequence in the bundle.";
701
+ }
702
+ }
703
+ }
704
+ }
705
+ case component {
706
+ container component-links {
707
+ description
708
+ "A set of component links.";
709
+ list component-link {
710
+ key "sequence";
711
+ description
712
+ "Specifies a component interface that is
713
+ sufficient to unambiguously identify the
714
+ appropriate resources.";
715
+ leaf sequence {
716
+ type uint32;
717
+ description
718
+ "Identifies the sequence in the bundle.";
719
+ }
720
+ leaf src-interface-ref {
721
+ type string;
722
+ description
723
+ "Reference to a component link interface on the
724
+ source node.";
725
+ }
726
+ leaf des-interface-ref {
727
+ type string;
728
+ description
729
+ "Reference to a component link interface on the
730
+ destination node.";
731
+ }
732
+ }
733
+ }
734
+ }
735
+ }
736
+ // bundle-stack-level
737
+ leaf-list te-link-template {
738
+ if-feature "template";
739
+ type leafref {
740
+ path "../../../../te/templates/link-template/name";
741
+ }
742
+ description
743
+ "The reference to a TE link template.";
744
+ }
745
+ uses te-link-config-attributes;
746
+ }
747
+ // te-link-config
748
+
749
+ grouping te-link-config-attributes {
750
+ description
751
+ "Link configuration attributes in a TE topology.";
752
+ container te-link-attributes {
753
+ description
754
+ "Link attributes in a TE topology.";
755
+ leaf access-type {
756
+ type te-types:te-link-access-type;
757
+ description
758
+ "Link access type, which can be point-to-point or
759
+ multi-access.";
760
+ }
761
+ container external-domain {
762
+ description
763
+ "For an inter-domain link, specifies the attributes of
764
+ the remote end of the link, to facilitate the signaling at
765
+ the local end.";
766
+ uses nw:network-ref;
767
+ leaf remote-te-node-id {
768
+ type te-types:te-node-id;
769
+ description
770
+ "Remote TE node identifier, used together with
771
+ 'remote-te-link-tp-id' to identify the remote Link
772
+ Termination Point (LTP) in a different domain.";
773
+ }
774
+ leaf remote-te-link-tp-id {
775
+ type te-types:te-tp-id;
776
+ description
777
+ "Remote TE LTP identifier, used together with
778
+ 'remote-te-node-id' to identify the remote LTP in a
779
+ different domain.";
780
+ }
781
+ }
782
+ leaf is-abstract {
783
+ type empty;
784
+ description
785
+ "Present if the link is abstract.";
786
+ }
787
+ leaf name {
788
+ type string;
789
+ description
790
+ "Link name.";
791
+ }
792
+ container underlay {
793
+ if-feature "te-topology-hierarchy";
794
+ description
795
+ "Attributes of the TE link underlay.";
796
+ reference
797
+ "RFC 4206: Label Switched Paths (LSP) Hierarchy with
798
+ Generalized Multi-Protocol Label Switching (GMPLS)
799
+ Traffic Engineering (TE)";
800
+ uses te-link-underlay-attributes;
801
+ }
802
+ leaf admin-status {
803
+ type te-types:te-admin-status;
804
+ description
805
+ "The administrative state of the link.";
806
+ }
807
+ uses te-link-info-attributes;
808
+ }
809
+ // te-link-attributes
810
+ }
811
+ // te-link-config-attributes
812
+
813
+ grouping te-link-info-attributes {
814
+ description
815
+ "Advertised TE information attributes.";
816
+ leaf link-index {
817
+ type uint64;
818
+ description
819
+ "The link identifier. If OSPF is used, this object
820
+ represents an ospfLsdbID. If IS-IS is used, this object
821
+ represents an isisLSPID. If a locally configured link is
822
+ used, this object represents a unique value, which is
823
+ locally defined in a router.";
824
+ }
825
+ leaf administrative-group {
826
+ type te-types:admin-groups;
827
+ description
828
+ "Administrative group or color of the link.
829
+ This attribute covers both administrative groups (defined
830
+ in RFCs 3630 and 5305) and Extended Administrative Groups
831
+ (defined in RFC 7308).";
832
+ reference
833
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
834
+ Version 2
835
+ RFC 5305: IS-IS Extensions for Traffic Engineering
836
+ RFC 7308: Extended Administrative Groups in MPLS Traffic
837
+ Engineering (MPLS-TE)";
838
+ }
839
+ uses interface-switching-capability-list;
840
+ uses te-types:label-set-info;
841
+ leaf link-protection-type {
842
+ type identityref {
843
+ base te-types:link-protection-type;
844
+ }
845
+ description
846
+ "Link Protection Type desired for this link.";
847
+ reference
848
+ "RFC 4202: Routing Extensions in Support of
849
+ Generalized Multi-Protocol Label Switching (GMPLS)";
850
+ }
851
+ container max-link-bandwidth {
852
+ uses te-types:te-bandwidth;
853
+ description
854
+ "Maximum bandwidth that can be seen on this link in this
855
+ direction. Units are in bytes per second.";
856
+ reference
857
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
858
+ Version 2
859
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
860
+ }
861
+ container max-resv-link-bandwidth {
862
+ uses te-types:te-bandwidth;
863
+ description
864
+ "Maximum amount of bandwidth that can be reserved in this
865
+ direction in this link. Units are in bytes per second.";
866
+ reference
867
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
868
+ Version 2
869
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
870
+ }
871
+ list unreserved-bandwidth {
872
+ key "priority";
873
+ max-elements 8;
874
+ description
875
+ "Unreserved bandwidth for priority levels 0-7. Units are in
876
+ bytes per second.";
877
+ reference
878
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
879
+ Version 2
880
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
881
+ leaf priority {
882
+ type uint8 {
883
+ range "0..7";
884
+ }
885
+ description
886
+ "Priority.";
887
+ }
888
+ uses te-types:te-bandwidth;
889
+ }
890
+ leaf te-default-metric {
891
+ type uint32;
892
+ description
893
+ "Traffic Engineering metric.";
894
+ reference
895
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
896
+ Version 2
897
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
898
+ }
899
+ leaf te-delay-metric {
900
+ type uint32;
901
+ description
902
+ "Traffic Engineering delay metric.";
903
+ reference
904
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
905
+ }
906
+ leaf te-igp-metric {
907
+ type uint32;
908
+ description
909
+ "IGP metric used for Traffic Engineering.";
910
+ reference
911
+ "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
912
+ second MPLS Traffic Engineering (TE) Metric";
913
+ }
914
+ container te-srlgs {
915
+ description
916
+ "Contains a list of SRLGs.";
917
+ leaf-list value {
918
+ type te-types:srlg;
919
+ description
920
+ "SRLG value.";
921
+ reference
922
+ "RFC 4202: Routing Extensions in Support of
923
+ Generalized Multi-Protocol Label Switching (GMPLS)";
924
+ }
925
+ }
926
+ container te-nsrlgs {
927
+ if-feature "nsrlg";
928
+ description
929
+ "Contains a list of NSRLGs (Non-Shared Risk Link Groups).
930
+ When an abstract TE link is configured, this list specifies
931
+ the request that underlay TE paths need to be mutually
932
+ disjoint with other TE links in the same groups.";
933
+ leaf-list id {
934
+ type uint32;
935
+ description
936
+ "NSRLG ID, uniquely configured within a topology.";
937
+ reference
938
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
939
+ Generalized Multi-Protocol Label Switching (GMPLS)
940
+ Recovery";
941
+ }
942
+ }
943
+ }
944
+ // te-link-info-attributes
945
+
946
+ grouping te-link-iscd-attributes {
947
+ description
948
+ "TE link ISCD attributes.";
949
+ reference
950
+ "RFC 4203: OSPF Extensions in Support of Generalized
951
+ Multi-Protocol Label Switching (GMPLS), Section 1.4";
952
+ list max-lsp-bandwidth {
953
+ key "priority";
954
+ max-elements 8;
955
+ description
956
+ "Maximum Label Switched Path (LSP) bandwidth at
957
+ priorities 0-7.";
958
+ leaf priority {
959
+ type uint8 {
960
+ range "0..7";
961
+ }
962
+ description
963
+ "Priority.";
964
+ }
965
+ uses te-types:te-bandwidth;
966
+ }
967
+ }
968
+ // te-link-iscd-attributes
969
+
970
+ grouping te-link-state-derived {
971
+ description
972
+ "Link state attributes in a TE topology.";
973
+ leaf oper-status {
974
+ type te-types:te-oper-status;
975
+ config false;
976
+ description
977
+ "The current operational state of the link.";
978
+ }
979
+ leaf is-transitional {
980
+ type empty;
981
+ config false;
982
+ description
983
+ "Present if the link is transitional; used as an
984
+ alternative approach in lieu of 'inter-layer-lock-id'
985
+ for path computation in a TE topology covering multiple
986
+ layers or multiple regions.";
987
+ reference
988
+ "RFC 5212: Requirements for GMPLS-Based Multi-Region and
989
+ Multi-Layer Networks (MRN/MLN)
990
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
991
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
992
+ }
993
+ uses information-source-per-link-attributes;
994
+ list information-source-entry {
995
+ key "information-source information-source-instance";
996
+ config false;
997
+ description
998
+ "A list of information sources learned, including the source
999
+ that is used.";
1000
+ uses information-source-per-link-attributes;
1001
+ uses te-link-info-attributes;
1002
+ }
1003
+ container recovery {
1004
+ config false;
1005
+ description
1006
+ "Status of the recovery process.";
1007
+ leaf restoration-status {
1008
+ type te-types:te-recovery-status;
1009
+ description
1010
+ "Restoration status.";
1011
+ }
1012
+ leaf protection-status {
1013
+ type te-types:te-recovery-status;
1014
+ description
1015
+ "Protection status.";
1016
+ }
1017
+ }
1018
+ container underlay {
1019
+ if-feature "te-topology-hierarchy";
1020
+ config false;
1021
+ description
1022
+ "State attributes for the TE link underlay.";
1023
+ leaf dynamic {
1024
+ type boolean;
1025
+ description
1026
+ "'true' if the underlay is dynamically created.";
1027
+ }
1028
+ leaf committed {
1029
+ type boolean;
1030
+ description
1031
+ "'true' if the underlay is committed.";
1032
+ }
1033
+ }
1034
+ }
1035
+ // te-link-state-derived
1036
+
1037
+ grouping te-link-underlay-attributes {
1038
+ description
1039
+ "Attributes for the TE link underlay.";
1040
+ reference
1041
+ "RFC 4206: Label Switched Paths (LSP) Hierarchy with
1042
+ Generalized Multi-Protocol Label Switching (GMPLS)
1043
+ Traffic Engineering (TE)";
1044
+ leaf enabled {
1045
+ type boolean;
1046
+ description
1047
+ "'true' if the underlay is enabled.
1048
+ 'false' if the underlay is disabled.";
1049
+ }
1050
+ container primary-path {
1051
+ description
1052
+ "The service path on the underlay topology that
1053
+ supports this link.";
1054
+ uses nw:network-ref;
1055
+ list path-element {
1056
+ key "path-element-id";
1057
+ description
1058
+ "A list of path elements describing the service path.";
1059
+ leaf path-element-id {
1060
+ type uint32;
1061
+ description
1062
+ "To identify the element in a path.";
1063
+ }
1064
+ uses te-path-element;
1065
+ }
1066
+ }
1067
+ // primary-path
1068
+ list backup-path {
1069
+ key "index";
1070
+ description
1071
+ "A list of backup service paths on the underlay topology that
1072
+ protect the underlay primary path. If the primary path is
1073
+ not protected, the list contains zero elements. If the
1074
+ primary path is protected, the list contains one or more
1075
+ elements.";
1076
+ leaf index {
1077
+ type uint32;
1078
+ description
1079
+ "A sequence number to identify a backup path.";
1080
+ }
1081
+ uses nw:network-ref;
1082
+ list path-element {
1083
+ key "path-element-id";
1084
+ description
1085
+ "A list of path elements describing the backup service
1086
+ path.";
1087
+ leaf path-element-id {
1088
+ type uint32;
1089
+ description
1090
+ "To identify the element in a path.";
1091
+ }
1092
+ uses te-path-element;
1093
+ }
1094
+ }
1095
+ // backup-path
1096
+ leaf protection-type {
1097
+ type identityref {
1098
+ base te-types:lsp-protection-type;
1099
+ }
1100
+ description
1101
+ "Underlay protection type desired for this link.";
1102
+ }
1103
+ container tunnel-termination-points {
1104
+ description
1105
+ "Underlay TTPs desired for this link.";
1106
+ leaf source {
1107
+ type binary;
1108
+ description
1109
+ "Source TTP identifier.";
1110
+ }
1111
+ leaf destination {
1112
+ type binary;
1113
+ description
1114
+ "Destination TTP identifier.";
1115
+ }
1116
+ }
1117
+ container tunnels {
1118
+ description
1119
+ "Underlay TE tunnels supporting this TE link.";
1120
+ leaf sharing {
1121
+ type boolean;
1122
+ default "true";
1123
+ description
1124
+ "'true' if the underlay tunnel can be shared with other
1125
+ TE links;
1126
+ 'false' if the underlay tunnel is dedicated to this
1127
+ TE link.
1128
+ This leaf is the default option for all TE tunnels
1129
+ and may be overridden by the per-TE-tunnel value.";
1130
+ }
1131
+ list tunnel {
1132
+ key "tunnel-name";
1133
+ description
1134
+ "Zero, one, or more underlay TE tunnels that support this
1135
+ TE link.";
1136
+ leaf tunnel-name {
1137
+ type string;
1138
+ description
1139
+ "A tunnel name uniquely identifies an underlay TE tunnel,
1140
+ used together with the 'source-node' value for this
1141
+ link.";
1142
+ reference
1143
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
1144
+ }
1145
+ leaf sharing {
1146
+ type boolean;
1147
+ description
1148
+ "'true' if the underlay tunnel can be shared with other
1149
+ TE links;
1150
+ 'false' if the underlay tunnel is dedicated to this
1151
+ TE link.";
1152
+ }
1153
+ }
1154
+ // tunnel
1155
+ }
1156
+ // tunnels
1157
+ }
1158
+ // te-link-underlay-attributes
1159
+
1160
+ grouping te-node-augment {
1161
+ description
1162
+ "Augmentation for a TE node.";
1163
+ uses te-node-config;
1164
+ uses te-node-state-derived;
1165
+ container statistics {
1166
+ config false;
1167
+ description
1168
+ "Statistics data.";
1169
+ uses statistics-per-node;
1170
+ }
1171
+ list tunnel-termination-point {
1172
+ key "tunnel-tp-id";
1173
+ description
1174
+ "A termination point can terminate a tunnel.";
1175
+ leaf tunnel-tp-id {
1176
+ type binary;
1177
+ description
1178
+ "TTP identifier.";
1179
+ }
1180
+ uses te-node-tunnel-termination-point-config;
1181
+ leaf oper-status {
1182
+ type te-types:te-oper-status;
1183
+ config false;
1184
+ description
1185
+ "The current operational state of the TTP.";
1186
+ }
1187
+ uses geolocation-container;
1188
+ container statistics {
1189
+ config false;
1190
+ description
1191
+ "Statistics data.";
1192
+ uses statistics-per-ttp;
1193
+ }
1194
+ // Relationship to other TTPs
1195
+ list supporting-tunnel-termination-point {
1196
+ key "node-ref tunnel-tp-ref";
1197
+ description
1198
+ "Identifies the TTPs on which this TTP depends.";
1199
+ leaf node-ref {
1200
+ type inet:uri;
1201
+ description
1202
+ "This leaf identifies the node in which the supporting
1203
+ TTP is present.
1204
+ This node is either the supporting node or a node in
1205
+ an underlay topology.";
1206
+ }
1207
+ leaf tunnel-tp-ref {
1208
+ type binary;
1209
+ description
1210
+ "Reference to a TTP that is in either the supporting node
1211
+ or a node in an underlay topology.";
1212
+ }
1213
+ }
1214
+ // supporting-tunnel-termination-point
1215
+ }
1216
+ // tunnel-termination-point
1217
+ }
1218
+ // te-node-augment
1219
+
1220
+ grouping te-node-config {
1221
+ description
1222
+ "TE node configuration grouping.";
1223
+ leaf-list te-node-template {
1224
+ if-feature "template";
1225
+ type leafref {
1226
+ path "../../../../te/templates/node-template/name";
1227
+ }
1228
+ description
1229
+ "The reference to a TE node template.";
1230
+ }
1231
+ uses te-node-config-attributes;
1232
+ }
1233
+ // te-node-config
1234
+
1235
+ grouping te-node-config-attributes {
1236
+ description
1237
+ "Configuration node attributes in a TE topology.";
1238
+ container te-node-attributes {
1239
+ description
1240
+ "Contains node attributes in a TE topology.";
1241
+ leaf admin-status {
1242
+ type te-types:te-admin-status;
1243
+ description
1244
+ "The administrative state of the link.";
1245
+ }
1246
+ uses te-node-connectivity-matrices;
1247
+ uses te-node-info-attributes;
1248
+ }
1249
+ }
1250
+ // te-node-config-attributes
1251
+
1252
+ grouping te-node-config-attributes-template {
1253
+ description
1254
+ "Configuration node attributes for a template in a TE
1255
+ topology.";
1256
+ container te-node-attributes {
1257
+ description
1258
+ "Contains node attributes in a TE topology.";
1259
+ leaf admin-status {
1260
+ type te-types:te-admin-status;
1261
+ description
1262
+ "The administrative state of the link.";
1263
+ }
1264
+ uses te-node-info-attributes;
1265
+ }
1266
+ }
1267
+ // te-node-config-attributes-template
1268
+
1269
+ grouping te-node-connectivity-matrices {
1270
+ description
1271
+ "Connectivity matrix on a TE node.";
1272
+ container connectivity-matrices {
1273
+ description
1274
+ "Contains a connectivity matrix on a TE node.";
1275
+ leaf number-of-entries {
1276
+ type uint16;
1277
+ description
1278
+ "The number of connectivity matrix entries.
1279
+ If this number is specified in the configuration request,
1280
+ the number is the requested number of entries, which may
1281
+ not all be listed in the list;
1282
+ if this number is reported in the state data,
1283
+ the number is the current number of operational entries.";
1284
+ }
1285
+ uses te-types:label-set-info;
1286
+ uses connectivity-matrix-entry-path-attributes;
1287
+ list connectivity-matrix {
1288
+ key "id";
1289
+ description
1290
+ "Represents a node's switching limitations, i.e.,
1291
+ limitations in the interconnecting network TE links
1292
+ across the node.";
1293
+ reference
1294
+ "RFC 7579: General Network Element Constraint Encoding
1295
+ for GMPLS-Controlled Networks";
1296
+ leaf id {
1297
+ type uint32;
1298
+ description
1299
+ "Identifies the connectivity matrix entry.";
1300
+ }
1301
+ }
1302
+ // connectivity-matrix
1303
+ }
1304
+ // connectivity-matrices
1305
+ }
1306
+ // te-node-connectivity-matrices
1307
+
1308
+ grouping te-node-connectivity-matrix-attributes {
1309
+ description
1310
+ "Termination point references of a connectivity matrix entry.";
1311
+ container from {
1312
+ description
1313
+ "Reference to a source LTP.";
1314
+ leaf tp-ref {
1315
+ type leafref {
1316
+ path "../../../../../../nt:termination-point/nt:tp-id";
1317
+ }
1318
+ description
1319
+ "Relative reference to a termination point.";
1320
+ }
1321
+ uses te-types:label-set-info;
1322
+ }
1323
+ container to {
1324
+ description
1325
+ "Reference to a destination LTP.";
1326
+ leaf tp-ref {
1327
+ type leafref {
1328
+ path "../../../../../../nt:termination-point/nt:tp-id";
1329
+ }
1330
+ description
1331
+ "Relative reference to a termination point.";
1332
+ }
1333
+ uses te-types:label-set-info;
1334
+ }
1335
+ uses connectivity-matrix-entry-path-attributes;
1336
+ }
1337
+ // te-node-connectivity-matrix-attributes
1338
+
1339
+ grouping te-node-info-attributes {
1340
+ description
1341
+ "Advertised TE information attributes.";
1342
+ leaf domain-id {
1343
+ type uint32;
1344
+ description
1345
+ "Identifies the domain to which this node belongs.
1346
+ This attribute is used to support inter-domain links.";
1347
+ reference
1348
+ "RFC 5152: A Per-Domain Path Computation Method for
1349
+ Establishing Inter-Domain Traffic Engineering (TE)
1350
+ Label Switched Paths (LSPs)
1351
+ RFC 5316: ISIS Extensions in Support of Inter-Autonomous
1352
+ System (AS) MPLS and GMPLS Traffic Engineering
1353
+ RFC 5392: OSPF Extensions in Support of Inter-Autonomous
1354
+ System (AS) MPLS and GMPLS Traffic Engineering";
1355
+ }
1356
+ leaf is-abstract {
1357
+ type empty;
1358
+ description
1359
+ "Present if the node is abstract; not present if the node
1360
+ is actual.";
1361
+ }
1362
+ leaf name {
1363
+ type string;
1364
+ description
1365
+ "Node name.";
1366
+ }
1367
+ leaf-list signaling-address {
1368
+ type inet:ip-address;
1369
+ description
1370
+ "The node's signaling address.";
1371
+ }
1372
+ container underlay-topology {
1373
+ if-feature "te-topology-hierarchy";
1374
+ description
1375
+ "When an abstract node encapsulates a topology, the
1376
+ attributes in this container point to said topology.";
1377
+ uses nw:network-ref;
1378
+ }
1379
+ }
1380
+ // te-node-info-attributes
1381
+
1382
+ grouping te-node-state-derived {
1383
+ description
1384
+ "Node state attributes in a TE topology.";
1385
+ leaf oper-status {
1386
+ type te-types:te-oper-status;
1387
+ config false;
1388
+ description
1389
+ "The current operational state of the node.";
1390
+ }
1391
+ uses geolocation-container;
1392
+ leaf is-multi-access-dr {
1393
+ type empty;
1394
+ config false;
1395
+ description
1396
+ "The presence of this attribute indicates that this TE node
1397
+ is a pseudonode elected as a designated router.";
1398
+ reference
1399
+ "RFC 1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
1400
+ Environments
1401
+ RFC 3630: Traffic Engineering (TE) Extensions to OSPF
1402
+ Version 2";
1403
+ }
1404
+ uses information-source-per-node-attributes;
1405
+ list information-source-entry {
1406
+ key "information-source information-source-instance";
1407
+ config false;
1408
+ description
1409
+ "A list of information sources learned, including the source
1410
+ that is used.";
1411
+ uses information-source-per-node-attributes;
1412
+ uses te-node-connectivity-matrices;
1413
+ uses te-node-info-attributes;
1414
+ }
1415
+ }
1416
+ // te-node-state-derived
1417
+
1418
+ grouping te-node-tunnel-termination-point-config {
1419
+ description
1420
+ "Termination capability of a TTP on a TE node.";
1421
+ uses te-node-tunnel-termination-point-config-attributes;
1422
+ container local-link-connectivities {
1423
+ description
1424
+ "Contains an LLCL for a TTP on a TE node.";
1425
+ leaf number-of-entries {
1426
+ type uint16;
1427
+ description
1428
+ "The number of LLCL entries.
1429
+ If this number is specified in the configuration request,
1430
+ the number is the requested number of entries, which may
1431
+ not all be listed in the list;
1432
+ if this number is reported in the state data,
1433
+ the number is the current number of operational entries.";
1434
+ }
1435
+ uses te-types:label-set-info;
1436
+ uses connectivity-matrix-entry-path-attributes;
1437
+ }
1438
+ }
1439
+ // te-node-tunnel-termination-point-config
1440
+
1441
+ grouping te-node-tunnel-termination-point-config-attributes {
1442
+ description
1443
+ "Configuration attributes of a TTP on a TE node.";
1444
+ leaf admin-status {
1445
+ type te-types:te-admin-status;
1446
+ description
1447
+ "The administrative state of the TTP.";
1448
+ }
1449
+ leaf name {
1450
+ type string;
1451
+ description
1452
+ "A descriptive name for the TTP.";
1453
+ }
1454
+ leaf switching-capability {
1455
+ type identityref {
1456
+ base te-types:switching-capabilities;
1457
+ }
1458
+ description
1459
+ "Switching capability for this interface.";
1460
+ }
1461
+ leaf encoding {
1462
+ type identityref {
1463
+ base te-types:lsp-encoding-types;
1464
+ }
1465
+ description
1466
+ "Encoding supported by this interface.";
1467
+ }
1468
+ leaf-list inter-layer-lock-id {
1469
+ type uint32;
1470
+ description
1471
+ "Inter-layer lock ID, used for path computation in a TE
1472
+ topology covering multiple layers or multiple regions.";
1473
+ reference
1474
+ "RFC 5212: Requirements for GMPLS-Based Multi-Region and
1475
+ Multi-Layer Networks (MRN/MLN)
1476
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
1477
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
1478
+ }
1479
+ leaf protection-type {
1480
+ type identityref {
1481
+ base te-types:lsp-protection-type;
1482
+ }
1483
+ description
1484
+ "The protection type that this TTP is capable of.";
1485
+ }
1486
+ container client-layer-adaptation {
1487
+ description
1488
+ "Contains capability information to support a client-layer
1489
+ adaptation in a multi-layer topology.";
1490
+ list switching-capability {
1491
+ key "switching-capability encoding";
1492
+ description
1493
+ "List of supported switching capabilities.";
1494
+ reference
1495
+ "RFC 4202: Routing Extensions in Support of
1496
+ Generalized Multi-Protocol Label Switching (GMPLS)
1497
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
1498
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
1499
+ leaf switching-capability {
1500
+ type identityref {
1501
+ base te-types:switching-capabilities;
1502
+ }
1503
+ description
1504
+ "Switching capability for the client-layer adaptation.";
1505
+ }
1506
+ leaf encoding {
1507
+ type identityref {
1508
+ base te-types:lsp-encoding-types;
1509
+ }
1510
+ description
1511
+ "Encoding supported by the client-layer adaptation.";
1512
+ }
1513
+ uses te-types:te-bandwidth;
1514
+ }
1515
+ }
1516
+ }
1517
+ // te-node-tunnel-termination-point-config-attributes
1518
+
1519
+ grouping te-node-tunnel-termination-point-llc-list {
1520
+ description
1521
+ "LLCL of a TTP on a TE node.";
1522
+ list local-link-connectivity {
1523
+ key "link-tp-ref";
1524
+ description
1525
+ "The termination capabilities between the TTP and the LTP.
1526
+ This capability information can be used to compute
1527
+ the tunnel path.
1528
+ The Interface Adjustment Capability Descriptors (IACDs)
1529
+ (defined in RFC 6001) on each LTP can be derived from
1530
+ this list.";
1531
+ reference
1532
+ "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
1533
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
1534
+ leaf link-tp-ref {
1535
+ type leafref {
1536
+ path "../../../../../nt:termination-point/nt:tp-id";
1537
+ }
1538
+ description
1539
+ "LTP.";
1540
+ }
1541
+ uses te-types:label-set-info;
1542
+ uses connectivity-matrix-entry-path-attributes;
1543
+ }
1544
+ }
1545
+ // te-node-tunnel-termination-point-llc-list
1546
+
1547
+ grouping te-path-element {
1548
+ description
1549
+ "A group of attributes defining an element in a TE path,
1550
+ such as a TE node, TE link, TE atomic resource, or label.";
1551
+ uses te-types:explicit-route-hop;
1552
+ }
1553
+ // te-path-element
1554
+
1555
+ grouping te-termination-point-augment {
1556
+ description
1557
+ "Augmentation for a TE termination point.";
1558
+ leaf te-tp-id {
1559
+ type te-types:te-tp-id;
1560
+ description
1561
+ "An identifier that uniquely identifies a TE termination
1562
+ point.";
1563
+ }
1564
+ container te {
1565
+ must '../te-tp-id';
1566
+ presence "TE support";
1567
+ description
1568
+ "Indicates TE support.";
1569
+ uses te-termination-point-config;
1570
+ leaf oper-status {
1571
+ type te-types:te-oper-status;
1572
+ config false;
1573
+ description
1574
+ "The current operational state of the LTP.";
1575
+ }
1576
+ uses geolocation-container;
1577
+ }
1578
+ }
1579
+ // te-termination-point-augment
1580
+
1581
+ grouping te-termination-point-config {
1582
+ description
1583
+ "TE termination point configuration grouping.";
1584
+ leaf admin-status {
1585
+ type te-types:te-admin-status;
1586
+ description
1587
+ "The administrative state of the LTP.";
1588
+ }
1589
+ leaf name {
1590
+ type string;
1591
+ description
1592
+ "A descriptive name for the LTP.";
1593
+ }
1594
+ uses interface-switching-capability-list;
1595
+ leaf inter-domain-plug-id {
1596
+ type binary;
1597
+ description
1598
+ "A network-wide unique number that identifies on the
1599
+ network a connection that supports a given inter-domain
1600
+ TE link. This is a more flexible alternative to specifying
1601
+ 'remote-te-node-id' and 'remote-te-link-tp-id' on a TE link
1602
+ when the provider either does not know 'remote-te-node-id'
1603
+ and 'remote-te-link-tp-id' or needs to give the client the
1604
+ flexibility to mix and match multiple topologies.";
1605
+ }
1606
+ leaf-list inter-layer-lock-id {
1607
+ type uint32;
1608
+ description
1609
+ "Inter-layer lock ID, used for path computation in a TE
1610
+ topology covering multiple layers or multiple regions.";
1611
+ reference
1612
+ "RFC 5212: Requirements for GMPLS-Based Multi-Region and
1613
+ Multi-Layer Networks (MRN/MLN)
1614
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
1615
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
1616
+ }
1617
+ }
1618
+ // te-termination-point-config
1619
+
1620
+ grouping te-topologies-augment {
1621
+ description
1622
+ "Augmentation for TE topologies.";
1623
+ container te {
1624
+ presence "TE support";
1625
+ description
1626
+ "Indicates TE support.";
1627
+ container templates {
1628
+ description
1629
+ "Configuration parameters for templates used for a TE
1630
+ topology.";
1631
+ list node-template {
1632
+ if-feature "template";
1633
+ key "name";
1634
+ leaf name {
1635
+ type te-types:te-template-name;
1636
+ description
1637
+ "The name to identify a TE node template.";
1638
+ }
1639
+ description
1640
+ "The list of TE node templates used to define sharable
1641
+ and reusable TE node attributes.";
1642
+ uses template-attributes;
1643
+ uses te-node-config-attributes-template;
1644
+ }
1645
+ // node-template
1646
+ list link-template {
1647
+ if-feature "template";
1648
+ key "name";
1649
+ leaf name {
1650
+ type te-types:te-template-name;
1651
+ description
1652
+ "The name to identify a TE link template.";
1653
+ }
1654
+ description
1655
+ "The list of TE link templates used to define sharable
1656
+ and reusable TE link attributes.";
1657
+ uses template-attributes;
1658
+ uses te-link-config-attributes;
1659
+ }
1660
+ // link-template
1661
+ }
1662
+ // templates
1663
+ }
1664
+ // te
1665
+ }
1666
+ // te-topologies-augment
1667
+
1668
+ grouping te-topology-augment {
1669
+ description
1670
+ "Augmentation for a TE topology.";
1671
+ uses te-types:te-topology-identifier;
1672
+ container te {
1673
+ must '../te-topology-identifier/provider-id'
1674
+ + ' and ../te-topology-identifier/client-id'
1675
+ + ' and ../te-topology-identifier/topology-id';
1676
+ presence "TE support";
1677
+ description
1678
+ "Indicates TE support.";
1679
+ uses te-topology-config;
1680
+ uses geolocation-container;
1681
+ }
1682
+ }
1683
+ // te-topology-augment
1684
+
1685
+ grouping te-topology-config {
1686
+ description
1687
+ "TE topology configuration grouping.";
1688
+ leaf name {
1689
+ type string;
1690
+ description
1691
+ "Name of the TE topology. This attribute is optional and can
1692
+ be specified by the operator to describe the TE topology,
1693
+ which can be useful when 'network-id' (RFC 8345) is not
1694
+ descriptive and not modifiable because of being generated
1695
+ by the system.";
1696
+ reference
1697
+ "RFC 8345: A YANG Data Model for Network Topologies";
1698
+ }
1699
+ leaf preference {
1700
+ type uint8 {
1701
+ range "1..255";
1702
+ }
1703
+ description
1704
+ "Specifies a preference for this topology. A lower number
1705
+ indicates a higher preference.";
1706
+ }
1707
+ leaf optimization-criterion {
1708
+ type identityref {
1709
+ base te-types:objective-function-type;
1710
+ }
1711
+ description
1712
+ "Optimization criterion applied to this topology.";
1713
+ reference
1714
+ "RFC 3272: Overview and Principles of Internet Traffic
1715
+ Engineering";
1716
+ }
1717
+ list nsrlg {
1718
+ if-feature "nsrlg";
1719
+ key "id";
1720
+ description
1721
+ "List of NSRLGs (Non-Shared Risk Link Groups).";
1722
+ reference
1723
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
1724
+ Generalized Multi-Protocol Label Switching (GMPLS)
1725
+ Recovery";
1726
+ leaf id {
1727
+ type uint32;
1728
+ description
1729
+ "Identifies the NSRLG entry.";
1730
+ }
1731
+ leaf disjointness {
1732
+ type te-types:te-path-disjointness;
1733
+ description
1734
+ "The type of resource disjointness.";
1735
+ }
1736
+ }
1737
+ // nsrlg
1738
+ }
1739
+ // te-topology-config
1740
+
1741
+ grouping template-attributes {
1742
+ description
1743
+ "Common attributes for all templates.";
1744
+ leaf priority {
1745
+ type uint16;
1746
+ description
1747
+ "The preference value for resolving conflicts between
1748
+ different templates. When two or more templates specify
1749
+ values for one configuration attribute, the value from the
1750
+ template with the highest priority is used.
1751
+ A lower number indicates a higher priority. The highest
1752
+ priority is 0.";
1753
+ }
1754
+ leaf reference-change-policy {
1755
+ type enumeration {
1756
+ enum no-action {
1757
+ description
1758
+ "When an attribute changes in this template, the
1759
+ configuration node referring to this template does
1760
+ not take any action.";
1761
+ }
1762
+ enum not-allowed {
1763
+ description
1764
+ "When any configuration object has a reference to this
1765
+ template, changing this template is not allowed.";
1766
+ }
1767
+ enum cascade {
1768
+ description
1769
+ "When an attribute changes in this template, the
1770
+ configuration object referring to this template applies
1771
+ the new attribute value to the corresponding
1772
+ configuration.";
1773
+ }
1774
+ }
1775
+ description
1776
+ "This attribute specifies the action taken for a
1777
+ configuration node that has a reference to this template.";
1778
+ }
1779
+ }
1780
+ // template-attributes
1781
+
1782
+ /*
1783
+ * Data nodes
1784
+ */
1785
+
1786
+ augment "/nw:networks/nw:network/nw:network-types" {
1787
+ description
1788
+ "Introduces a new network type for a TE topology.";
1789
+ container te-topology {
1790
+ presence "Indicates a TE topology";
1791
+ description
1792
+ "Its presence identifies the TE topology type.";
1793
+ }
1794
+ }
1795
+
1796
+ augment "/nw:networks" {
1797
+ description
1798
+ "Augmentation parameters for TE topologies.";
1799
+ uses te-topologies-augment;
1800
+ }
1801
+
1802
+ augment "/nw:networks/nw:network" {
1803
+ when 'nw:network-types/tet:te-topology' {
1804
+ description
1805
+ "Augmentation parameters apply only for networks with a
1806
+ TE topology type.";
1807
+ }
1808
+ description
1809
+ "Configuration parameters for a TE topology.";
1810
+ uses te-topology-augment;
1811
+ }
1812
+
1813
+ augment "/nw:networks/nw:network/nw:node" {
1814
+ when '../nw:network-types/tet:te-topology' {
1815
+ description
1816
+ "Augmentation parameters apply only for networks with a
1817
+ TE topology type.";
1818
+ }
1819
+ description
1820
+ "Configuration parameters for TE at the node level.";
1821
+ leaf te-node-id {
1822
+ type te-types:te-node-id;
1823
+ description
1824
+ "The identifier of a node in the TE topology.
1825
+ A node is specific to a topology to which it belongs.";
1826
+ }
1827
+ container te {
1828
+ must '../te-node-id' {
1829
+ description
1830
+ "'te-node-id' is mandatory.";
1831
+ }
1832
+ must 'count(../nw:supporting-node)<=1' {
1833
+ description
1834
+ "For a node in a TE topology, there cannot be more
1835
+ than one supporting node. If multiple nodes are
1836
+ abstracted, the 'underlay-topology' field is used.";
1837
+ }
1838
+ presence "TE support";
1839
+ description
1840
+ "Indicates TE support.";
1841
+ uses te-node-augment;
1842
+ }
1843
+ }
1844
+
1845
+ augment "/nw:networks/nw:network/nt:link" {
1846
+ when '../nw:network-types/tet:te-topology' {
1847
+ description
1848
+ "Augmentation parameters apply only for networks with a
1849
+ TE topology type.";
1850
+ }
1851
+ description
1852
+ "Configuration parameters for TE at the link level.";
1853
+ container te {
1854
+ must 'count(../nt:supporting-link)<=1' {
1855
+ description
1856
+ "For a link in a TE topology, there cannot be more
1857
+ than one supporting link. If one or more link paths are
1858
+ abstracted, the underlay is used.";
1859
+ }
1860
+ presence "TE support";
1861
+ description
1862
+ "Indicates TE support.";
1863
+ uses te-link-augment;
1864
+ }
1865
+ }
1866
+
1867
+ augment "/nw:networks/nw:network/nw:node/"
1868
+ + "nt:termination-point" {
1869
+ when '../../nw:network-types/tet:te-topology' {
1870
+ description
1871
+ "Augmentation parameters apply only for networks with a
1872
+ TE topology type.";
1873
+ }
1874
+ description
1875
+ "Configuration parameters for TE at the termination point
1876
+ level.";
1877
+ uses te-termination-point-augment;
1878
+ }
1879
+
1880
+ augment "/nw:networks/nw:network/nt:link/te/bundle-stack-level/"
1881
+ + "bundle/bundled-links/bundled-link" {
1882
+ when '../../../../nw:network-types/tet:te-topology' {
1883
+ description
1884
+ "Augmentation parameters apply only for networks with a
1885
+ TE topology type.";
1886
+ }
1887
+ description
1888
+ "Augmentation for a TE bundled link.";
1889
+ leaf src-tp-ref {
1890
+ type leafref {
1891
+ path "../../../../../nw:node[nw:node-id = "
1892
+ + "current()/../../../../nt:source/"
1893
+ + "nt:source-node]/"
1894
+ + "nt:termination-point/nt:tp-id";
1895
+ require-instance true;
1896
+ }
1897
+ description
1898
+ "Reference to another TE termination point on the
1899
+ same source node.";
1900
+ }
1901
+ leaf des-tp-ref {
1902
+ type leafref {
1903
+ path "../../../../../nw:node[nw:node-id = "
1904
+ + "current()/../../../../nt:destination/"
1905
+ + "nt:dest-node]/"
1906
+ + "nt:termination-point/nt:tp-id";
1907
+ require-instance true;
1908
+ }
1909
+ description
1910
+ "Reference to another TE termination point on the
1911
+ same destination node.";
1912
+ }
1913
+ }
1914
+
1915
+ augment "/nw:networks/nw:network/nw:node/te/"
1916
+ + "information-source-entry/connectivity-matrices/"
1917
+ + "connectivity-matrix" {
1918
+ when '../../../../../nw:network-types/tet:te-topology' {
1919
+ description
1920
+ "Augmentation parameters apply only for networks with a
1921
+ TE topology type.";
1922
+ }
1923
+ description
1924
+ "Augmentation for the TE node connectivity matrix.";
1925
+ uses te-node-connectivity-matrix-attributes;
1926
+ }
1927
+
1928
+ augment "/nw:networks/nw:network/nw:node/te/te-node-attributes/"
1929
+ + "connectivity-matrices/connectivity-matrix" {
1930
+ when '../../../../../nw:network-types/tet:te-topology' {
1931
+ description
1932
+ "Augmentation parameters apply only for networks with a
1933
+ TE topology type.";
1934
+ }
1935
+ description
1936
+ "Augmentation for the TE node connectivity matrix.";
1937
+ uses te-node-connectivity-matrix-attributes;
1938
+ }
1939
+
1940
+ augment "/nw:networks/nw:network/nw:node/te/"
1941
+ + "tunnel-termination-point/local-link-connectivities" {
1942
+ when '../../../../nw:network-types/tet:te-topology' {
1943
+ description
1944
+ "Augmentation parameters apply only for networks with a
1945
+ TE topology type.";
1946
+ }
1947
+ description
1948
+ "Augmentation for TE node TTP LLCs (Local Link
1949
+ Connectivities).";
1950
+ uses te-node-tunnel-termination-point-llc-list;
1951
+ }
1952
+ }