blob: 88156824f13fbc7fdfe868af8ffc664d96ab90e6 [file] [log] [blame]
sonu guptaeff184b2016-11-24 12:43:49 +05301module yms-ietf-te-topology {
2 yang-version 1;
3 namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
4 // replace with IANA namespace when assigned
5
6 prefix "tet";
7
8 import yms-ietf-inet-types {
9 prefix "inet";
10 }
11
12 import yms-ietf-schedule {
13 prefix "sch";
14 }
15
16 import yms-ietf-te-types {
17 prefix "te-types";
18 }
19
20 import yms-ietf-network {
21 prefix "nw";
22 }
23
24 import yms-network-topology {
25 prefix "nt";
26 }
27
28 organization
29 "Traffic Engineering Architecture and Signaling (TEAS)
30 Working Group";
31
32 contact
33 "WG Web: <http://tools.ietf.org/wg/teas/>
34 WG List: <mailto:teas@ietf.org>
35 WG Chair: Lou Berger
36 <mailto:lberger@labn.net>
37 WG Chair: Vishnu Pavan Beeram
38 <mailto:vbeeram@juniper.net>
39 Editor: Xufeng Liu
40 <mailto:xliu@kuatrotech.com>
41 Editor: Igor Bryskin
42 <mailto:Igor.Bryskin@huawei.com>
43 Editor: Vishnu Pavan Beeram
44 <mailto:vbeeram@juniper.net>
45 Editor: Tarek Saad
46 <mailto:tsaad@cisco.com>
47 Editor: Himanshu Shah
48 <mailto:hshah@ciena.com>
49 Editor: Oscar Gonzalez De Dios
50 <mailto:oscar.gonzalezdedios@telefonica.com>";
51
52 description "TE topology model";
53
54 revision "2016-03-17" {
55 description "Initial revision";
56 reference "TBD";
57 }
58
59 /*
60 * Features
61 */
62
63 feature configuration-schedule {
64 description
65 "This feature indicates that the system supports
66 configuration scheduling.";
67 }
68
69 feature te-topology-hierarchy {
70 description
71 "This feature indicates that the system allows underlay
72 and/or overlay TE topology hierarchy.";
73 }
74
75 feature te-performance-metric {
76 description
77 "This feature indicates that the system supports
78 TE performance metric defined in
79 RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";
80 }
81
82 feature template {
83 description
84 "This feature indicates that the system supports
85 template configuration.";
86 }
87
88 /*
89 * Typedefs
90 */
91 typedef performance-metric-normality {
92 type enumeration {
93 enum "unknown" {
94 value 0;
95 description
96 "Unknown.";
97 }
98 enum "normal" {
99 value 1;
100 description
101 "Normal.";
102 }
103 enum "abnormal" {
104 value 2;
105 description
106 "Abnormal. The anomalous bit is set.";
107 }
108 }
109 description
110 "Indicates whether a performance metric is normal, abnormal, or
111 unknown.";
112 reference
113 "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.";
114 }
115
116 typedef te-admin-status {
117 type enumeration {
118 enum up {
119 description
120 "Enabled.";
121 }
122 enum down {
123 description
124 "Disabled.";
125 }
126 enum testing {
127 description
128 "In some test mode.";
129 }
130 enum preparing-maintenance {
131 description
132 "Resource is disabled in the control plane to prepare for
133 graceful shutdown for maintenance purposes.";
134 reference
135 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
136 Traffic Engineering Networks";
137 }
138 enum maintenance {
139 description
140 "Resource is disabled in the data plane for maintenance
141 purposes.";
142 }
143 }
144 description
145 "Defines a type representing the administrative status of
146 a TE resource.";
147 }
148 typedef te-global-id {
149 type uint32;
150 description
151 "An identifier to uniquely identify an operator, which can be
152 either a provider or a client.
153 The definition of this type is taken from RFC6370 and RFC5003.
154 This attribute type is used solely to provide a globally
155 unique context for TE topologies.";
156 }
157
158 typedef te-link-access-type {
159 type enumeration {
160 enum point-to-point {
161 description
162 "The link is point-to-point.";
163 }
164 enum multi-access {
165 description
166 "The link is multi-access, including broacast and NBMA.";
167 }
168 }
169 description
170 "Defines a type representing the access type of a TE link.";
171 reference
172 "RFC3630: Traffic Engineering (TE) Extensions to OSPF
173 Version 2.";
174 }
175
176 typedef te-node-id {
177 type inet:ip-address;
178 description
179 "An identifier for a node in a topology.
180 The identifier is represented as an IPv4 or IPv6 address.
181 This attribute is mapped to Router ID in
182 RFC3630, RFC5329, RFC5305, and RFC 6119.";
183 }
184
185 typedef te-oper-status {
186 type enumeration {
187 enum up {
188 description
189 "Operational up.";
190 }
191 enum down {
192 description
193 "Operational down.";
194 }
195 enum testing {
196 description
197 "In some test mode.";
198 }
199 enum unknown {
200 description
201 "Status cannot be determined for some reason.";
202 }
203 enum preparing-maintenance {
204 description
205 "Resource is disabled in the control plane to prepare for
206 graceful shutdown for maintenance purposes.";
207 reference
208 "RFC5817: Graceful Shutdown in MPLS and Generalized MPLS
209 Traffic Engineering Networks";
210 }
211 enum maintenance {
212 description
213 "Resource is disabled in the data plane for maintenance
214 purposes.";
215 }
216 }
217 description
218 "Defines a type representing the operational status of
219 a TE resource.";
220 }
221
222 typedef te-recovery-status {
223 type enumeration {
224 enum normal {
225 description
226 "Both the recovery and working spans are fully
227 allocated and active, data traffic is being
228 transported over (or selected from) the working
229 span, and no trigger events are reported.";
230 }
231 enum recovery-started {
232 description
233 "The recovery action has been started, but not completed.";
234 }
235 enum recovery-succeeded {
236 description
237 "The recovery action has succeeded. The working span has
238 reported a failure/degrade condition and the user traffic
239 is being transported (or selected) on the recovery span.";
240 }
241 enum recovery-failed {
242 description
243 "The recovery action has failed.";
244 }
245 enum reversion-started {
246 description
247 "The reversion has started.";
248 }
249 enum reversion-failed {
250 description
251 "The reversion has failed.";
252 }
253 enum recovery-unavailable {
254 description
255 "The recovery is unavailable -- either as a result of an
256 operator Lockout command or a failure condition detected
257 on the recovery span.";
258 }
259 enum recovery-admin {
260 description
261 "The operator has issued a command switching the user
262 traffic to the recovery span.";
263 }
264 enum wait-to-restore {
265 description
266 "The recovery domain is recovering from a failuer/degrade
267 condition on the working span that is being controlled by
268 the Wait-to-Restore (WTR) timer.";
269 }
270 }
271 }
272
273 typedef te-template-name {
274 type string {
275 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
276 }
277 }
278
279 typedef te-topology-event-type {
280 type enumeration {
281 enum "add" {
282 value 0;
283 }
284 enum "remove" {
285 value 1;
286 }
287 enum "update" {
288 value 2;
289 }
290 }
291 } // te-topology-event-type
292 typedef te-topology-id {
293 type string {
294 pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
295 }
296 }
297
298 typedef te-tp-id {
299 type union {
300 type uint32; // Unnumbered
301 type inet:ip-address; // IPv4 or IPv6 address
302 }
303 }
304
305 /*
306 * Identities
307 */
308
309 /*
310 * Groupings
311 */
312 grouping information-source-attributes {
313 leaf information-source {
314 type enumeration {
315 enum "unknown";
316 enum "locally-configured";
317 enum "ospfv2";
318 enum "ospfv3";
319 enum "isis";
320 enum "system-processed";
321 enum "other";
322 }
323 }
324 container information-source-state {
325 leaf credibility-preference {
326 type uint16;
327 }
328 container topology {
329 uses te-topology-ref;
330 } // topology
331 leaf routing-instance {
332 type string;
333 } // routing-information
334 }
335 } // information-source-attributes
336
337 grouping performance-metric-attributes {
338 leaf unidirectional-delay {
339 type uint32 {
340 range 0..16777215;
341 }
342 }
343 leaf unidirectional-min-delay {
344 type uint32 {
345 range 0..16777215;
346 }
347 }
348 leaf unidirectional-max-delay {
349 type uint32 {
350 range 0..16777215;
351 }
352 }
353 leaf unidirectional-delay-variation {
354 type uint32 {
355 range 0..16777215;
356 }
357 }
358 leaf unidirectional-packet-loss {
359 type decimal64 {
360 fraction-digits 6;
361 range "0 .. 50.331642";
362 }
363 }
364 leaf unidirectional-residual-bandwidth {
365 type decimal64 {
366 fraction-digits 2;
367 }
368 }
369 leaf unidirectional-available-bandwidth {
370 type decimal64 {
371 fraction-digits 2;
372 }
373 }
374 leaf unidirectional-utilized-bandwidth {
375 type decimal64 {
376 fraction-digits 2;
377 }
378 }
379 } // performance-metric-attributes
380 grouping performance-metric-normality-attributes {
381 leaf unidirectional-delay {
382 type performance-metric-normality;
383 }
384 leaf unidirectional-min-delay {
385 type performance-metric-normality;
386 }
387 leaf unidirectional-max-delay {
388 type performance-metric-normality;
389 }
390 leaf unidirectional-delay-variation {
391 type performance-metric-normality;
392 }
393 leaf unidirectional-packet-loss {
394 type performance-metric-normality;
395 }
396 leaf unidirectional-residual-bandwidth {
397 type performance-metric-normality;
398 }
399 leaf unidirectional-available-bandwidth {
400 type performance-metric-normality;
401 }
402 leaf unidirectional-utilized-bandwidth {
403 type performance-metric-normality;
404 }
405 } // performance-metric-normality-attributes
406
407 grouping performance-metric-throttle-container {
408 container performance-metric-throttle {
409 leaf unidirectional-delay-offset {
410 type uint32 {
411 range 0..16777215;
412 }
413 }
414 leaf measure-interval {
415 type uint32;
416 default 30;
417 }
418 leaf advertisement-interval {
419 type uint32;
420 }
421 leaf suppression-interval {
422 type uint32 {
423 range "1 .. max";
424 }
425 default 120;
426 }
427 container threshold-out {
428 uses performance-metric-attributes;
429 }
430 container threshold-in {
431 uses performance-metric-attributes;
432 }
433 container threshold-accelerated-advertisement {
434 uses performance-metric-attributes;
435 }
436 }
437 } // performance-metric-throttle-container
438
439 grouping te-link-augment {
440 container te {
441 presence "TE support.";
442 container config {
443 uses te-link-config;
444 } // config
445 container state {
446 config false;
447 uses te-link-config;
448 uses te-link-state-derived;
449 } // state
450 } // te
451 } // te-link-augment
452
453 grouping te-link-config {
454 choice bundle-stack-level {
455 case bundle {
456 container bundled-links {
457 list bundled-link {
458 key "sequence";
459 leaf sequence {
460 type uint32;
461 }
462 leaf src-tp-ref {
463 type leafref {
464 path "../../../../../../nw:node[nw:node-id = "
465 + "current()/../../../../../nt:source/"
466 + "nt:source-node]/"
467 + "nt:t-point/nt:tp-id";
468 require-instance true;
469 }
470 }
471 leaf des-tp-ref {
472 type leafref {
473 path "../../../../../../nw:node[nw:node-id = "
474 + "current()/../../../../../nt:destination/"
475 + "nt:dest-node]/"
476 + "nt:t-point/nt:tp-id";
477 require-instance true;
478 }
479 }
480 } // list bundled-link
481 }
482 }
483 case component {
484 container component-links {
485 list component-link {
486 key "sequence";
487 leaf sequence {
488 type uint32;
489 }
490 leaf src-interface-ref {
491 type string;
492 }
493 leaf des-interface-ref {
494 type string;
495 }
496 }
497 }
498 }
499 } // bundle-stack-level
500
501 leaf-list te-link-template {
502 if-feature template;
503 type leafref {
504 path "../../../../../te/templates/link-template/name";
505 }
506 }
507 uses te-link-config-attributes;
508 } // te-link-config
509
510 grouping te-link-config-attributes {
511 container te-link-attributes {
512 uses sch:schedules;
513 leaf access-type {
514 type te-link-access-type;
515 }
516 leaf is-abstract {
517 type empty;
518 }
519 leaf name {
520 type string;
521 }
522 container underlay {
523 presence
524 "Indicates the underlay exists for this link.";
525 uses te-link-underlay-attributes;
526 } // underlay
527 leaf admin-status {
528 type te-admin-status;
529 description
530 "The administrative state of the link.";
531 }
532
533 uses performance-metric-throttle-container;
534 uses te-link-info-attributes;
535 } // te-link-attributes
536 } // te-link-config-attributes
537
538 grouping te-link-info-attributes {
539 leaf link-index {
540 type uint64;
541 }
542 leaf administrative-group {
543 type te-types:admin-groups;
544 }
545 leaf max-link-bandwidth {
546 type decimal64 {
547 fraction-digits 2;
548 }
549 }
550 leaf max-resv-link-bandwidth {
551 type decimal64 {
552 fraction-digits 2;
553 }
554 }
555 list unreserved-bandwidth {
556 key "priority";
557 max-elements "8";
558 leaf priority {
559 type uint8 {
560 range "0..7";
561 }
562 }
563 leaf bandwidth {
564 type decimal64 {
565 fraction-digits 2;
566 }
567 }
568 }
569 leaf te-default-metric {
570 type uint32;
571 }
572 container performance-metric {
573 container measurement {
574 uses performance-metric-attributes;
575 }
576 container normality
577 {
578 uses performance-metric-normality-attributes;
579 }
580 }
581 leaf link-protection-type {
582 type enumeration {
583 enum "unprotected";
584 enum "extra-traffic";
585 enum "shared";
586 enum "1-for-1";
587 enum "1-plus-1";
588 enum "enhanced";
589 }
590 }
591 list interface-switching-capability {
592 key "switching-capability";
593 leaf switching-capability {
594 type identityref {
595 base te-types:switching-capabilities;
596 }
597 }
598 leaf encoding {
599 type identityref {
600 base te-types:lsp-encoding-types;
601 }
602 }
603 list max-lsp-bandwidth {
604 key "priority";
605 max-elements "8";
606 leaf priority {
607 type uint8 {
608 range "0..7";
609 }
610 }
611 leaf bandwidth {
612 type decimal64 {
613 fraction-digits 2;
614 }
615 }
616 }
617 container time-division-multiplex-capable {
618 leaf minimum-lsp-bandwidth {
619 type decimal64 {
620 fraction-digits 2;
621 }
622 }
623 leaf indication {
624 type enumeration {
625 enum "standard";
626 enum "arbitrary";
627 }
628 }
629 }
630 list interface-adjustment-capability {
631 key "upper-sc";
632 leaf upper-sc {
633 type identityref {
634 base te-types:switching-capabilities;
635 }
636 }
637 leaf upper-encoding {
638 type identityref {
639 base te-types:lsp-encoding-types;
640 }
641 }
642 list max-lsp-bandwidth {
643 key "priority";
644 max-elements "8";
645 leaf priority {
646 type uint8 {
647 range "0..7";
648 }
649 description "Priority.";
650 }
651 leaf bandwidth {
652 type decimal64 {
653 fraction-digits 2;
654 }
655 }
656 }
657 } // interface-adjustment-capability
658 } // interface-switching-capability
659 container te-srlgs {
660 leaf-list values {
661 type te-types:srlg;
662 }
663 }
664 } // te-link-info-attributes
665
666 grouping te-link-state-derived {
667 leaf oper-status {
668 type te-oper-status;
669 }
670 uses information-source-attributes;
671 list alt-information-sources {
672 key "information-source";
673 uses information-source-attributes;
674 uses te-link-info-attributes;
675 }
676 container recovery {
677 leaf restoration-status {
678 type te-recovery-status;
679 }
680 leaf protection-status {
681 type te-recovery-status;
682 }
683 }
684 container underlay {
685 uses te-link-state-underlay-attributes;
686 }
687 } // te-link-state-derived
688 grouping te-link-state-underlay-attributes {
689 leaf dynamic {
690 type boolean;
691 }
692 leaf committed {
693 type boolean;
694 }
695 } // te-link-state-underlay-attributes
696
697 grouping te-link-underlay-attributes {
698 container underlay-primary-path {
699 uses te-topology-ref;
700 list path-element {
701 key "path-element-id";
702 leaf path-element-id {
703 type uint32;
704 }
705 uses te-path-element;
706 }
707 } // underlay-primary-path
708 list underlay-backup-path {
709 key "index";
710 leaf index {
711 type uint32;
712 }
713 uses te-topology-ref;
714 list path-element {
715 key "path-element-id";
716 leaf path-element-id {
717 type uint32;
718 }
719 uses te-path-element;
720 }
721 } // underlay-backup-path
722 leaf underlay-protection-type {
723 type uint16;
724 }
725 container underlay-trail-src {
726 uses nt:tp-ref;
727 }
728 container underlay-trail-des {
729 uses nt:tp-ref;
730 }
731 } // te-link-underlay-attributes
732
733 grouping te-node-augment {
734 container te {
735 presence "TE support.";
736 leaf te-node-id {
737 type te-node-id;
738 }
739
740 container config {
741 description
742 "Configuration data.";
743 uses te-node-config;
744 } // config
745 container state {
746 config false;
747 description
748 "Operational state data.";
749
750 uses te-node-config;
751 uses te-node-state-derived;
752 } // state
753
754 list tunnel-termination-point {
755 key "tunnel-tp-id";
756 leaf tunnel-tp-id {
757 type binary;
758 }
759 container config {
760 uses te-node-tunnel-termination-capability;
761 }
762
763 container state {
764 config false;
765 uses te-node-tunnel-termination-capability;
766 leaf switching-capability {
767 type identityref {
768 base te-types:switching-capabilities;
769 }
770 }
771 leaf encoding {
772 type identityref {
773 base te-types:lsp-encoding-types;
774 }
775 }
776 } // state
777
778 } // tunnel-termination-point
779 } // te
780 } // te-node-augment
781
782 grouping te-node-config {
783 leaf-list te-node-template {
784 if-feature template;
785 type leafref {
786 path "../../../../../te/templates/node-template/name";
787 }
788 }
789 uses te-node-config-attributes;
790 } // te-node-config
791
792 grouping te-node-config-attributes {
793 container te-node-attributes {
794 uses sch:schedules;
795 leaf admin-status {
796 type te-admin-status;
797 description
798 "The administrative state of the link.";
799 }
800 uses te-node-connectivity-matrix;
801 uses te-node-info-attributes;
802 } // te-node-attributes
803 } // te-node-config-attributes
804
805 grouping te-node-config-attributes-notification {
806 container te-node-attributes {
807 uses sch:schedules;
808 leaf admin-status {
809 type te-admin-status;
810 }
811 uses te-node-connectivity-matrix-abs;
812 uses te-node-info-attributes;
813 } // te-node-attributes
814 } // te-node-config-attributes-notification
815
816 grouping te-node-config-attributes-template {
817 container te-node-attributes {
818 uses sch:schedules;
819 leaf admin-status {
820 type te-admin-status;
821 }
822 uses te-node-info-attributes;
823 } // te-node-attributes
824 } // te-node-config-attributes-template
825
826 grouping te-node-connectivity-matrix {
827 list connectivity-matrix {
828 key "id";
829 leaf id {
830 type uint32;
831 }
832 container from {
833 leaf tp-ref {
834 type leafref {
835 path "../../../../../../nt:t-point/nt:tp-id";
836 }
837 }
838 }
839 container to {
840 leaf tp-ref {
841 type leafref {
842 path "../../../../../../nt:t-point/nt:tp-id";
843 }
844 }
845 }
846 leaf is-allowed {
847 type boolean;
848 }
849 }
850 } // te-node-connectivity-matrix
851
852 grouping te-node-connectivity-matrix-abs {
853 list connectivity-matrix {
854 key "id";
855 leaf id {
856 type uint32;
857 }
858 container from {
859 uses nt:tp-ref;
860 }
861 container to {
862 uses nt:tp-ref;
863 }
864 leaf is-allowed {
865 type boolean;
866 }
867 }
868 } // te-node-connectivity-matrix-abs
869
870 grouping te-node-info-attributes {
871 leaf domain-id {
872 type uint32;
873 }
874 leaf is-abstract {
875 type empty;
876 }
877 leaf name {
878 type inet:domain-name;
879 }
880 leaf-list signaling-address {
881 type inet:ip-address;
882 }
883 container underlay-topology {
884 if-feature te-topology-hierarchy;
885 uses te-topology-ref;
886 }
887 } // te-node-info-attributes
888
889 grouping te-node-state-derived {
890 description "Node state attributes in a TE topology.";
891 leaf oper-status {
892 type te-oper-status;
893 }
894 leaf is-multi-access-dr {
895 type empty;
896 }
897 uses information-source-attributes;
898 list alt-information-sources {
899 key "information-source";
900 uses information-source-attributes;
901 uses te-node-connectivity-matrix;
902 uses te-node-info-attributes;
903 }
904 } // te-node-state-derived
905
906 grouping te-node-state-derived-notification {
907 description "Node state attributes in a TE topology.";
908 leaf oper-status {
909 type te-oper-status;
910 }
911 leaf is-multi-access-dr {
912 type empty;
913 }
914 uses information-source-attributes;
915 list alt-information-sources {
916 key "information-source";
917 uses information-source-attributes;
918 uses te-node-connectivity-matrix-abs;
919 uses te-node-info-attributes;
920 }
921 } // te-node-state-derived-notification
922
923 grouping te-node-tunnel-termination-capability {
924 list termination-capability {
925 key "link-tp";
926 leaf link-tp {
927 type leafref {
928 path "../../../../../nt:t-point/nt:tp-id";
929 }
930 }
931 } // termination-capability
932 } // te-node-tunnel-termination-capability
933
934 grouping te-path-element {
935 uses te-types:explicit-route-subobject;
936 } // te-path-element
937
938 grouping te-termination-point-augment {
939
940 container te {
941 presence "TE support.";
942
943 leaf te-tp-id {
944 type te-tp-id;
945 mandatory true;
946 }
947
948 container config {
949 uses te-termination-point-config;
950 } // config
951 container state {
952 config false;
953 uses te-termination-point-config;
954 } // state
955 } // te
956 } // te-termination-point-augment
957
958 grouping te-termination-point-config {
959 uses sch:schedules;
960 } // te-termination-point-config
961
962 grouping te-topologies-augment {
963
964 container te {
965 presence "TE support.";
966
967 container templates {
968 list node-template {
969 if-feature template;
970 key "name";
971 leaf name {
972 type te-template-name;
973 }
974 uses template-attributes;
975 uses te-node-config-attributes-template;
976 } // node-template
977
978 list link-template {
979 if-feature template;
980 key "name";
981 leaf name {
982 type te-template-name;
983 }
984 uses template-attributes;
985 uses te-link-config-attributes;
986 } // link-template
987 } // templates
988 } // te
989 } // te-topologies-augment
990
991 grouping te-topology-augment {
992
993 container te {
994 presence "TE support.";
995 leaf provider-id {
996 type te-global-id;
997 }
998 leaf client-id {
999 type te-global-id;
1000 }
1001 leaf te-topology-id {
1002 type te-topology-id;
1003 mandatory true;
1004 }
1005
1006 container config {
1007 uses te-topology-config;
1008 } // config
1009 container state {
1010 config false;
1011 uses te-topology-config;
1012 } // state
1013 } // te
1014 } // te-topology-augment
1015
1016 grouping te-topology-config {
1017 uses sch:schedules;
1018 leaf preference {
1019 type uint8 {
1020 range "1..255";
1021 }
1022 }
1023 } // te-topology-config
1024
1025 grouping te-topology-ref {
1026 leaf provider-id-ref {
1027 type leafref {
1028 path "/nw:networks/nw:network[nw:network-id = "
1029 + "current()/../network-id-ref]/tet:te/tet:provider-id";
1030 require-instance false;
1031 }
1032 }
1033 leaf client-id-ref {
1034 type leafref {
1035 path "/nw:networks/nw:network[nw:network-id = "
1036 + "current()/../network-id-ref]/tet:te/tet:client-id";
1037 require-instance false;
1038 }
1039 }
1040 leaf te-topology-id-ref {
1041 type leafref {
1042 path "/nw:networks/nw:network[nw:network-id = "
1043 + "current()/../network-id-ref]/tet:te/tet:te-topology-id";
1044 require-instance false;
1045 }
1046 }
1047 leaf network-id-ref {
1048 type leafref {
1049 path "/nw:networks/nw:network/nw:network-id";
1050 require-instance false;
1051 }
1052 }
1053 } // te-topology-ref
1054
1055 grouping te-topology-type {
1056 container te-topology {
1057 presence "Indicates TE topology.";
1058 }
1059 } // te-topology-type
1060
1061 grouping template-attributes {
1062 leaf priority {
1063 type uint16;
1064 }
1065 leaf reference-change-policy {
1066 type enumeration {
1067 enum no-action;
1068 enum not-allowed;
1069 enum cascade;
1070 }
1071 }
1072 } // template-attributes
1073
1074 /*
1075 * Configuration data nodes
1076 */
1077 augment "/nw:networks/nw:network/nw:network-types" {
1078 uses te-topology-type;
1079 }
1080
1081 augment "/nw:networks" {
1082 uses te-topologies-augment;
1083 }
1084
1085 augment "/nw:networks/nw:network" {
1086 uses te-topology-augment;
1087 }
1088
1089 augment "/nw:networks/nw:network/nw:node" {
1090 uses te-node-augment;
1091 }
1092
1093 augment "/nw:networks/nw:network/nt:link" {
1094 uses te-link-augment;
1095 }
1096
1097 augment "/nw:networks/nw:network/nw:node/"
1098 + "nt:t-point" {
1099 uses te-termination-point-augment;
1100 }
1101
1102 container te-node-event {
1103 leaf event-type {
1104 type te-topology-event-type;
1105 description "Event type.";
1106 }
1107 uses nw:node-ref;
1108 uses te-topology-type;
1109 uses tet:te-node-config-attributes-notification;
1110 uses tet:te-node-state-derived-notification;
1111 }
1112}