blob: 5e8c5f7b11ee0e732c5ed790eafd3c9b7799c137 [file] [log] [blame]
// SPDX-FileCopyrightText: 2021 Open Networking Foundation
//
// SPDX-License-Identifier: Apache-2.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;
}
description "The typedef for vcs-id";
}
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
}
}
}