AETHER-2874 Bootstrap Aether-2.x models
Change-Id: Ia987596109584df696aaa57703f9148075569422
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.";
+ }
+ }
+ }
+}