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