aether-2.0.0 models: Reorganize the YANG tree as submodules
Change-Id: I5c41899b466f7ece528d5e078924589118441104
diff --git a/config-models/aether-2.0.x/Chart.yaml b/config-models/aether-2.0.x/Chart.yaml
index 682915a..fd27292 100644
--- a/config-models/aether-2.0.x/Chart.yaml
+++ b/config-models/aether-2.0.x/Chart.yaml
@@ -4,7 +4,7 @@
apiVersion: v2
name: config-model-aether-2
-version: 2.0.0
+version: 2.0.1
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
index 24f7a1b..32b29fc 100644
--- 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
@@ -1,161 +1,129 @@
-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-enterprise
+ +--rw enterprises
+ +--rw enterprise* [ent-id]
+ +--rw ent-id enterprise-id
+ +--rw display-name? string
+ +--rw description? at:description
+ +--rw connectivity-service* [connectivity-service]
+ | +--rw connectivity-service -> /cs:connectivity-services/connectivity-service/id
+ | +--rw enabled? boolean
+ +--rw application* [app-id]
+ | +--rw app-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? -> ../../../traffic-class/tc-id
+ | +--rw display-name? string
+ +--rw traffic-class* [tc-id]
+ | +--rw tc-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
+ +--rw template* [tp-id]
+ | +--rw tp-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
+ +--rw site* [site-id]
+ +--rw site-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 imsi-definition
+ | +--rw mcc at:mcc
+ | +--rw mnc at:mnc
+ | +--rw enterprise at:ent
+ | +--rw format string
+ +--rw description? at:description
+ +--rw upf* [upf-id]
+ | +--rw upf-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 vcs* [vcs-id]
+ | +--rw vcs-id vcs-id
+ | +--rw display-name? string
+ | +--rw device-group* [device-group]
+ | | +--rw device-group -> ../../../device-group/dg-id
+ | | +--rw enable? boolean
+ | +--rw default-behavior at:behavior
+ | +--rw filter* [application]
+ | | +--rw application -> ../../../../application/app-id
+ | | +--rw priority? at:priority
+ | | +--rw allow? boolean
+ | +--rw upf? -> ../../upf/upf-id
+ | +--rw description? at:description
+ | +--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 device-group* [dg-id]
+ | +--rw dg-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? -> ../../ip-domain/ip-id
+ | +--rw device
+ | +--rw mbr
+ | | +--rw uplink at:bitrate
+ | | +--rw downlink at:bitrate
+ | +--rw traffic-class -> ../../../../traffic-class/tc-id
+ +--rw ip-domain* [ip-id]
+ +--rw ip-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
module: onf-connectivity-service
- +--rw connectivity-service
+ +--rw connectivity-services
+--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.0.x/files/yang/onf-application.yang b/config-models/aether-2.0.x/files/yang/onf-application.yang
index c48cab1..c81c501 100755
--- a/config-models/aether-2.0.x/files/yang/onf-application.yang
+++ b/config-models/aether-2.0.x/files/yang/onf-application.yang
@@ -2,15 +2,14 @@
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-module onf-application {
- namespace "http://opennetworking.org/enterprise/application";
- prefix app;
+submodule onf-application {
+ belongs-to onf-enterprise { prefix ent; }
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; }
+
+ include onf-traffic-class;
organization "Open Networking Foundation.";
contact "Scott Baker";
@@ -19,6 +18,11 @@
connect to. Includes a set of endpoints where services are
provided.";
+ revision "2022-01-14" {
+ description "Refactored as submodule";
+ reference "RFC 6020";
+ }
+
revision "2021-09-10" {
description "Aether Application.";
reference "RFC 6087";
@@ -31,15 +35,15 @@
description "The typedef for application-id";
}
- container application {
- description "The top level container";
+ grouping application {
+ description "The application grouping";
list application {
- key "id";
+ key "app-id";
description
"List of applications";
- leaf id {
+ leaf app-id {
type application-id;
description "ID for this application.";
}
@@ -101,7 +105,7 @@
}
leaf traffic-class {
type leafref {
- path "/tc:traffic-class/tc:traffic-class/tc:id";
+ path "../../../traffic-class/tc-id";
}
description
"Link to traffic class";
@@ -114,15 +118,6 @@
}
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.0.x/files/yang/onf-connectivity-service.yang b/config-models/aether-2.0.x/files/yang/onf-connectivity-service.yang
index e1d53b6..183be39 100755
--- a/config-models/aether-2.0.x/files/yang/onf-connectivity-service.yang
+++ b/config-models/aether-2.0.x/files/yang/onf-connectivity-service.yang
@@ -16,6 +16,11 @@
"An Aether Connectivity service is the linkage between the
ROC and a core that provides connectivity.";
+ revision "2022-01-14" {
+ description "Renamed top level container as plural";
+ reference "RFC 6020";
+ }
+
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";
@@ -28,8 +33,8 @@
description "The typedef for connectivity-service-id";
}
- container connectivity-service {
- description "The top level container";
+ container connectivity-services {
+ description "The connectivity-services top level container";
list connectivity-service {
key "id";
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
index a93c295..4b5371b 100755
--- 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
@@ -2,15 +2,14 @@
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-module onf-device-group {
- namespace "http://opennetworking.org/aether/device-group";
- prefix dg;
+submodule onf-device-group {
+ belongs-to onf-enterprise { prefix ent; }
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; }
+
+ include onf-ip-domain;
+ include onf-traffic-class;
organization "Open Networking Foundation.";
contact "Scott Baker";
@@ -25,6 +24,11 @@
and DNS settings that apply to devices within the
group";
+ revision "2022-01-14" {
+ description "Refactored as submodule";
+ reference "RFC 6020";
+ }
+
revision "2021-06-02" {
description "An Aether Device Group";
reference "RFC 6087";
@@ -37,15 +41,15 @@
description "The typedef for device-group-id";
}
- container device-group {
- description "The top level container";
+ grouping device-group {
+ description "The device-group grouping";
list device-group {
- key "id";
+ key "dg-id";
description
"List of device groups";
- leaf id {
+ leaf dg-id {
type device-group-id;
description "ID for this device group.";
}
@@ -93,7 +97,7 @@
leaf ip-domain {
type leafref {
- path "/ipd:ip-domain/ipd:ip-domain/ipd:id";
+ path "../../ip-domain/ip-id";
}
description
"Link to ip-domain settings that determine the pool of IP addresses,
@@ -120,22 +124,13 @@
}
leaf traffic-class {
type leafref {
- path "/tc:traffic-class/tc:traffic-class/tc:id";
+ path "../../../../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.0.x/files/yang/onf-enterprise.yang b/config-models/aether-2.0.x/files/yang/onf-enterprise.yang
index 16ad5f9..95e691e 100755
--- a/config-models/aether-2.0.x/files/yang/onf-enterprise.yang
+++ b/config-models/aether-2.0.x/files/yang/onf-enterprise.yang
@@ -10,12 +10,26 @@
import onf-aether-types { prefix at; }
import onf-connectivity-service { prefix cs; }
+ include onf-site;
+ include onf-upf;
+ include onf-vcs;
+ include onf-device-group;
+ include onf-ip-domain;
+ include onf-application;
+ include onf-traffic-class;
+ include onf-template;
+
organization "Open Networking Foundation.";
contact "Scott Baker";
description
"An Aether Enterprise is an administration entity that
has ownership of resrouces.";
+ revision "2022-01-14" {
+ description "Refactored to work with submodules";
+ reference "RFC 6020";
+ }
+
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";
@@ -28,15 +42,15 @@
description "The typedef for enterprise-id";
}
- container enterprise {
- description "The top level container";
+ container enterprises {
+ description "The top level enterprises container";
list enterprise {
- key "id";
+ key "ent-id";
description
"List of enterprises";
- leaf id {
+ leaf ent-id {
type enterprise-id;
description "ID for this enterprise.";
}
@@ -57,7 +71,7 @@
key "connectivity-service";
leaf connectivity-service {
type leafref {
- path "/cs:connectivity-service/cs:connectivity-service/cs:id";
+ path "/cs:connectivity-services/cs:connectivity-service/cs:id";
}
description
"Link to connectivity services where configuration should be pushed for this enterprise's devices";
@@ -70,6 +84,14 @@
}
description "The list for connectivity-service";
}
+
+ uses application;
+
+ uses traffic-class;
+
+ uses template;
+
+ uses site;
}
}
}
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
index e896cc5..b5fb974 100755
--- 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
@@ -2,14 +2,12 @@
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-module onf-ip-domain {
- namespace "http://opennetworking.org/aether/ip-domain";
- prefix ipd;
+submodule onf-ip-domain {
+ belongs-to onf-enterprise { prefix ent; }
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";
@@ -18,6 +16,11 @@
that may be assigned to UEs, as well as DNS servers and other
metadata";
+ revision "2022-01-14" {
+ description "Refactored as submodule";
+ reference "RFC 6020";
+ }
+
revision "2021-06-02" {
description "An Aether IP and Domain Specification";
reference "RFC 6087";
@@ -30,15 +33,15 @@
description "The typedef for ip-domain-id";
}
- container ip-domain {
- description "The top level container";
+ grouping ip-domain {
+ description "The ip-domain grouping";
list ip-domain {
- key "id";
+ key "ip-id";
description
"List of ip domains";
- leaf id {
+ leaf ip-id {
type ip-domain-id;
description "ID for this ip domain.";
}
@@ -88,17 +91,6 @@
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
index b5f22c4..2b782ff 100755
--- a/config-models/aether-2.0.x/files/yang/onf-site.yang
+++ b/config-models/aether-2.0.x/files/yang/onf-site.yang
@@ -2,20 +2,28 @@
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-module onf-site {
- namespace "http://opennetworking.org/aether/site";
- prefix st;
+submodule onf-site {
+ belongs-to onf-enterprise { prefix ent; }
import ietf-inet-types { prefix inet; }
import ietf-yang-types{ prefix yg; }
import onf-aether-types{ prefix at; }
- import onf-enterprise{ prefix ent; }
+
+ include onf-upf;
+ include onf-vcs;
+ include onf-device-group;
+ include onf-ip-domain;
organization "Open Networking Foundation.";
contact "Scott Baker";
description
"An Aether site is a location where resources are deployed.";
+ revision "2022-01-14" {
+ description "Refactored as submodule";
+ reference "RFC 6020";
+ }
+
revision "2021-09-10" {
description "An Aether Site.";
reference "RFC 6087";
@@ -28,15 +36,15 @@
description "The typedef for site-id";
}
- container site {
- description "The top level container";
+ grouping site {
+ description "The site grouping";
list site {
- key "id";
+ key "site-id";
description
"List of site";
- leaf id {
+ leaf site-id {
type site-id;
description "ID for this site.";
}
@@ -117,15 +125,6 @@
"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;
@@ -167,6 +166,14 @@
type at:description;
description "description of this site";
}
+
+ uses upf;
+
+ uses vcs;
+
+ uses device-group;
+
+ uses ip-domain;
}
}
}
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
index bbd94ef..7c1f1b9 100755
--- a/config-models/aether-2.0.x/files/yang/onf-template.yang
+++ b/config-models/aether-2.0.x/files/yang/onf-template.yang
@@ -2,9 +2,8 @@
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-module onf-template {
- namespace "http://opennetworking.org/aether/template";
- prefix tp;
+submodule onf-template {
+ belongs-to onf-enterprise { prefix ent; }
import ietf-yang-types{ prefix yg; }
import onf-aether-types{ prefix at; }
@@ -16,6 +15,11 @@
by a virtual connectivity service. Templates are used to
populate a VCS.";
+ revision "2022-01-14" {
+ description "Refactored as submodule";
+ reference "RFC 6020";
+ }
+
revision "2021-09-10" {
description "An Aether Virtual Cellular Service Template";
reference "RFC 6087";
@@ -28,15 +32,15 @@
description "The typedef for template-id";
}
- container template {
- description "The top level container";
+ grouping template {
+ description "The template grouping";
list template {
- key "id";
+ key "tp-id";
description
"List of vcs templates";
- leaf id {
+ leaf tp-id {
type template-id;
description "ID for 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
index a592267..4a4a96d 100755
--- 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
@@ -2,9 +2,8 @@
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-module onf-traffic-class {
- namespace "http://opennetworking.org/aether/traffic-class";
- prefix tp;
+submodule onf-traffic-class {
+ belongs-to onf-enterprise { prefix ent; }
import ietf-yang-types{ prefix yg; }
import onf-aether-types{ prefix at; }
@@ -15,6 +14,11 @@
"The aether traffic class associates qos constants
with a named class of service";
+ revision "2022-01-14" {
+ description "Refactored as submodule";
+ reference "RFC 6020";
+ }
+
revision "2021-09-10" {
description "An Aether Traffic Class";
reference "RFC 6087";
@@ -27,15 +31,15 @@
description "The typedef for traffic-class-id";
}
- container traffic-class {
- description "The top level container";
+ grouping traffic-class {
+ description "The traffic-class grouping";
list traffic-class {
- key "id";
+ key "tc-id";
description
"List of traffic class";
- leaf id {
+ leaf tc-id {
type traffic-class-id;
description "ID for 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
index 5c8be50..4d27f31 100755
--- a/config-models/aether-2.0.x/files/yang/onf-upf.yang
+++ b/config-models/aether-2.0.x/files/yang/onf-upf.yang
@@ -2,20 +2,22 @@
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-module onf-upf {
- namespace "http://opennetworking.org/aether/upf";
- prefix upf;
+submodule onf-upf {
+ belongs-to onf-enterprise { prefix ent; }
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 "2022-01-14" {
+ description "Refactored as submodule";
+ reference "RFC 6020";
+ }
+
revision "2021-09-16" {
description "An Aether User Plane Function";
reference "RFC 6087";
@@ -28,15 +30,15 @@
description "The typedef for upf-id";
}
- container upf {
- description "The top level container";
+ grouping upf {
+ description "The upf grouping";
list upf {
- key "id";
+ key "upf-id";
description
"A list of named upfs.";
- leaf id {
+ leaf upf-id {
type upf-id;
description "ID for this upf.";
}
@@ -71,28 +73,6 @@
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
index c275565..d050ed1 100755
--- a/config-models/aether-2.0.x/files/yang/onf-vcs.yang
+++ b/config-models/aether-2.0.x/files/yang/onf-vcs.yang
@@ -2,17 +2,15 @@
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
-module onf-vcs {
- namespace "http://opennetworking.org/aether/vcs";
- prefix sl;
+submodule onf-vcs {
+ belongs-to onf-enterprise { prefix ent; }
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; }
+
+ include onf-upf;
+ include onf-device-group;
+ include onf-application;
organization "Open Networking Foundation.";
contact "Scott Baker";
@@ -20,6 +18,11 @@
"An Aether Virtual Cellular Service (VCS) 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 Virtual Cellular Service";
reference "RFC 6087";
@@ -32,15 +35,15 @@
description "The typedef for vcs-id";
}
- container vcs {
- description "The top level container";
+ grouping vcs {
+ description "The vcs grouping";
list vcs {
- key "id";
+ key "vcs-id";
description
"List of virtual cellular services";
- leaf id {
+ leaf vcs-id {
type vcs-id;
description "ID for this vcs.";
}
@@ -56,7 +59,7 @@
key "device-group";
leaf device-group {
type leafref {
- path "/dg:device-group/dg:device-group/dg:id";
+ path "../../../device-group/dg-id";
}
description
"Link to device group";
@@ -83,7 +86,7 @@
key "application";
leaf application {
type leafref {
- path "/app:application/app:application/app:id";
+ path "../../../../application/app-id";
}
mandatory true;
description
@@ -109,7 +112,7 @@
leaf upf {
type leafref {
- path "/upf:upf/upf:upf/upf:id";
+ path "../../upf/upf-id";
}
description
"Link to user plane that implements this vcf";
@@ -120,24 +123,6 @@
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;
diff --git a/config-models/aether-2.0.x/templates/model.yaml b/config-models/aether-2.0.x/templates/model.yaml
index 301bfae..b6ef0f6 100644
--- a/config-models/aether-2.0.x/templates/model.yaml
+++ b/config-models/aether-2.0.x/templates/model.yaml
@@ -14,50 +14,14 @@
type: Aether
version: {{ .Chart.AppVersion | quote }}
modules:
- - name: connectivity-service
+ - name: onf-connectivity-service
organization: Open Networking Foundation
- revision: 2021-10-21
+ revision: 2022-01-14
file: onf-connectivity-service.yang
- - name: enterprise
+ - name: onf-enterprise
organization: Open Networking Foundation
- revision: 2021-06-02
+ revision: 2022-01-14
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 }}: |