208da160b9402ca1513a29c8ae86f4e5f85724fa
[transportpce.git] / tapimodels / src / main / yang / tapi-topology@2018-12-10.yang
1 module tapi-topology {
2     namespace "urn:onf:otcc:yang:tapi-topology";
3     prefix tapi-topology;
4     import tapi-common {
5         prefix tapi-common;
6     }
7     organization "ONF OTCC (Open Transport Configuration & Control) Project";
8     contact "
9          Project Web: <https://wiki.opennetworking.org/display/OTCC/TAPI>
10          Project List: <mailto:transport-api@opennetworking.org>
11          Editor: Karthik Sethuraman
12                  <mailto:karthik.sethuraman@necam.com>";
13     description "
14         This module contains TAPI Topology Model definitions.
15         Source: TapiTopology.uml
16         - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.
17         - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
18           <https://github.com/OpenNetworkingFoundation/EagleUmlYang>
19           and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
20           <https://wiki.opennetworking.org/display/OIMT/UML+-+YANG+Guidelines>
21         - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
22           As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
23         - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
24           The YANG model backward compatibility criteria are outlined in section 11 of <https://tools.ietf.org/html/rfc7950>.
25           YANG models included in this release may not be backward compatible with previous TAPI releases.
26         Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
27         License: This module is distributed under the Apache License 2.0";
28     revision 2018-12-10 {
29         description "ONF Transport API version 2.1.1.
30                    Changes included in this TAPI release (v2.1.1) are listed in
31                    <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md>";
32         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
33                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
34     }
35     revision 2018-10-16 {
36         description "ONF Transport API version 2.1.0.
37                    Changes included in this TAPI release (v2.1.0) are listed in
38                    <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md>";
39         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
40                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML>";
41     }
42     revision 2018-03-07 {
43         description "ONF Transport API version 2.0.2
44         This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
45         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md>";
46         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
47                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML>";
48     }
49     revision 2018-02-16 {
50         description "ONF Transport API version 2.0.1
51         This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
52         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md>";
53         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
54                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML>";
55     }
56     revision 2018-01-02 {
57         description "ONF Transport API version 2.0.0
58         This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
59         Changes in this revision: <https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md>";
60         reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
61                   <https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML>";
62     }
63     augment "/tapi-common:context" {
64         container topology-context {
65             uses topology-context;
66             description "Augments the base TAPI Context with TopologyService information";
67         }
68         description "Augments the base TAPI Context with TopologyService information";
69     }
70
71    /**************************
72     * definitions of refrences
73     **************************/
74     grouping topology-ref {
75         leaf topology-uuid {
76             type leafref {
77                 path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:uuid';
78             }
79             description "none";
80         }
81         description "none";
82     }
83     grouping link-ref {
84         uses topology-ref;
85         leaf link-uuid {
86             type leafref {
87                 path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';
88             }
89             description "none";
90         }
91         description "none";
92     }
93     grouping node-ref {
94         uses topology-ref;
95         leaf node-uuid {
96             type leafref {
97                 path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';
98             }
99             description "none";
100         }
101         description "none";
102     }
103     grouping node-edge-point-ref {
104         uses node-ref;
105         leaf node-edge-point-uuid {
106             type leafref {
107                 path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';
108             }
109             description "none";
110         }
111         description "none";
112     }
113     grouping node-rule-group-ref {
114         uses node-ref;
115         leaf node-rule-group-uuid {
116             type leafref {
117                 path '/tapi-common:context/tapi-topology:topology-context/tapi-topology:topology/tapi-topology:node/tapi-topology:node-rule-group/tapi-topology:uuid';
118             }
119             description "none";
120         }
121         description "none";
122     }
123
124    /**************************
125     * package object-classes
126     **************************/
127     grouping link {
128         list node-edge-point {
129             uses node-edge-point-ref;
130             key 'topology-uuid node-uuid node-edge-point-uuid';
131             config false;
132             min-elements 2;
133             description "none";
134         }
135         leaf-list layer-protocol-name {
136             type tapi-common:layer-protocol-name;
137             config false;
138             min-elements 1;
139             description "none";
140         }
141         leaf direction {
142             type tapi-common:forwarding-direction;
143             config false;
144             description "The directionality of the Link.
145                 Is applicable to simple Links where all LinkEnds are BIDIRECTIONAL (the Link will be BIDIRECTIONAL) or UNIDIRECTIONAL (the Link will be UNIDIRECTIONAL).
146                 Is not present in more complex cases.";
147         }
148         container resilience-type {
149             uses resilience-type;
150             description "none";
151         }
152         uses tapi-common:resource-spec;
153         uses tapi-common:admin-state-pac;
154         uses tapi-common:capacity-pac;
155         uses transfer-cost-pac;
156         uses transfer-integrity-pac;
157         uses transfer-timing-pac;
158         uses risk-parameter-pac;
159         uses validation-pac;
160         uses layer-protocol-transition-pac;
161         description "The Link object class models effective adjacency between two or more ForwardingDomains (FD). ";
162     }
163     grouping node {
164         list owned-node-edge-point {
165             key 'uuid';
166             config false;
167             uses node-edge-point;
168             description "none";
169         }
170         list aggregated-node-edge-point {
171             uses node-edge-point-ref;
172             key 'topology-uuid node-uuid node-edge-point-uuid';
173             config false;
174             description "none";
175         }
176         list node-rule-group {
177             key 'uuid';
178             uses node-rule-group;
179             description "none";
180         }
181         container encap-topology {
182             uses topology-ref;
183             config false;
184             description "none";
185         }
186         leaf-list layer-protocol-name {
187             type tapi-common:layer-protocol-name;
188             config false;
189             min-elements 1;
190             description "none";
191         }
192         uses tapi-common:resource-spec;
193         uses tapi-common:admin-state-pac;
194         uses tapi-common:capacity-pac;
195         uses transfer-cost-pac;
196         uses transfer-integrity-pac;
197         uses transfer-timing-pac;
198         description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.
199             At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
200     }
201     grouping topology {
202         list node {
203             key 'uuid';
204             config false;
205             uses node;
206             description "none";
207         }
208         list link {
209             key 'uuid';
210             config false;
211             uses link;
212             description "none";
213         }
214         leaf-list layer-protocol-name {
215             type tapi-common:layer-protocol-name;
216             config false;
217             min-elements 1;
218             description "none";
219         }
220         uses tapi-common:resource-spec;
221         description "The ForwardingDomain (FD) object class models the ForwardingDomain topological component which is used to effect forwarding of transport characteristic information and offers the potential to enable forwarding.
222             At the lowest level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs). ";
223     }
224     grouping layer-protocol-transition-pac {
225         leaf-list transitioned-layer-protocol-name {
226             type string;
227             min-elements 2;
228             description "Provides the ordered structure of layer protocol transitions encapsulated in the TopologicalEntity. The ordering relates to the LinkPort role.";
229         }
230         description "Relevant for a Link that is formed by abstracting one or more LTPs (in a stack) to focus on the flow and deemphasize the protocol transformation.
231             This abstraction is relevant when considering multi-layer routing. 
232             The layer protocols of the LTP and the order of their application to the signal is still relevant and need to be accounted for. This is derived from the LTP spec details.
233             This Pac provides the relevant abstractions of the LTPs and provides the necessary association to the LTPs involved.
234             Links that included details in this Pac are often referred to as Transitional Links.";
235     }
236     grouping node-edge-point {
237         leaf layer-protocol-name {
238             type tapi-common:layer-protocol-name;
239             config false;
240             description "none";
241         }
242         leaf-list supported-cep-layer-protocol-qualifier {
243             type tapi-common:layer-protocol-qualifier;
244             min-elements 1;
245             description "none";
246         }
247         list aggregated-node-edge-point {
248             uses node-edge-point-ref;
249             key 'topology-uuid node-uuid node-edge-point-uuid';
250             config false;
251             description "none";
252         }
253         list mapped-service-interface-point {
254             uses tapi-common:service-interface-point-ref;
255             key 'service-interface-point-uuid';
256             config false;
257             description "NodeEdgePoint mapped to more than ServiceInterfacePoint (slicing/virtualizing) or a ServiceInterfacePoint mapped to more than one NodeEdgePoint (load balancing/Resilience) should be considered experimental";
258         }
259         leaf link-port-direction {
260             type tapi-common:port-direction;
261             config false;
262             description "The orientation of defined flow at the LinkEnd.";
263         }
264         leaf link-port-role {
265             type tapi-common:port-role;
266             config false;
267             description "Each LinkEnd of the Link has a role (e.g., symmetric, hub, spoke, leaf, root)  in the context of the Link with respect to the Link function. ";
268         }
269         uses tapi-common:resource-spec;
270         uses tapi-common:admin-state-pac;
271         uses tapi-common:termination-pac;
272         uses tapi-common:capacity-pac;
273         description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
274             The structure of LTP supports all transport protocols including circuit and packet forms.";
275     }
276     grouping risk-parameter-pac {
277         list risk-characteristic {
278             key 'risk-characteristic-name';
279             config false;
280             min-elements 1;
281             uses risk-characteristic;
282             description "A list of risk characteristics for consideration in an analysis of shared risk. Each element of the list represents a specific risk consideration.";
283         }
284         description "The risk characteristics of a TopologicalEntity come directly from the underlying physical realization.
285             The risk characteristics propagate from the physical realization to the client and from the server layer to the client layer, this propagation may be modified by protection.
286             A TopologicalEntity may suffer degradation or failure as a result of a problem in a part of the underlying realization.
287             The realization can be partitioned into segments which have some relevant common failure modes.
288             There is a risk of failure/degradation of each segment of the underlying realization.
289             Each segment is a part of a larger physical/geographical unit that behaves as one with respect to failure (i.e. a failure will have a high probability of impacting the whole unit (e.g. all cables in the same duct).
290             Disruptions to that larger physical/geographical unit will impact (cause failure/errors to) all TopologicalEntities that use any part of that larger physical/geographical entity.
291             Any TopologicalEntity that uses any part of that larger physical/geographical unit will suffer impact and hence each TopologicalEntity shares risk.
292             The identifier of each physical/geographical unit that is involved in the realization of each segment of a Topological entity can be listed in the RiskParameter_Pac of that TopologicalEntity.
293             A segment has one or more risk characteristic.
294             Shared risk between two TopologicalEntities compromises the integrity of any solution that use one of those TopologicalEntity as a backup for the other.
295             Where two TopologicalEntities have a common risk characteristic they have an elevated probability of failing simultaneously compared to two TopologicalEntities that do not share risk characteristics.";
296     }
297     grouping transfer-cost-pac {
298         list cost-characteristic {
299             key 'cost-name';
300             config false;
301             min-elements 1;
302             uses cost-characteristic;
303             description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
304         }
305         description "The cost characteristics of a TopologicalEntity not necessarily correlated to the cost of the underlying physical realization.
306             They may be quite specific to the individual TopologicalEntity e.g. opportunity cost. Relates to layer capacity
307             There may be many perspectives from which cost may be considered  for a particular TopologicalEntity and hence many specific costs and potentially cost algorithms.
308             Using an entity will incur a cost. ";
309     }
310     grouping transfer-integrity-pac {
311         leaf error-characteristic {
312             type string;
313             config false;
314             description "Describes the degree to which the signal propagated can be errored.
315                 Applies to TDM systems as the errored signal will be propagated and not packet as errored packets will be discarded.";
316         }
317         leaf loss-characteristic {
318             type string;
319             config false;
320             description "Describes the acceptable characteristic of lost packets where loss may result from discard due to errors or overflow.
321                 Applies to packet systems and not TDM (as for TDM errored signals are propagated unless grossly errored and overflow/underflow turns into timing slips).";
322         }
323         leaf repeat-delivery-characteristic {
324             type string;
325             config false;
326             description "Primarily applies to packet systems where a packet may be delivered more than once (in fault recovery for example).
327                 It can also apply to TDM where several frames may be received twice due to switching in a system with a large differential propagation delay.";
328         }
329         leaf delivery-order-characteristic {
330             type string;
331             config false;
332             description "Describes the degree to which packets will be delivered out of sequence.
333                 Does not apply to TDM as the TDM protocols maintain strict order.";
334         }
335         leaf unavailable-time-characteristic {
336             type string;
337             config false;
338             description "Describes the duration for which there may be no valid signal propagated.";
339         }
340         leaf server-integrity-process-characteristic {
341             type string;
342             config false;
343             description "Describes the effect of any server integrity enhancement process on the characteristics of the TopologicalEntity.";
344         }
345         description "Transfer intergrity characteristic covers expected/specified/acceptable characteristic of degradation of the transfered signal.
346             It includes all aspects of possible degradation of signal content as well as any damage of any form to the total TopologicalEntity and to the carried signals.
347             Note that the statement is of total impact to the TopologicalEntity so any partial usage of the TopologicalEntity (e.g. a signal that does not use full capacity) will only suffer its portion of the impact.";
348     }
349     grouping transfer-timing-pac {
350         list latency-characteristic {
351             key 'traffic-property-name';
352             config false;
353             min-elements 1;
354             uses latency-characteristic;
355             description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
356         }
357         description "A TopologicalEntity will suffer effects from the underlying physical realization related to the timing of the information passed by the TopologicalEntity.";
358     }
359     grouping validation-pac {
360         list validation-mechanism {
361             key 'validation-mechanism';
362             config false;
363             min-elements 1;
364             uses validation-mechanism;
365             description "Provides details of the specific validation mechanism(s) used to confirm the presence of an intended topologicalEntity.";
366         }
367         description "Validation covers the various adjacenct discovery and reachability verification protocols. Also may cover Information source and degree of integrity.";
368     }
369     grouping network-topology-service {
370         list topology {
371             uses topology-ref;
372             key 'topology-uuid';
373             config false;
374             description "none";
375         }
376         uses tapi-common:service-spec;
377         description "none";
378     }
379     grouping topology-context {
380         container nw-topology-service {
381             config false;
382             uses network-topology-service;
383             description "none";
384         }
385         list topology {
386             key 'uuid';
387             config false;
388             uses topology;
389             description "none";
390         }
391         description "none";
392     }
393     grouping inter-rule-group {
394         list rule {
395             key 'local-id';
396             min-elements 1;
397             uses rule;
398             description "none";
399         }
400         list associated-node-rule-group {
401             uses node-rule-group-ref;
402             key 'topology-uuid node-uuid node-rule-group-uuid';
403             min-elements 2;
404             description "none";
405         }
406         uses tapi-common:resource-spec;
407         uses tapi-common:capacity-pac;
408         uses transfer-cost-pac;
409         uses transfer-timing-pac;
410         uses risk-parameter-pac;
411         description "none";
412     }
413     grouping node-rule-group {
414         list rule {
415             key 'local-id';
416             min-elements 1;
417             uses rule;
418             description "none";
419         }
420         list node-edge-point {
421             uses node-edge-point-ref;
422             key 'topology-uuid node-uuid node-edge-point-uuid';
423             min-elements 1;
424             description "none";
425         }
426         list composed-rule-group {
427             uses node-rule-group-ref;
428             key 'topology-uuid node-uuid node-rule-group-uuid';
429             description "none";
430         }
431         list inter-rule-group {
432             key 'uuid';
433             uses inter-rule-group;
434             description "none";
435         }
436         uses tapi-common:resource-spec;
437         uses tapi-common:capacity-pac;
438         uses transfer-cost-pac;
439         uses transfer-timing-pac;
440         uses risk-parameter-pac;
441         description "none";
442     }
443     grouping rule {
444         leaf rule-type {
445             type rule-type;
446             description "none";
447         }
448         leaf forwarding-rule {
449             type forwarding-rule;
450             description "none";
451         }
452         leaf override-priority {
453             type uint64;
454             description "none";
455         }
456         uses tapi-common:local-class;
457         description "none";
458     }
459
460    /**************************
461     * package type-definitions
462     **************************/
463     grouping cost-characteristic {
464         leaf cost-name {
465             type string;
466             description "The cost characteristic will related to some aspect of the TopologicalEntity (e.g. $ cost, routing weight). This aspect will be conveyed by the costName.";
467         }
468         leaf cost-value {
469             type string;
470             description "The specific cost.";
471         }
472         leaf cost-algorithm {
473             type string;
474             description "The cost may vary based upon some properties of the TopologicalEntity. The rules for the variation are conveyed by the costAlgorithm.";
475         }
476         description "The information for a particular cost characteristic.";
477     }
478     grouping latency-characteristic {
479         leaf traffic-property-name {
480             type string;
481             description "The identifier of the specific traffic property to which the queuing latency applies.";
482         }
483         leaf fixed-latency-characteristic {
484             type string;
485             config false;
486             description "A TopologicalEntity suffers delay caused by the realization of the servers (e.g. distance related; FEC encoding etc.) along with some client specific processing. This is the total average latency effect of the TopologicalEntity";
487         }
488         leaf queing-latency-characteristic {
489             type string;
490             description "The specific queuing latency for the traffic property.";
491         }
492         leaf jitter-characteristic {
493             type string;
494             config false;
495             description "High frequency deviation from true periodicity of a signal and therefore a small high rate of change of transfer latency.
496                 Applies to TDM systems (and not packet).";
497         }
498         leaf wander-characteristic {
499             type string;
500             config false;
501             description "Low frequency deviation from true periodicity of a signal and therefore a small low rate of change of transfer latency.
502                 Applies to TDM systems (and not packet).";
503         }
504         description "Provides information on latency characteristic for a particular stated trafficProperty.";
505     }
506     grouping risk-characteristic {
507         leaf risk-characteristic-name {
508             type string;
509             description "The name of the risk characteristic. The characteristic may be related to a specific degree of closeness.
510                 For example a particular characteristic may apply to failures that are localized (e.g. to one side of a road) where as another characteristic may relate to failures that have a broader impact (e.g. both sides of a road that crosses a bridge).
511                 Depending upon the importance of the traffic being routed different risk characteristics will be evaluated.";
512         }
513         leaf-list risk-identifier-list {
514             type string;
515             min-elements 1;
516             description "A list of the identifiers of each physical/geographic unit (with the specific risk characteristic) that is related to a segment of the TopologicalEntity.";
517         }
518         description "The information for a particular risk characteristic where there is a list of risk identifiers related to that characteristic.";
519     }
520     grouping validation-mechanism {
521         leaf validation-mechanism {
522             type string;
523             description "Name of mechanism used to validate adjacency";
524         }
525         leaf layer-protocol-adjacency-validated {
526             type string;
527             description "State of validatiion";
528         }
529         leaf validation-robustness {
530             type string;
531             description "Quality of validation (i.e. how likely is the stated validation to be invalid)";
532         }
533         description "Identifies the validation mechanism and describes the characteristics of that mechanism";
534     }
535     typedef forwarding-rule {
536         type enumeration {
537             enum MAY_FORWARD_ACROSS_GROUP {
538                 description "none";
539             }
540             enum MUST_FORWARD_ACROSS_GROUP {
541                 description "none";
542             }
543             enum CANNOT_FORWARD_ACROSS_GROUP {
544                 description "none";
545             }
546             enum NO_STATEMENT_ON_FORWARDING {
547                 description "none";
548             }
549         }
550         description "none";
551     }
552     typedef rule-type {
553         type enumeration {
554             enum FORWARDING {
555                 description "none";
556             }
557             enum CAPACITY {
558                 description "none";
559             }
560             enum COST {
561                 description "none";
562             }
563             enum TIMING {
564                 description "none";
565             }
566             enum RISK {
567                 description "none";
568             }
569             enum GROUPING {
570                 description "none";
571             }
572         }
573         description "none";
574     }
575     grouping resilience-type {
576         leaf restoration-policy {
577             type restoration-policy;
578             description "none";
579         }
580         leaf protection-type {
581             type protection-type;
582             description "none";
583         }
584         description "none";
585     }
586     typedef restoration-policy {
587         type enumeration {
588             enum PER_DOMAIN_RESTORATION {
589                 description "none";
590             }
591             enum END_TO_END_RESTORATION {
592                 description "none";
593             }
594             enum NA {
595                 description "none";
596             }
597         }
598         description "none";
599     }
600     typedef protection-type {
601         type enumeration {
602             enum NO_PROTECTON {
603                 description "none";
604             }
605             enum ONE_PLUS_ONE_PROTECTION {
606                 description "none";
607             }
608             enum ONE_PLUS_ONE_PROTECTION_WITH_DYNAMIC_RESTORATION {
609                 description "none";
610             }
611             enum PERMANENT_ONE_PLUS_ONE_PROTECTION {
612                 description "none";
613             }
614             enum ONE_FOR_ONE_PROTECTION {
615                 description "none";
616             }
617             enum DYNAMIC_RESTORATION {
618                 description "none";
619             }
620             enum PRE_COMPUTED_RESTORATION {
621                 description "none";
622             }
623         }
624         description "none";
625     }
626
627    /**************************
628     * package interfaces
629     **************************/
630     rpc get-topology-details {
631         description "none";
632         input {
633             leaf topology-id-or-name {
634                 type string;
635                 description "none";
636             }
637         }
638         output {
639             container topology {
640                 uses topology;
641                 description "none";
642             }
643         }
644     }
645     rpc get-node-details {
646         description "none";
647         input {
648             leaf topology-id-or-name {
649                 type string;
650                 description "none";
651             }
652             leaf node-id-or-name {
653                 type string;
654                 description "none";
655             }
656         }
657         output {
658             container node {
659                 uses node;
660                 description "none";
661             }
662         }
663     }
664     rpc get-node-edge-point-details {
665         description "none";
666         input {
667             leaf topology-id-or-name {
668                 type string;
669                 description "none";
670             }
671             leaf node-id-or-name {
672                 type string;
673                 description "none";
674             }
675             leaf ep-id-or-name {
676                 type string;
677                 description "none";
678             }
679         }
680         output {
681             container node-edge-point {
682                 uses node-edge-point;
683                 description "none";
684             }
685         }
686     }
687     rpc get-link-details {
688         description "none";
689         input {
690             leaf topology-id-or-name {
691                 type string;
692                 description "none";
693             }
694             leaf link-id-or-name {
695                 type string;
696                 description "none";
697             }
698         }
699         output {
700             container link {
701                 uses link;
702                 description "none";
703             }
704         }
705     }
706     rpc get-topology-list {
707         description "none";
708         output {
709             list topology {
710                 key 'uuid';
711                 uses topology;
712                 description "none";
713             }
714         }
715     }
716 }