| // SPDX-FileCopyrightText: 2021 Open Networking Foundation |
| // |
| // SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0 |
| |
| module vcs { |
| namespace "http://opennetworking.org/aether/vcs"; |
| prefix sl; |
| |
| import template{ prefix vt; } |
| import upf { prefix upf; } |
| import ap-list{ prefix apl; } |
| import application{ prefix app; } |
| import aether-types{ prefix at; } |
| import device-group{ prefix dg; } |
| import traffic-class{ prefix tc; } |
| import ietf-yang-types{ prefix yg; } |
| import enterprise{ prefix ent; } |
| |
| organization "Open Networking Foundation."; |
| contact "Scott Baker"; |
| description |
| "An Aether Virtual Cellular Service (VCS) is |
| used to connect UE devices with applications"; |
| |
| revision "2021-06-02" { |
| description "An Aether Virtual Cellular Service"; |
| reference "RFC 6087"; |
| } |
| |
| typedef vcs-id { |
| type yg:yang-identifier { |
| length 1..32; |
| } |
| } |
| |
| container vcs { |
| description "The top level container"; |
| |
| list vcs { |
| key "id"; |
| description |
| "List of virtual cellular services"; |
| |
| leaf id { |
| type vcs-id; |
| description "ID for this vcs."; |
| } |
| |
| 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 "/dg:device-group/dg: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 VCS if the enable field is set to True"; |
| } |
| |
| leaf template { |
| type leafref { |
| path "/vt:template/vt:template/vt:id"; |
| } |
| description |
| "Link to user vcs template that was used to initialize |
| this VCS"; |
| } |
| |
| list application { |
| key "application"; |
| leaf application { |
| type leafref { |
| path "/app:application/app:application/app:id"; |
| } |
| mandatory true; |
| description |
| "Link to application"; |
| } |
| leaf allow { |
| type boolean; |
| default true; |
| description |
| "Allow or deny this application"; |
| } |
| description |
| "An ordered list of applications to allow and deny. The deny rules |
| will be executed first, followed by the allow rules. The first rule |
| to match is returned. An implicit DENY ALL lies at the end."; |
| } |
| |
| leaf upf { |
| type leafref { |
| path "/upf:upf/upf:upf/upf:id"; |
| } |
| description |
| "Link to user plane that implements this vcf"; |
| } |
| |
| leaf ap { |
| type leafref { |
| path "/apl:ap-list/apl:ap-list/apl:id"; |
| } |
| description |
| "Link to access-point list"; |
| } |
| |
| leaf description { |
| type at:description; |
| description "description of this vcs"; |
| } |
| |
| leaf enterprise { |
| type leafref { |
| path "/ent:enterprise/ent:enterprise/ent:id"; |
| } |
| mandatory true; |
| description |
| "Link to enterprise that owns this VCS"; |
| } |
| |
| // 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."; |
| } |
| |
| leaf uplink { |
| type uint32; |
| description "Uplink data rate in mbps"; |
| } |
| |
| leaf downlink { |
| type uint32; |
| description "Downlink data rate in mbps"; |
| } |
| |
| leaf traffic-class { |
| type leafref { |
| path "/tc:traffic-class/tc:traffic-class/tc:id"; |
| } |
| mandatory true; |
| description |
| "Link to traffic class"; |
| } |
| // end of items populated from the template |
| } |
| } |
| } |