blob: 3957f0dc611aa891dfcb667282886a7104ba7cce [file] [log] [blame]
Toru Furusawa28988892017-10-30 17:28:40 -07001module tapi-connectivity {
2 namespace "urn:onf:params:xml:ns:yang:tapi-connectivity";
3 prefix tapi-connectivity;
4 import tapi-common {
5 prefix tapi-common;
6 }
7 import tapi-topology {
8 prefix tapi-topology;
9 }
10 import tapi-path-computation {
11 prefix tapi-path-computation;
12 }
13 organization "Open Networking Foundation (ONF) / Open Transport Working Group(OTWG) / Transport API (TAPI) Project";
14 contact "
15 WG Web: TAPI SDK Project <http://opensourcesdn.org/projects/project-snowmass/>
16 WG List: TAPI Discussion list <mailto: transport-api@login.opennetworking.org>,
17 WG Chair: Karthik Sethuraman <mailto:karthik.sethuraman@necam.com>,
18 Editor: Ricard Vilalta <mailto:ricard.vilalta@cttc.es>";
19 description "none";
20 revision 2017-05-31 {
21 description "TAPI SDK 2.0-alpha";
22 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020 and RFC 6087";
23 }
24 augment "/tapi-common:context" {
25 uses connectivity-context;
26 description "Augments the base TAPI Context with ConnectivityService information";
27 }
28 augment "/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point" {
29 uses cep-list;
30 description "none";
31 }
32 /***********************
33 * package object-classes
34 **********************/
35 grouping connection {
36 leaf-list connection-end-point {
37 type leafref {
38 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
39 }
40 config false;
41 min-elements 2;
42 description "none";
43 }
44 leaf-list lower-connection {
45 type leafref {
46 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
47 }
48 description "An Connection object supports a recursive aggregation relationship such that the internal construction of an Connection can be exposed as multiple lower level Connection objects (partitioning).
49 Aggregation is used as for the Node/Topology to allow changes in hierarchy.
50 Connection aggregation reflects Node/Topology aggregation.
51 The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning.";
52 }
53 leaf-list supported-link {
54 type leafref {
55 path '/tapi-common:context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';
56 }
57 description "An Connection that spans between CEPs that terminate the LayerProtocol usually supports one or more links in the client layer.";
58 }
59 leaf container-node {
60 type leafref {
61 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';
62 }
63 config false;
64 description "none";
65 }
66 list route {
67 key 'local-id';
68 config false;
69 uses route;
70 description "none";
71 }
72 list switch-control {
73 key 'local-id';
74 config false;
75 uses switch-control;
76 description "none";
77 }
78 container state {
79 config false;
80 uses tapi-common:operational-state-pac;
81 description "none";
82 }
83 leaf direction {
84 type tapi-common:forwarding-direction;
85 config false;
86 description "none";
87 }
88 leaf layer-protocol-name {
89 type tapi-common:layer-protocol-name;
90 config false;
91 description "none";
92 }
93 uses tapi-common:resource-spec;
94 description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.
95 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
96 }
97 grouping connection-end-point {
98 list layer-protocol {
99 key 'local-id';
100 config false;
101 min-elements 1;
102 uses tapi-common:layer-protocol;
103 description "none";
104 }
105 leaf-list client-node-edge-point {
106 type leafref {
107 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';
108 }
109 config false;
110 description "none";
111 }
112 leaf server-node-edge-point {
113 type leafref {
114 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-topology:uuid';
115 }
116 config false;
117 description "none";
118 }
119 leaf peer-connection-end-point {
120 type leafref {
121 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
122 }
123 config false;
124 description "none";
125 }
126 leaf-list associated-route {
127 type leafref {
128 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';
129 }
130 description "none";
131 }
132 container state {
133 config false;
134 uses tapi-common:operational-state-pac;
135 description "none";
136 }
137 leaf connection-port-direction {
138 type tapi-common:port-direction;
139 config false;
140 description "The orientation of defined flow at the EndPoint.";
141 }
142 leaf connection-port-role {
143 type tapi-common:port-role;
144 config false;
145 description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root) in the context of the FC with respect to the FC function. ";
146 }
147 uses tapi-common:resource-spec;
148 description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers.
149 The structure of LTP supports all transport protocols including circuit and packet forms.";
150 }
151 grouping connectivity-constraint {
152 leaf service-type {
153 type service-type;
154 config false;
155 description "none";
156 }
157 leaf service-level {
158 type string;
159 config false;
160 description "An abstract value the meaning of which is mutually agreed – typically represents metrics such as - Class of service, priority, resiliency, availability";
161 }
162 leaf is-exclusive {
163 type boolean;
164 default "true";
165 description "To distinguish if the resources are exclusive to the service - for example between EPL(isExclusive=true) and EVPL (isExclusive=false), or between EPLAN (isExclusive=true) and EVPLAN (isExclusive=false)";
166 }
167 container requested-capacity {
168 config false;
169 uses tapi-common:capacity;
170 description "none";
171 }
172 container schedule {
173 uses tapi-common:time-range;
174 description "none";
175 }
176 list cost-characteristic {
177 key 'cost-name';
178 config false;
179 uses tapi-topology:cost-characteristic;
180 description "The list of costs where each cost relates to some aspect of the TopologicalEntity.";
181 }
182 list latency-characteristic {
183 key 'traffic-property-name';
184 config false;
185 uses tapi-topology:latency-characteristic;
186 description "The effect on the latency of a queuing process. This only has significant effect for packet based systems and has a complex characteristic.";
187 }
188 container route-compute-policy {
189 uses route-compute-policy;
190 description "none";
191 }
192 leaf coroute-inclusion {
193 type leafref {
194 path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
195 }
196 config false;
197 description "none";
198 }
199 leaf-list diversity-exclusion {
200 type leafref {
201 path '/tapi-common:context/tapi-connectivity:connectivity-service/tapi-connectivity:uuid';
202 }
203 config false;
204 description "none";
205 }
206 uses tapi-common:local-class;
207 description "none";
208 }
209 grouping connectivity-service {
210 list end-point {
211 key 'local-id';
212 min-elements 2;
213 uses connectivity-service-end-point;
214 description "none";
215 }
216 leaf-list connection {
217 type leafref {
218 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:uuid';
219 }
220 config false;
221 description "none";
222 }
223 container conn-constraint {
224 uses connectivity-constraint;
225 description "none";
226 }
227 container topo-constraint {
228 uses topology-constraint;
229 description "none";
230 }
231 container state {
232 uses tapi-common:admin-state-pac;
233 description "none";
234 }
235 leaf direction {
236 type tapi-common:forwarding-direction;
237 description "none";
238 }
239 leaf layer-protocol-name {
240 type tapi-common:layer-protocol-name;
241 description "none";
242 }
243 list resilience-constraint {
244 key 'local-id';
245 uses resilience-constraint;
246 description "none";
247 }
248 uses tapi-common:service-spec;
249 description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs and like the LTP supports any transport protocol including all circuit and packet forms.
250 At the lowest level of recursion, a FC represents a cross-connection within an NE.";
251 }
252 grouping connectivity-service-end-point {
253 leaf service-interface-point {
254 type leafref {
255 path '/tapi-common:context/tapi-common:service-interface-point/tapi-common:uuid';
256 }
257 description "none";
258 }
259 leaf-list connection-end-point {
260 type leafref {
261 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
262 }
263 config false;
264 description "none";
265 }
266 list layer-protocol {
267 key 'local-id';
268 min-elements 1;
269 uses tapi-common:layer-protocol;
270 description "none";
271 }
272 container state {
273 uses tapi-common:admin-state-pac;
274 description "none";
275 }
276 container capacity {
277 uses tapi-common:capacity-pac;
278 description "none";
279 }
280 leaf direction {
281 type tapi-common:port-direction;
282 description "The orientation of defined flow at the EndPoint.";
283 }
284 leaf role {
285 type tapi-common:port-role;
286 description "Each EP of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root) in the context of the FC with respect to the FC function. ";
287 }
288 leaf protection-role {
289 type protection-role;
290 description "To specify the protection role of this Port when create or update ConnectivityService.";
291 }
292 uses tapi-common:local-class;
293 description "The association of the FC to LTPs is made via EndPoints.
294 The EndPoint (EP) object class models the access to the FC function.
295 The traffic forwarding between the associated EPs of the FC depends upon the type of FC and may be associated with FcSwitch object instances.
296 In cases where there is resilience the EndPoint may convey the resilience role of the access to the FC.
297 It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
298 The EP replaces the Protection Unit of a traditional protection model.
299 The ForwadingConstruct can be considered as a component and the EndPoint as a Port on that component";
300 }
301 grouping route {
302 leaf-list connection-end-point {
303 type leafref {
304 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
305 }
306 config false;
307 min-elements 2;
308 description "none";
309 }
310 uses tapi-common:local-class;
311 description "The FC Route (FcRoute) object class models the individual routes of an FC.
312 The route of an FC object is represented by a list of FCs at a lower level.
313 Note that depending on the service supported by an FC, an the FC can have multiple routes.";
314 }
315 grouping connectivity-context {
316 list connectivity-service {
317 key 'uuid';
318 uses connectivity-service;
319 description "none";
320 }
321 list connection {
322 key 'uuid';
323 config false;
324 uses connection;
325 description "none";
326 }
327 description "none";
328 }
329 grouping switch {
330 leaf-list selected-connection-end-point {
331 type leafref {
332 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:owned-node-edge-point/tapi-connectivity:connection-end-point/tapi-connectivity:uuid';
333 }
334 min-elements 1;
335 description "none";
336 }
337 leaf-list selected-route {
338 type leafref {
339 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:route/tapi-connectivity:local-id';
340 }
341 min-elements 1;
342 description "none";
343 }
344 leaf selection-control {
345 type selection-control;
346 description "Degree of administrative control applied to the switch selection.";
347 }
348 leaf selection-reason {
349 type selection-reason;
350 config false;
351 description "The reason for the current switch selection.";
352 }
353 leaf switch-direction {
354 type tapi-common:port-direction;
355 description "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both.";
356 }
357 uses tapi-common:local-class;
358 description "The class models the switched forwarding of traffic (traffic flow) between FcPorts (ConnectionEndPoints) and is present where there is protection functionality in the FC (Connection).
359 If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.
360 The FC switch represents and defines a protection switch structure encapsulated in the FC.
361 Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit.
362 One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort.
363 The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time.
364 It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1).
365 It may be locked out (prevented from switching), force switched or manual switched.
366 It will indicate switch state and change of state.
367 The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is 'open').
368 The ability for a Switch to be 'high impedance' allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict.
369 This ability allows multiple alternate routes to be present that otherwise would be in conflict.";
370 }
371 grouping switch-control {
372 leaf-list sub-switch-control {
373 type leafref {
374 path '/tapi-common:context/tapi-connectivity:connection/tapi-connectivity:switch-control/tapi-connectivity:local-id';
375 }
376 description "none";
377 }
378 list switch {
379 key 'local-id';
380 uses switch;
381 description "none";
382 }
383 container control-parameters {
384 uses resilience-constraint;
385 description "none";
386 }
387 uses tapi-common:local-class;
388 description "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme.";
389 }
390 grouping resilience-constraint {
391 container resilience-type {
392 uses tapi-topology:resilience-type;
393 description "none";
394 }
395 leaf restoration-coordinate-type {
396 type coordinate-type;
397 description " The coordination mechanism between multi-layers.";
398 }
399 leaf restore-priority {
400 type uint64;
401 description "none";
402 }
403 leaf reversion-mode {
404 type reversion-mode;
405 description "Indcates whether the protection scheme is revertive or non-revertive.";
406 }
407 leaf wait-to-revert-time {
408 type uint64;
409 default "15";
410 description "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource.";
411 }
412 leaf hold-off-time {
413 type uint64;
414 description "This attribute indicates the time, in milliseconds, between declaration of signal degrade or signal fail, and the initialization of the protection switching algorithm.";
415 }
416 leaf is-lock-out {
417 type boolean;
418 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
419 This overrides all other protection control states including forced.
420 If the item is locked out then it cannot be used under any circumstances.
421 Note: Only relevant when part of a protection scheme.";
422 }
423 leaf is-frozen {
424 type boolean;
425 description "Temporarily prevents any switch action to be taken and, as such, freezes the current state.
426 Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored.
427 All administrative controls of any aspect of protection are rejected.";
428 }
429 leaf is-coordinated-switching-both-ends {
430 type boolean;
431 description "Is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends.";
432 }
433 leaf max-switch-times {
434 type uint64;
435 description "Used to limit the maximum swtich times. When work fault disappears , and traffic return to the original work path, switch counter reset.";
436 }
437 leaf layer-protocol {
438 type tapi-common:layer-protocol-name;
439 description "Indicate which layer this resilience parameters package configured for.";
440 }
441 uses tapi-common:local-class;
442 description "A list of control parameters to apply to a switch.";
443 }
444 grouping topology-constraint {
445 leaf-list include-topology {
446 type leafref {
447 path '/tapi-common:context/tapi-topology:topology/tapi-topology:uuid';
448 }
449 config false;
450 description "none";
451 }
452 leaf-list avoid-topology {
453 type leafref {
454 path '/tapi-common:context/tapi-topology:topology/tapi-topology:uuid';
455 }
456 config false;
457 description "none";
458 }
459 leaf-list include-path {
460 type leafref {
461 path '/tapi-common:context/tapi-path-computation:path/tapi-path-computation:uuid';
462 }
463 config false;
464 description "none";
465 }
466 leaf-list exclude-path {
467 type leafref {
468 path '/tapi-common:context/tapi-path-computation:path/tapi-path-computation:uuid';
469 }
470 config false;
471 description "none";
472 }
473 leaf-list include-link {
474 type leafref {
475 path '/tapi-common:context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';
476 }
477 config false;
478 description "This is a loose constraint - that is it is unordered and could be a partial list ";
479 }
480 leaf-list exclude-link {
481 type leafref {
482 path '/tapi-common:context/tapi-topology:topology/tapi-topology:link/tapi-topology:uuid';
483 }
484 config false;
485 description "none";
486 }
487 leaf-list include-node {
488 type leafref {
489 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';
490 }
491 config false;
492 description "This is a loose constraint - that is it is unordered and could be a partial list";
493 }
494 leaf-list exclude-node {
495 type leafref {
496 path '/tapi-common:context/tapi-topology:topology/tapi-topology:node/tapi-topology:uuid';
497 }
498 config false;
499 description "none";
500 }
501 leaf-list preferred-transport-layer {
502 type tapi-common:layer-protocol-name;
503 config false;
504 description "soft constraint requested by client to indicate the layer(s) of transport connection that it prefers to carry the service. This could be same as the service layer or one of the supported server layers";
505 }
506 uses tapi-common:local-class;
507 description "none";
508 }
509 grouping cep-list {
510 list connection-end-point {
511 key 'uuid';
512 uses connection-end-point;
513 description "none";
514 }
515 description "none";
516 }
517 grouping route-compute-policy {
518 leaf route-objective-function {
519 type route-objective-function;
520 description "none";
521 }
522 leaf diversity-policy {
523 type diversity-policy;
524 description "none";
525 }
526 description "none";
527 }
528
529 /***********************
530 * package type-definitions
531 **********************/
532 typedef service-type {
533 type enumeration {
534 enum point-to-point-connectivity {
535 description "none";
536 }
537 enum point-to-multipoint-connectivity {
538 description "none";
539 }
540 enum multipoint-connectivity {
541 description "none";
542 }
543 enum rooted-multipoint-connectivity {
544 description "none";
545 }
546 }
547 description "none";
548 }
549 typedef reversion-mode {
550 type enumeration {
551 enum revertive {
552 description "An FC switched to a lower priority (non-preferred) resource will revert to a higher priority (preferred) resource when that recovers (potentially after some hold-off time).";
553 }
554 enum non-revertive {
555 description "An FC switched to a lower priority (non-preferred) resource will not revert to a higher priority (preferred) resource when that recovers.";
556 }
557 }
558 description "The reversion mode associated with protection.";
559 }
560 typedef selection-control {
561 type enumeration {
562 enum lock-out {
563 description "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of.
564 This overrides all other protection control states including forced.
565 If the item is locked out then it cannot be used under any circumstances.
566 Note: Only relevant when part of a protection scheme.";
567 }
568 enum normal {
569 description "none";
570 }
571 enum manual {
572 description "none";
573 }
574 enum forced {
575 description "none";
576 }
577 }
578 description "Possible degrees of administrative control applied to the Route selection.";
579 }
580 typedef selection-reason {
581 type enumeration {
582 enum lockout {
583 description "none";
584 }
585 enum normal {
586 description "none";
587 }
588 enum manual {
589 description "none";
590 }
591 enum forced {
592 description "none";
593 }
594 enum wait-to-revert {
595 description "none";
596 }
597 enum signal-degrade {
598 description "none";
599 }
600 enum signal-fail {
601 description "none";
602 }
603 }
604 description "The cause of the current route selection.";
605 }
606 typedef coordinate-type {
607 type enumeration {
608 enum no-coordinate {
609 description "none";
610 }
611 enum hold-off-time {
612 description "none";
613 }
614 enum wait-for-notification {
615 description "none";
616 }
617 }
618 description "none";
619 }
620 typedef route-objective-function {
621 type enumeration {
622 enum min-work-route-hop {
623 description "none";
624 }
625 enum min-work-route-cost {
626 description "none";
627 }
628 enum min-work-route-latency {
629 description "none";
630 }
631 enum min-sum-of-work-and-protection-route-hop {
632 description "none";
633 }
634 enum min-sum-of-work-and-protection-route-cost {
635 description "none";
636 }
637 enum min-sum-of-work-and-protection-route-latency {
638 description "none";
639 }
640 enum load-balance-max-unused-capacity {
641 description "none";
642 }
643 }
644 description "none";
645 }
646 typedef diversity-policy {
647 type enumeration {
648 enum srlg {
649 description "none";
650 }
651 enum srng {
652 description "none";
653 }
654 enum sng {
655 description "none";
656 }
657 enum node {
658 description "none";
659 }
660 enum link {
661 description "none";
662 }
663 }
664 description "none";
665 }
666 typedef protection-role {
667 type enumeration {
668 enum work {
669 description "none";
670 }
671 enum protect {
672 description "none";
673 }
674 enum protected {
675 description "none";
676 }
677 enum na {
678 description "none";
679 }
680 enum work-restore {
681 description "none";
682 }
683 enum protect-restore {
684 description "none";
685 }
686 }
687 description "none";
688 }
689
690 /***********************
691 * package interfaces
692 **********************/
693 rpc get-connection-details {
694 description "none";
695 input {
696 leaf service-id-or-name {
697 type string;
698 description "none";
699 }
700 leaf connection-id-or-name {
701 type string;
702 description "none";
703 }
704 }
705 output {
706 container connection {
707 uses connection;
708 description "none";
709 }
710 }
711 }
712 rpc get-connectivity-service-list {
713 description "none";
714 output {
715 list service {
716 uses connectivity-service;
717 description "none";
718 }
719 }
720 }
721 rpc get-connectivity-service-details {
722 description "none";
723 input {
724 leaf service-id-or-name {
725 type string;
726 description "none";
727 }
728 }
729 output {
730 container service {
731 uses connectivity-service;
732 description "none";
733 }
734 }
735 }
736 rpc create-connectivity-service {
737 description "none";
738 input {
739 list end-point {
740 min-elements 2;
741 uses connectivity-service-end-point;
742 description "none";
743 }
744 container conn-constraint {
745 uses connectivity-constraint;
746 description "none";
747 }
748 container topo-constraint {
749 uses topology-constraint;
750 description "none";
751 }
752 list resilience-constraint {
753 uses resilience-constraint;
754 description "none";
755 }
756 leaf state {
757 type string;
758 description "none";
759 }
760 }
761 output {
762 container service {
763 uses connectivity-service;
764 description "none";
765 }
766 }
767 }
768 rpc update-connectivity-service {
769 description "none";
770 input {
771 leaf service-id-or-name {
772 type string;
773 description "none";
774 }
775 container end-point {
776 uses connectivity-service-end-point;
777 description "none";
778 }
779 container conn-constraint {
780 uses connectivity-constraint;
781 description "none";
782 }
783 container topo-constraint {
784 uses topology-constraint;
785 description "none";
786 }
787 list resilience-constraint {
788 uses resilience-constraint;
789 description "none";
790 }
791 leaf state {
792 type string;
793 description "none";
794 }
795 }
796 output {
797 container service {
798 uses connectivity-service;
799 description "none";
800 }
801 }
802 }
803 rpc delete-connectivity-service {
804 description "none";
805 input {
806 leaf service-id-or-name {
807 type string;
808 description "none";
809 }
810 }
811 output {
812 container service {
813 uses connectivity-service;
814 description "none";
815 }
816 }
817 }
818
819}