blob: 5e8c5f7b11ee0e732c5ed790eafd3c9b7799c137 [file] [log] [blame]
Scott Bakerc9d3d842021-09-17 11:32:53 -07001// SPDX-FileCopyrightText: 2021 Open Networking Foundation
2//
Sean Condon160ec1d2022-02-08 12:58:25 +00003// SPDX-License-Identifier: Apache-2.0
Scott Bakerc9d3d842021-09-17 11:32:53 -07004
5module vcs {
6 namespace "http://opennetworking.org/aether/vcs";
7 prefix sl;
8
9 import template{ prefix vt; }
10 import upf { prefix upf; }
PUSHP RAJba2e32f2021-11-02 10:39:24 +000011 import ap-list{ prefix apl; }
Scott Bakerc9d3d842021-09-17 11:32:53 -070012 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";
PUSHP RAJba2e32f2021-11-02 10:39:24 +000021 description
Scott Bakerc9d3d842021-09-17 11:32:53 -070022 "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 }
PUSHP RAJba2e32f2021-11-02 10:39:24 +000034 description "The typedef for vcs-id";
Scott Bakerc9d3d842021-09-17 11:32:53 -070035 }
36
37 container vcs {
38 description "The top level container";
39
40 list vcs {
41 key "id";
42 description
43 "List of virtual cellular services";
44
45 leaf id {
46 type vcs-id;
47 description "ID for this vcs.";
48 }
49
50 leaf display-name {
51 type string {
52 length 1..80;
53 }
54 description "display name to use in GUI or CLI";
55 }
56
57 list device-group {
PUSHP RAJba2e32f2021-11-02 10:39:24 +000058 key "device-group";
Scott Bakerc9d3d842021-09-17 11:32:53 -070059 leaf device-group {
60 type leafref {
61 path "/dg:device-group/dg:device-group/dg:id";
PUSHP RAJba2e32f2021-11-02 10:39:24 +000062 }
Scott Bakerc9d3d842021-09-17 11:32:53 -070063 description
PUSHP RAJba2e32f2021-11-02 10:39:24 +000064 "Link to device group";
Scott Bakerc9d3d842021-09-17 11:32:53 -070065 }
66 leaf enable {
67 type boolean;
68 default true;
69 description
70 "Enable this device group";
71 }
72 description
73 "A list of device groups. Groups will only participate in
74 the VCS if the enable field is set to True";
PUSHP RAJba2e32f2021-11-02 10:39:24 +000075 }
Scott Bakerc9d3d842021-09-17 11:32:53 -070076
77 leaf template {
78 type leafref {
79 path "/vt:template/vt:template/vt:id";
PUSHP RAJba2e32f2021-11-02 10:39:24 +000080 }
Scott Bakerc9d3d842021-09-17 11:32:53 -070081 description
82 "Link to user vcs template that was used to initialize
83 this VCS";
84 }
85
86 list application {
PUSHP RAJba2e32f2021-11-02 10:39:24 +000087 key "application";
Scott Bakerc9d3d842021-09-17 11:32:53 -070088 leaf application {
89 type leafref {
90 path "/app:application/app:application/app:id";
91 }
92 mandatory true;
93 description
94 "Link to application";
95 }
96 leaf allow {
97 type boolean;
98 default true;
99 description
100 "Allow or deny this application";
101 }
102 description
103 "An ordered list of applications to allow and deny. The deny rules
104 will be executed first, followed by the allow rules. The first rule
105 to match is returned. An implicit DENY ALL lies at the end.";
PUSHP RAJba2e32f2021-11-02 10:39:24 +0000106 }
Scott Bakerc9d3d842021-09-17 11:32:53 -0700107
108 leaf upf {
109 type leafref {
110 path "/upf:upf/upf:upf/upf:id";
PUSHP RAJba2e32f2021-11-02 10:39:24 +0000111 }
Scott Bakerc9d3d842021-09-17 11:32:53 -0700112 description
113 "Link to user plane that implements this vcf";
114 }
115
116 leaf ap {
117 type leafref {
118 path "/apl:ap-list/apl:ap-list/apl:id";
PUSHP RAJba2e32f2021-11-02 10:39:24 +0000119 }
Scott Bakerc9d3d842021-09-17 11:32:53 -0700120 description
121 "Link to access-point list";
122 }
123
124 leaf description {
125 type at:description;
126 description "description of this vcs";
127 }
128
129 leaf enterprise {
130 type leafref {
131 path "/ent:enterprise/ent:enterprise/ent:id";
132 }
133 mandatory true;
134 description
135 "Link to enterprise that owns this VCS";
PUSHP RAJba2e32f2021-11-02 10:39:24 +0000136 }
Scott Bakerc9d3d842021-09-17 11:32:53 -0700137
138 // the following are populated from the template
139 leaf sst {
140 type at:sst;
141 mandatory true;
142 description "Slice/Service type. Immutable.";
143 }
PUSHP RAJba2e32f2021-11-02 10:39:24 +0000144
Scott Bakerc9d3d842021-09-17 11:32:53 -0700145 leaf sd {
146 type at:sd;
147 mandatory true;
148 description "Slice differentiator. Immutable.";
149 }
150
151 leaf uplink {
152 type uint32;
153 description "Uplink data rate in mbps";
154 }
155
156 leaf downlink {
157 type uint32;
158 description "Downlink data rate in mbps";
159 }
160
161 leaf traffic-class {
162 type leafref {
163 path "/tc:traffic-class/tc:traffic-class/tc:id";
164 }
165 mandatory true;
166 description
167 "Link to traffic class";
168 }
169 // end of items populated from the template
170 }
PUSHP RAJba2e32f2021-11-02 10:39:24 +0000171 }
Scott Bakerc9d3d842021-09-17 11:32:53 -0700172}