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
+    }
+  }
+}