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.";
+      }
+    }
+  }
+}