blob: ab4e37027a9edaeb9526d2a1dec4345aeb13290e [file] [log] [blame]
Scott Bakerc9d3d842021-09-17 11:32:53 -07001// SPDX-FileCopyrightText: 2021 Open Networking Foundation
2//
3// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
4
5module vcs {
6 namespace "http://opennetworking.org/aether/vcs";
7 prefix sl;
8
9 import template{ prefix vt; }
10 import upf { prefix upf; }
11 import ap-list{ prefix apl; }
12 import application{ prefix app; }
13 import aether-types{ prefix at; }
14 import device-group{ prefix dg; }
15 import traffic-class{ prefix tc; }
16 import ietf-yang-types{ prefix yg; }
17 import enterprise{ prefix ent; }
18
19 organization "Open Networking Foundation.";
20 contact "Scott Baker";
21 description
22 "An Aether Virtual Cellular Service (VCS) is
23 used to connect UE devices with applications";
24
25 revision "2021-06-02" {
26 description "An Aether Virtual Cellular Service";
27 reference "RFC 6087";
28 }
29
30 typedef vcs-id {
31 type yg:yang-identifier {
32 length 1..32;
33 }
34 }
35
36 container vcs {
37 description "The top level container";
38
39 list vcs {
40 key "id";
41 description
42 "List of virtual cellular services";
43
44 leaf id {
45 type vcs-id;
46 description "ID for this vcs.";
47 }
48
49 leaf display-name {
50 type string {
51 length 1..80;
52 }
53 description "display name to use in GUI or CLI";
54 }
55
56 list device-group {
57 key "device-group";
58 leaf device-group {
59 type leafref {
60 path "/dg:device-group/dg:device-group/dg:id";
61 }
62 description
63 "Link to device group";
64 }
65 leaf enable {
66 type boolean;
67 default true;
68 description
69 "Enable this device group";
70 }
71 description
72 "A list of device groups. Groups will only participate in
73 the VCS if the enable field is set to True";
74 }
75
76 leaf template {
77 type leafref {
78 path "/vt:template/vt:template/vt:id";
79 }
80 description
81 "Link to user vcs template that was used to initialize
82 this VCS";
83 }
84
85 list application {
86 key "application";
87 leaf application {
88 type leafref {
89 path "/app:application/app:application/app:id";
90 }
91 mandatory true;
92 description
93 "Link to application";
94 }
95 leaf allow {
96 type boolean;
97 default true;
98 description
99 "Allow or deny this application";
100 }
101 description
102 "An ordered list of applications to allow and deny. The deny rules
103 will be executed first, followed by the allow rules. The first rule
104 to match is returned. An implicit DENY ALL lies at the end.";
105 }
106
107 leaf upf {
108 type leafref {
109 path "/upf:upf/upf:upf/upf:id";
110 }
111 description
112 "Link to user plane that implements this vcf";
113 }
114
115 leaf ap {
116 type leafref {
117 path "/apl:ap-list/apl:ap-list/apl:id";
118 }
119 description
120 "Link to access-point list";
121 }
122
123 leaf description {
124 type at:description;
125 description "description of this vcs";
126 }
127
128 leaf enterprise {
129 type leafref {
130 path "/ent:enterprise/ent:enterprise/ent:id";
131 }
132 mandatory true;
133 description
134 "Link to enterprise that owns this VCS";
135 }
136
137 // the following are populated from the template
138 leaf sst {
139 type at:sst;
140 mandatory true;
141 description "Slice/Service type. Immutable.";
142 }
143
144 leaf sd {
145 type at:sd;
146 mandatory true;
147 description "Slice differentiator. Immutable.";
148 }
149
150 leaf uplink {
151 type uint32;
152 description "Uplink data rate in mbps";
153 }
154
155 leaf downlink {
156 type uint32;
157 description "Downlink data rate in mbps";
158 }
159
160 leaf traffic-class {
161 type leafref {
162 path "/tc:traffic-class/tc:traffic-class/tc:id";
163 }
164 mandatory true;
165 description
166 "Link to traffic class";
167 }
168 // end of items populated from the template
169 }
170 }
171}