AETHER-2874 Bootstrap Aether-2.x models
Change-Id: Ia987596109584df696aaa57703f9148075569422
diff --git a/Makefile b/Makefile
index 5129e81..8f51890 100644
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,7 @@
yang-lint: pyang
#pyang --lint ./config-models/*.x/files/yang/*.yang
pyang --lint ./config-models/aether-1.x/files/yang/*.yang
- pyang --lint ./config-models/aether-2.x/files/yang/*.yang
+ pyang --lint ./config-models/aether-2.0.x/files/yang/*.yang
pyang --lint ./config-models/aether-2.1.x/files/yang/*.yang
pyang --lint ./config-models/aether-2.2.x/files/yang/*.yang
pyang --lint ./config-models/aether-3.x/files/yang/*.yang
diff --git a/config-models/aether-2.0.x/CHANGELOG.md b/config-models/aether-2.0.x/CHANGELOG.md
new file mode 100644
index 0000000..c6c3b1e
--- /dev/null
+++ b/config-models/aether-2.0.x/CHANGELOG.md
@@ -0,0 +1,9 @@
+<!--
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+
+Changes on 1/3/2022
+===================
+
diff --git a/config-models/aether-2.x/Chart.yaml b/config-models/aether-2.0.x/Chart.yaml
similarity index 89%
rename from config-models/aether-2.x/Chart.yaml
rename to config-models/aether-2.0.x/Chart.yaml
index b7f98e5..682915a 100644
--- a/config-models/aether-2.x/Chart.yaml
+++ b/config-models/aether-2.0.x/Chart.yaml
@@ -3,8 +3,8 @@
# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
apiVersion: v2
-name: config-model-aether
-version: 2.0.3
+name: config-model-aether-2
+version: 2.0.0
kubeVersion: ">=1.18.0"
appVersion: 2.0.0
description: Aether config model
diff --git a/config-models/aether-2.0.x/files/aether-2.0.0.tree b/config-models/aether-2.0.x/files/aether-2.0.0.tree
new file mode 100644
index 0000000..24f7a1b
--- /dev/null
+++ b/config-models/aether-2.0.x/files/aether-2.0.0.tree
@@ -0,0 +1,161 @@
+module: onf-application
+ +--rw application
+ +--rw application* [id]
+ +--rw id application-id
+ +--rw display-name? string
+ +--rw description? at:description
+ +--rw address ietf:host
+ +--rw endpoint* [endpoint-id]
+ | +--rw endpoint-id yg:yang-identifier
+ | +--rw port-start? ietf:port-number
+ | +--rw port-end? ietf:port-number
+ | +--rw protocol? at:protocol
+ | +--rw mbr
+ | | +--rw uplink? at:bitrate
+ | | +--rw downlink? at:bitrate
+ | +--rw traffic-class? -> /tc:traffic-class/traffic-class/id
+ | +--rw display-name? string
+ +--rw enterprise -> /ent:enterprise/enterprise/id
+
+module: onf-connectivity-service
+ +--rw connectivity-service
+ +--rw connectivity-service* [id]
+ +--rw id connectivity-service-id
+ +--rw display-name? string
+ +--rw description? at:description
+ +--rw core-5g-endpoint? inet:uri
+ +--rw acc-prometheus-url? inet:uri
+
+module: onf-device-group
+ +--rw device-group
+ +--rw device-group* [id]
+ +--rw id device-group-id
+ +--rw description? at:description
+ +--rw display-name? string
+ +--rw imsis* [imsi-id]
+ | +--rw imsi-id yg:yang-identifier
+ | +--rw imsi-range-from? uint64
+ | +--rw imsi-range-to? uint64
+ | +--rw display-name? string
+ +--rw ip-domain? -> /ipd:ip-domain/ip-domain/id
+ +--rw device
+ | +--rw mbr
+ | | +--rw uplink at:bitrate
+ | | +--rw downlink at:bitrate
+ | +--rw traffic-class -> /tc:traffic-class/traffic-class/id
+ +--rw site -> /st:site/site/id
+
+module: onf-enterprise
+ +--rw enterprise
+ +--rw enterprise* [id]
+ +--rw id enterprise-id
+ +--rw display-name? string
+ +--rw description? at:description
+ +--rw connectivity-service* [connectivity-service]
+ +--rw connectivity-service -> /cs:connectivity-service/connectivity-service/id
+ +--rw enabled? boolean
+
+module: onf-ip-domain
+ +--rw ip-domain
+ +--rw ip-domain* [id]
+ +--rw id ip-domain-id
+ +--rw display-name? string
+ +--rw dnn at:dnn
+ +--rw dns-primary? inet:ip-address
+ +--rw dns-secondary? inet:ip-address
+ +--rw subnet inet:ipv4-prefix
+ +--rw admin-status? at:admin-status
+ +--rw mtu? at:mtu
+ +--rw description? at:description
+ +--rw enterprise -> /ent:enterprise/enterprise/id
+
+module: onf-site
+ +--rw site
+ +--rw site* [id]
+ +--rw id site-id
+ +--rw display-name? string
+ +--rw small-cell* [small-cell-id]
+ | +--rw small-cell-id yg:yang-identifier
+ | +--rw address? inet:host
+ | +--rw tac at:tac
+ | +--rw enable? boolean
+ | +--rw display-name? string
+ +--rw monitoring
+ | +--rw edge-cluster-prometheus-url? inet:uri
+ | +--rw edge-monitoring-prometheus-url? inet:uri
+ | +--rw edge-device* [edge-device-id]
+ | +--rw edge-device-id yg:yang-identifier
+ | +--rw display-name? string
+ | +--rw description? at:description
+ +--rw enterprise -> /ent:enterprise/enterprise/id
+ +--rw imsi-definition
+ | +--rw mcc at:mcc
+ | +--rw mnc at:mnc
+ | +--rw enterprise at:ent
+ | +--rw format string
+ +--rw description? at:description
+
+module: onf-template
+ +--rw template
+ +--rw template* [id]
+ +--rw id template-id
+ +--rw display-name? string
+ +--rw sst? at:sst
+ +--rw sd? at:sd
+ +--rw slice
+ | +--rw mbr
+ | +--rw uplink? at:bitrate
+ | +--rw downlink? at:bitrate
+ | +--rw uplink-burst-size? at:burst
+ | +--rw downlink-burst-size? at:burst
+ +--rw default-behavior at:behavior
+ +--rw description? at:description
+
+module: onf-traffic-class
+ +--rw traffic-class
+ +--rw traffic-class* [id]
+ +--rw id traffic-class-id
+ +--rw display-name? string
+ +--rw arp? at:arp
+ +--rw qci? at:qci
+ +--rw pelr? at:pelr
+ +--rw pdb? at:pdb
+ +--rw description? at:description
+
+module: onf-upf
+ +--rw upf
+ +--rw upf* [id]
+ +--rw id upf-id
+ +--rw address inet:host
+ +--rw port inet:port-number
+ +--rw config-endpoint? inet:uri
+ +--rw display-name? string
+ +--rw description? at:description
+ +--rw enterprise -> /ent:enterprise/enterprise/id
+ +--rw site -> /st:site/site/id
+
+module: onf-vcs
+ +--rw vcs
+ +--rw vcs* [id]
+ +--rw id vcs-id
+ +--rw display-name? string
+ +--rw device-group* [device-group]
+ | +--rw device-group -> /dg:device-group/device-group/id
+ | +--rw enable? boolean
+ +--rw default-behavior at:behavior
+ +--rw filter* [application]
+ | +--rw application -> /app:application/application/id
+ | +--rw priority? at:priority
+ | +--rw allow? boolean
+ +--rw upf? -> /upf:upf/upf/id
+ +--rw description? at:description
+ +--rw enterprise -> /ent:enterprise/enterprise/id
+ +--rw site -> /st:site/site/id
+ +--rw sst at:sst
+ +--rw sd at:sd
+ +--rw slice
+ +--rw mbr
+ +--rw uplink? at:bitrate
+ +--rw downlink? at:bitrate
+ +--rw uplink-burst-size? at:burst
+ +--rw downlink-burst-size? at:burst
diff --git a/config-models/aether-2.x/files/yang/ietf-inet-types.yang b/config-models/aether-2.0.x/files/yang/ietf-inet-types.yang
similarity index 100%
rename from config-models/aether-2.x/files/yang/ietf-inet-types.yang
rename to config-models/aether-2.0.x/files/yang/ietf-inet-types.yang
diff --git a/config-models/aether-2.x/files/yang/ietf-yang-types.yang b/config-models/aether-2.0.x/files/yang/ietf-yang-types.yang
similarity index 100%
rename from config-models/aether-2.x/files/yang/ietf-yang-types.yang
rename to config-models/aether-2.0.x/files/yang/ietf-yang-types.yang
diff --git a/config-models/aether-2.0.x/files/yang/onf-aether-types.yang b/config-models/aether-2.0.x/files/yang/onf-aether-types.yang
new file mode 100755
index 0000000..679648e
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-aether-types.yang
@@ -0,0 +1,159 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-aether-types {
+ namespace "http://opennetworking.org/aether/aether-types";
+ prefix at;
+
+ import ietf-inet-types { prefix inet; }
+
+ organization "Open Networking Foundation.";
+ contact "Scott Baker";
+ description "A set of base types for aether modeling.";
+
+ revision "2021-09-10" {
+ description "Aether Base Types";
+ reference "RFC 6087";
+ }
+
+ typedef bitrate {
+ type uint64 {
+ }
+ description "The typedef for bitrate";
+ }
+
+ typedef burst {
+ type uint32 {
+ }
+ default 625000;
+ description "The typedef for burst";
+ }
+
+ typedef mcc {
+ type string {
+ pattern '[0-9]{3}';
+ }
+ description "The typedef for mcc";
+ }
+
+ typedef mnc {
+ type string {
+ pattern '[0-9]{2,3}';
+ }
+ description "The typedef for mnc";
+ }
+
+ typedef tac {
+ type string {
+ length 4..8;
+ pattern '[0-9A-F\.]*';
+ }
+ description "The typedef for tac";
+ }
+
+ typedef ent {
+ type uint32 {
+ range 0..999;
+ }
+ description "The typedef for ent";
+ }
+
+ typedef dnn {
+ type string {
+ length 1..32;
+ }
+ description "The typedef for dnn";
+ }
+
+ typedef sst {
+ type uint8 {
+ range 1..255;
+ }
+ description "The typedef for sst";
+ }
+
+ typedef sd {
+ type uint32 {
+ range 0..16777215;
+ }
+ description "The typedef for sd";
+ }
+
+ typedef qci {
+ type uint8 {
+ range 1..32;
+ }
+ description "The typedef for qci";
+ }
+
+ typedef arp {
+ type uint8 {
+ range 1..15;
+ }
+ description "The typedef for arp";
+ }
+
+ typedef pelr {
+ type int8 {
+ range 0..10;
+ }
+ description "The typedef for pelr";
+ }
+
+ typedef pdb {
+ type uint16 {
+ range 0..1000;
+ }
+ description "The typedef for pdb";
+ }
+
+ typedef priority {
+ type uint8 {
+ // priorities 201-255 are reserved for system use
+ range 0..200;
+ }
+ description "The typedef for priority";
+ }
+
+ // "TCP" or "UDP"
+ typedef protocol {
+ type string {
+ length 3;
+ pattern "TCP|UDP";
+ }
+ default "TCP";
+ description "The typedef for protocol";
+ }
+
+ // "ENABLE" | "MAINTENTANCE" | "DISABLE"
+ typedef admin-status {
+ type string {
+ length 0..16;
+ pattern "ENABLE|MAINTENANCE|DISABLE";
+ }
+ default "ENABLE";
+ description "The typedef for admin-status";
+ }
+
+ typedef behavior {
+ type string {
+ length 0..20;
+ pattern "DENY-ALL|ALLOW-ALL|ALLOW-PUBLIC";
+ }
+ description "The typedef for behavior";
+ }
+
+ typedef mtu {
+ type inet:port-number;
+ default 1492;
+ description "The typedef for mtu";
+ }
+
+ typedef description {
+ type string {
+ length 1..1024;
+ }
+ description "The typedef for description";
+ }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-application.yang b/config-models/aether-2.0.x/files/yang/onf-application.yang
new file mode 100755
index 0000000..c48cab1
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-application.yang
@@ -0,0 +1,128 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-application {
+ namespace "http://opennetworking.org/enterprise/application";
+ prefix app;
+
+ import ietf-inet-types{ prefix ietf; }
+ import ietf-yang-types{ prefix yg; }
+ import onf-aether-types{ prefix at; }
+ import onf-enterprise{ prefix ent; }
+ import onf-traffic-class{ prefix tc; }
+
+ organization "Open Networking Foundation.";
+ contact "Scott Baker";
+ description
+ "An Aether Application is an application that devices may
+ connect to. Includes a set of endpoints where services are
+ provided.";
+
+ revision "2021-09-10" {
+ description "Aether Application.";
+ reference "RFC 6087";
+ }
+
+ typedef application-id {
+ type yg:yang-identifier {
+ length 1..32;
+ }
+ description "The typedef for application-id";
+ }
+
+ container application {
+ description "The top level container";
+
+ list application {
+ key "id";
+ description
+ "List of applications";
+
+ leaf id {
+ type application-id;
+ description "ID for this application.";
+ }
+
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+
+ leaf description {
+ type at:description;
+ description "description of this application";
+ }
+
+ leaf address {
+ type ietf:host;
+ mandatory true;
+ description
+ "Address of this application. Either a hostname, an IP, or a subnet.";
+ }
+
+ list endpoint {
+ key "endpoint-id";
+ leaf endpoint-id {
+ type yg:yang-identifier;
+ description
+ "Id of this endpoint";
+ }
+ leaf port-start {
+ type ietf:port-number;
+ description
+ "First port in range";
+ }
+ leaf port-end {
+ type ietf:port-number;
+ description
+ "Last port in range";
+ }
+ leaf protocol {
+ type at:protocol;
+ description
+ "Protocol of this endpoint";
+ }
+ container mbr {
+ description "Maximum bitrate";
+ leaf uplink {
+ type at:bitrate;
+ units bps;
+ description "Per-Device per-Application MBR uplink data rate in bps";
+ }
+
+ leaf downlink {
+ type at:bitrate;
+ units bps;
+ description "Per-Device per application MBR downlink data rate in bps";
+ }
+ }
+ leaf traffic-class {
+ type leafref {
+ path "/tc:traffic-class/tc:traffic-class/tc:id";
+ }
+ description
+ "Link to traffic class";
+ }
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+ description "list for endpoint";
+ }
+
+ leaf enterprise {
+ type leafref {
+ path "/ent:enterprise/ent:enterprise/ent:id";
+ }
+ mandatory true;
+ description
+ "Link to enterprise that owns this Application. May be set to None if the application is global to all Enterprises.";
+ }
+ }
+ }
+}
diff --git a/config-models/aether-2.x/files/yang/connectivity-service.yang b/config-models/aether-2.0.x/files/yang/onf-connectivity-service.yang
similarity index 68%
rename from config-models/aether-2.x/files/yang/connectivity-service.yang
rename to config-models/aether-2.0.x/files/yang/onf-connectivity-service.yang
index e86e360..e1d53b6 100755
--- a/config-models/aether-2.x/files/yang/connectivity-service.yang
+++ b/config-models/aether-2.0.x/files/yang/onf-connectivity-service.yang
@@ -2,28 +2,30 @@
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-module connectivity-service {
+module onf-connectivity-service {
namespace "http://opennetworking.org/aether/connectivity-service";
prefix cs;
import ietf-inet-types { prefix inet; }
+ import ietf-yang-types{ prefix yg; }
+ import onf-aether-types { prefix at; }
organization "Open Networking Foundation.";
contact "Scott Baker";
- description "To generate JSON from this use command
- pyang -f jtoxx test1.yang | python3 -m json.tool > test1.json
- Copied from YangUIComponents project";
+ description
+ "An Aether Connectivity service is the linkage between the
+ ROC and a core that provides connectivity.";
- revision "2020-11-30" {
+ revision "2021-10-21" {
description "An Aether Connectivity Service. Specifies the endpoints where the sdcore-adapter should push configuration to. A single connectivity service may be attached to multiple Enterprises.";
reference "RFC 6087";
}
typedef connectivity-service-id {
- type string {
+ type yg:yang-identifier {
length 1..32;
}
- description "The typedef for connectivity-service-id";
+ description "The typedef for connectivity-service-id";
}
container connectivity-service {
@@ -47,20 +49,19 @@
}
leaf description {
- type string {
- length 1..100;
- }
+ type at:description;
description "description of this connectivity service";
}
- leaf spgwc-endpoint {
+ leaf core-5g-endpoint {
type inet:uri;
- description "url of the spgwc service";
+ description "url of the 5g core";
}
- leaf hss-endpoint {
- type inet:uri;
- description "url of the hss service";
+ leaf acc-prometheus-url {
+ type inet:uri;
+ description
+ "URL of ACC prometheus";
}
}
}
diff --git a/config-models/aether-2.0.x/files/yang/onf-device-group.yang b/config-models/aether-2.0.x/files/yang/onf-device-group.yang
new file mode 100755
index 0000000..a93c295
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-device-group.yang
@@ -0,0 +1,141 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-device-group {
+ namespace "http://opennetworking.org/aether/device-group";
+ prefix dg;
+
+ import ietf-yang-types{ prefix yg; }
+ import onf-aether-types { prefix at; }
+ import onf-ip-domain{ prefix ipd; }
+ import onf-site{ prefix st; }
+ import onf-traffic-class{ prefix tc; }
+
+ organization "Open Networking Foundation.";
+ contact "Scott Baker";
+ description
+ "An aether device group represents a list of device IMSIS.
+ This list is expressed as a set of ranges,
+ [(from_imsi, to_imsi),
+ (from_imsi, to_imsi),
+ ...].
+ Each device group belongs to a site and has associated
+ with it an ip-profile that determines the IP address
+ and DNS settings that apply to devices within the
+ group";
+
+ revision "2021-06-02" {
+ description "An Aether Device Group";
+ reference "RFC 6087";
+ }
+
+ typedef device-group-id {
+ type yg:yang-identifier {
+ length 1..32;
+ }
+ description "The typedef for device-group-id";
+ }
+
+ container device-group {
+ description "The top level container";
+
+ list device-group {
+ key "id";
+ description
+ "List of device groups";
+
+ leaf id {
+ type device-group-id;
+ description "ID for this device group.";
+ }
+
+ leaf description {
+ type at:description;
+ description "description of this device group";
+ }
+
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+
+ list imsis {
+ // TODO: imsi-range-from cannot be used as a list index
+ key "imsi-id";
+ leaf imsi-id {
+ type yg:yang-identifier;
+ description
+ "Id of this imsi-range";
+ }
+ leaf imsi-range-from {
+ type uint64;
+ description
+ "value of imsi-range-from";
+ }
+ leaf imsi-range-to {
+ type uint64;
+ description
+ "value of imsi-range-to";
+ }
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+ description
+ "List of imsi ranges that comprise this group. It's acceptable for
+ a range to degenerate to being a singleton";
+ }
+
+ leaf ip-domain {
+ type leafref {
+ path "/ipd:ip-domain/ipd:ip-domain/ipd:id";
+ }
+ description
+ "Link to ip-domain settings that determine the pool of IP addresses,
+ as well as the domain resolver settings to use";
+ }
+
+ container device {
+ description "Per-device QOS Settings";
+ container mbr {
+ description "Maximum bitrate";
+ leaf uplink {
+ type at:bitrate;
+ units bps;
+ mandatory true;
+ description "Per-device MBR uplink data rate in bps";
+ }
+
+ leaf downlink {
+ type at:bitrate;
+ units bps;
+ mandatory true;
+ description "Per-device MBR downlink data rate in bps";
+ }
+ }
+ leaf traffic-class {
+ type leafref {
+ path "/tc:traffic-class/tc:traffic-class/tc:id";
+ }
+ mandatory true;
+ description
+ "Link to traffic class";
+ }
+ }
+
+ leaf site {
+ type leafref {
+ path "/st:site/st:site/st:id";
+ }
+ mandatory true;
+ description
+ "Link to site";
+ }
+ }
+ }
+}
diff --git a/config-models/aether-2.x/files/yang/enterprise.yang b/config-models/aether-2.0.x/files/yang/onf-enterprise.yang
similarity index 77%
rename from config-models/aether-2.x/files/yang/enterprise.yang
rename to config-models/aether-2.0.x/files/yang/onf-enterprise.yang
index 9bc6bbb..16ad5f9 100755
--- a/config-models/aether-2.x/files/yang/enterprise.yang
+++ b/config-models/aether-2.0.x/files/yang/onf-enterprise.yang
@@ -2,28 +2,30 @@
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-module enterprise {
+module onf-enterprise {
namespace "http://opennetworking.org/aether/enterprise";
prefix ent;
- import connectivity-service { prefix cs; }
+ import ietf-yang-types{ prefix yg; }
+ import onf-aether-types { prefix at; }
+ import onf-connectivity-service { prefix cs; }
organization "Open Networking Foundation.";
contact "Scott Baker";
- description "To generate JSON from this use command
- pyang -f jtoxx test1.yang | python3 -m json.tool > test1.json
- Copied from YangUIComponents project";
+ description
+ "An Aether Enterprise is an administration entity that
+ has ownership of resrouces.";
- revision "2020-11-30" {
+ revision "2021-06-02" {
description "An Aether Enterprise. Used to distinguish ownership of devices and other resources as well as a domain of configuration.";
reference "RFC 6087";
}
typedef enterprise-id {
- type string {
+ type yg:yang-identifier {
length 1..32;
}
- description "The typedef for enterprise-id";
+ description "The typedef for enterprise-id";
}
container enterprise {
@@ -47,9 +49,7 @@
}
leaf description {
- type string {
- length 1..100;
- }
+ type at:description;
description "description of this enterprise";
}
@@ -68,7 +68,7 @@
description
"Allow or disallow pushes to this connectivity service";
}
- description "The container for connectivity-service";
+ description "The list for connectivity-service";
}
}
}
diff --git a/config-models/aether-2.0.x/files/yang/onf-ip-domain.yang b/config-models/aether-2.0.x/files/yang/onf-ip-domain.yang
new file mode 100755
index 0000000..e896cc5
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-ip-domain.yang
@@ -0,0 +1,104 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-ip-domain {
+ namespace "http://opennetworking.org/aether/ip-domain";
+ prefix ipd;
+
+ import ietf-inet-types { prefix inet; }
+ import ietf-yang-types{ prefix yg; }
+ import onf-aether-types { prefix at; }
+ import onf-enterprise{ prefix ent; }
+
+ organization "Open Networking Foundation.";
+ contact "Scott Baker";
+ description
+ "An Aether IP-Domain. This is a list of available subnets
+ that may be assigned to UEs, as well as DNS servers and other
+ metadata";
+
+ revision "2021-06-02" {
+ description "An Aether IP and Domain Specification";
+ reference "RFC 6087";
+ }
+
+ typedef ip-domain-id {
+ type yg:yang-identifier {
+ length 1..32;
+ }
+ description "The typedef for ip-domain-id";
+ }
+
+ container ip-domain {
+ description "The top level container";
+
+ list ip-domain {
+ key "id";
+ description
+ "List of ip domains";
+
+ leaf id {
+ type ip-domain-id;
+ description "ID for this ip domain.";
+ }
+
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+
+ leaf dnn {
+ type at:dnn;
+ mandatory true;
+ description "DNN/APN";
+ }
+
+ leaf dns-primary {
+ type inet:ip-address;
+ description "primary dns server name";
+ }
+
+ leaf dns-secondary {
+ type inet:ip-address;
+ description "secondary dns server name";
+ }
+
+ // Note: Cannot use a subnet as a list key. Dropped support from a
+ // list of subnets to a single subnet. Revisit in the future.
+ leaf subnet {
+ type inet:ipv4-prefix;
+ mandatory true;
+ description "subnet to allocate ip addresses from";
+ }
+
+ leaf admin-status {
+ type at:admin-status;
+ description "administrative status";
+ }
+
+ leaf mtu {
+ type at:mtu;
+ description "maximum transmission unit";
+ }
+
+ leaf description {
+ type at:description;
+ description "description of this ip domain";
+ }
+
+ // Ip-Domain is always owned by an Enterprise, because it contains
+ // IP addresses relative to that Enterprise.
+ leaf enterprise {
+ type leafref {
+ path "/ent:enterprise/ent:enterprise/ent:id";
+ }
+ mandatory true;
+ description
+ "Link to enterprise that owns this IP-Domain";
+ }
+ }
+ }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-site.yang b/config-models/aether-2.0.x/files/yang/onf-site.yang
new file mode 100755
index 0000000..b5f22c4
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-site.yang
@@ -0,0 +1,172 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-site {
+ namespace "http://opennetworking.org/aether/site";
+ prefix st;
+
+ import ietf-inet-types { prefix inet; }
+ import ietf-yang-types{ prefix yg; }
+ import onf-aether-types{ prefix at; }
+ import onf-enterprise{ prefix ent; }
+
+ organization "Open Networking Foundation.";
+ contact "Scott Baker";
+ description
+ "An Aether site is a location where resources are deployed.";
+
+ revision "2021-09-10" {
+ description "An Aether Site.";
+ reference "RFC 6087";
+ }
+
+ typedef site-id {
+ type yg:yang-identifier {
+ length 1..32;
+ }
+ description "The typedef for site-id";
+ }
+
+ container site {
+ description "The top level container";
+
+ list site {
+ key "id";
+ description
+ "List of site";
+
+ leaf id {
+ type site-id;
+ description "ID for this site.";
+ }
+
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+
+ list small-cell {
+ key "small-cell-id";
+ leaf small-cell-id {
+ type yg:yang-identifier;
+ description
+ "Id of small cell";
+ }
+ leaf address {
+ type inet:host;
+ description
+ "Address of small cell";
+ }
+ leaf tac {
+ type at:tac;
+ mandatory true;
+ description
+ "Type Allocation Code";
+ }
+ leaf enable {
+ type boolean;
+ default true;
+ description
+ "Enable this small cell";
+ }
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+ description
+ "List of small cell addresses";
+ }
+
+ container monitoring {
+ leaf edge-cluster-prometheus-url {
+ type inet:uri;
+ description
+ "URL of edge cluster prometheus";
+ }
+ leaf edge-monitoring-prometheus-url {
+ type inet:uri;
+ description
+ "URL of monitoring prometheus";
+ }
+ list edge-device {
+ key "edge-device-id";
+ leaf edge-device-id {
+ type yg:yang-identifier;
+ description
+ "Id of edge monitoring device";
+ }
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+ leaf description {
+ type at:description;
+ description "description of this site";
+ }
+ description
+ "List of edge monitoring devices";
+ }
+ description
+ "container for monitoring";
+ }
+
+ leaf enterprise {
+ type leafref {
+ path "/ent:enterprise/ent:enterprise/ent:id";
+ }
+ mandatory true;
+ description
+ "Link to enterprise that owns this site";
+ }
+
+ container imsi-definition {
+ leaf mcc {
+ type at:mcc;
+ mandatory true;
+ description "mobile country code";
+ }
+ leaf mnc {
+ type at:mnc;
+ mandatory true;
+ description "mobile network code";
+ }
+ leaf enterprise {
+ type at:ent;
+ mandatory true;
+ description "enterprise-specific identifier";
+ }
+ leaf format {
+ type string {
+ length 15;
+ }
+ mandatory true;
+ description "IMSI format specifier, describes how fields are packed into an IMSI. Must be exactly 15 characters long. For example, CCCNNNEEESSSSSS.";
+ // Format specifiers:
+ // C = MCC
+ // N = MNC
+ // E = Enterprise
+ // 0 = Forced Zero
+ // S = Subscriber ID
+ // default is
+ // 3 digit MCC
+ // 3 digit MNC
+ // 3 digit enterprise ID
+ // 5 digit subscriber ID
+ }
+ description "container for imsi-defination";
+ }
+
+ leaf description {
+ type at:description;
+ description "description of this site";
+ }
+ }
+ }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-template.yang b/config-models/aether-2.0.x/files/yang/onf-template.yang
new file mode 100755
index 0000000..bbd94ef
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-template.yang
@@ -0,0 +1,104 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-template {
+ namespace "http://opennetworking.org/aether/template";
+ prefix tp;
+
+ import ietf-yang-types{ prefix yg; }
+ import onf-aether-types{ prefix at; }
+
+ organization "Open Networking Foundation.";
+ contact "Scott Baker";
+ description
+ "The aether vcs-template holds common parameters used
+ by a virtual connectivity service. Templates are used to
+ populate a VCS.";
+
+ revision "2021-09-10" {
+ description "An Aether Virtual Cellular Service Template";
+ reference "RFC 6087";
+ }
+
+ typedef template-id {
+ type yg:yang-identifier {
+ length 1..32;
+ }
+ description "The typedef for template-id";
+ }
+
+ container template {
+ description "The top level container";
+
+ list template {
+ key "id";
+ description
+ "List of vcs templates";
+
+ leaf id {
+ type template-id;
+ description "ID for this vcs template.";
+ }
+
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+
+ leaf sst {
+ type at:sst;
+ description "Slice/Service type";
+ }
+
+ leaf sd {
+ type at:sd;
+ description "Slice differentiator";
+ }
+
+ container slice {
+ description "Per-Slice QOS Settings";
+ container mbr {
+ description "Maximum bitrate";
+ 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";
+ }
+ }
+ }
+
+ leaf default-behavior {
+ type at:behavior;
+ mandatory true;
+ description
+ "Default behavior if no filter rules match";
+ }
+
+ leaf description {
+ type at:description;
+ description "description of this vcs template";
+ }
+ }
+ }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-traffic-class.yang b/config-models/aether-2.0.x/files/yang/onf-traffic-class.yang
new file mode 100755
index 0000000..a592267
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-traffic-class.yang
@@ -0,0 +1,76 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-traffic-class {
+ namespace "http://opennetworking.org/aether/traffic-class";
+ prefix tp;
+
+ import ietf-yang-types{ prefix yg; }
+ import onf-aether-types{ prefix at; }
+
+ organization "Open Networking Foundation.";
+ contact "Scott Baker";
+ description
+ "The aether traffic class associates qos constants
+ with a named class of service";
+
+ revision "2021-09-10" {
+ description "An Aether Traffic Class";
+ reference "RFC 6087";
+ }
+
+ typedef traffic-class-id {
+ type yg:yang-identifier {
+ length 1..32;
+ }
+ description "The typedef for traffic-class-id";
+ }
+
+ container traffic-class {
+ description "The top level container";
+
+ list traffic-class {
+ key "id";
+ description
+ "List of traffic class";
+
+ leaf id {
+ type traffic-class-id;
+ description "ID for this traffic class.";
+ }
+
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+
+ leaf arp {
+ type at:arp;
+ description "Allocation and Retention Priority. 1 is the highest. 15 is the lowest.";
+ }
+
+ leaf qci {
+ type at:qci;
+ description "QOS Class Identifier";
+ }
+
+ leaf pelr {
+ type at:pelr;
+ description "PELR exponent";
+ }
+
+ leaf pdb {
+ type at:pdb;
+ description "PDB";
+ }
+
+ leaf description {
+ type at:description;
+ description "description of this traffic class";
+ }
+ }
+ }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-upf.yang b/config-models/aether-2.0.x/files/yang/onf-upf.yang
new file mode 100755
index 0000000..5c8be50
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-upf.yang
@@ -0,0 +1,98 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-upf {
+ namespace "http://opennetworking.org/aether/upf";
+ prefix upf;
+
+ import ietf-inet-types { prefix inet; }
+ import ietf-yang-types{ prefix yg; }
+ import onf-aether-types { prefix at; }
+ import onf-enterprise{ prefix ent; }
+ import onf-site{ prefix st; }
+
+ organization "Open Networking Foundation.";
+ contact "Scott Baker";
+ description "A Aether UPF List is a named User Plane Function.";
+
+ revision "2021-09-16" {
+ description "An Aether User Plane Function";
+ reference "RFC 6087";
+ }
+
+ typedef upf-id {
+ type yg:yang-identifier {
+ length 1..32;
+ }
+ description "The typedef for upf-id";
+ }
+
+ container upf {
+ description "The top level container";
+
+ list upf {
+ key "id";
+ description
+ "A list of named upfs.";
+
+ leaf id {
+ type upf-id;
+ description "ID for this upf.";
+ }
+
+ leaf address {
+ type inet:host;
+ mandatory true;
+ description
+ "Address of UPF";
+ }
+
+ leaf port {
+ type inet:port-number;
+ mandatory true;
+ description
+ "Port for UPF";
+ }
+
+ leaf config-endpoint {
+ type inet:uri;
+ description "url for configuring the UPF";
+ }
+
+ leaf display-name {
+ type string {
+ length 1..80;
+ }
+ description "display name to use in GUI or CLI";
+ }
+
+ leaf description {
+ type at:description;
+ description "description of this UPF";
+ }
+
+ // UPFs are always owned by an Enterprise, since they typically exist on the
+ // Enterprise's edge.
+ leaf enterprise {
+ type leafref {
+ path "/ent:enterprise/ent:enterprise/ent:id";
+ }
+ mandatory true;
+ description
+ "Link to enterprise that owns this Access Point List";
+ }
+
+ // UPFs always reside at a site, as the exist on physical infrastructure. GUI
+ // will ensure that the tuple (DG, VCS, UPF) all exist on the same site.
+ leaf site {
+ type leafref {
+ path "/st:site/st:site/st:id";
+ }
+ mandatory true;
+ description
+ "Link to site";
+ }
+ }
+ }
+}
diff --git a/config-models/aether-2.0.x/files/yang/onf-vcs.yang b/config-models/aether-2.0.x/files/yang/onf-vcs.yang
new file mode 100755
index 0000000..c275565
--- /dev/null
+++ b/config-models/aether-2.0.x/files/yang/onf-vcs.yang
@@ -0,0 +1,187 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-vcs {
+ namespace "http://opennetworking.org/aether/vcs";
+ prefix sl;
+
+ import ietf-yang-types{ prefix yg; }
+ import onf-aether-types{ prefix at; }
+ import onf-application{ prefix app; }
+ import onf-device-group{ prefix dg; }
+ import onf-enterprise{ prefix ent; }
+ import onf-upf { prefix upf; }
+ import onf-site{ prefix st; }
+
+ organization "Open Networking Foundation.";
+ contact "Scott Baker";
+ description
+ "An Aether Virtual Cellular Service (VCS) is
+ used to connect devices with applications";
+
+ revision "2021-09-10" {
+ 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 default-behavior {
+ type at:behavior;
+ mandatory true;
+ description
+ "Default behavior if no filter rules match";
+ }
+
+ list filter {
+ key "application";
+ leaf application {
+ type leafref {
+ path "/app:application/app: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/upf:upf/upf:id";
+ }
+ description
+ "Link to user plane that implements this vcf";
+ }
+
+ 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";
+ }
+
+ leaf site {
+ type leafref {
+ path "/st:site/st:site/st:id";
+ }
+ mandatory true;
+ description
+ "Link to site where this VCS is deployed";
+ }
+
+ // 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 slice {
+ description "Per-Slice QOS Settings";
+ container mbr {
+ description "Maximum bitrate";
+ 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
+ }
+ }
+}
diff --git a/config-models/aether-2.x/templates/_helpers.tpl b/config-models/aether-2.0.x/templates/_helpers.tpl
similarity index 100%
rename from config-models/aether-2.x/templates/_helpers.tpl
rename to config-models/aether-2.0.x/templates/_helpers.tpl
diff --git a/config-models/aether-2.0.x/templates/model.yaml b/config-models/aether-2.0.x/templates/model.yaml
new file mode 100644
index 0000000..301bfae
--- /dev/null
+++ b/config-models/aether-2.0.x/templates/model.yaml
@@ -0,0 +1,65 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: config.onosproject.org/v1beta1
+kind: Model
+metadata:
+ name: {{ template "aether.fullname" . }}
+ namespace: {{ .Release.Namespace }}
+ labels:
+ {{- include "aether.labels" . | nindent 4 }}
+spec:
+ plugin:
+ type: Aether
+ version: {{ .Chart.AppVersion | quote }}
+ modules:
+ - name: connectivity-service
+ organization: Open Networking Foundation
+ revision: 2021-10-21
+ file: onf-connectivity-service.yang
+ - name: enterprise
+ organization: Open Networking Foundation
+ revision: 2021-06-02
+ file: onf-enterprise.yang
+ - name: aether-types
+ organization: Open Networking Foundation
+ revision: 2021-09-10
+ file: onf-aether-types.yang
+ - name: application
+ organization: Open Networking Foundation
+ revision: 2021-09-10
+ file: onf-application.yang
+ - name: device-group
+ organization: Open Networking Foundation
+ revision: 2021-06-02
+ file: onf-device-group.yang
+ - name: ip-domain
+ organization: Open Networking Foundation
+ revision: 2021-06-02
+ file: onf-ip-domain.yang
+ - name: site
+ organization: Open Networking Foundation
+ revision: 2021-09-10
+ file: onf-site.yang
+ - name: upf-list
+ organization: Open Networking Foundation
+ revision: 2021-09-16
+ file: onf-upf.yang
+ - name: vcs
+ organization: Open Networking Foundation
+ revision: 2021-09-10
+ file: onf-vcs.yang
+ - name: template
+ organization: Open Networking Foundation
+ revision: 2021-09-10
+ file: onf-template.yang
+ - name: traffic-class
+ organization: Open Networking Foundation
+ revision: 2021-06-02
+ file: onf-traffic-class.yang
+ files:
+ {{- range $path, $_ := $.Files.Glob "files/yang/*.yang" }}
+ {{ base $path }}: |
+{{ $.Files.Get $path | indent 6 }}
+ {{- end }}
diff --git a/config-models/aether-2.0.x/values.yaml b/config-models/aether-2.0.x/values.yaml
new file mode 100644
index 0000000..2e984ed
--- /dev/null
+++ b/config-models/aether-2.0.x/values.yaml
@@ -0,0 +1,3 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
diff --git a/config-models/aether-2.x/.helmignore b/config-models/aether-2.x/.helmignore
deleted file mode 100644
index 01d4cd9..0000000
--- a/config-models/aether-2.x/.helmignore
+++ /dev/null
@@ -1,25 +0,0 @@
-# SPDX-FileCopyrightText: 2021 Open Networking Foundation
-#
-# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-
-# Patterns to ignore when building packages.
-# This supports shell glob matching, relative path matching, and
-# negation (prefixed with !). Only one pattern per line.
-.DS_Store
-# Common VCS dirs
-.git/
-.gitignore
-.bzr/
-.bzrignore
-.hg/
-.hgignore
-.svn/
-# Common backup files
-*.swp
-*.bak
-*.tmp
-*~
-# Various IDEs
-.project
-.idea/
-*.tmproj
diff --git a/config-models/aether-2.x/files/aether-2.0.0.tree b/config-models/aether-2.x/files/aether-2.0.0.tree
deleted file mode 100644
index df204d5..0000000
--- a/config-models/aether-2.x/files/aether-2.0.0.tree
+++ /dev/null
@@ -1,101 +0,0 @@
-module: access-profile
- +--rw access-profile
- +--rw access-profile* [id]
- +--rw id access-profile-id
- +--rw display-name? string
- +--rw type? string
- +--rw filter? string
- +--rw description? string
-
-module: aether-subscriber
- +--rw subscriber
- +--rw ue* [id]
- +--rw id ietf:uuid
- +--rw display-name? string
- +--rw (imsi)?
- | +--:(wildcard)
- | | +--rw imsi-wildcard? string
- | +--:(range)
- | +--rw imsi-range-from? uint64
- | +--rw imsi-range-to? uint64
- +--rw serving-plmn
- | +--rw mcc? mcc
- | +--rw mnc? mnc
- | +--rw tac? tac
- +--rw requested-apn? string
- +--rw priority? uint32
- +--rw enabled? boolean
- +--rw enterprise? -> /ent:enterprise/enterprise/id
- +--rw profiles
- +--rw apn-profile? -> /apn:apn-profile/apn-profile/id
- +--rw up-profile? -> /up:up-profile/up-profile/id
- +--rw qos-profile? -> /qos:qos-profile/qos-profile/id
- +--rw access-profile* [access-profile]
- | +--rw access-profile -> /ap:access-profile/access-profile/id
- | +--rw allowed? boolean
- +--rw security-profile? -> /sec:security-profile/security-profile/id
-
-module: apn-profile
- +--rw apn-profile
- +--rw apn-profile* [id]
- +--rw id apn-profile-id
- +--rw display-name? string
- +--rw apn-name? string
- +--rw dns-primary? inet:ip-address
- +--rw dns-secondary? inet:ip-address
- +--rw mtu? uint32
- +--rw gx-enabled? boolean
- +--rw description? string
-
-module: connectivity-service
- +--rw connectivity-service
- +--rw connectivity-service* [id]
- +--rw id connectivity-service-id
- +--rw display-name? string
- +--rw description? string
- +--rw spgwc-endpoint? inet:uri
- +--rw hss-endpoint? inet:uri
-
-module: enterprise
- +--rw enterprise
- +--rw enterprise* [id]
- +--rw id enterprise-id
- +--rw display-name? string
- +--rw description? string
- +--rw connectivity-service* [connectivity-service]
- +--rw connectivity-service -> /cs:connectivity-service/connectivity-service/id
- +--rw enabled? boolean
-
-module: qos-profile
- +--rw qos-profile
- +--rw qos-profile* [id]
- +--rw id qos-profile-id
- +--rw display-name? string
- +--rw apn-ambr
- | +--rw uplink? uint32
- | +--rw downlink? uint32
- +--rw qci? uint32
- +--rw arp
- | +--rw priority? uint32
- | +--rw preemption-capability? boolean
- | +--rw preemption-vulnerability? boolean
- +--rw description? string
-
-module: security-profile
- +--rw security-profile
- +--rw security-profile* [id]
- +--rw id security-profile-id
- +--rw display-name? string
- +--rw key? string
- +--rw opc? string
- +--rw sqn? uint32
- +--rw description? string
-
-module: up-profile
- +--rw up-profile
- +--rw up-profile* [id]
- +--rw id up-profile-id
- +--rw display-name? string
- +--rw user-plane? string
- +--rw access-control? string
- +--rw description? string
diff --git a/config-models/aether-2.x/files/yang/access-profile.yang b/config-models/aether-2.x/files/yang/access-profile.yang
deleted file mode 100755
index 080ab14..0000000
--- a/config-models/aether-2.x/files/yang/access-profile.yang
+++ /dev/null
@@ -1,72 +0,0 @@
-// SPDX-FileCopyrightText: 2021 Open Networking Foundation
-//
-// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-
-module access-profile {
- namespace "http://opennetworking.org/aether/access-profile";
- prefix pro;
-
- organization "Open Networking Foundation.";
- contact "Scott Baker";
- description "To generate JSON from this use command
- pyang -f jtoxx test1.yang | python3 -m json.tool > test1.json
- Copied from YangUIComponents project";
-
- revision "2020-10-22" {
- description "An Aether access Profile";
- reference "RFC 6087";
- }
-
- // TODO: Think more on whether this should be a UUID or
- // simply a unique name. If it's a UUID, could fix the
- // string length.
- typedef access-profile-id {
- type string {
- length 1..32;
- }
- description "The typedef for access-profile-id";
- }
-
- container access-profile {
- description "The top level container";
-
- list access-profile {
- key "id";
- description
- "List of access profiles";
-
- leaf id {
- type access-profile-id;
- description "ID for this access profile.";
- }
-
- leaf display-name {
- type string {
- length 1..80;
- }
- description "display name to use in GUI or CLI";
- }
-
- leaf type {
- type string {
- length 1..32;
- }
- description "type of profile";
- }
-
- leaf filter {
- type string {
- length 0..32;
- }
- description "filter";
- }
-
- leaf description {
- type string {
- length 1..100;
- }
- description "description of this profile";
- }
- }
- }
-}
diff --git a/config-models/aether-2.x/files/yang/aether-subscriber.yang b/config-models/aether-2.x/files/yang/aether-subscriber.yang
deleted file mode 100755
index d1f43c9..0000000
--- a/config-models/aether-2.x/files/yang/aether-subscriber.yang
+++ /dev/null
@@ -1,188 +0,0 @@
-// SPDX-FileCopyrightText: 2021 Open Networking Foundation
-//
-// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-
-module aether-subscriber {
- namespace "http://opennetworking.org/aether/subscriber";
- prefix sub;
-
- import apn-profile{ prefix apn; }
- import qos-profile{ prefix qos; }
- import up-profile{ prefix up; }
- import access-profile{ prefix ap; }
- import security-profile{ prefix sec; }
- import enterprise{ prefix ent; }
- import ietf-yang-types{ prefix ietf; }
-
- organization "Open Networking Foundation.";
- contact "Scott Baker";
- description "To generate JSON from this use command
- pyang -f jtoxx test1.yang | python3 -m json.tool > test1.json
- Copied from YangUIComponents project";
-
- revision "2020-10-22" {
- description "An Aether Subscriber";
- reference "RFC 6087";
- }
-
- typedef mcc {
- type uint32 {
- range 0..999;
- }
- description "The typedef for mmc";
- }
-
- typedef mnc {
- type uint32 {
- range 0..999;
- }
- description "The typedef for mnc";
- }
-
- typedef tac {
- type uint32 {
- range 0..99999999;
- }
- description "The typedef for tac";
- }
-
- container subscriber {
- description "The top level container";
-
- list ue {
- key "id";
- description
- "List of subscriber devices";
-
- leaf id {
- type ietf:uuid;
- description "identifier for this subscriber, typically a UUID";
- }
-
- leaf display-name {
- type string {
- length 1..80;
- }
- description "display name to use in GUI or CLI";
- }
-
- choice imsi {
- case wildcard {
- leaf imsi-wildcard {
- type string {
- length 1..15;
- }
- description "The typedef for imsi-wildcard";
- }
- }
- case range {
- leaf imsi-range-from {
- type uint64;
- description "The typedef for imsi-range-from";
- }
- leaf imsi-range-to {
- type uint64;
- description "The typedef for imsi-range-to";
- }
- }
- description "The choice for imsi";
- }
-
- container serving-plmn {
- leaf mcc {
- type mcc;
- description "mobile country code";
- }
- leaf mnc {
- type mnc;
- description "mobile network code";
- }
- leaf tac {
- type tac;
- description "type allocation code";
- }
- description "The container for serving-plmn";
- }
-
- leaf requested-apn {
- type string {
- length 0..31;
- }
- description "requested access point name";
- }
-
- leaf priority {
- type uint32 {
- range 0..1000;
- }
- default 0;
- description
- "Priority for this subscriber range";
- }
-
- leaf enabled {
- type boolean;
- default false;
- description
- "Enable or disable this ue";
- }
-
- leaf enterprise {
- type leafref {
- path "/ent:enterprise/ent:enterprise/ent:id";
- }
- description
- "Link to enterprise that owns this UE range";
- }
-
- container profiles {
- leaf apn-profile {
- type leafref {
- path "/apn:apn-profile/apn:apn-profile/apn:id";
- }
- description
- "Link to apn profile";
- }
- leaf up-profile {
- type leafref {
- path "/up:up-profile/up:up-profile/up:id";
- }
- description
- "Link to user plane profile";
- }
- leaf qos-profile {
- type leafref {
- path "/qos:qos-profile/qos:qos-profile/qos:id";
- }
- description
- "Link to qos profile";
- }
- list access-profile {
- key "access-profile";
- leaf access-profile {
- type leafref {
- path "/ap:access-profile/ap:access-profile/ap:id";
- }
- description
- "Link to access profile";
- }
- leaf allowed {
- type boolean;
- default true;
- description
- "Allow or disallow this ue to use this access profile";
- }
- description "The list for access-profile";
- }
- leaf security-profile {
- type leafref {
- path "/sec:security-profile/sec:security-profile/sec:id";
- }
- description
- "Link to security profile";
- }
- description "The container for profiles";
- }
- }
- }
-}
diff --git a/config-models/aether-2.x/files/yang/apn-profile.yang b/config-models/aether-2.x/files/yang/apn-profile.yang
deleted file mode 100755
index 9f2125e..0000000
--- a/config-models/aether-2.x/files/yang/apn-profile.yang
+++ /dev/null
@@ -1,92 +0,0 @@
-// SPDX-FileCopyrightText: 2021 Open Networking Foundation
-//
-// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-
-module apn-profile {
- namespace "http://opennetworking.org/aether/apn-profile";
- prefix pro;
-
- import ietf-inet-types { prefix inet; }
-
- organization "Open Networking Foundation.";
- contact "Scott Baker";
- description "To generate JSON from this use command
- pyang -f jtoxx test1.yang | python3 -m json.tool > test1.json
- Copied from YangUIComponents project";
-
- revision "2020-10-22" {
- description "An Aether APN Profile";
- reference "RFC 6087";
- }
-
- // TODO: Think more on whether this should be a UUID or
- // simply a unique name. If it's a UUID, could fix the
- // string length.
- typedef apn-profile-id {
- type string {
- length 1..32;
- }
- description "The typedef for apn-profile-id";
- }
-
- container apn-profile {
- description "The top level container";
-
- list apn-profile {
- key "id";
- description
- "List of apn profiles";
-
- leaf id {
- type apn-profile-id;
- description "ID for this apn profile.";
- }
-
- leaf display-name {
- type string {
- length 1..80;
- }
- description "display name to use in GUI or CLI";
- }
-
- leaf apn-name {
- type string {
- length 1..32;
- }
- description "apn name";
- }
-
- leaf dns-primary {
- type inet:ip-address;
- description "primary dns server name";
- }
-
- leaf dns-secondary {
- type inet:ip-address;
- description "secondary dns server name";
- }
-
- leaf mtu {
- type uint32 {
- range 68..65535;
- }
- units bytes;
- default 1460;
- description "maximum transmission unit";
- }
-
- leaf gx-enabled {
- type boolean;
- default false;
- description "enable gx interface";
- }
-
- leaf description {
- type string {
- length 1..100;
- }
- description "description of this profile";
- }
- }
- }
-}
diff --git a/config-models/aether-2.x/files/yang/qos-profile.yang b/config-models/aether-2.x/files/yang/qos-profile.yang
deleted file mode 100755
index 85b6630..0000000
--- a/config-models/aether-2.x/files/yang/qos-profile.yang
+++ /dev/null
@@ -1,113 +0,0 @@
-// SPDX-FileCopyrightText: 2021 Open Networking Foundation
-//
-// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-
-module qos-profile {
- namespace "http://opennetworking.org/aether/qos-profile";
- prefix pro;
-
- organization "Open Networking Foundation.";
- contact "Scott Baker";
- description "To generate JSON from this use command
- pyang -f jtoxx test1.yang | python3 -m json.tool > test1.json
- Copied from YangUIComponents project";
-
- revision "2020-10-22" {
- description "An Aether qos Profile";
- reference "RFC 6087";
- }
-
- // TODO: Think more on whether this should be a UUID or
- // simply a unique name. If it's a UUID, could fix the
- // string length.
- typedef qos-profile-id {
- type string {
- length 1..32;
- }
- description "The typedef for qos-profile-id";
- }
-
- container qos-profile {
- description "The top level container";
-
- list qos-profile {
- key "id";
- description
- "List of qos profiles";
-
- leaf id {
- type qos-profile-id;
- description "ID for this qos profile.";
- }
-
- leaf display-name {
- type string {
- length 1..80;
- }
- description "display name to use in GUI or CLI";
- }
-
- container apn-ambr {
- leaf uplink {
- type uint32 {
- range 0..4294967295;
- }
- units bps;
- default 0;
- description
- "Upstream aggregate maximum bit rate";
- }
- leaf downlink {
- type uint32 {
- range 0..4294967295;
- }
- units bps;
- default 0;
- description
- "Downstream aggregate maximum bit rate";
- }
- description "The container for apn-ambr";
- }
-
- leaf qci {
- type uint32 {
- range 0..85;
- }
- default 9;
- description
- "QoS Class Identifier";
- }
-
- container arp {
- leaf priority {
- type uint32 {
- range 0..15;
- }
- default 0;
- description
- "Priority";
- }
- leaf preemption-capability {
- type boolean;
- default true;
- description
- "True if a bearer with lower priority should be dropped";
- }
- leaf preemption-vulnerability {
- type boolean;
- default true;
- description
- "This bearer may be dropped for a bearer with higher priority";
- }
- description "Evolved-ARP";
- }
-
- leaf description {
- type string {
- length 1..100;
- }
- description "description of this profile";
- }
- }
- }
-}
diff --git a/config-models/aether-2.x/files/yang/security-profile.yang b/config-models/aether-2.x/files/yang/security-profile.yang
deleted file mode 100755
index 00413b1..0000000
--- a/config-models/aether-2.x/files/yang/security-profile.yang
+++ /dev/null
@@ -1,74 +0,0 @@
-// SPDX-FileCopyrightText: 2021 Open Networking Foundation
-//
-// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-
-module security-profile {
- namespace "http://opennetworking.org/aether/security-profile";
- prefix sec;
-
- organization "Open Networking Foundation.";
- contact "Scott Baker";
- description "To generate JSON from this use command
- pyang -f jtoxx test1.yang | python3 -m json.tool > test1.json
- Copied from YangUIComponents project";
-
- revision "2020-11-30" {
- description "An Aether Security Profile. Contains keys and other security items associated with devices. Configured by the operator.";
- reference "RFC 6087";
- }
-
- typedef security-profile-id {
- type string {
- length 1..32;
- }
- description "The typedef for security-profile-id";
- }
-
- container security-profile {
- description "The top level container";
-
- list security-profile {
- key "id";
- description
- "List of security profiles";
-
- leaf id {
- type security-profile-id;
- description "ID for this security profile.";
- }
-
- leaf display-name {
- type string {
- length 1..80;
- }
- description "display name to use in GUI or CLI";
- }
-
- leaf key {
- type string {
- length 1..32;
- }
- description "Secret key for USIM";
- }
-
- leaf opc {
- type string {
- length 1..32;
- }
- description "Secret key for Operator";
- }
-
- leaf sqn {
- type uint32;
- description "sequence number";
- }
-
- leaf description {
- type string {
- length 1..100;
- }
- description "description of this security profile";
- }
- }
- }
-}
diff --git a/config-models/aether-2.x/files/yang/up-profile.yang b/config-models/aether-2.x/files/yang/up-profile.yang
deleted file mode 100755
index bf17f89..0000000
--- a/config-models/aether-2.x/files/yang/up-profile.yang
+++ /dev/null
@@ -1,72 +0,0 @@
-// SPDX-FileCopyrightText: 2021 Open Networking Foundation
-//
-// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-
-module up-profile {
- namespace "http://opennetworking.org/aether/user-plane-profile";
- prefix pro;
-
- organization "Open Networking Foundation.";
- contact "Scott Baker";
- description "To generate JSON from this use command
- pyang -f jtoxx test1.yang | python3 -m json.tool > test1.json
- Copied from YangUIComponents project";
-
- revision "2020-10-22" {
- description "An Aether user plane Profile";
- reference "RFC 6087";
- }
-
- // TODO: Think more on whether this should be a UUID or
- // simply a unique name. If it's a UUID, could fix the
- // string length.
- typedef up-profile-id {
- type string {
- length 1..32;
- }
- description "The typedef for up-profile-id";
- }
-
- container up-profile {
- description "The top level container";
-
- list up-profile {
- key "id";
- description
- "List of user plane profiles";
-
- leaf id {
- type up-profile-id;
- description "ID for this user plane profile.";
- }
-
- leaf display-name {
- type string {
- length 1..80;
- }
- description "display name to use in GUI or CLI";
- }
-
- leaf user-plane {
- type string {
- length 1..255;
- }
- description "user plane name";
- }
-
- leaf access-control {
- type string {
- length 1..32;
- }
- description "access control policy";
- }
-
- leaf description {
- type string {
- length 1..100;
- }
- description "description of this profile";
- }
- }
- }
-}
diff --git a/config-models/aether-2.x/templates/model.yaml b/config-models/aether-2.x/templates/model.yaml
deleted file mode 100644
index 787912e..0000000
--- a/config-models/aether-2.x/templates/model.yaml
+++ /dev/null
@@ -1,53 +0,0 @@
-# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
-#
-# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-
-apiVersion: config.onosproject.org/v1beta1
-kind: Model
-metadata:
- name: {{ template "aether.fullname" . }}
- namespace: {{ .Release.Namespace }}
- labels:
- {{- include "aether.labels" . | nindent 4 }}
-spec:
- plugin:
- type: Aether
- version: {{ .Chart.AppVersion | quote }}
- modules:
- - name: aether-subscriber
- organization: Open Networking Foundation
- revision: 2020-10-22
- file: aether-subscriber.yang
- - name: apn-profile
- organization: Open Networking Foundation
- revision: 2020-10-22
- file: apn-profile.yang
- - name: up-profile
- organization: Open Networking Foundation
- revision: 2020-10-22
- file: up-profile.yang
- - name: qos-profile
- organization: Open Networking Foundation
- revision: 2020-10-22
- file: qos-profile.yang
- - name: access-profile
- organization: Open Networking Foundation
- revision: 2020-10-22
- file: access-profile.yang
- - name: enterprise
- organization: Open Networking Foundation
- revision: 2020-11-30
- file: enterprise.yang
- - name: connectivity-service
- organization: Open Networking Foundation
- revision: 2020-11-30
- file: connectivity-service.yang
- - name: security-profile
- organization: Open Networking Foundation
- revision: 2020-11-30
- file: security-profile.yang
- files:
- {{- range $path, $_ := $.Files.Glob "files/yang/*.yang" }}
- {{ base $path }}: |
-{{ $.Files.Get $path | indent 6 }}
- {{- end }}
diff --git a/config-models/aether-2.x/values.yaml b/config-models/aether-2.x/values.yaml
deleted file mode 100644
index 1b22ea4..0000000
--- a/config-models/aether-2.x/values.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
-#
-# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0