Aether-3033. roc-model-2.0.x Change VCS to Slice
Change-Id: I4968ca1839671ddf3fe5120100628b096fae4647
diff --git a/config-models/aether-2.0.x/files/yang/onf-slice.yang b/config-models/aether-2.0.x/files/yang/onf-slice.yang
new file mode 100755
index 0000000..98bfdd8
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-slice.yang
@@ -0,0 +1,169 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+submodule onf-slice {
+ belongs-to onf-enterprise { prefix ent; }
+
+ import ietf-yang-types{ prefix yg; }
+ import onf-aether-types{ prefix at; }
+
+ include onf-upf;
+ include onf-device-group;
+ include onf-application;
+
+ organization "Open Networking Foundation.";
+ contact "Scott Baker";
+ description
+ "An Aether Slice is
+ used to connect devices with applications";
+
+ revision "2022-01-14" {
+ description "Refactored as submodule";
+ reference "RFC 6020";
+ }
+
+ revision "2021-09-10" {
+ description "An Aether Slice";
+ reference "RFC 6087";
+ }
+
+ typedef slice-id {
+ type yg:yang-identifier {
+ length 1..32;
+ }
+ description "The typedef for slice-id";
+ }
+
+ grouping slice {
+ description "The slice grouping";
+
+ list slice {
+ key "slice-id";
+ description
+ "List of Slices";
+
+ leaf slice-id {
+ type slice-id;
+ description "ID for this slice.";
+ }
+
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+
+ list device-group {
+ key "device-group";
+ leaf device-group {
+ type leafref {
+ path "../../../device-group/dg-id";
+ }
+ description
+ "Link to device group";
+ }
+ leaf enable {
+ type boolean;
+ default true;
+ description
+ "Enable this device group";
+ }
+ description
+ "A list of device groups. Groups will only participate in
+ the Slice if the enable field is set to True";
+ }
+
+ leaf default-behavior {
+ type at:behavior;
+ mandatory true;
+ description
+ "Default behavior if no filter rules match";
+ }
+
+ list filter {
+ key "application";
+ leaf application {
+ type leafref {
+ path "../../../../application/app-id";
+ }
+ mandatory true;
+ description
+ "Link to application";
+ }
+ leaf priority {
+ type at:priority;
+ default 0;
+ description
+ "Priority of this application";
+ }
+ leaf allow {
+ type boolean;
+ default true;
+ description
+ "Allow or deny this application";
+ }
+ description
+ "A list of applications to allow and/or deny. Rules are executed in
+ priority order. The first rule to match will determine the fate
+ of the packet.";
+ }
+
+ leaf upf {
+ type leafref {
+ path "../../upf/upf-id";
+ }
+ description
+ "Link to user plane that implements this vcf";
+ }
+
+ leaf description {
+ type at:description;
+ description "description of this slice";
+ }
+
+ // the following are populated from the template
+ leaf sst {
+ type at:sst;
+ mandatory true;
+ description "Slice/Service type. Immutable.";
+ }
+
+ leaf sd {
+ type at:sd;
+ mandatory true;
+ description "Slice differentiator. Immutable.";
+ }
+
+ container mbr {
+ description "Per slice Maximum Bit Rate";
+ leaf uplink {
+ type at:bitrate;
+ units bps;
+ description "Per-Slice MBR uplink data rate in bps";
+ }
+
+ leaf downlink {
+ type at:bitrate;
+ units bps;
+ description "Per-Slice MBR downlink data rate in bps";
+ }
+
+ leaf uplink-burst-size {
+ type at:burst;
+ units bytes;
+ description "Per-Slice Uplink burst size";
+ }
+
+ leaf downlink-burst-size {
+ type at:burst;
+ units bytes;
+ description "Per-Slice Downlink burst size";
+ }
+ }
+
+ // end of items populated from the template
+ }
+ }
+}