diff --git a/.reuse/dep5 b/.reuse/dep5
index 087f2d5..c048215 100644
--- a/.reuse/dep5
+++ b/.reuse/dep5
@@ -3,3 +3,18 @@
 Files: VERSION .gitreview
 Copyright: 2021 Open Networking Foundation
 License: Apache-2.0
+
+Files: config-models/*/files/*.tree */files/configs/*.json
+Copyright: 2021 Open Networking Foundation
+License: LicenseRef-ONF-Member-Only-1.0
+
+
+# per https://trustee.ietf.org/documents/trust-legal-provisions/copyright-policy-and-tlp-faq/
+Files: config-models/*/files/yang/ietf-inet-types.yang  config-models/*/files/yang/ietf-yang-types.yang
+Copyright: 2013 IETF Trust
+License: BSD-2-Clause
+
+# certs are just math, no copyright
+Files: */files/certs/tls.* aether-roc-gui/files/certs/aether-roc-gui*
+Copyright: 2021 Open Networking Foundation
+License: CC0-1.0
diff --git a/LICENSES/BSD-2-Clause.txt b/LICENSES/BSD-2-Clause.txt
new file mode 100644
index 0000000..b0e20f5
--- /dev/null
+++ b/LICENSES/BSD-2-Clause.txt
@@ -0,0 +1,9 @@
+Copyright (c) <year> <owner> All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
new file mode 100644
index 0000000..0e259d4
--- /dev/null
+++ b/LICENSES/CC0-1.0.txt
@@ -0,0 +1,121 @@
+Creative Commons Legal Code
+
+CC0 1.0 Universal
+
+    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+    LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
+    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+    INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+    REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
+    PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
+    THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
+    HEREUNDER.
+
+Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer
+exclusive Copyright and Related Rights (defined below) upon the creator
+and subsequent owner(s) (each and all, an "owner") of an original work of
+authorship and/or a database (each, a "Work").
+
+Certain owners wish to permanently relinquish those rights to a Work for
+the purpose of contributing to a commons of creative, cultural and
+scientific works ("Commons") that the public can reliably and without fear
+of later claims of infringement build upon, modify, incorporate in other
+works, reuse and redistribute as freely as possible in any form whatsoever
+and for any purposes, including without limitation commercial purposes.
+These owners may contribute to the Commons to promote the ideal of a free
+culture and the further production of creative, cultural and scientific
+works, or to gain reputation or greater distribution for their Work in
+part through the use and efforts of others.
+
+For these and/or other purposes and motivations, and without any
+expectation of additional consideration or compensation, the person
+associating CC0 with a Work (the "Affirmer"), to the extent that he or she
+is an owner of Copyright and Related Rights in the Work, voluntarily
+elects to apply CC0 to the Work and publicly distribute the Work under its
+terms, with knowledge of his or her Copyright and Related Rights in the
+Work and the meaning and intended legal effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be
+protected by copyright and related or neighboring rights ("Copyright and
+Related Rights"). Copyright and Related Rights include, but are not
+limited to, the following:
+
+  i. the right to reproduce, adapt, distribute, perform, display,
+     communicate, and translate a Work;
+ ii. moral rights retained by the original author(s) and/or performer(s);
+iii. publicity and privacy rights pertaining to a person's image or
+     likeness depicted in a Work;
+ iv. rights protecting against unfair competition in regards to a Work,
+     subject to the limitations in paragraph 4(a), below;
+  v. rights protecting the extraction, dissemination, use and reuse of data
+     in a Work;
+ vi. database rights (such as those arising under Directive 96/9/EC of the
+     European Parliament and of the Council of 11 March 1996 on the legal
+     protection of databases, and under any national implementation
+     thereof, including any amended or successor version of such
+     directive); and
+vii. other similar, equivalent or corresponding rights throughout the
+     world based on applicable law or treaty, and any national
+     implementations thereof.
+
+2. Waiver. To the greatest extent permitted by, but not in contravention
+of, applicable law, Affirmer hereby overtly, fully, permanently,
+irrevocably and unconditionally waives, abandons, and surrenders all of
+Affirmer's Copyright and Related Rights and associated claims and causes
+of action, whether now known or unknown (including existing as well as
+future claims and causes of action), in the Work (i) in all territories
+worldwide, (ii) for the maximum duration provided by applicable law or
+treaty (including future time extensions), (iii) in any current or future
+medium and for any number of copies, and (iv) for any purpose whatsoever,
+including without limitation commercial, advertising or promotional
+purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
+member of the public at large and to the detriment of Affirmer's heirs and
+successors, fully intending that such Waiver shall not be subject to
+revocation, rescission, cancellation, termination, or any other legal or
+equitable action to disrupt the quiet enjoyment of the Work by the public
+as contemplated by Affirmer's express Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason
+be judged legally invalid or ineffective under applicable law, then the
+Waiver shall be preserved to the maximum extent permitted taking into
+account Affirmer's express Statement of Purpose. In addition, to the
+extent the Waiver is so judged Affirmer hereby grants to each affected
+person a royalty-free, non transferable, non sublicensable, non exclusive,
+irrevocable and unconditional license to exercise Affirmer's Copyright and
+Related Rights in the Work (i) in all territories worldwide, (ii) for the
+maximum duration provided by applicable law or treaty (including future
+time extensions), (iii) in any current or future medium and for any number
+of copies, and (iv) for any purpose whatsoever, including without
+limitation commercial, advertising or promotional purposes (the
+"License"). The License shall be deemed effective as of the date CC0 was
+applied by Affirmer to the Work. Should any part of the License for any
+reason be judged legally invalid or ineffective under applicable law, such
+partial invalidity or ineffectiveness shall not invalidate the remainder
+of the License, and in such case Affirmer hereby affirms that he or she
+will not (i) exercise any of his or her remaining Copyright and Related
+Rights in the Work or (ii) assert any associated claims and causes of
+action with respect to the Work, in either case contrary to Affirmer's
+express Statement of Purpose.
+
+4. Limitations and Disclaimers.
+
+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
+    surrendered, licensed or otherwise affected by this document.
+ b. Affirmer offers the Work as-is and makes no representations or
+    warranties of any kind concerning the Work, express, implied,
+    statutory or otherwise, including without limitation warranties of
+    title, merchantability, fitness for a particular purpose, non
+    infringement, or the absence of latent or other defects, accuracy, or
+    the present or absence of errors, whether or not discoverable, all to
+    the greatest extent permissible under applicable law.
+ c. Affirmer disclaims responsibility for clearing rights of other persons
+    that may apply to the Work or any use thereof, including without
+    limitation any person's Copyright and Related Rights in the Work.
+    Further, Affirmer disclaims responsibility for obtaining any necessary
+    consents, permissions or other rights required for any use of the
+    Work.
+ d. Affirmer understands and acknowledges that Creative Commons is not a
+    party to this document and has no duty or obligation with respect to
+    this CC0 or use of the Work.
diff --git a/aether-roc-api/.helmignore b/aether-roc-api/.helmignore
new file mode 100644
index 0000000..f7a328e
--- /dev/null
+++ b/aether-roc-api/.helmignore
@@ -0,0 +1,26 @@
+# 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
+.vscode/
diff --git a/aether-roc-api/Chart.yaml b/aether-roc-api/Chart.yaml
new file mode 100644
index 0000000..c426ff3
--- /dev/null
+++ b/aether-roc-api/Chart.yaml
@@ -0,0 +1,21 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: aether-roc-api
+description: Aether ROC API
+kubeVersion: ">=1.15.0"
+type: application
+version: 1.1.14
+appVersion: v0.7.14
+keywords:
+  - aether
+  - config
+  - roc
+  - openapi3
+  - gnmi
+home: https://www.opennetworking.org/aether/
+maintainers:
+  - name: Aether Ops team
+    email: support@opennetworking.org
diff --git a/aether-roc-api/README.md b/aether-roc-api/README.md
new file mode 100644
index 0000000..c0b24a6
--- /dev/null
+++ b/aether-roc-api/README.md
@@ -0,0 +1,10 @@
+<!--
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+
+## Aether ROC API
+
+Provides a [Helm] chart for deploying µONOS Aether ROC API micro service on [Kubernetes].
+See the [documentation](https://docs.onosproject.org/onos-docs/docs/content/developers/deploy_with_helm/) for more info.
diff --git a/aether-roc-api/files/certs/README.md b/aether-roc-api/files/certs/README.md
new file mode 100644
index 0000000..e33ad8d
--- /dev/null
+++ b/aether-roc-api/files/certs/README.md
@@ -0,0 +1,26 @@
+<!--
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+
+This folder contains self-signed certificates for use in testing. _DO NOT USE THESE
+CERTIFICATES IN PRODUCTION!_
+
+The certificates were generated with the
+https://github.com/onosproject/gnxi-simulators/blob/master/pkg/certs/generate_certs.sh 
+script as
+```bash
+generate-certs.sh aether-roc-api.opennetworking.org
+```
+
+In this folder they **must** be (re)named
+* tls.cacrt
+* tls.crt
+* tls.key
+
+Use
+```bash
+openssl x509 -in aether-roc-api/files/certs/tls.crt -text -noout
+```
+to verify the contents (especially the subject).
diff --git a/aether-roc-api/files/certs/tls.cacrt b/aether-roc-api/files/certs/tls.cacrt
new file mode 100644
index 0000000..d4440bd
--- /dev/null
+++ b/aether-roc-api/files/certs/tls.cacrt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDYDCCAkgCCQDe99fSN9qxSTANBgkqhkiG9w0BAQsFADByMQswCQYDVQQGEwJV
+UzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCU1lbmxvUGFyazEMMAoGA1UECgwDT05G
+MRQwEgYDVQQLDAtFbmdpbmVlcmluZzEeMBwGA1UEAwwVY2Eub3Blbm5ldHdvcmtp
+bmcub3JnMB4XDTE5MDQxMTA5MDYxM1oXDTI5MDQwODA5MDYxM1owcjELMAkGA1UE
+BhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQHDAlNZW5sb1BhcmsxDDAKBgNVBAoM
+A09ORjEUMBIGA1UECwwLRW5naW5lZXJpbmcxHjAcBgNVBAMMFWNhLm9wZW5uZXR3
+b3JraW5nLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMEg7CZR
+X8Y+syKHaQCh6mNIL1D065trwX8RnuKM2kBwSu034zefQAPloWugSoJgJnf5fe0j
+nUD8gN3Sm8XRhCkvf67pzfabgw4n8eJmHScyL/ugyExB6Kahwzn37bt3oT3gSqhr
+6PUznWJ8fvfVuCHZZkv/HPRp4eyAcGzbJ4TuB0go4s6VE0WU5OCxCSlAiK3lvpVr
+3DOLdYLVoCa5q8Ctl3wXDrfTLw5/Bpfrg9fF9ED2/YKIdV8KZ2ki/gwEOQqWcKp8
+0LkTlfOWsdGjp4opPuPT7njMBGXMJzJ8/J1e1aJvIsoB7n8XrfvkNiWL5U3fM4N7
+UZN9jfcl7ULmm7cCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAIh6FjkQuTfXddmZY
+FYpoTen/VD5iu2Xxc1TexwmKeH+YtaKp1Zk8PTgbCtMEwEiyslfeHTMtODfnpUIk
+DwvtB4W0PAnreRsqh9MBzdU6YZmzGyZ92vSUB3yukkHaYzyjeKM0AwgVl9yRNEZw
+Y/OM070hJXXzJh3eJpLl9dlUbMKzaoAh2bZx6y3ZJIZFs/zrpGfg4lvBAvfO/59i
+mxJ9bQBSN3U2Hwp6ioOQzP0LpllfXtx9N5LanWpB0cu/HN9vAgtp3kRTBZD0M1XI
+Ctit8bXV7Mz+1iGqoyUhfCYcCSjuWTgAxzir+hrdn7uO67Hv4ndCoSj4SQaGka3W
+eEfVeA==
+-----END CERTIFICATE-----
\ No newline at end of file
diff --git a/aether-roc-api/files/certs/tls.crt b/aether-roc-api/files/certs/tls.crt
new file mode 100644
index 0000000..581d9b3
--- /dev/null
+++ b/aether-roc-api/files/certs/tls.crt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl8CFErBGzsXHo1l8bmZRmDkF+h2bsdVMA0GCSqGSIb3DQEBCwUAMHIx
+CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJTWVubG9QYXJrMQww
+CgYDVQQKDANPTkYxFDASBgNVBAsMC0VuZ2luZWVyaW5nMR4wHAYDVQQDDBVjYS5v
+cGVubmV0d29ya2luZy5vcmcwHhcNMjAwODI3MTExOTQ3WhcNMzAwODI1MTExOTQ3
+WjB+MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCU1lbmxvUGFy
+azEMMAoGA1UECgwDT05GMRQwEgYDVQQLDAtFbmdpbmVlcmluZzEqMCgGA1UEAwwh
+YWV0aGVyLXJvYy1hcGkub3Blbm5ldHdvcmtpbmcub3JnMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEA2L0EYwyiLOu2O7MRW1Jmpkrqwm5ug7jGuHzyjjae
+zXLttozuqyIX2PlQpdW4s8DiebRnwc/FnkQV6cSqYImdRtn67UcA0gAhnn3UVQmP
+ZHI0806M7fTZtoiPustqg2I4CpQGA4DeclSUCtAMUsVFoM5CUpk6u+06s0ItJQaF
+VNTtS3uOLknhhxxzrlmzuMRTT7/oE/ZVeFauVYySLruBKm2I4ttM/N35aixEo1AQ
+bOX/ywqDJIzABdeVIsDMujsKFMaH00RgafGErHLMrx5McBNGvBPZ/VOWLfvaVeuu
+DI3tW17M/zJDNFFJFSRhGHwHZltcCTDxQlIEehJWxySF1wIDAQABMA0GCSqGSIb3
+DQEBCwUAA4IBAQCEb3m72twEJldJskK3966rVr/53KUo6LVqBpfoWo0AlakGex73
+MP6gd8c2qvSCf6Aw0/LzAnFM67t8e9jprtdOMRxytqSEaR0xkMhOTWEA8VoE8Iee
+iaDUc7UMftp9cZbGHTFmmuTNpZ6RYpQ3kuzoOzXvoMBz7ny5SzuYNHKoHDapEkoD
+JZOpVrsF/n7joxXP6YwJU7xKPXnKkTZ5s1lDd3RTUdZL0BFJdHt2UfFyZN6telGK
+nSav9mtmByg5J9O7yRL8h5i/dF7nbQ8+bl1xPCPV91g41/S+3kGqoqSZZJQ1vMnb
+gOwXDoTcZ2qRqvcHCLZFUWtAC1MTIkKTQN7X
+-----END CERTIFICATE-----
diff --git a/aether-roc-api/files/certs/tls.key b/aether-roc-api/files/certs/tls.key
new file mode 100644
index 0000000..c35b95b
--- /dev/null
+++ b/aether-roc-api/files/certs/tls.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYvQRjDKIs67Y7
+sxFbUmamSurCbm6DuMa4fPKONp7Ncu22jO6rIhfY+VCl1bizwOJ5tGfBz8WeRBXp
+xKpgiZ1G2frtRwDSACGefdRVCY9kcjTzTozt9Nm2iI+6y2qDYjgKlAYDgN5yVJQK
+0AxSxUWgzkJSmTq77TqzQi0lBoVU1O1Le44uSeGHHHOuWbO4xFNPv+gT9lV4Vq5V
+jJIuu4EqbYji20z83flqLESjUBBs5f/LCoMkjMAF15UiwMy6OwoUxofTRGBp8YSs
+csyvHkxwE0a8E9n9U5Yt+9pV664Mje1bXsz/MkM0UUkVJGEYfAdmW1wJMPFCUgR6
+ElbHJIXXAgMBAAECggEATyBCl76m/mtXblgjgAmHPDKhnjYe1qwAsJ29F7pNI4hP
+zJOLFqMtvaLXlJOACO/kPrZkItett+f3cA7CfNgAuTsfZrzDSeeOXoRlnl4NIYio
+WCNXRBBd40vb3UAiNLEI8KO1xlWn4GmMWp41wYoPr3NdtzYFwVIMWiFQxfGpf5xI
+tiEPIvoFBf/m9su0HFY+wyUe8UcCJRYKGix3IWiReOH+O9SvisLuLS+h5Gbdv7Fz
+5KRg1VXIDre5d8WF/ZL6P0Irr22y9MapdVGkWeBIGaqt5e0olOSbn3ipVFZqogpa
+j3rTtGLnmOmVAaZe9toW7EeWf08KiQtv19h5ZhC5UQKBgQDwfEcKXwxVeD7DTzUl
+U3ZKDH6KlAato7xLmZIxohckplfr8vaqRN6gDo2F9SiGkqqCJmzVjfhxlqLKWmzH
+XVCgIzZcnp2xnyV5kMRXAX7stPZLOtAKYrCYHpy2I9yTqHC13xqL6dQqRv9QHZUP
+dW2OIOiFRCjfP7+9W4gL3WiZfQKBgQDmuIu0G37Fr6wCxd+u/Ieslrw9Oa7Hb66S
+7FsWjUmIhNFWV7Z2bZZEtNCCE7qXzICoZdlNW8nwh2PIdJUDYemqsgYtB2XsoZCN
+AI6JEjbGO/M8rkcZ2+9GhGxAJ1yvxlkK9ImNzvUR2Idi1nC7kmWHTicTugmG9NVV
+cXAQrgHc4wKBgE0tFP9XEXY8aKf1O3EHH+cTq2h9qMcAzOTWG/yhsBuq5nxqNI7g
+GzHyeaiLzL2jQ+UQv8ypCxoo5YVbD53LbJx3sHJ41NKz6CrjMp9Zc4ozaPcroKg0
+k8e9yz0ItTkNzV4Qg0xzdgs7TaRAWh3j6Yy7MuPRw+whYT87qKVmILNhAoGAP1Y0
+C8psf8pc9xno8PmkKS3sGQanw1oWW4EE9Gju4cpMSV6k2Vf2I4BbqQnPdHKQcyoa
+gFENW7lfHB1c9uO/KLvcVCouwcoMi5i2iEx2uu6kNGlHXYLx6bLaoLXtjNdvhEFj
+LYm93xtI90oVAnkK5B0BPzoX+XNmySDt+bY7Dq8CgYEAwzuUC1jindvkWHZ1cmq8
+KS+YgGh8OecczKD4x5yaSnG4IXoUYTWhUCQ5w3whJithRaSlsChBIgCIdkFNlD+4
+N3bFj2HBY1ZK6lzAN4q0THv0SWZbi0lJxukXVhxoh+uJpFalB+ZGC4svsDptqcdG
+i4fJoTsOmAzak+D9VJmvHNU=
+-----END PRIVATE KEY-----
diff --git a/aether-roc-api/templates/NOTES.txt b/aether-roc-api/templates/NOTES.txt
new file mode 100644
index 0000000..4e34ee7
--- /dev/null
+++ b/aether-roc-api/templates/NOTES.txt
@@ -0,0 +1,20 @@
+# SPDX-FileCopyrightText: 2021 Open Networking Foundation
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Thank you for installing {{ .Chart.Name }} Helm chart.
+
+Your release is named {{ .Release.Name }} in namespace {{.Release.Namespace}}.
+See https://docs.onosproject.org/developers/deploy_with_helm/
+
+To learn more about the release, try:
+  $ helm -n {{.Release.Namespace}} status {{ .Release.Name }}
+  $ helm -n {{.Release.Namespace}} get all {{ .Release.Name }}
+
+{{ .Release.Name }} depends on the "onos-config (with the Aether 2.1.0 and 3.0.0 model plugins and onos-topo" micro services.
+
+If you are using KinD as a Kubernetes server you will have to add a "port-forward" to access the aether-roc-api e.g.
+$ kubectl -n {{.Release.Namespace}} port-forward $(kubectl -n {{.Release.Namespace}} get pods -l type=api -o name) 8181
+and then access the API with:
+
+curl http://localhost:8181/aether/v3.0.0/connectivity-service-v3/enterprise
diff --git a/aether-roc-api/templates/_helpers.tpl b/aether-roc-api/templates/_helpers.tpl
new file mode 100644
index 0000000..a7db7ce
--- /dev/null
+++ b/aether-roc-api/templates/_helpers.tpl
@@ -0,0 +1,55 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Expand the name of the chart.
+*/}}
+{{- define "aether-roc-api.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "aether-roc-api.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "aether-roc-api.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Common labels
+*/}}
+{{- define "aether-roc-api.labels" -}}
+helm.sh/chart: {{ include "aether-roc-api.chart" . }}
+{{ include "aether-roc-api.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "aether-roc-api.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "aether-roc-api.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
diff --git a/aether-roc-api/templates/configmap.yaml b/aether-roc-api/templates/configmap.yaml
new file mode 100644
index 0000000..20047ea
--- /dev/null
+++ b/aether-roc-api/templates/configmap.yaml
@@ -0,0 +1,16 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ template "aether-roc-api.fullname" . }}-config
+  labels:
+    app: {{ template "aether-roc-api.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+data:
+  logging.yaml: |-
+{{ toYaml .Values.logging | indent 4 }}
diff --git a/aether-roc-api/templates/deployment.yaml b/aether-roc-api/templates/deployment.yaml
new file mode 100644
index 0000000..38bd935
--- /dev/null
+++ b/aether-roc-api/templates/deployment.yaml
@@ -0,0 +1,133 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ include "aether-roc-api.fullname" . }}
+  namespace: {{ .Release.Namespace }}
+  labels:
+    {{- include "aether-roc-api.labels" . | nindent 4 }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  selector:
+    matchLabels:
+      name: {{ template "aether-roc-api.fullname" . }}
+      app: aether
+      type: api
+      resource: {{ template "aether-roc-api.fullname" . }}
+      {{- include "aether-roc-api.selectorLabels" . | nindent 6 }}
+  template:
+    metadata:
+      labels:
+        name: {{ template "aether-roc-api.fullname" . }}
+        app: aether
+        type: api
+        resource: {{ template "aether-roc-api.fullname" . }}
+        {{- include "aether-roc-api.selectorLabels" . | nindent 8 }}
+    spec:
+      serviceAccountName: aether-roc-api
+      securityContext:
+        {{- toYaml .Values.podSecurityContext | nindent 8 }}
+      {{- with .Values.imagePullSecrets }}
+      imagePullSecrets:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+      containers:
+        - name: {{ .Chart.Name }}
+          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          env:
+            - name: NAMESPACE
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.namespace
+          args:
+            {{- range $key, $corsorigin := .Values.corsOrigins }}
+            - {{ printf "-allowCorsOrigin=%s" $corsorigin }}{{end}}
+          ports:
+            - name: http
+              containerPort: 8181
+          startupProbe:
+            tcpSocket:
+              port: 8181
+            periodSeconds: 5
+            failureThreshold: 60
+          readinessProbe:
+            tcpSocket:
+              port: 8181
+            initialDelaySeconds: 10
+            periodSeconds: 10
+          livenessProbe:
+            tcpSocket:
+              port: 8181
+            initialDelaySeconds: 10
+            periodSeconds: 10
+          volumeMounts:
+            - name: secret
+              mountPath: /etc/aether-roc-api/certs
+              readOnly: true
+            - name: config
+              mountPath: /etc/onos/config
+              readOnly: true
+          resources:
+            {{- toYaml .Values.resources | nindent 12 }}
+          # Enable ptrace for debugging
+          securityContext:
+            {{- if .Values.debug }}
+            capabilities:
+              add:
+                - SYS_PTRACE
+            {{- end }}
+        - name: {{ .Chart.Name }}-websocket
+          image: "{{ .Values.image.websocketsidecar.repository }}:{{ .Values.image.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          env:
+            - name: NAMESPACE
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.namespace
+          args:
+            {{- range $key, $corsorigin := .Values.corsOrigins }}
+            - {{ printf "-allowCorsOrigin=%s" $corsorigin }}{{end}}
+          ports:
+            - name: http
+              containerPort: {{ .Values.websocketsidecar.port }}
+          startupProbe:
+            tcpSocket:
+              port: {{ .Values.websocketsidecar.port }}
+            periodSeconds: 5
+            failureThreshold: 60
+          readinessProbe:
+            tcpSocket:
+              port: {{ .Values.websocketsidecar.port }}
+            initialDelaySeconds: 10
+            periodSeconds: 10
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.websocketsidecar.port }}
+            initialDelaySeconds: 10
+            periodSeconds: 10
+          resources:
+            {{- toYaml .Values.resources | nindent 12 }}
+          securityContext: {}
+      volumes:
+        - name: secret
+          secret:
+            secretName: {{ template "aether-roc-api.fullname" . }}-secret
+        - name: config
+          configMap:
+            name: {{ template "aether-roc-api.fullname" . }}-config
+      {{- with .Values.nodeSelector }}
+    nodeSelector:
+      {{- toYaml . | nindent 8 }}
+    {{- end }}
+    {{- with .Values.affinity }}
+    affinity:
+      {{- toYaml . | nindent 8 }}
+    {{- end }}
+    {{- with .Values.tolerations }}
+    tolerations:
+      {{- toYaml . | nindent 8 }}
+    {{- end }}
diff --git a/aether-roc-api/templates/secret.yaml b/aether-roc-api/templates/secret.yaml
new file mode 100644
index 0000000..04e9c5d
--- /dev/null
+++ b/aether-roc-api/templates/secret.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ template "aether-roc-api.fullname" . }}-secret
+  labels:
+     chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+     release: "{{ .Release.Name }}"
+     heritage: "{{ .Release.Service }}"
+data:
+  {{ $root := . }}
+  {{ range $path, $bytes := .Files.Glob "files/certs/tls.*" }}
+  {{ base $path }}: '{{ $root.Files.Get $path | b64enc }}'
+  {{ end }}
+type: Opaque
diff --git a/aether-roc-api/templates/service.yaml b/aether-roc-api/templates/service.yaml
new file mode 100644
index 0000000..ac60319
--- /dev/null
+++ b/aether-roc-api/templates/service.yaml
@@ -0,0 +1,48 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "aether-roc-api.fullname" . }}
+  labels:
+    app: {{ template "aether-roc-api.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    {{- include "aether-roc-api.labels" . | nindent 4 }}
+spec:
+  type: {{ .Values.service.type }}
+  selector:
+    name: {{ template "aether-roc-api.fullname" . }}
+    app: aether
+    type: api
+    resource: {{ template "aether-roc-api.fullname" . }}
+    {{- include "aether-roc-api.selectorLabels" . | nindent 4 }}
+  ports:
+    - name: rest
+      port: 8181
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "aether-roc-api.fullname" . }}-websocket
+  labels:
+    app: {{ template "aether-roc-api.fullname" . }}-websocket
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    {{- include "aether-roc-api.labels" . | nindent 4 }}
+spec:
+  type: {{ .Values.service.type }}
+  selector:
+    name: {{ template "aether-roc-api.fullname" . }}
+    app: aether
+    type: api
+    resource: {{ template "aether-roc-api.fullname" . }}
+    {{- include "aether-roc-api.selectorLabels" . | nindent 4 }}
+  ports:
+    - name: webhook
+      port: 80
+      targetPort: {{ .Values.websocketsidecar.port }}
diff --git a/aether-roc-api/templates/serviceaccount.yaml b/aether-roc-api/templates/serviceaccount.yaml
new file mode 100644
index 0000000..6d0ba2a
--- /dev/null
+++ b/aether-roc-api/templates/serviceaccount.yaml
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: aether-roc-api
+  namespace: {{ .Release.Namespace }}
diff --git a/aether-roc-api/values.yaml b/aether-roc-api/values.yaml
new file mode 100644
index 0000000..5f4f9d7
--- /dev/null
+++ b/aether-roc-api/values.yaml
@@ -0,0 +1,64 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+# Default values for aether-roc-api.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+replicaCount: 1
+
+image:
+  repository: onosproject/aether-roc-api
+  tag: v0.7.14
+  pullPolicy: IfNotPresent
+  pullSecrets: []
+  websocketsidecar:
+    repository: onosproject/aether-roc-websocket
+
+imagePullSecrets: []
+nameOverride: ""
+fullnameOverride: "aether-roc-api"
+
+# Needed for development only - set to blank otherwise
+corsOrigins:
+  - http://localhost:4200
+
+websocketsidecar:
+  enabled: true
+  port: 8120
+
+store: {}
+
+service:
+  type: ClusterIP
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  # limits:
+  #   cpu: 100m
+  #   memory: 128Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 128Mi
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity: {}
+
+logging:
+  loggers:
+    root:
+      level: info
+      output:
+        stdout:
+          sink: stdout
+  sinks:
+    stdout:
+      type: stdout
+      stdout: {}
diff --git a/aether-roc-gui/.helmignore b/aether-roc-gui/.helmignore
new file mode 100644
index 0000000..f7a328e
--- /dev/null
+++ b/aether-roc-gui/.helmignore
@@ -0,0 +1,26 @@
+# 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
+.vscode/
diff --git a/aether-roc-gui/Chart.yaml b/aether-roc-gui/Chart.yaml
new file mode 100644
index 0000000..c42b4c6
--- /dev/null
+++ b/aether-roc-gui/Chart.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: aether-roc-gui
+description: Aether ROC Graphical User Interface
+kubeVersion: ">=1.15.0"
+type: application
+version: 3.0.23
+appVersion: 3.0.0
+keywords:
+  - aether
+  - config
+home: https://www.opennetworking.org/aether/
+maintainers:
+  - name: Aether Ops team
+    email: support@opennetworking.org
diff --git a/aether-roc-gui/README.md b/aether-roc-gui/README.md
new file mode 100644
index 0000000..34d463c
--- /dev/null
+++ b/aether-roc-gui/README.md
@@ -0,0 +1,9 @@
+<!--
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+
+## Aether ROC GUI Helm Chart
+
+Provides a [Helm] chart for deploying Aether ROC GUI on [Kubernetes].
diff --git a/aether-roc-gui/files/certs/README.md b/aether-roc-gui/files/certs/README.md
new file mode 100644
index 0000000..7e6e434
--- /dev/null
+++ b/aether-roc-gui/files/certs/README.md
@@ -0,0 +1,32 @@
+<!--
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+
+This folder contains self-signed certificates for use in testing. _DO NOT USE THESE
+CERTIFICATES IN PRODUCTION!_
+
+The certificates were generated with the
+https://github.com/onosproject/simulators/blob/master/pkg/certs/generate_certs.sh 
+script as
+```bash
+generate-certs.sh onos-config.opennetworking.org
+```
+
+In this folder they **must** be (re)named
+* tls.cacrt
+* tls.crt
+* tls.key
+
+Use
+```bash
+openssl x509 -in deployments/helm/onos-config/files/certs/tls.crt -text -noout
+```
+to verify the contents (especially the subject).
+
+There is another Cert for onos-config in test/certs but these were created with:
+```
+generate-certs.sh onos-config
+```
+and are left named onf.cacrt, onos-config.key and onos-config.crt
\ No newline at end of file
diff --git a/aether-roc-gui/files/certs/aether-roc-gui.crt b/aether-roc-gui/files/certs/aether-roc-gui.crt
new file mode 100644
index 0000000..90be6b9
--- /dev/null
+++ b/aether-roc-gui/files/certs/aether-roc-gui.crt
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEMzCCAxugAwIBAgIUSsEbOxcejWXxuZlGYOQX6HZux1gwDQYJKoZIhvcNAQEL
+BQAwcjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQHDAlNZW5sb1Bh
+cmsxDDAKBgNVBAoMA09ORjEUMBIGA1UECwwLRW5naW5lZXJpbmcxHjAcBgNVBAMM
+FWNhLm9wZW5uZXR3b3JraW5nLm9yZzAeFw0yMDA5MjExMDIwMzZaFw0zMDA5MTkx
+MDIwMzZaMGsxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJTWVu
+bG9QYXJrMQwwCgYDVQQKDANPTkYxFDASBgNVBAsMC0VuZ2luZWVyaW5nMRcwFQYD
+VQQDDA5hZXRoZXItcm9jLWd1aTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBAMWFBjPd37Kdj3HamDOiaFR0kHz5dRArxEflubl+E65HgxGEh6zq2WUZHtRO
+PL8Q/qoQ52IFADKzlGFAHJHDUesE6DRIsEyq/bEfwIuQtbBixYRL4h8BvcCZBf97
+KSHViezZBMEAyFfVrbrdQnUeuIKut8deJ559WYt8j/bNVHNLua+OJPHlKptmdpGY
+auNsKFF9G4Bnay7s9B4eYQKfOnxOLdpcshFXjZaZdFesp5MLHHURHgnuvUFYs9uX
+pegMXIgZvV8Mc443bF2QfRc1t4v7Bj3hNHwuKm1U86xMHs5sIvl3ruPuphhe4JFU
+OCJOmVJ+eGKm4rkiqsAsV2D9iiECAwEAAaOBxzCBxDCBjgYDVR0jBIGGMIGDoXak
+dDByMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCU1lbmxvUGFy
+azEMMAoGA1UECgwDT05GMRQwEgYDVQQLDAtFbmdpbmVlcmluZzEeMBwGA1UEAwwV
+Y2Eub3Blbm5ldHdvcmtpbmcub3JnggkA3vfX0jfasUkwCQYDVR0TBAIwADALBgNV
+HQ8EBAMCBPAwGQYDVR0RBBIwEIIOYWV0aGVyLXJvYy1ndWkwDQYJKoZIhvcNAQEL
+BQADggEBAIYqeb1s5vGdtJFVsUflxYOKHu9Ikj2tQ/zk+Q+VCchxm8NFo7sWQVwB
+94vccp9Lo5fw/3zYUa4Qc/TWaKC8KQrVpruY8SSkwqhtAbjHP4+SulxYmh8AKlEZ
+vM5K7d/f0Otn3tiwMihKf3YSlMqEdD86A+t79yqLuYSIz765eLfHmpyxLdrQCwEz
+YzQAW66VOrlx/J0Cv7S07of0/tjENuSiX0VTp5V+ThI8qtv0How+S1Jah/YtXf7B
+Az5eHcA/fwQ4sJuCHg+rPEnsRwL3CVbjYO2cVwRk+a/RgL549upBD/2e1/K+8n+h
+KN8Kga5HKpWtblEGWWVvNdc2Fm6vJS0=
+-----END CERTIFICATE-----
diff --git a/aether-roc-gui/files/certs/aether-roc-gui.key b/aether-roc-gui/files/certs/aether-roc-gui.key
new file mode 100644
index 0000000..c8edc9e
--- /dev/null
+++ b/aether-roc-gui/files/certs/aether-roc-gui.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDFhQYz3d+ynY9x
+2pgzomhUdJB8+XUQK8RH5bm5fhOuR4MRhIes6tllGR7UTjy/EP6qEOdiBQAys5Rh
+QByRw1HrBOg0SLBMqv2xH8CLkLWwYsWES+IfAb3AmQX/eykh1Yns2QTBAMhX1a26
+3UJ1HriCrrfHXieefVmLfI/2zVRzS7mvjiTx5SqbZnaRmGrjbChRfRuAZ2su7PQe
+HmECnzp8Ti3aXLIRV42WmXRXrKeTCxx1ER4J7r1BWLPbl6XoDFyIGb1fDHOON2xd
+kH0XNbeL+wY94TR8LiptVPOsTB7ObCL5d67j7qYYXuCRVDgiTplSfnhipuK5IqrA
+LFdg/YohAgMBAAECggEBALyxKAvEmj94ZeDOgzhQnnqQILhDV6HrLcfBnnumBgco
+Kf5CLZrzgFskdF89nqqpAaBWJbVuMZI+HDILnT9i6I8sUOghyMp1T4Y2Xyr1Q50N
+vsNz+sDEWRH1HdXDQrgf13N8nx4CMWI3r5Akb6iTgJDXeJntSMwP08t9Y8rSvSqm
+LoZqvJBSNOI0eUlJRjRA72JMGYndw3LlSKd5KdY1BTwQ7JrWtjpR2n4WZPSE9Rqq
+VwtbRaInFd5iMvRD15Kf+kp86ZDHGPD8Xr+iJIzraagVelXiE6YADnpArNl9fscm
+7vS2w0/Q+bxo+NK5wO7GW8CXhN1ePpfC1Q56hz5jSkECgYEA7qvAACZX1sMknhq2
+BWfW74+dNaerK+DRuH2zyg+010zF5dW8+6JhwwSiaDwpcKWFFemBOvESSmsgL4WU
+6q1EXo+0VrPlqbH0nHrLkgsklt+KH1yIaaaE5E2tK/gep1qdi9GIXscHSvGIfDw4
+50cdtTnBB+/52yBdc+hBu53fFEcCgYEA09xh/MbH/ZlptOIq4xrbzFaZdFA7s8FY
+jWsnl1gQarRyVET8ix6Fs7zg/MD9+V3KpbIm8dPrM4zqAQF02JP8vE7r1CFu+chJ
+Bz/+RuegYIMY5er6i1dhOZXxjFLZ8/+obISdod1cSxF/nqRSx5Bh+wgb8/5XV5Wf
+zilN5adWKlcCgYBfLJIV/TRN6edyPMiVA0GMqkJQoRn7F13KKiZFz1mX+X95FXCV
+D73YXMK+ui70Qqz9fe4QqQ1YK7vb93LY2ltHMhsB8B8HOnWG6NjA1jyzBVU5CFdF
+eifIOslxnTHsHpBwrw+oa8mWsxZwJDu0zoEkQXGeTq3eGdvqWpXL0TqiBQKBgDTZ
+GKhRfbnI9xFkCYa1QHbsc0MMcJgadthwDmQ2V4IGmS5kNwsNBhUb3JOwIKp/tvk2
+Q3i3gEhPsl+l2VvdLoJavYEhBenRCEaCtA9D4EGy8hcIUo9HsL0IpkR2tl+jOoQ3
+YIrsCQXAy7DrFKsrXQWdtDtdCrSSYlau/vt2jovpAoGAXc8a2A47boIFrC3RlLDx
+oPrAFPPt69TaZwuoYriF02/a965Zhgb2fRUUjjy5vTIolWCKQnfpc820umEVIqfb
+c46jacVkxqjQvoT6nUUnUjDsZFYq/M6mjWtBzVmKTitc1B1AZ0hLoUd9po5iuEWD
+bj7JUaqHjXzHcryPXTijqos=
+-----END PRIVATE KEY-----
diff --git a/aether-roc-gui/files/certs/tls.cacrt b/aether-roc-gui/files/certs/tls.cacrt
new file mode 100644
index 0000000..d4440bd
--- /dev/null
+++ b/aether-roc-gui/files/certs/tls.cacrt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDYDCCAkgCCQDe99fSN9qxSTANBgkqhkiG9w0BAQsFADByMQswCQYDVQQGEwJV
+UzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCU1lbmxvUGFyazEMMAoGA1UECgwDT05G
+MRQwEgYDVQQLDAtFbmdpbmVlcmluZzEeMBwGA1UEAwwVY2Eub3Blbm5ldHdvcmtp
+bmcub3JnMB4XDTE5MDQxMTA5MDYxM1oXDTI5MDQwODA5MDYxM1owcjELMAkGA1UE
+BhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQHDAlNZW5sb1BhcmsxDDAKBgNVBAoM
+A09ORjEUMBIGA1UECwwLRW5naW5lZXJpbmcxHjAcBgNVBAMMFWNhLm9wZW5uZXR3
+b3JraW5nLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMEg7CZR
+X8Y+syKHaQCh6mNIL1D065trwX8RnuKM2kBwSu034zefQAPloWugSoJgJnf5fe0j
+nUD8gN3Sm8XRhCkvf67pzfabgw4n8eJmHScyL/ugyExB6Kahwzn37bt3oT3gSqhr
+6PUznWJ8fvfVuCHZZkv/HPRp4eyAcGzbJ4TuB0go4s6VE0WU5OCxCSlAiK3lvpVr
+3DOLdYLVoCa5q8Ctl3wXDrfTLw5/Bpfrg9fF9ED2/YKIdV8KZ2ki/gwEOQqWcKp8
+0LkTlfOWsdGjp4opPuPT7njMBGXMJzJ8/J1e1aJvIsoB7n8XrfvkNiWL5U3fM4N7
+UZN9jfcl7ULmm7cCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAIh6FjkQuTfXddmZY
+FYpoTen/VD5iu2Xxc1TexwmKeH+YtaKp1Zk8PTgbCtMEwEiyslfeHTMtODfnpUIk
+DwvtB4W0PAnreRsqh9MBzdU6YZmzGyZ92vSUB3yukkHaYzyjeKM0AwgVl9yRNEZw
+Y/OM070hJXXzJh3eJpLl9dlUbMKzaoAh2bZx6y3ZJIZFs/zrpGfg4lvBAvfO/59i
+mxJ9bQBSN3U2Hwp6ioOQzP0LpllfXtx9N5LanWpB0cu/HN9vAgtp3kRTBZD0M1XI
+Ctit8bXV7Mz+1iGqoyUhfCYcCSjuWTgAxzir+hrdn7uO67Hv4ndCoSj4SQaGka3W
+eEfVeA==
+-----END CERTIFICATE-----
\ No newline at end of file
diff --git a/aether-roc-gui/files/certs/tls.crt b/aether-roc-gui/files/certs/tls.crt
new file mode 100644
index 0000000..2c7e2de
--- /dev/null
+++ b/aether-roc-gui/files/certs/tls.crt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDcDCCAlgCFErBGzsXHo1l8bmZRmDkF+h2bsdTMA0GCSqGSIb3DQEBCwUAMHIx
+CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJTWVubG9QYXJrMQww
+CgYDVQQKDANPTkYxFDASBgNVBAsMC0VuZ2luZWVyaW5nMR4wHAYDVQQDDBVjYS5v
+cGVubmV0d29ya2luZy5vcmcwHhcNMjAwNTA1MDc0MjEzWhcNMzAwNTAzMDc0MjEz
+WjB3MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCU1lbmxvUGFy
+azEMMAoGA1UECgwDT05GMRQwEgYDVQQLDAtFbmdpbmVlcmluZzEjMCEGA1UEAwwa
+Y2xpZW50MS5vcGVubmV0d29ya2luZy5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IB
+DwAwggEKAoIBAQDK2amlhSGecWBI9jlj3OvCoGMAlHXffwHAsHskE/bFkyRKeYs0
+MHlcNBXSjgADtHt7FpGJ7nbZsMdu0XkNOlN/X0i8FKU7X9DnOHbHhOitg469J89D
+8tHnN2wrTyGxY2Km95PxeCQ4NH7z4MSSbdFfFXnw9k+qr+e1owswloJsYo+eyP7h
+jy7QvR2sAX8CC6D0ZaVuqLGK5kHJUyMxifqMa4D4wD8zfzahcTe2QAeOxQwhsaK2
+pZ/09bI/KCj8vxbxG2nkcwUgjl0Lgh0g1BFNSu39v1DjsiFWrIxnj3CL2Ncu0ps0
++dPSdpx90ImvjL4BRPz8V4iLPljmBmQfU2HpAgMBAAEwDQYJKoZIhvcNAQELBQAD
+ggEBADERPV5ykcjUaskgPHk081A0LmsKKL9AdqLfREreRIJgPg1T+ppE7PAf+i9m
+W6lojz+qCOkjd9d7Cd7wWRvrndRs6xt3HoIu3Z+knds/SC6emz/Rf+ZYsODNC3b3
+zv7agEeuD2M/Lq8pLfh9MsCxFmbz4JuiJ3kkT8zhiRAbUW6LkYFzdSeq6uUrhZPv
+C6VCZtHRQiEHE84Wwkxcz7shyknPwwDZxLoNeGjQPruESsY9Dyt96dz8yBQ6ukD1
+hPpnMDb+sksoX0ZOoEYpNdqDvZWa25n64LBBLuxbCuelSVUpsEdjRvh10znFY36x
+op/V1+9Wot9zMohw6bu5Aj9K6s8=
+-----END CERTIFICATE-----
diff --git a/aether-roc-gui/files/certs/tls.key b/aether-roc-gui/files/certs/tls.key
new file mode 100644
index 0000000..ca49789
--- /dev/null
+++ b/aether-roc-gui/files/certs/tls.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDK2amlhSGecWBI
+9jlj3OvCoGMAlHXffwHAsHskE/bFkyRKeYs0MHlcNBXSjgADtHt7FpGJ7nbZsMdu
+0XkNOlN/X0i8FKU7X9DnOHbHhOitg469J89D8tHnN2wrTyGxY2Km95PxeCQ4NH7z
+4MSSbdFfFXnw9k+qr+e1owswloJsYo+eyP7hjy7QvR2sAX8CC6D0ZaVuqLGK5kHJ
+UyMxifqMa4D4wD8zfzahcTe2QAeOxQwhsaK2pZ/09bI/KCj8vxbxG2nkcwUgjl0L
+gh0g1BFNSu39v1DjsiFWrIxnj3CL2Ncu0ps0+dPSdpx90ImvjL4BRPz8V4iLPljm
+BmQfU2HpAgMBAAECggEAVEd9Ca03m5nldEsA6zHVrmZu28XS94nQU5u/fezhgZMx
+59N597QQKDPnwTSIYwGwsCJfU5yFOssNAUj873cFTA1trd8yC2oy5G58Q0dAWR8o
+xgRtRAD2HwfS5GebSxVM3qxMhm3xNnzxJiiD44bHD6dfo7LixLsTHU9hjc1q4NaR
+BfJCl01f1EgEtPB4L7l3E1ivgy2OQ91gSJsIneA4RFLn5NbMac7ZWOTMGThjGFAw
+qR38Ua7TzQXL+qNzHU0JUOBg4smk5tzPxD8ik2p8VTc8WrPEBX129fn+JumhKoIC
+4LysZoazLhKem56LBVSW/TNybXPy9z+nBhbFbnoLAQKBgQDpPfvc83f/f5Iu3PaG
+8BsIoOonasqGsFoDB7XN/DZdjk8d9MKF+2tK8tRtwfZ+cWJL7m94ZCudtU72uhwN
+0x1E/p+qAUBvE3WR3MxQQb6R5kyzMUlwTjwrM49kMuQdU7CaL2abqRvvekkE6L13
+9KesvE0TQSTx+beMbzUUdDyCCQKBgQDepInF/pmwbM0E2zKYny0Ro3caW6HoUEoJ
+ZGcZ/NLdTgiQ3GJsVddc0M4jgXMndjOJFZcDDeFPgRAgQVnJHbDDWNygmNDBKavj
+LNcTIB2AO4ObWIH2C6x38V6l+62Nc9QPlI52tiekWVO1tAhy3FJXRHAUhP43bi36
+VnCg0mJY4QKBgFuSTEnpBJm4+imP8vHzXom6s3OaR70ti4lZA5XFiYqdjo5SQ/Ta
+Srt4LtKQrjfiSBdLm1QG7+DRCBlx5AXBduJZnVHff+6cEzKbH1P7G9ioNEC9/vkq
+nhDQA2HxYQHqk5FVPtGqSR9yQSy+O3TXBuWYYCJJFzoxMlDecFaBdCgRAoGBAIRc
+qZPOQyyB4nkKn8/ggfjEh+BhraXhZcKjsC/hALOU2r7UZqcleX2ynXq6UO2a9hR/
+g2HLdLHBdwbWEzzfq+DXCYNolmLgFVJfrBWwuBkuSJWoTssqMYS1OKHROGKqA96n
+YPLuZC7u9DdIKuWuWj2LcF6imkf19tunXBogOVvBAoGBAJvIYUGba3WU+/Ugs3yZ
+ubNBC52mS2kLrOTZfzQOP6sL3OC5rFgm7A4e/CMCWphns98ftB0c1RaZBCcwskUE
+mCxUxvivP7oUNf0CMZd6CW2M0LEWMVrIFJ1o0BtNpUVZ/+nipJblRA1B/JLsgNvn
+11mpIWR4KHd8A5wjkkfb2d/e
+-----END PRIVATE KEY-----
diff --git a/aether-roc-gui/templates/NOTES.txt b/aether-roc-gui/templates/NOTES.txt
new file mode 100644
index 0000000..78b6e46
--- /dev/null
+++ b/aether-roc-gui/templates/NOTES.txt
@@ -0,0 +1,22 @@
+# SPDX-FileCopyrightText: 2021 Open Networking Foundation
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Thank you for installing {{ .Chart.Name }} Helm chart.
+
+Your release is named {{ .Release.Name }} in namespace {{.Release.Namespace}}.
+See https://docs.onosproject.org/developers/deploy_with_helm/
+
+To learn more about the release, try:
+  $ helm -n {{.Release.Namespace}} status {{ .Release.Name }}
+  $ helm -n {{.Release.Namespace}} get all {{ .Release.Name }}
+
+{{ .Release.Name }} depends on the "aether-roc-api which in turn depends
+on onos-config(with the Aether x.y.0 model plugins) and onos-topo"
+micro services.
+
+If you are using KinD as a Kubernetes server you will have to add a "port-forward" to access the aether-roc-gui e.g.
+$ kubectl -n {{.Release.Namespace}} port-forward $(kubectl -n {{.Release.Namespace}} get pods -l type=arg -o name) 8183:80
+and then access the API with:
+
+http://localhost:8183
diff --git a/aether-roc-gui/templates/_helpers.tpl b/aether-roc-gui/templates/_helpers.tpl
new file mode 100644
index 0000000..8dd6a8c
--- /dev/null
+++ b/aether-roc-gui/templates/_helpers.tpl
@@ -0,0 +1,66 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Expand the name of the chart.
+*/}}
+{{- define "aether-roc-gui.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "aether-roc-gui.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "aether-roc-gui.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Common labels
+*/}}
+{{- define "aether-roc-gui.labels" -}}
+helm.sh/chart: {{ include "aether-roc-gui.chart" . }}
+{{ include "aether-roc-gui.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "aether-roc-gui.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "aether-roc-gui.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "aether-roc-gui.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create -}}
+    {{ default (include "aether-roc-gui.fullname" .) .Values.serviceAccount.name }}
+{{- else -}}
+    {{ default "default" .Values.serviceAccount.name }}
+{{- end -}}
+{{- end -}}
diff --git a/aether-roc-gui/templates/configmap.yaml b/aether-roc-gui/templates/configmap.yaml
new file mode 100644
index 0000000..4646f9c
--- /dev/null
+++ b/aether-roc-gui/templates/configmap.yaml
@@ -0,0 +1,71 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ template "aether-roc-gui.fullname" . }}
+  namespace: {{ .Release.Namespace }}
+  labels:
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+data:
+  server-block.conf: |-
+    server {
+        listen {{.Values.Nginx.port}};
+        ssl_certificate /usr/share/certs/aether-roc-gui.crt;
+        ssl_certificate_key /usr/share/certs/aether-roc-gui.key;
+        {{- if .Values.websocket.proxyEnabled }}
+        location /ws {
+            proxy_pass {{ .Values.websocket.protocol }}://{{ .Values.websocket.service }}:{{ .Values.websocket.port }}/ws;
+            proxy_http_version 1.1;
+            proxy_set_header Upgrade $http_upgrade;
+            proxy_set_header Connection "Upgrade";
+            proxy_set_header Host $host;
+        }{{end}}
+        {{- if .Values.grafana.proxyEnabled }}
+        location /grafana/ {
+            proxy_pass {{ .Values.grafana.protocol }}://{{ .Values.grafana.service }}:{{ .Values.grafana.port }}/;
+            proxy_http_version 1.1;
+            proxy_redirect off;
+            proxy_set_header Upgrade $http_upgrade;
+            proxy_set_header Connection "Upgrade";
+            proxy_set_header X-Real-IP $remote_addr;
+            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+            proxy_set_header Host $http_host;
+            proxy_set_header X-NginX-Proxy true;
+            proxy_hide_header 'X-Frame-Options';
+            add_header X-Frame-Options SAMEORIGIN;
+        }{{end}}
+        {{- if .Values.prometheus.proxyEnabled }}
+        location /prometheus/ {
+            proxy_pass {{ .Values.prometheus.protocol }}://{{ .Values.prometheus.service }}:{{ .Values.prometheus.port }}/;
+            proxy_http_version 1.1;
+            proxy_set_header Upgrade $http_upgrade;
+            add_header X-Frame-Options SAMEORIGIN;
+        }{{end}}
+        location / {
+          root /usr/share/nginx/html;
+        }
+        location /rs/nav/uiextensions {
+          root /usr/share/nginx/html;
+        }
+        location /kubernetes-api/ {
+            proxy_pass http://localhost:8001/;
+            proxy_http_version 1.1;
+        }
+        {{- range $key, $value := .Values.aetherservices }}
+        location /{{ $key }}/ {
+            proxy_pass {{ $value.protocol}}://{{$key}}:{{ $value.http }}/;
+            proxy_http_version 1.1;
+            proxy_set_header Upgrade $http_upgrade;
+            proxy_set_header Connection "Upgrade";
+            proxy_connect_timeout       {{ $value.streamTimeout }};
+            proxy_send_timeout          {{ $value.streamTimeout }};
+            proxy_read_timeout          {{ $value.streamTimeout }};
+            send_timeout                {{ $value.streamTimeout }};
+        }
+        {{ end }}
+    }
+
diff --git a/aether-roc-gui/templates/deployment.yaml b/aether-roc-gui/templates/deployment.yaml
new file mode 100644
index 0000000..cbb2601
--- /dev/null
+++ b/aether-roc-gui/templates/deployment.yaml
@@ -0,0 +1,92 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ include "aether-roc-gui.fullname" . }}
+  namespace: {{ .Release.Namespace }}
+  labels:
+    {{- include "aether-roc-gui.labels" . | nindent 4 }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  selector:
+    matchLabels:
+      name: {{ template "aether-roc-gui.fullname" . }}
+      app: aether
+      type: arg
+      resource: {{ template "aether-roc-gui.fullname" . }}
+      {{- include "aether-roc-gui.selectorLabels" . | nindent 6 }}
+  template:
+    metadata:
+      labels:
+        name: {{ template "aether-roc-gui.fullname" . }}
+        app: aether
+        type: arg
+        resource: {{ template "aether-roc-gui.fullname" . }}
+        {{- include "aether-roc-gui.selectorLabels" . | nindent 8 }}
+    spec:
+    {{- with .Values.imagePullSecrets }}
+      imagePullSecrets:
+        {{- toYaml . | nindent 8 }}
+    {{- end }}
+      securityContext:
+        {{- toYaml .Values.podSecurityContext | nindent 8 }}
+      containers:
+        - name: {{ .Chart.Name }}
+          securityContext:
+            {{- toYaml .Values.securityContext | nindent 12 }}
+          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          env:
+            - name: NAMESPACE
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.namespace
+            - name: OPENIDCISSUER
+              value: {{ .Values.openidc.issuer }}
+          stdin : true
+          resources:
+            {{- toYaml .Values.resources | nindent 12 }}
+          ports:
+            {{- with .Values.ports }}
+            {{- range $key, $port := . }}
+            - name: {{ $key }}
+              {{ toYaml $port | nindent 14 }}
+            {{- end }}
+            {{- end }}
+          livenessProbe:
+            tcpSocket:
+              port: web
+            initialDelaySeconds: 30
+          readinessProbe:
+            tcpSocket:
+              port: web
+            initialDelaySeconds: 30
+          volumeMounts:
+            - name: config
+              mountPath: /etc/nginx/conf.d
+            - name: secret
+              mountPath: /usr/share/certs
+              readOnly: true
+
+      volumes:
+        - name: config
+          configMap:
+            name: {{ template "aether-roc-gui.fullname" . }}
+        - name: secret
+          secret:
+            secretName: {{ template "aether-roc-gui.fullname" . }}-secret
+      {{- with .Values.nodeSelector }}
+      nodeSelector:
+        {{- toYaml . | nindent 8 }}
+      {{- end }}
+    {{- with .Values.affinity }}
+      affinity:
+        {{- toYaml . | nindent 8 }}
+    {{- end }}
+    {{- with .Values.tolerations }}
+      tolerations:
+        {{- toYaml . | nindent 8 }}
+    {{- end }}
diff --git a/aether-roc-gui/templates/ingress.yaml b/aether-roc-gui/templates/ingress.yaml
new file mode 100644
index 0000000..986342e
--- /dev/null
+++ b/aether-roc-gui/templates/ingress.yaml
@@ -0,0 +1,35 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+{{- if .Values.ingress.enabled }}
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  name: {{ template "aether-roc-gui.fullname" . }}-ingress
+  namespace: {{ .Release.Namespace }}
+  labels:
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+  annotations:
+    kubernetes.io/ingress.class: "nginx"
+    nginx.ingress.kubernetes.io/ssl-redirect: "false"
+    nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
+spec:
+  tls:
+    - secretName: {{ template "aether-roc-gui.fullname" . }}-secret
+      hosts:
+        - aether-roc-gui.onosproject.org
+  rules:
+    - host: aether-roc-gui.onosproject.org
+      http:
+        paths:
+          - pathType: Prefix
+            path: "/"
+            backend:
+              service:
+                name: {{ template "aether-roc-gui.fullname" . }}
+                port:
+                  number: {{ .Values.ports.web.containerPort }}
+{{- end }}
diff --git a/aether-roc-gui/templates/role.yaml b/aether-roc-gui/templates/role.yaml
new file mode 100644
index 0000000..1780115
--- /dev/null
+++ b/aether-roc-gui/templates/role.yaml
@@ -0,0 +1,13 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+kind: Role
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  namespace: {{ .Release.Namespace }}
+  name: {{ template "aether-roc-gui.fullname" . }}-service-role
+rules:
+  - apiGroups: [""] # "" indicates the core API group
+    resources: ["services"]
+    verbs: ["get", "watch", "list"]
diff --git a/aether-roc-gui/templates/rolebinding.yaml b/aether-roc-gui/templates/rolebinding.yaml
new file mode 100644
index 0000000..45b5ec1
--- /dev/null
+++ b/aether-roc-gui/templates/rolebinding.yaml
@@ -0,0 +1,17 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+  name: {{ template "aether-roc-gui.fullname" . }}-access-services
+  namespace: {{ .Release.Namespace }}
+subjects:
+  - kind: ServiceAccount
+    name: default # Name is case sensitive
+    namespace: {{ .Release.Namespace }}
+roleRef:
+  kind: Role
+  name: {{ template "aether-roc-gui.fullname" . }}-service-role
+  apiGroup: rbac.authorization.k8s.io
diff --git a/aether-roc-gui/templates/secret.yaml b/aether-roc-gui/templates/secret.yaml
new file mode 100644
index 0000000..c047eed
--- /dev/null
+++ b/aether-roc-gui/templates/secret.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ template "aether-roc-gui.fullname" . }}-secret
+  labels:
+     chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+     release: "{{ .Release.Name }}"
+     heritage: "{{ .Release.Service }}"
+data:
+  {{ $root := . }}
+  {{ range $path, $bytes := .Files.Glob "files/certs/*.*" }}
+  {{ base $path }}: '{{ $root.Files.Get $path | b64enc }}'
+  {{ end }}
+type: Opaque
diff --git a/aether-roc-gui/templates/service.yaml b/aether-roc-gui/templates/service.yaml
new file mode 100644
index 0000000..6faf652
--- /dev/null
+++ b/aether-roc-gui/templates/service.yaml
@@ -0,0 +1,51 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "aether-roc-gui.fullname" . }}
+  labels:
+    app: {{ template "aether-roc-gui.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    {{- include "aether-roc-gui.labels" . | nindent 4 }}
+spec:
+  type: {{ .Values.service.type }}
+  selector:
+    name: {{ template "aether-roc-gui.fullname" . }}
+    app: aether
+    type: arg
+    resource: {{ template "aether-roc-gui.fullname" . }}
+    {{- include "aether-roc-gui.selectorLabels" . | nindent 4 }}
+  ports:
+    - name: web
+      port: 80
+---
+{{- if .Values.service.external.nodePort }}
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "aether-roc-gui.fullname" . }}-external
+  labels:
+    app: {{ template "aether-roc-gui.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    {{- include "aether-roc-gui.labels" . | nindent 4 }}
+spec:
+  type: NodePort
+  selector:
+    name: {{ template "aether-roc-gui.fullname" . }}
+    app: aether
+    type: arg
+    resource: {{ template "aether-roc-gui.fullname" . }}
+    {{- include "aether-roc-gui.selectorLabels" . | nindent 4 }}
+  ports:
+    - name: web
+      port: 80
+      nodePort: {{ .Values.service.external.nodePort }}
+      protocol: TCP
+{{- end }}
diff --git a/aether-roc-gui/values.yaml b/aether-roc-gui/values.yaml
new file mode 100644
index 0000000..db82863
--- /dev/null
+++ b/aether-roc-gui/values.yaml
@@ -0,0 +1,86 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+# Default values for aether-roc-gui.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+replicaCount: 1
+
+image:
+  repository: onosproject/aether-roc-gui
+  tag: v0.7.22
+  pullPolicy: IfNotPresent
+  pullSecrets: []
+
+imagePullSecrets: []
+nameOverride: ""
+fullnameOverride: "aether-roc-gui"
+
+## Client service.
+service:
+  enabled: true
+  ## Service name is user-configurable for maximum service discovery flexibility.
+  name: aether-roc-gui
+  type: LoadBalancer
+  external:
+    nodePort: 31190
+
+ingress:
+  enabled: true
+
+ports:
+  web:
+    containerPort: 80
+    protocol: TCP
+
+# Enable by giving a value like http://dex-ldap-umbrella:5556
+# make sure this is reachable at http://dex-ldap-umbrella:5556/.well-known/openid-configuration
+openidc:
+  issuer:
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  # limits:
+  #   cpu: 100m
+  #   memory: 128Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 128Mi
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity: {}
+
+aetherservices:
+  aether-roc-api:
+    http: 8181
+    protocol: http
+    streamTimeout: 3600
+
+websocket:
+  proxyEnabled: false
+  service: aether-roc-api-websocket
+  protocol: http
+  port: 80
+
+grafana:
+  proxyEnabled: false
+  service: grafana
+  protocol: http
+  port: 80
+
+prometheus:
+  proxyEnabled: false
+  service: prometheus
+  protocol: http
+  port: 80
+
+Nginx:
+  port: 80
diff --git a/config-models/aether-1.x/.helmignore b/config-models/aether-1.x/.helmignore
new file mode 100644
index 0000000..01d4cd9
--- /dev/null
+++ b/config-models/aether-1.x/.helmignore
@@ -0,0 +1,25 @@
+# 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-1.x/Chart.yaml b/config-models/aether-1.x/Chart.yaml
new file mode 100644
index 0000000..40a8be0
--- /dev/null
+++ b/config-models/aether-1.x/Chart.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: config-model-aether
+version: 1.0.4
+kubeVersion: ">=1.18.0"
+appVersion: 1.0.0
+description: Aether config model
+keywords:
+  - onos
+  - sdn
+  - config
+home: https://onosproject.org
+maintainers:
+  - name: ONOS Support
+    email: support@opennetworking.org
diff --git a/config-models/aether-1.x/files/aether-1.0.0.tree b/config-models/aether-1.x/files/aether-1.0.0.tree
new file mode 100644
index 0000000..7c24828
--- /dev/null
+++ b/config-models/aether-1.x/files/aether-1.0.0.tree
@@ -0,0 +1,54 @@
+module: access-profile
+  +--rw access-profile
+     +--rw access-profile* [id]
+        +--rw id             access-profile-id
+        +--rw type?          string
+        +--rw filter?        string
+        +--rw description?   string
+
+module: aether-subscriber
+  +--rw subscriber
+     +--rw ue* [ueid]
+        +--rw ueid             ueid
+        +--rw serving-plmn
+        |  +--rw mcc?   mcc
+        |  +--rw mnc?   mnc
+        |  +--rw tac?   tac
+        +--rw requested-apn?   string
+        +--rw priority?        uint32
+        +--rw enabled?         boolean
+        +--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
+
+module: apn-profile
+  +--rw apn-profile
+     +--rw apn-profile* [id]
+        +--rw id               apn-profile-id
+        +--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: qos-profile
+  +--rw qos-profile
+     +--rw qos-profile* [id]
+        +--rw id             qos-profile-id
+        +--rw apn-ambr
+        |  +--rw uplink?     uint32
+        |  +--rw downlink?   uint32
+        +--rw description?   string
+
+module: up-profile
+  +--rw up-profile
+     +--rw up-profile* [id]
+        +--rw id                up-profile-id
+        +--rw user-plane?       string
+        +--rw access-control?   string
+        +--rw description?      string
diff --git a/config-models/aether-1.x/files/yang/access-profile.yang b/config-models/aether-1.x/files/yang/access-profile.yang
new file mode 100755
index 0000000..29e10a1
--- /dev/null
+++ b/config-models/aether-1.x/files/yang/access-profile.yang
@@ -0,0 +1,64 @@
+// 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-08-18" {
+    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;
+        }
+  }
+
+  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 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-1.x/files/yang/aether-subscriber.yang b/config-models/aether-1.x/files/yang/aether-subscriber.yang
new file mode 100644
index 0000000..963217f
--- /dev/null
+++ b/config-models/aether-1.x/files/yang/aether-subscriber.yang
@@ -0,0 +1,147 @@
+// 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; }
+
+  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-08-18" {
+    description "An Aether Subscriber";
+    reference "RFC 6087";
+  }
+
+  // User Equipment ID (UEID), Basically an IMSI range
+  // examples:
+  //    123456789???????  ... wildcard at the end
+  //    123456???0123455  ... wildcard in the middle
+  //    1234567890000000-123456789000005 ... range
+  typedef ueid {
+      type string {
+          length 1..31;
+      }
+  }
+
+  typedef mcc {
+      type uint32 {
+        range 0..999;
+      }
+  }
+
+  typedef mnc {
+      type uint32 {
+        range 0..999;
+      }
+  }
+
+  typedef tac {
+      type uint32 {
+        range 0..99999999;
+      }
+  }
+
+  container subscriber {
+    description "The top level container";
+
+    list ue {
+      key "ueid";
+      description
+        "List of subscriber devices";
+
+      leaf ueid {
+        description "identifier for this subscriber, may or may not be an IMSI";
+        type ueid;
+      }
+
+      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";
+        }
+      }
+
+      leaf requested-apn {
+        type string {
+            length 1..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";
+      }
+
+      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";
+            }            
+//            type ap:access-profile-id;
+            description
+                "Link to access profile";
+          }
+          leaf allowed {
+            type boolean;
+            default true;
+            description
+              "Allow or disallow this ue to use this access profile";
+          }
+        }
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-1.x/files/yang/apn-profile.yang b/config-models/aether-1.x/files/yang/apn-profile.yang
new file mode 100755
index 0000000..20e1763
--- /dev/null
+++ b/config-models/aether-1.x/files/yang/apn-profile.yang
@@ -0,0 +1,84 @@
+// 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-08-18" {
+    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;
+        }
+  }
+
+  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 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-1.x/files/yang/ietf-inet-types.yang b/config-models/aether-1.x/files/yang/ietf-inet-types.yang
new file mode 100644
index 0000000..eacefb6
--- /dev/null
+++ b/config-models/aether-1.x/files/yang/ietf-inet-types.yang
@@ -0,0 +1,458 @@
+module ietf-inet-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+  prefix "inet";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of types related to protocol fields ***/
+
+  typedef ip-version {
+    type enumeration {
+      enum unknown {
+        value "0";
+        description
+         "An unknown or unspecified version of the Internet
+          protocol.";
+      }
+      enum ipv4 {
+        value "1";
+        description
+         "The IPv4 protocol as defined in RFC 791.";
+      }
+      enum ipv6 {
+        value "2";
+        description
+         "The IPv6 protocol as defined in RFC 2460.";
+      }
+    }
+    description
+     "This value represents the version of the IP protocol.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+    reference
+     "RFC  791: Internet Protocol
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  typedef dscp {
+    type uint8 {
+      range "0..63";
+    }
+    description
+     "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+    reference
+     "RFC 3289: Management Information Base for the Differentiated
+                Services Architecture
+      RFC 2474: Definition of the Differentiated Services Field
+                (DS Field) in the IPv4 and IPv6 Headers
+      RFC 2780: IANA Allocation Guidelines For Values In
+                the Internet Protocol and Related Headers";
+  }
+
+  typedef ipv6-flow-label {
+    type uint32 {
+      range "0..1048575";
+    }
+    description
+     "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+    reference
+     "RFC 3595: Textual Conventions for IPv6 Flow Label
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+  }
+
+  typedef port-number {
+    type uint16 {
+      range "0..65535";
+    }
+    description
+     "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+    reference
+     "RFC  768: User Datagram Protocol
+      RFC  793: Transmission Control Protocol
+      RFC 4960: Stream Control Transmission Protocol
+      RFC 4340: Datagram Congestion Control Protocol (DCCP)
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  /*** collection of types related to autonomous systems ***/
+
+  typedef as-number {
+    type uint32;
+    description
+     "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+    reference
+     "RFC 1930: Guidelines for creation, selection, and registration
+                of an Autonomous System (AS)
+      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+      RFC 4001: Textual Conventions for Internet Network Addresses
+      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+                Number Space";
+  }
+
+  /*** collection of types related to IP addresses and hostnames ***/
+
+  typedef ip-address {
+    type union {
+      type inet:ipv4-address;
+      type inet:ipv6-address;
+    }
+    description
+     "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+      + '(%[\p{N}\p{L}]+)?';
+    }
+    description
+      "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format for the zone index is the numerical
+       format";
+  }
+
+  typedef ipv6-address {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(%[\p{N}\p{L}]+)?';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(%.+)?';
+    }
+    description
+     "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-address-no-zone {
+    type union {
+      type inet:ipv4-address-no-zone;
+      type inet:ipv6-address-no-zone;
+    }
+    description
+     "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address-no-zone {
+    type inet:ipv4-address {
+      pattern '[0-9\.]*';
+    }
+    description
+      "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+  }
+
+  typedef ipv6-address-no-zone {
+    type inet:ipv6-address {
+      pattern '[0-9a-fA-F:\.]*';
+    }
+    description
+      "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-prefix {
+    type union {
+      type inet:ipv4-prefix;
+      type inet:ipv6-prefix;
+    }
+    description
+     "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+  }
+
+  typedef ipv4-prefix {
+    type string {
+      pattern
+         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
+    }
+    description
+     "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+  }
+
+  typedef ipv6-prefix {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(/.+)';
+    }
+
+    description
+     "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+    reference
+     "RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  /*** collection of domain name and URI types ***/
+
+  typedef domain-name {
+    type string {
+      pattern
+        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
+      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
+      + '|\.';
+      length "1..253";
+    }
+    description
+     "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+    reference
+     "RFC  952: DoD Internet Host Table Specification
+      RFC 1034: Domain Names - Concepts and Facilities
+      RFC 1123: Requirements for Internet Hosts -- Application
+                and Support
+      RFC 2782: A DNS RR for specifying the location of services
+                (DNS SRV)
+      RFC 5890: Internationalized Domain Names in Applications
+                (IDNA): Definitions and Document Framework";
+  }
+
+  typedef host {
+    type union {
+      type inet:ip-address;
+      type inet:domain-name;
+    }
+    description
+     "The host type represents either an IP address or a DNS
+      domain name.";
+  }
+
+  typedef uri {
+    type string;
+    description
+     "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+    reference
+     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+                Group: Uniform Resource Identifiers (URIs), URLs,
+                and Uniform Resource Names (URNs): Clarifications
+                and Recommendations
+      RFC 5017: MIB Textual Conventions for Uniform Resource
+                Identifiers (URIs)";
+  }
+
+}
diff --git a/config-models/aether-1.x/files/yang/qos-profile.yang b/config-models/aether-1.x/files/yang/qos-profile.yang
new file mode 100755
index 0000000..257f4ff
--- /dev/null
+++ b/config-models/aether-1.x/files/yang/qos-profile.yang
@@ -0,0 +1,71 @@
+// 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-08-18" {
+    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;
+        }
+  }
+
+  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.";
+      }
+
+      container apn-ambr {
+        leaf uplink {
+          type uint32 {
+            range 0..4294967295;
+          }
+          default 0;
+          units bps;
+          description
+            "Upstream aggregate maximum bit rate";
+        }
+        leaf downlink {
+          type uint32 {
+            range 0..4294967295;
+          }
+          default 0;
+          units bps;
+          description
+            "Downstream aggregate maximum bit rate";
+        }        
+      }
+      
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this profile";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-1.x/files/yang/up-profile.yang b/config-models/aether-1.x/files/yang/up-profile.yang
new file mode 100755
index 0000000..6a43bf4
--- /dev/null
+++ b/config-models/aether-1.x/files/yang/up-profile.yang
@@ -0,0 +1,64 @@
+// 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-08-18" {
+    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;
+        }
+  }
+
+  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 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-1.x/templates/_helpers.tpl b/config-models/aether-1.x/templates/_helpers.tpl
new file mode 100644
index 0000000..0380f1a
--- /dev/null
+++ b/config-models/aether-1.x/templates/_helpers.tpl
@@ -0,0 +1,52 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Expand the name of the chart.
+*/}}
+{{- define "aether.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "aether.fullname" -}}
+{{- if contains "config-model-aether" .Release.Name -}}
+{{- printf "%s-%s" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s-config-model-aether" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "aether.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Common labels
+*/}}
+{{- define "aether.labels" -}}
+helm.sh/chart: {{ include "aether.chart" . }}
+{{ include "aether.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "aether.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "aether.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
+}
diff --git a/config-models/aether-1.x/templates/model.yaml b/config-models/aether-1.x/templates/model.yaml
new file mode 100644
index 0000000..f88e9f2
--- /dev/null
+++ b/config-models/aether-1.x/templates/model.yaml
@@ -0,0 +1,41 @@
+# 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-08-18
+    file: aether-subscriber.yang
+  - name: apn-profile
+    organization: Open Networking Foundation
+    revision: 2020-08-18
+    file: apn-profile.yang
+  - name: up-profile
+    organization: Open Networking Foundation
+    revision: 2020-08-18
+    file: up-profile.yang
+  - name: qos-profile
+    organization: Open Networking Foundation
+    revision: 2020-08-18
+    file: qos-profile.yang
+  - name: access-profile
+    organization: Open Networking Foundation
+    revision: 2020-08-18
+    file: access-profile.yang
+  files:
+    {{- range $path, $_  := $.Files.Glob "files/yang/*.yang" }}
+    {{ base $path }}: |
+{{ $.Files.Get $path | indent 6 }}
+    {{- end }}
diff --git a/config-models/aether-1.x/values.yaml b/config-models/aether-1.x/values.yaml
new file mode 100644
index 0000000..1b22ea4
--- /dev/null
+++ b/config-models/aether-1.x/values.yaml
@@ -0,0 +1,3 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
diff --git a/config-models/aether-2.1.x/.helmignore b/config-models/aether-2.1.x/.helmignore
new file mode 100644
index 0000000..01d4cd9
--- /dev/null
+++ b/config-models/aether-2.1.x/.helmignore
@@ -0,0 +1,25 @@
+# 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.1.x/Chart.yaml b/config-models/aether-2.1.x/Chart.yaml
new file mode 100644
index 0000000..e7ddb89
--- /dev/null
+++ b/config-models/aether-2.1.x/Chart.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: config-model-aether
+version: 2.1.3
+kubeVersion: ">=1.18.0"
+appVersion: 2.1.0
+description: Aether config model
+keywords:
+  - onos
+  - sdn
+  - config
+home: https://onosproject.org
+maintainers:
+  - name: ONOS Support
+    email: support@opennetworking.org
diff --git a/config-models/aether-2.1.x/files/aether-2.1.0.tree b/config-models/aether-2.1.x/files/aether-2.1.0.tree
new file mode 100644
index 0000000..84dd39a
--- /dev/null
+++ b/config-models/aether-2.1.x/files/aether-2.1.0.tree
@@ -0,0 +1,153 @@
+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
+        +--rw service-group?   -> /sg:service-group/service-group/id
+
+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
+        +--rw pcrf-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: service-group
+  +--rw service-group
+     +--rw service-group* [id]
+        +--rw id                  service-group-id
+        +--rw display-name?       string
+        +--rw service-policies* [service-policy]
+        |  +--rw service-policy    -> /serv:service-policy/service-policy/id
+        |  +--rw kind?             service-kind
+        +--rw description?        string
+
+module: service-policy
+  +--rw service-policy
+     +--rw service-policy* [id]
+        +--rw id              service-policy-id
+        +--rw display-name?   string
+        +--rw qci?            uint32
+        +--rw arp?            uint32
+        +--rw ambr
+        |  +--rw uplink?     uint32
+        |  +--rw downlink?   uint32
+        +--rw rules* [rule]
+        |  +--rw rule       -> /sr:service-rule/service-rule/id
+        |  +--rw enabled?   boolean
+        +--rw description?    string
+
+module: service-rule
+  +--rw service-rule
+     +--rw service-rule* [id]
+        +--rw id                    service-rule-id
+        +--rw display-name?         string
+        +--rw charging-rule-name?   string
+        +--rw qos
+        |  +--rw qci?                           uint32
+        |  +--rw arp
+        |  |  +--rw priority?                   uint32
+        |  |  +--rw preemption-capability?      boolean
+        |  |  +--rw preemption-vulnerability?   boolean
+        |  +--rw maximum-requested-bandwidth
+        |  |  +--rw uplink?     uint32
+        |  |  +--rw downlink?   uint32
+        |  +--rw guaranteed-bitrate
+        |  |  +--rw uplink?     uint32
+        |  |  +--rw downlink?   uint32
+        |  +--rw aggregate-maximum-bitrate
+        |     +--rw uplink?     uint32
+        |     +--rw downlink?   uint32
+        +--rw flow
+        |  +--rw specification?   string
+        +--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.1.x/files/yang/access-profile.yang b/config-models/aether-2.1.x/files/yang/access-profile.yang
new file mode 100755
index 0000000..d58a674
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/access-profile.yang
@@ -0,0 +1,71 @@
+// 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;
+        }
+  }
+
+  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.1.x/files/yang/aether-subscriber.yang b/config-models/aether-2.1.x/files/yang/aether-subscriber.yang
new file mode 100755
index 0000000..30f3e52
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/aether-subscriber.yang
@@ -0,0 +1,178 @@
+// 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;
+      }
+  }
+
+  typedef mnc {
+      type uint32 {
+        range 0..999;
+      }
+  }
+
+  typedef tac {
+      type uint32 {
+        range 0..99999999;
+      }
+  }
+
+  container subscriber {
+    description "The top level container";
+
+    list ue {
+      key "id";
+      description
+        "List of subscriber devices";
+
+      leaf id {
+        description "identifier for this subscriber, typically a UUID";
+        type ietf: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;
+            }
+          }
+        }
+        case range {
+          leaf imsi-range-from {
+            type uint64;
+          }
+          leaf imsi-range-to {
+            type uint64;
+          }
+        }
+      }
+
+      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";
+        }
+      }
+
+      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";
+          }
+        }
+        leaf security-profile {
+          type leafref {
+            path "/sec:security-profile/sec:security-profile/sec:id";
+          }              
+          description
+            "Link to security profile";
+        }
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-2.1.x/files/yang/apn-profile.yang b/config-models/aether-2.1.x/files/yang/apn-profile.yang
new file mode 100755
index 0000000..27361dc
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/apn-profile.yang
@@ -0,0 +1,100 @@
+// 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; }
+  import service-group { prefix sg; }
+
+  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 "2021-03-04" {
+    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;
+        }
+  }
+
+  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";
+      }
+
+      leaf service-group {
+        type leafref {
+          path "/sg:service-group/sg:service-group/sg:id";
+        }
+        description
+          "Link to service group";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-2.1.x/files/yang/connectivity-service.yang b/config-models/aether-2.1.x/files/yang/connectivity-service.yang
new file mode 100755
index 0000000..f12340b
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/connectivity-service.yang
@@ -0,0 +1,71 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module connectivity-service {
+  namespace "http://opennetworking.org/aether/connectivity-service";
+  prefix cs;
+
+  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 "2021-03-18" {
+    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 {
+            length 1..32;
+        }
+  }
+
+  container connectivity-service {
+    description "The top level container";
+
+    list connectivity-service {
+      key "id";
+      description
+        "List of connectivity services";
+
+      leaf id {
+        type connectivity-service-id;
+        description "ID for this connectivity service.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }     
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this connectivity service";
+      }
+
+      leaf spgwc-endpoint {
+        type inet:uri;
+        description "url of the spgwc service";
+      }
+
+      leaf hss-endpoint {
+        type inet:uri;
+        description "url of the hss service";
+      }
+
+      leaf pcrf-endpoint {
+        type inet:uri;
+        description "url of the pcrf service";
+      }         
+    }
+  } 
+}
diff --git a/config-models/aether-2.1.x/files/yang/enterprise.yang b/config-models/aether-2.1.x/files/yang/enterprise.yang
new file mode 100755
index 0000000..38cb4b8
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/enterprise.yang
@@ -0,0 +1,73 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module enterprise {
+  namespace "http://opennetworking.org/aether/enterprise";
+  prefix ent;
+
+  import 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";
+
+  revision "2020-11-30" {
+    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 {
+            length 1..32;
+        }
+  }
+
+  container enterprise {
+    description "The top level container";
+
+    list enterprise {
+      key "id";
+      description
+        "List of enterprises";
+
+      leaf id {
+        type enterprise-id;
+        description "ID for this enterprise.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }     
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this enterprise";
+      }
+
+      list connectivity-service {
+        key "connectivity-service";
+        leaf connectivity-service {
+          type leafref {
+            path "/cs:connectivity-service/cs:connectivity-service/cs:id";
+          }            
+          description
+            "Link to connectivity services where configuration should be pushed for this enterprise's devices";
+        }
+        leaf enabled {
+          type boolean;
+          default true;
+          description
+            "Allow or disallow pushes to this connectivity service";
+        }
+      }              
+    }
+  } 
+}
diff --git a/config-models/aether-2.1.x/files/yang/ietf-inet-types.yang b/config-models/aether-2.1.x/files/yang/ietf-inet-types.yang
new file mode 100644
index 0000000..eacefb6
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/ietf-inet-types.yang
@@ -0,0 +1,458 @@
+module ietf-inet-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+  prefix "inet";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of types related to protocol fields ***/
+
+  typedef ip-version {
+    type enumeration {
+      enum unknown {
+        value "0";
+        description
+         "An unknown or unspecified version of the Internet
+          protocol.";
+      }
+      enum ipv4 {
+        value "1";
+        description
+         "The IPv4 protocol as defined in RFC 791.";
+      }
+      enum ipv6 {
+        value "2";
+        description
+         "The IPv6 protocol as defined in RFC 2460.";
+      }
+    }
+    description
+     "This value represents the version of the IP protocol.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+    reference
+     "RFC  791: Internet Protocol
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  typedef dscp {
+    type uint8 {
+      range "0..63";
+    }
+    description
+     "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+    reference
+     "RFC 3289: Management Information Base for the Differentiated
+                Services Architecture
+      RFC 2474: Definition of the Differentiated Services Field
+                (DS Field) in the IPv4 and IPv6 Headers
+      RFC 2780: IANA Allocation Guidelines For Values In
+                the Internet Protocol and Related Headers";
+  }
+
+  typedef ipv6-flow-label {
+    type uint32 {
+      range "0..1048575";
+    }
+    description
+     "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+    reference
+     "RFC 3595: Textual Conventions for IPv6 Flow Label
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+  }
+
+  typedef port-number {
+    type uint16 {
+      range "0..65535";
+    }
+    description
+     "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+    reference
+     "RFC  768: User Datagram Protocol
+      RFC  793: Transmission Control Protocol
+      RFC 4960: Stream Control Transmission Protocol
+      RFC 4340: Datagram Congestion Control Protocol (DCCP)
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  /*** collection of types related to autonomous systems ***/
+
+  typedef as-number {
+    type uint32;
+    description
+     "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+    reference
+     "RFC 1930: Guidelines for creation, selection, and registration
+                of an Autonomous System (AS)
+      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+      RFC 4001: Textual Conventions for Internet Network Addresses
+      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+                Number Space";
+  }
+
+  /*** collection of types related to IP addresses and hostnames ***/
+
+  typedef ip-address {
+    type union {
+      type inet:ipv4-address;
+      type inet:ipv6-address;
+    }
+    description
+     "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+      + '(%[\p{N}\p{L}]+)?';
+    }
+    description
+      "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format for the zone index is the numerical
+       format";
+  }
+
+  typedef ipv6-address {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(%[\p{N}\p{L}]+)?';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(%.+)?';
+    }
+    description
+     "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-address-no-zone {
+    type union {
+      type inet:ipv4-address-no-zone;
+      type inet:ipv6-address-no-zone;
+    }
+    description
+     "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address-no-zone {
+    type inet:ipv4-address {
+      pattern '[0-9\.]*';
+    }
+    description
+      "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+  }
+
+  typedef ipv6-address-no-zone {
+    type inet:ipv6-address {
+      pattern '[0-9a-fA-F:\.]*';
+    }
+    description
+      "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-prefix {
+    type union {
+      type inet:ipv4-prefix;
+      type inet:ipv6-prefix;
+    }
+    description
+     "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+  }
+
+  typedef ipv4-prefix {
+    type string {
+      pattern
+         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
+    }
+    description
+     "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+  }
+
+  typedef ipv6-prefix {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(/.+)';
+    }
+
+    description
+     "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+    reference
+     "RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  /*** collection of domain name and URI types ***/
+
+  typedef domain-name {
+    type string {
+      pattern
+        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
+      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
+      + '|\.';
+      length "1..253";
+    }
+    description
+     "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+    reference
+     "RFC  952: DoD Internet Host Table Specification
+      RFC 1034: Domain Names - Concepts and Facilities
+      RFC 1123: Requirements for Internet Hosts -- Application
+                and Support
+      RFC 2782: A DNS RR for specifying the location of services
+                (DNS SRV)
+      RFC 5890: Internationalized Domain Names in Applications
+                (IDNA): Definitions and Document Framework";
+  }
+
+  typedef host {
+    type union {
+      type inet:ip-address;
+      type inet:domain-name;
+    }
+    description
+     "The host type represents either an IP address or a DNS
+      domain name.";
+  }
+
+  typedef uri {
+    type string;
+    description
+     "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+    reference
+     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+                Group: Uniform Resource Identifiers (URIs), URLs,
+                and Uniform Resource Names (URNs): Clarifications
+                and Recommendations
+      RFC 5017: MIB Textual Conventions for Uniform Resource
+                Identifiers (URIs)";
+  }
+
+}
diff --git a/config-models/aether-2.1.x/files/yang/ietf-yang-types.yang b/config-models/aether-2.1.x/files/yang/ietf-yang-types.yang
new file mode 100644
index 0000000..ee58fa3
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/ietf-yang-types.yang
@@ -0,0 +1,474 @@
+module ietf-yang-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+  prefix "yang";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - yang-identifier
+      - hex-string
+      - uuid
+      - dotted-quad";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of counter and gauge types ***/
+
+  typedef counter32 {
+    type uint32;
+    description
+     "The counter32 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter32 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter32 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter32.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter32 {
+    type yang:counter32;
+    default "0";
+    description
+     "The zero-based-counter32 type represents a counter32
+      that has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter32 textual convention of the SMIv2.";
+    reference
+      "RFC 4502: Remote Network Monitoring Management Information
+                 Base Version 2";
+  }
+
+  typedef counter64 {
+    type uint64;
+    description
+     "The counter64 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter64 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter64 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter64.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter64 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter64 {
+    type yang:counter64;
+    default "0";
+    description
+     "The zero-based-counter64 type represents a counter64 that
+      has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter64 textual convention of the SMIv2.";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  typedef gauge32 {
+    type uint32;
+    description
+     "The gauge32 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^32-1 (4294967295 decimal), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge32 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge32 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the Gauge32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef gauge64 {
+    type uint64;
+    description
+     "The gauge64 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^64-1 (18446744073709551615), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge64 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge64 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the CounterBasedGauge64 SMIv2 textual convention defined
+      in RFC 2856";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  /*** collection of identifier-related types ***/
+
+  typedef object-identifier {
+    type string {
+      pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+            + '(\.(0|([1-9]\d*)))*';
+    }
+    description
+     "The object-identifier type represents administratively
+      assigned names in a registration-hierarchical-name tree.
+
+      Values of this type are denoted as a sequence of numerical
+      non-negative sub-identifier values.  Each sub-identifier
+      value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
+      are separated by single dots and without any intermediate
+      whitespace.
+
+      The ASN.1 standard restricts the value space of the first
+      sub-identifier to 0, 1, or 2.  Furthermore, the value space
+      of the second sub-identifier is restricted to the range
+      0 to 39 if the first sub-identifier is 0 or 1.  Finally,
+      the ASN.1 standard requires that an object identifier
+      has always at least two sub-identifiers.  The pattern
+      captures these restrictions.
+
+      Although the number of sub-identifiers is not limited,
+      module designers should realize that there may be
+      implementations that stick with the SMIv2 limit of 128
+      sub-identifiers.
+
+      This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+      since it is not restricted to 128 sub-identifiers.  Hence,
+      this type SHOULD NOT be used to represent the SMIv2 OBJECT
+      IDENTIFIER type; the object-identifier-128 type SHOULD be
+      used instead.";
+    reference
+     "ISO9834-1: Information technology -- Open Systems
+      Interconnection -- Procedures for the operation of OSI
+      Registration Authorities: General procedures and top
+      arcs of the ASN.1 Object Identifier tree";
+  }
+
+  typedef object-identifier-128 {
+    type object-identifier {
+      pattern '\d*(\.\d*){1,127}';
+    }
+    description
+     "This type represents object-identifiers restricted to 128
+      sub-identifiers.
+
+      In the value set and its semantics, this type is equivalent
+      to the OBJECT IDENTIFIER type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef yang-identifier {
+    type string {
+      length "1..max";
+      pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
+      pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
+    }
+    description
+      "A YANG identifier string as defined by the 'identifier'
+       rule in Section 12 of RFC 6020.  An identifier must
+       start with an alphabetic character or an underscore
+       followed by an arbitrary sequence of alphabetic or
+       numeric characters, underscores, hyphens, or dots.
+
+       A YANG identifier MUST NOT start with any possible
+       combination of the lowercase or uppercase character
+       sequence 'xml'.";
+    reference
+      "RFC 6020: YANG - A Data Modeling Language for the Network
+                 Configuration Protocol (NETCONF)";
+  }
+
+  /*** collection of types related to date and time***/
+
+  typedef date-and-time {
+    type string {
+      pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+            + '(Z|[\+\-]\d{2}:\d{2})';
+    }
+    description
+     "The date-and-time type is a profile of the ISO 8601
+      standard for representation of dates and times using the
+      Gregorian calendar.  The profile is defined by the
+      date-time production in Section 5.6 of RFC 3339.
+
+      The date-and-time type is compatible with the dateTime XML
+      schema type with the following notable exceptions:
+
+      (a) The date-and-time type does not allow negative years.
+
+      (b) The date-and-time time-offset -00:00 indicates an unknown
+          time zone (see RFC 3339) while -00:00 and +00:00 and Z
+          all represent the same time zone in dateTime.
+
+      (c) The canonical format (see below) of data-and-time values
+          differs from the canonical format used by the dateTime XML
+          schema type, which requires all times to be in UTC using
+          the time-offset 'Z'.
+
+      This type is not equivalent to the DateAndTime textual
+      convention of the SMIv2 since RFC 3339 uses a different
+      separator between full-date and full-time and provides
+      higher resolution of time-secfrac.
+
+      The canonical format for date-and-time values with a known time
+      zone uses a numeric time zone offset that is calculated using
+      the device's configured known offset to UTC time.  A change of
+      the device's offset to UTC time will cause date-and-time values
+      to change accordingly.  Such changes might happen periodically
+      in case a server follows automatically daylight saving time
+      (DST) time zone offset changes.  The canonical format for
+      date-and-time values with an unknown time zone (usually
+      referring to the notion of local time) uses the time-offset
+      -00:00.";
+    reference
+     "RFC 3339: Date and Time on the Internet: Timestamps
+      RFC 2579: Textual Conventions for SMIv2
+      XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+  }
+
+  typedef timeticks {
+    type uint32;
+    description
+     "The timeticks type represents a non-negative integer that
+      represents the time, modulo 2^32 (4294967296 decimal), in
+      hundredths of a second between two epochs.  When a schema
+      node is defined that uses this type, the description of
+      the schema node identifies both of the reference epochs.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeTicks type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef timestamp {
+    type yang:timeticks;
+    description
+     "The timestamp type represents the value of an associated
+      timeticks schema node at which a specific occurrence
+      happened.  The specific occurrence must be defined in the
+      description of any schema node defined using this type.  When
+      the specific occurrence occurred prior to the last time the
+      associated timeticks attribute was zero, then the timestamp
+      value is zero.  Note that this requires all timestamp values
+      to be reset to zero when the value of the associated timeticks
+      attribute reaches 497+ days and wraps around to zero.
+
+      The associated timeticks schema node must be specified
+      in the description of any schema node using this type.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeStamp textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of generic address types ***/
+
+  typedef phys-address {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+
+    description
+     "Represents media- or physical-level addresses represented
+      as a sequence octets, each octet represented by two hexadecimal
+      numbers.  Octets are separated by colons.  The canonical
+      representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the PhysAddress textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  typedef mac-address {
+    type string {
+      pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
+    }
+    description
+     "The mac-address type represents an IEEE 802 MAC address.
+      The canonical representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the MacAddress textual convention of the SMIv2.";
+    reference
+     "IEEE 802: IEEE Standard for Local and Metropolitan Area
+                Networks: Overview and Architecture
+      RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of XML-specific types ***/
+
+  typedef xpath1.0 {
+    type string;
+    description
+     "This type represents an XPATH 1.0 expression.
+
+      When a schema node is defined that uses this type, the
+      description of the schema node MUST specify the XPath
+      context in which the XPath expression is evaluated.";
+    reference
+     "XPATH: XML Path Language (XPath) Version 1.0";
+  }
+
+  /*** collection of string types ***/
+
+  typedef hex-string {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+    description
+     "A hexadecimal string with octets represented as hex digits
+      separated by colons.  The canonical representation uses
+      lowercase characters.";
+  }
+
+  typedef uuid {
+    type string {
+      pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+            + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
+    }
+    description
+     "A Universally Unique IDentifier in the string representation
+      defined in RFC 4122.  The canonical representation uses
+      lowercase characters.
+
+      The following is an example of a UUID in string representation:
+      f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+      ";
+    reference
+     "RFC 4122: A Universally Unique IDentifier (UUID) URN
+                Namespace";
+  }
+
+  typedef dotted-quad {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
+    }
+    description
+      "An unsigned 32-bit number expressed in the dotted-quad
+       notation, i.e., four octets written as decimal numbers
+       and separated with the '.' (full stop) character.";
+  }
+}
diff --git a/config-models/aether-2.1.x/files/yang/qos-profile.yang b/config-models/aether-2.1.x/files/yang/qos-profile.yang
new file mode 100755
index 0000000..5ad91b4
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/qos-profile.yang
@@ -0,0 +1,111 @@
+// 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;
+        }
+  }
+
+  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;
+          }
+          default 0;
+          units bps;
+          description
+            "Upstream aggregate maximum bit rate";
+        }
+        leaf downlink {
+          type uint32 {
+            range 0..4294967295;
+          }
+          default 0;
+          units bps;
+          description
+            "Downstream aggregate maximum bit rate";
+        }        
+      }
+
+      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.1.x/files/yang/security-profile.yang b/config-models/aether-2.1.x/files/yang/security-profile.yang
new file mode 100755
index 0000000..a8a3069
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/security-profile.yang
@@ -0,0 +1,73 @@
+// 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;
+        }
+  }
+
+  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.1.x/files/yang/service-group.yang b/config-models/aether-2.1.x/files/yang/service-group.yang
new file mode 100755
index 0000000..9f2e7da
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/service-group.yang
@@ -0,0 +1,80 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module service-group {
+  namespace "http://opennetworking.org/aether/service-group";
+  prefix sg;
+
+  import service-policy { prefix serv; }
+
+  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 "2021-03-04" {
+    description "An Aether Service Group";
+    reference "RFC 6087";
+  }
+
+  typedef service-group-id {
+        type string {
+            length 1..32;
+        }
+  }
+
+  typedef service-kind {
+    type string {
+      length 1..32;
+      pattern "default|on-demand";
+    }
+  }
+
+  container service-group {
+    description "The top level container";
+
+    list service-group {
+      key "id";
+      description
+        "List of service groups";
+
+      leaf id {
+        type service-group-id;
+        description "ID for this service group.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      list service-policies {
+        key "service-policy";
+        leaf service-policy {
+          type leafref {
+            path "/serv:service-policy/serv:service-policy/serv:id";
+          }
+          description
+              "Link to service policy";
+        }
+        leaf kind {    
+          type service-kind;
+          default "default";
+          description
+            "Type of service link";
+        }
+      }      
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this service group";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-2.1.x/files/yang/service-policy.yang b/config-models/aether-2.1.x/files/yang/service-policy.yang
new file mode 100755
index 0000000..a0db158
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/service-policy.yang
@@ -0,0 +1,112 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module service-policy {
+  namespace "http://opennetworking.org/aether/service-policy";
+  prefix serv;
+
+  import service-rule { prefix sr; }
+
+  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 "2021-03-04" {
+    description "An Aether Service";
+    reference "RFC 6087";
+  }
+
+  typedef service-policy-id {
+        type string {
+            length 1..32;
+        }
+  }
+
+  container service-policy {
+    description "The top level container";
+
+    list service-policy {
+      key "id";
+      description
+        "List of services";
+
+      leaf id {
+        type service-policy-id;
+        description "ID for this service.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf qci {
+        type uint32 {
+          range 0..85;
+        }
+        default 9;
+        description
+          "QoS Class Identifier";
+      }
+
+      leaf arp {
+        type uint32 {
+          range 0..15;
+        }
+        default 9;
+        description
+          "Evolved-ARP";
+      }      
+
+      container ambr {
+        leaf uplink {
+          type uint32 {
+            range 0..4294967295;
+          }
+          default 0;
+          units bps;
+          description
+            "Upstream aggregate maximum bit rate";
+        }
+        leaf downlink {
+          type uint32 {
+            range 0..4294967295;
+          }
+          default 0;
+          units bps;
+          description
+            "Downstream aggregate maximum bit rate";
+        }        
+      }
+
+      list rules {
+        key "rule";
+        leaf rule {
+          type leafref {
+            path "/sr:service-rule/sr:service-rule/sr:id";
+          }
+          description
+              "Link to service rule";
+        }
+        leaf enabled {
+          type boolean;
+          default true;
+          description
+            "Enable or disable this service to use this rule";
+        }
+      }       
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this profile";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-2.1.x/files/yang/service-rule.yang b/config-models/aether-2.1.x/files/yang/service-rule.yang
new file mode 100755
index 0000000..5dce127
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/service-rule.yang
@@ -0,0 +1,168 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module service-rule {
+  namespace "http://opennetworking.org/aether/service-rule";
+  prefix sr;
+
+  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 "2021-03-04" {
+    description "An Aether Service Rule";
+    reference "RFC 6087";
+  }
+
+  typedef service-rule-id {
+        type string {
+            length 1..32;
+        }
+  }
+
+  container service-rule {
+    description "The top level container";
+
+    list service-rule {
+      key "id";
+      description
+        "List of service rules";
+
+      leaf id {
+        type service-rule-id;
+        description "ID for this service.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf charging-rule-name {
+        type string {
+            length 1..80;
+        }
+        description "name of charging rule";
+      }
+
+      container qos {
+        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";
+        }
+
+        container maximum-requested-bandwidth {
+          leaf uplink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Upstream maximum requested bandwidth";
+          }
+          leaf downlink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Downstream maximum requested bandwidth";
+          }        
+        }
+
+        container guaranteed-bitrate {
+          leaf uplink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Upstream guaranteed bitrate";
+          }
+          leaf downlink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Downstream guaranteed bitrate";
+          }        
+        }
+
+        container aggregate-maximum-bitrate {
+          leaf uplink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Upstream aggregate maximum bitrate";
+          }
+          leaf downlink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Downstream aggregate maximum bitrate";
+          }        
+        }
+      }
+  
+      container flow {
+        leaf specification {
+          type string {
+            length 1..1024;
+          }
+          description "specification of this flow";
+        }
+      }
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this rule";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-2.1.x/files/yang/up-profile.yang b/config-models/aether-2.1.x/files/yang/up-profile.yang
new file mode 100755
index 0000000..9a38b02
--- /dev/null
+++ b/config-models/aether-2.1.x/files/yang/up-profile.yang
@@ -0,0 +1,71 @@
+// 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;
+        }
+  }
+
+  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.1.x/templates/_helpers.tpl b/config-models/aether-2.1.x/templates/_helpers.tpl
new file mode 100644
index 0000000..0380f1a
--- /dev/null
+++ b/config-models/aether-2.1.x/templates/_helpers.tpl
@@ -0,0 +1,52 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Expand the name of the chart.
+*/}}
+{{- define "aether.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "aether.fullname" -}}
+{{- if contains "config-model-aether" .Release.Name -}}
+{{- printf "%s-%s" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s-config-model-aether" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "aether.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Common labels
+*/}}
+{{- define "aether.labels" -}}
+helm.sh/chart: {{ include "aether.chart" . }}
+{{ include "aether.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "aether.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "aether.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
+}
diff --git a/config-models/aether-2.1.x/templates/model.yaml b/config-models/aether-2.1.x/templates/model.yaml
new file mode 100644
index 0000000..84d2fbb
--- /dev/null
+++ b/config-models/aether-2.1.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: aether-subscriber
+    organization: Open Networking Foundation
+    revision: 2020-10-22
+    file: aether-subscriber.yang
+  - name: apn-profile
+    organization: Open Networking Foundation
+    revision: 2021-03-04
+    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: 2021-03-18
+    file: connectivity-service.yang
+  - name: security-profile
+    organization: Open Networking Foundation
+    revision: 2020-11-30
+    file: security-profile.yang
+  - name: service-group
+    organization: Open Networking Foundation
+    revision: 2021-03-04
+    file: service-group.yang
+  - name: service-policy
+    organization: Open Networking Foundation
+    revision: 2021-03-04
+    file: service-policy.yang
+  - name: service-rule
+    organization: Open Networking Foundation
+    revision: 2021-03-04
+    file: service-rule.yang
+  files:
+    {{- range $path, $_  := $.Files.Glob "files/yang/*.yang" }}
+    {{ base $path }}: |
+{{ $.Files.Get $path | indent 6 }}
+    {{- end }}
diff --git a/config-models/aether-2.1.x/values.yaml b/config-models/aether-2.1.x/values.yaml
new file mode 100644
index 0000000..2e984ed
--- /dev/null
+++ b/config-models/aether-2.1.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.2.x/Chart.yaml b/config-models/aether-2.2.x/Chart.yaml
new file mode 100644
index 0000000..cbeac17
--- /dev/null
+++ b/config-models/aether-2.2.x/Chart.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: config-model-aether
+version: 2.2.3
+kubeVersion: ">=1.18.0"
+appVersion: 2.2.0
+description: Aether config model
+keywords:
+  - onos
+  - sdn
+  - config
+home: https://onosproject.org
+maintainers:
+  - name: ONOS Support
+    email: support@opennetworking.org
diff --git a/config-models/aether-2.2.x/files/aether-2.2.0.tree b/config-models/aether-2.2.x/files/aether-2.2.0.tree
new file mode 100644
index 0000000..2336f65
--- /dev/null
+++ b/config-models/aether-2.2.x/files/aether-2.2.0.tree
@@ -0,0 +1,155 @@
+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
+        +--rw service-group?   -> /sg:service-group/service-group/id
+
+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
+        +--rw pcrf-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 imsi-range-from?   uint64
+        +--rw imsi-range-to?     uint64
+        +--rw key?               string
+        +--rw opc?               string
+        +--rw sqn?               uint32
+        +--rw description?       string
+
+module: service-group
+  +--rw service-group
+     +--rw service-group* [id]
+        +--rw id                  service-group-id
+        +--rw display-name?       string
+        +--rw service-policies* [service-policy]
+        |  +--rw service-policy    -> /serv:service-policy/service-policy/id
+        |  +--rw kind?             service-kind
+        +--rw description?        string
+
+module: service-policy
+  +--rw service-policy
+     +--rw service-policy* [id]
+        +--rw id              service-policy-id
+        +--rw display-name?   string
+        +--rw qci?            uint32
+        +--rw arp?            uint32
+        +--rw ambr
+        |  +--rw uplink?     uint32
+        |  +--rw downlink?   uint32
+        +--rw rules* [rule]
+        |  +--rw rule       -> /sr:service-rule/service-rule/id
+        |  +--rw enabled?   boolean
+        +--rw description?    string
+
+module: service-rule
+  +--rw service-rule
+     +--rw service-rule* [id]
+        +--rw id                    service-rule-id
+        +--rw display-name?         string
+        +--rw charging-rule-name?   string
+        +--rw qos
+        |  +--rw qci?                           uint32
+        |  +--rw arp
+        |  |  +--rw priority?                   uint32
+        |  |  +--rw preemption-capability?      boolean
+        |  |  +--rw preemption-vulnerability?   boolean
+        |  +--rw maximum-requested-bandwidth
+        |  |  +--rw uplink?     uint32
+        |  |  +--rw downlink?   uint32
+        |  +--rw guaranteed-bitrate
+        |  |  +--rw uplink?     uint32
+        |  |  +--rw downlink?   uint32
+        |  +--rw aggregate-maximum-bitrate
+        |     +--rw uplink?     uint32
+        |     +--rw downlink?   uint32
+        +--rw flow
+        |  +--rw specification?   string
+        +--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.2.x/files/yang/access-profile.yang b/config-models/aether-2.2.x/files/yang/access-profile.yang
new file mode 100755
index 0000000..d58a674
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/access-profile.yang
@@ -0,0 +1,71 @@
+// 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;
+        }
+  }
+
+  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.2.x/files/yang/aether-subscriber.yang b/config-models/aether-2.2.x/files/yang/aether-subscriber.yang
new file mode 100755
index 0000000..30f3e52
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/aether-subscriber.yang
@@ -0,0 +1,178 @@
+// 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;
+      }
+  }
+
+  typedef mnc {
+      type uint32 {
+        range 0..999;
+      }
+  }
+
+  typedef tac {
+      type uint32 {
+        range 0..99999999;
+      }
+  }
+
+  container subscriber {
+    description "The top level container";
+
+    list ue {
+      key "id";
+      description
+        "List of subscriber devices";
+
+      leaf id {
+        description "identifier for this subscriber, typically a UUID";
+        type ietf: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;
+            }
+          }
+        }
+        case range {
+          leaf imsi-range-from {
+            type uint64;
+          }
+          leaf imsi-range-to {
+            type uint64;
+          }
+        }
+      }
+
+      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";
+        }
+      }
+
+      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";
+          }
+        }
+        leaf security-profile {
+          type leafref {
+            path "/sec:security-profile/sec:security-profile/sec:id";
+          }              
+          description
+            "Link to security profile";
+        }
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-2.2.x/files/yang/apn-profile.yang b/config-models/aether-2.2.x/files/yang/apn-profile.yang
new file mode 100755
index 0000000..27361dc
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/apn-profile.yang
@@ -0,0 +1,100 @@
+// 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; }
+  import service-group { prefix sg; }
+
+  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 "2021-03-04" {
+    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;
+        }
+  }
+
+  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";
+      }
+
+      leaf service-group {
+        type leafref {
+          path "/sg:service-group/sg:service-group/sg:id";
+        }
+        description
+          "Link to service group";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-2.2.x/files/yang/connectivity-service.yang b/config-models/aether-2.2.x/files/yang/connectivity-service.yang
new file mode 100755
index 0000000..f12340b
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/connectivity-service.yang
@@ -0,0 +1,71 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module connectivity-service {
+  namespace "http://opennetworking.org/aether/connectivity-service";
+  prefix cs;
+
+  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 "2021-03-18" {
+    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 {
+            length 1..32;
+        }
+  }
+
+  container connectivity-service {
+    description "The top level container";
+
+    list connectivity-service {
+      key "id";
+      description
+        "List of connectivity services";
+
+      leaf id {
+        type connectivity-service-id;
+        description "ID for this connectivity service.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }     
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this connectivity service";
+      }
+
+      leaf spgwc-endpoint {
+        type inet:uri;
+        description "url of the spgwc service";
+      }
+
+      leaf hss-endpoint {
+        type inet:uri;
+        description "url of the hss service";
+      }
+
+      leaf pcrf-endpoint {
+        type inet:uri;
+        description "url of the pcrf service";
+      }         
+    }
+  } 
+}
diff --git a/config-models/aether-2.2.x/files/yang/enterprise.yang b/config-models/aether-2.2.x/files/yang/enterprise.yang
new file mode 100755
index 0000000..38cb4b8
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/enterprise.yang
@@ -0,0 +1,73 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module enterprise {
+  namespace "http://opennetworking.org/aether/enterprise";
+  prefix ent;
+
+  import 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";
+
+  revision "2020-11-30" {
+    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 {
+            length 1..32;
+        }
+  }
+
+  container enterprise {
+    description "The top level container";
+
+    list enterprise {
+      key "id";
+      description
+        "List of enterprises";
+
+      leaf id {
+        type enterprise-id;
+        description "ID for this enterprise.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }     
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this enterprise";
+      }
+
+      list connectivity-service {
+        key "connectivity-service";
+        leaf connectivity-service {
+          type leafref {
+            path "/cs:connectivity-service/cs:connectivity-service/cs:id";
+          }            
+          description
+            "Link to connectivity services where configuration should be pushed for this enterprise's devices";
+        }
+        leaf enabled {
+          type boolean;
+          default true;
+          description
+            "Allow or disallow pushes to this connectivity service";
+        }
+      }              
+    }
+  } 
+}
diff --git a/config-models/aether-2.2.x/files/yang/ietf-inet-types.yang b/config-models/aether-2.2.x/files/yang/ietf-inet-types.yang
new file mode 100644
index 0000000..eacefb6
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/ietf-inet-types.yang
@@ -0,0 +1,458 @@
+module ietf-inet-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+  prefix "inet";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of types related to protocol fields ***/
+
+  typedef ip-version {
+    type enumeration {
+      enum unknown {
+        value "0";
+        description
+         "An unknown or unspecified version of the Internet
+          protocol.";
+      }
+      enum ipv4 {
+        value "1";
+        description
+         "The IPv4 protocol as defined in RFC 791.";
+      }
+      enum ipv6 {
+        value "2";
+        description
+         "The IPv6 protocol as defined in RFC 2460.";
+      }
+    }
+    description
+     "This value represents the version of the IP protocol.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+    reference
+     "RFC  791: Internet Protocol
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  typedef dscp {
+    type uint8 {
+      range "0..63";
+    }
+    description
+     "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+    reference
+     "RFC 3289: Management Information Base for the Differentiated
+                Services Architecture
+      RFC 2474: Definition of the Differentiated Services Field
+                (DS Field) in the IPv4 and IPv6 Headers
+      RFC 2780: IANA Allocation Guidelines For Values In
+                the Internet Protocol and Related Headers";
+  }
+
+  typedef ipv6-flow-label {
+    type uint32 {
+      range "0..1048575";
+    }
+    description
+     "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+    reference
+     "RFC 3595: Textual Conventions for IPv6 Flow Label
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+  }
+
+  typedef port-number {
+    type uint16 {
+      range "0..65535";
+    }
+    description
+     "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+    reference
+     "RFC  768: User Datagram Protocol
+      RFC  793: Transmission Control Protocol
+      RFC 4960: Stream Control Transmission Protocol
+      RFC 4340: Datagram Congestion Control Protocol (DCCP)
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  /*** collection of types related to autonomous systems ***/
+
+  typedef as-number {
+    type uint32;
+    description
+     "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+    reference
+     "RFC 1930: Guidelines for creation, selection, and registration
+                of an Autonomous System (AS)
+      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+      RFC 4001: Textual Conventions for Internet Network Addresses
+      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+                Number Space";
+  }
+
+  /*** collection of types related to IP addresses and hostnames ***/
+
+  typedef ip-address {
+    type union {
+      type inet:ipv4-address;
+      type inet:ipv6-address;
+    }
+    description
+     "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+      + '(%[\p{N}\p{L}]+)?';
+    }
+    description
+      "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format for the zone index is the numerical
+       format";
+  }
+
+  typedef ipv6-address {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(%[\p{N}\p{L}]+)?';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(%.+)?';
+    }
+    description
+     "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-address-no-zone {
+    type union {
+      type inet:ipv4-address-no-zone;
+      type inet:ipv6-address-no-zone;
+    }
+    description
+     "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address-no-zone {
+    type inet:ipv4-address {
+      pattern '[0-9\.]*';
+    }
+    description
+      "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+  }
+
+  typedef ipv6-address-no-zone {
+    type inet:ipv6-address {
+      pattern '[0-9a-fA-F:\.]*';
+    }
+    description
+      "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-prefix {
+    type union {
+      type inet:ipv4-prefix;
+      type inet:ipv6-prefix;
+    }
+    description
+     "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+  }
+
+  typedef ipv4-prefix {
+    type string {
+      pattern
+         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
+    }
+    description
+     "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+  }
+
+  typedef ipv6-prefix {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(/.+)';
+    }
+
+    description
+     "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+    reference
+     "RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  /*** collection of domain name and URI types ***/
+
+  typedef domain-name {
+    type string {
+      pattern
+        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
+      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
+      + '|\.';
+      length "1..253";
+    }
+    description
+     "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+    reference
+     "RFC  952: DoD Internet Host Table Specification
+      RFC 1034: Domain Names - Concepts and Facilities
+      RFC 1123: Requirements for Internet Hosts -- Application
+                and Support
+      RFC 2782: A DNS RR for specifying the location of services
+                (DNS SRV)
+      RFC 5890: Internationalized Domain Names in Applications
+                (IDNA): Definitions and Document Framework";
+  }
+
+  typedef host {
+    type union {
+      type inet:ip-address;
+      type inet:domain-name;
+    }
+    description
+     "The host type represents either an IP address or a DNS
+      domain name.";
+  }
+
+  typedef uri {
+    type string;
+    description
+     "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+    reference
+     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+                Group: Uniform Resource Identifiers (URIs), URLs,
+                and Uniform Resource Names (URNs): Clarifications
+                and Recommendations
+      RFC 5017: MIB Textual Conventions for Uniform Resource
+                Identifiers (URIs)";
+  }
+
+}
diff --git a/config-models/aether-2.2.x/files/yang/ietf-yang-types.yang b/config-models/aether-2.2.x/files/yang/ietf-yang-types.yang
new file mode 100644
index 0000000..ee58fa3
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/ietf-yang-types.yang
@@ -0,0 +1,474 @@
+module ietf-yang-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+  prefix "yang";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - yang-identifier
+      - hex-string
+      - uuid
+      - dotted-quad";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of counter and gauge types ***/
+
+  typedef counter32 {
+    type uint32;
+    description
+     "The counter32 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter32 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter32 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter32.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter32 {
+    type yang:counter32;
+    default "0";
+    description
+     "The zero-based-counter32 type represents a counter32
+      that has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter32 textual convention of the SMIv2.";
+    reference
+      "RFC 4502: Remote Network Monitoring Management Information
+                 Base Version 2";
+  }
+
+  typedef counter64 {
+    type uint64;
+    description
+     "The counter64 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter64 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter64 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter64.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter64 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter64 {
+    type yang:counter64;
+    default "0";
+    description
+     "The zero-based-counter64 type represents a counter64 that
+      has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter64 textual convention of the SMIv2.";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  typedef gauge32 {
+    type uint32;
+    description
+     "The gauge32 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^32-1 (4294967295 decimal), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge32 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge32 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the Gauge32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef gauge64 {
+    type uint64;
+    description
+     "The gauge64 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^64-1 (18446744073709551615), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge64 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge64 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the CounterBasedGauge64 SMIv2 textual convention defined
+      in RFC 2856";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  /*** collection of identifier-related types ***/
+
+  typedef object-identifier {
+    type string {
+      pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+            + '(\.(0|([1-9]\d*)))*';
+    }
+    description
+     "The object-identifier type represents administratively
+      assigned names in a registration-hierarchical-name tree.
+
+      Values of this type are denoted as a sequence of numerical
+      non-negative sub-identifier values.  Each sub-identifier
+      value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
+      are separated by single dots and without any intermediate
+      whitespace.
+
+      The ASN.1 standard restricts the value space of the first
+      sub-identifier to 0, 1, or 2.  Furthermore, the value space
+      of the second sub-identifier is restricted to the range
+      0 to 39 if the first sub-identifier is 0 or 1.  Finally,
+      the ASN.1 standard requires that an object identifier
+      has always at least two sub-identifiers.  The pattern
+      captures these restrictions.
+
+      Although the number of sub-identifiers is not limited,
+      module designers should realize that there may be
+      implementations that stick with the SMIv2 limit of 128
+      sub-identifiers.
+
+      This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+      since it is not restricted to 128 sub-identifiers.  Hence,
+      this type SHOULD NOT be used to represent the SMIv2 OBJECT
+      IDENTIFIER type; the object-identifier-128 type SHOULD be
+      used instead.";
+    reference
+     "ISO9834-1: Information technology -- Open Systems
+      Interconnection -- Procedures for the operation of OSI
+      Registration Authorities: General procedures and top
+      arcs of the ASN.1 Object Identifier tree";
+  }
+
+  typedef object-identifier-128 {
+    type object-identifier {
+      pattern '\d*(\.\d*){1,127}';
+    }
+    description
+     "This type represents object-identifiers restricted to 128
+      sub-identifiers.
+
+      In the value set and its semantics, this type is equivalent
+      to the OBJECT IDENTIFIER type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef yang-identifier {
+    type string {
+      length "1..max";
+      pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
+      pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
+    }
+    description
+      "A YANG identifier string as defined by the 'identifier'
+       rule in Section 12 of RFC 6020.  An identifier must
+       start with an alphabetic character or an underscore
+       followed by an arbitrary sequence of alphabetic or
+       numeric characters, underscores, hyphens, or dots.
+
+       A YANG identifier MUST NOT start with any possible
+       combination of the lowercase or uppercase character
+       sequence 'xml'.";
+    reference
+      "RFC 6020: YANG - A Data Modeling Language for the Network
+                 Configuration Protocol (NETCONF)";
+  }
+
+  /*** collection of types related to date and time***/
+
+  typedef date-and-time {
+    type string {
+      pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+            + '(Z|[\+\-]\d{2}:\d{2})';
+    }
+    description
+     "The date-and-time type is a profile of the ISO 8601
+      standard for representation of dates and times using the
+      Gregorian calendar.  The profile is defined by the
+      date-time production in Section 5.6 of RFC 3339.
+
+      The date-and-time type is compatible with the dateTime XML
+      schema type with the following notable exceptions:
+
+      (a) The date-and-time type does not allow negative years.
+
+      (b) The date-and-time time-offset -00:00 indicates an unknown
+          time zone (see RFC 3339) while -00:00 and +00:00 and Z
+          all represent the same time zone in dateTime.
+
+      (c) The canonical format (see below) of data-and-time values
+          differs from the canonical format used by the dateTime XML
+          schema type, which requires all times to be in UTC using
+          the time-offset 'Z'.
+
+      This type is not equivalent to the DateAndTime textual
+      convention of the SMIv2 since RFC 3339 uses a different
+      separator between full-date and full-time and provides
+      higher resolution of time-secfrac.
+
+      The canonical format for date-and-time values with a known time
+      zone uses a numeric time zone offset that is calculated using
+      the device's configured known offset to UTC time.  A change of
+      the device's offset to UTC time will cause date-and-time values
+      to change accordingly.  Such changes might happen periodically
+      in case a server follows automatically daylight saving time
+      (DST) time zone offset changes.  The canonical format for
+      date-and-time values with an unknown time zone (usually
+      referring to the notion of local time) uses the time-offset
+      -00:00.";
+    reference
+     "RFC 3339: Date and Time on the Internet: Timestamps
+      RFC 2579: Textual Conventions for SMIv2
+      XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+  }
+
+  typedef timeticks {
+    type uint32;
+    description
+     "The timeticks type represents a non-negative integer that
+      represents the time, modulo 2^32 (4294967296 decimal), in
+      hundredths of a second between two epochs.  When a schema
+      node is defined that uses this type, the description of
+      the schema node identifies both of the reference epochs.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeTicks type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef timestamp {
+    type yang:timeticks;
+    description
+     "The timestamp type represents the value of an associated
+      timeticks schema node at which a specific occurrence
+      happened.  The specific occurrence must be defined in the
+      description of any schema node defined using this type.  When
+      the specific occurrence occurred prior to the last time the
+      associated timeticks attribute was zero, then the timestamp
+      value is zero.  Note that this requires all timestamp values
+      to be reset to zero when the value of the associated timeticks
+      attribute reaches 497+ days and wraps around to zero.
+
+      The associated timeticks schema node must be specified
+      in the description of any schema node using this type.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeStamp textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of generic address types ***/
+
+  typedef phys-address {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+
+    description
+     "Represents media- or physical-level addresses represented
+      as a sequence octets, each octet represented by two hexadecimal
+      numbers.  Octets are separated by colons.  The canonical
+      representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the PhysAddress textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  typedef mac-address {
+    type string {
+      pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
+    }
+    description
+     "The mac-address type represents an IEEE 802 MAC address.
+      The canonical representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the MacAddress textual convention of the SMIv2.";
+    reference
+     "IEEE 802: IEEE Standard for Local and Metropolitan Area
+                Networks: Overview and Architecture
+      RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of XML-specific types ***/
+
+  typedef xpath1.0 {
+    type string;
+    description
+     "This type represents an XPATH 1.0 expression.
+
+      When a schema node is defined that uses this type, the
+      description of the schema node MUST specify the XPath
+      context in which the XPath expression is evaluated.";
+    reference
+     "XPATH: XML Path Language (XPath) Version 1.0";
+  }
+
+  /*** collection of string types ***/
+
+  typedef hex-string {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+    description
+     "A hexadecimal string with octets represented as hex digits
+      separated by colons.  The canonical representation uses
+      lowercase characters.";
+  }
+
+  typedef uuid {
+    type string {
+      pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+            + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
+    }
+    description
+     "A Universally Unique IDentifier in the string representation
+      defined in RFC 4122.  The canonical representation uses
+      lowercase characters.
+
+      The following is an example of a UUID in string representation:
+      f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+      ";
+    reference
+     "RFC 4122: A Universally Unique IDentifier (UUID) URN
+                Namespace";
+  }
+
+  typedef dotted-quad {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
+    }
+    description
+      "An unsigned 32-bit number expressed in the dotted-quad
+       notation, i.e., four octets written as decimal numbers
+       and separated with the '.' (full stop) character.";
+  }
+}
diff --git a/config-models/aether-2.2.x/files/yang/qos-profile.yang b/config-models/aether-2.2.x/files/yang/qos-profile.yang
new file mode 100755
index 0000000..5ad91b4
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/qos-profile.yang
@@ -0,0 +1,111 @@
+// 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;
+        }
+  }
+
+  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;
+          }
+          default 0;
+          units bps;
+          description
+            "Upstream aggregate maximum bit rate";
+        }
+        leaf downlink {
+          type uint32 {
+            range 0..4294967295;
+          }
+          default 0;
+          units bps;
+          description
+            "Downstream aggregate maximum bit rate";
+        }        
+      }
+
+      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.2.x/files/yang/security-profile.yang b/config-models/aether-2.2.x/files/yang/security-profile.yang
new file mode 100755
index 0000000..745b88e
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/security-profile.yang
@@ -0,0 +1,83 @@
+// 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 "2021-05-10" {
+    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;
+        }
+  }
+
+  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 imsi-range-from {
+        type uint64;
+        description "Starting IMSI in range to apply this security profile to";
+      }
+
+      leaf imsi-range-to {
+        type uint64;
+        description "Ending IMSI in range to apply this security profile to";
+      }
+
+      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.2.x/files/yang/service-group.yang b/config-models/aether-2.2.x/files/yang/service-group.yang
new file mode 100755
index 0000000..9f2e7da
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/service-group.yang
@@ -0,0 +1,80 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module service-group {
+  namespace "http://opennetworking.org/aether/service-group";
+  prefix sg;
+
+  import service-policy { prefix serv; }
+
+  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 "2021-03-04" {
+    description "An Aether Service Group";
+    reference "RFC 6087";
+  }
+
+  typedef service-group-id {
+        type string {
+            length 1..32;
+        }
+  }
+
+  typedef service-kind {
+    type string {
+      length 1..32;
+      pattern "default|on-demand";
+    }
+  }
+
+  container service-group {
+    description "The top level container";
+
+    list service-group {
+      key "id";
+      description
+        "List of service groups";
+
+      leaf id {
+        type service-group-id;
+        description "ID for this service group.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      list service-policies {
+        key "service-policy";
+        leaf service-policy {
+          type leafref {
+            path "/serv:service-policy/serv:service-policy/serv:id";
+          }
+          description
+              "Link to service policy";
+        }
+        leaf kind {    
+          type service-kind;
+          default "default";
+          description
+            "Type of service link";
+        }
+      }      
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this service group";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-2.2.x/files/yang/service-policy.yang b/config-models/aether-2.2.x/files/yang/service-policy.yang
new file mode 100755
index 0000000..a0db158
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/service-policy.yang
@@ -0,0 +1,112 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module service-policy {
+  namespace "http://opennetworking.org/aether/service-policy";
+  prefix serv;
+
+  import service-rule { prefix sr; }
+
+  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 "2021-03-04" {
+    description "An Aether Service";
+    reference "RFC 6087";
+  }
+
+  typedef service-policy-id {
+        type string {
+            length 1..32;
+        }
+  }
+
+  container service-policy {
+    description "The top level container";
+
+    list service-policy {
+      key "id";
+      description
+        "List of services";
+
+      leaf id {
+        type service-policy-id;
+        description "ID for this service.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf qci {
+        type uint32 {
+          range 0..85;
+        }
+        default 9;
+        description
+          "QoS Class Identifier";
+      }
+
+      leaf arp {
+        type uint32 {
+          range 0..15;
+        }
+        default 9;
+        description
+          "Evolved-ARP";
+      }      
+
+      container ambr {
+        leaf uplink {
+          type uint32 {
+            range 0..4294967295;
+          }
+          default 0;
+          units bps;
+          description
+            "Upstream aggregate maximum bit rate";
+        }
+        leaf downlink {
+          type uint32 {
+            range 0..4294967295;
+          }
+          default 0;
+          units bps;
+          description
+            "Downstream aggregate maximum bit rate";
+        }        
+      }
+
+      list rules {
+        key "rule";
+        leaf rule {
+          type leafref {
+            path "/sr:service-rule/sr:service-rule/sr:id";
+          }
+          description
+              "Link to service rule";
+        }
+        leaf enabled {
+          type boolean;
+          default true;
+          description
+            "Enable or disable this service to use this rule";
+        }
+      }       
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this profile";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-2.2.x/files/yang/service-rule.yang b/config-models/aether-2.2.x/files/yang/service-rule.yang
new file mode 100755
index 0000000..5dce127
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/service-rule.yang
@@ -0,0 +1,168 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module service-rule {
+  namespace "http://opennetworking.org/aether/service-rule";
+  prefix sr;
+
+  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 "2021-03-04" {
+    description "An Aether Service Rule";
+    reference "RFC 6087";
+  }
+
+  typedef service-rule-id {
+        type string {
+            length 1..32;
+        }
+  }
+
+  container service-rule {
+    description "The top level container";
+
+    list service-rule {
+      key "id";
+      description
+        "List of service rules";
+
+      leaf id {
+        type service-rule-id;
+        description "ID for this service.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }
+
+      leaf charging-rule-name {
+        type string {
+            length 1..80;
+        }
+        description "name of charging rule";
+      }
+
+      container qos {
+        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";
+        }
+
+        container maximum-requested-bandwidth {
+          leaf uplink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Upstream maximum requested bandwidth";
+          }
+          leaf downlink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Downstream maximum requested bandwidth";
+          }        
+        }
+
+        container guaranteed-bitrate {
+          leaf uplink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Upstream guaranteed bitrate";
+          }
+          leaf downlink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Downstream guaranteed bitrate";
+          }        
+        }
+
+        container aggregate-maximum-bitrate {
+          leaf uplink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Upstream aggregate maximum bitrate";
+          }
+          leaf downlink {
+            type uint32 {
+              range 0..4294967295;
+            }
+            default 0;
+            units bps;
+            description
+              "Downstream aggregate maximum bitrate";
+          }        
+        }
+      }
+  
+      container flow {
+        leaf specification {
+          type string {
+            length 1..1024;
+          }
+          description "specification of this flow";
+        }
+      }
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this rule";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-2.2.x/files/yang/up-profile.yang b/config-models/aether-2.2.x/files/yang/up-profile.yang
new file mode 100755
index 0000000..9a38b02
--- /dev/null
+++ b/config-models/aether-2.2.x/files/yang/up-profile.yang
@@ -0,0 +1,71 @@
+// 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;
+        }
+  }
+
+  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.2.x/templates/_helpers.tpl b/config-models/aether-2.2.x/templates/_helpers.tpl
new file mode 100644
index 0000000..0380f1a
--- /dev/null
+++ b/config-models/aether-2.2.x/templates/_helpers.tpl
@@ -0,0 +1,52 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Expand the name of the chart.
+*/}}
+{{- define "aether.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "aether.fullname" -}}
+{{- if contains "config-model-aether" .Release.Name -}}
+{{- printf "%s-%s" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s-config-model-aether" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "aether.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Common labels
+*/}}
+{{- define "aether.labels" -}}
+helm.sh/chart: {{ include "aether.chart" . }}
+{{ include "aether.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "aether.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "aether.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
+}
diff --git a/config-models/aether-2.2.x/templates/model.yaml b/config-models/aether-2.2.x/templates/model.yaml
new file mode 100644
index 0000000..302c031
--- /dev/null
+++ b/config-models/aether-2.2.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: aether-subscriber
+    organization: Open Networking Foundation
+    revision: 2020-10-22
+    file: aether-subscriber.yang
+  - name: apn-profile
+    organization: Open Networking Foundation
+    revision: 2021-03-04
+    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: 2021-03-18
+    file: connectivity-service.yang
+  - name: security-profile
+    organization: Open Networking Foundation
+    revision: 2021-05-10
+    file: security-profile.yang
+  - name: service-group
+    organization: Open Networking Foundation
+    revision: 2021-03-04
+    file: service-group.yang
+  - name: service-policy
+    organization: Open Networking Foundation
+    revision: 2021-03-04
+    file: service-policy.yang
+  - name: service-rule
+    organization: Open Networking Foundation
+    revision: 2021-03-04
+    file: service-rule.yang
+  files:
+    {{- range $path, $_  := $.Files.Glob "files/yang/*.yang" }}
+    {{ base $path }}: |
+{{ $.Files.Get $path | indent 6 }}
+    {{- end }}
diff --git a/config-models/aether-2.2.x/values.yaml b/config-models/aether-2.2.x/values.yaml
new file mode 100644
index 0000000..2e984ed
--- /dev/null
+++ b/config-models/aether-2.2.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
new file mode 100644
index 0000000..01d4cd9
--- /dev/null
+++ b/config-models/aether-2.x/.helmignore
@@ -0,0 +1,25 @@
+# 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/Chart.yaml b/config-models/aether-2.x/Chart.yaml
new file mode 100644
index 0000000..0378168
--- /dev/null
+++ b/config-models/aether-2.x/Chart.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: config-model-aether
+version: 2.0.2
+kubeVersion: ">=1.18.0"
+appVersion: 2.0.0
+description: Aether config model
+keywords:
+  - onos
+  - sdn
+  - config
+home: https://onosproject.org
+maintainers:
+  - name: ONOS Support
+    email: support@opennetworking.org
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
new file mode 100644
index 0000000..df204d5
--- /dev/null
+++ b/config-models/aether-2.x/files/aether-2.0.0.tree
@@ -0,0 +1,101 @@
+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
new file mode 100755
index 0000000..d58a674
--- /dev/null
+++ b/config-models/aether-2.x/files/yang/access-profile.yang
@@ -0,0 +1,71 @@
+// 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;
+        }
+  }
+
+  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
new file mode 100755
index 0000000..30f3e52
--- /dev/null
+++ b/config-models/aether-2.x/files/yang/aether-subscriber.yang
@@ -0,0 +1,178 @@
+// 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;
+      }
+  }
+
+  typedef mnc {
+      type uint32 {
+        range 0..999;
+      }
+  }
+
+  typedef tac {
+      type uint32 {
+        range 0..99999999;
+      }
+  }
+
+  container subscriber {
+    description "The top level container";
+
+    list ue {
+      key "id";
+      description
+        "List of subscriber devices";
+
+      leaf id {
+        description "identifier for this subscriber, typically a UUID";
+        type ietf: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;
+            }
+          }
+        }
+        case range {
+          leaf imsi-range-from {
+            type uint64;
+          }
+          leaf imsi-range-to {
+            type uint64;
+          }
+        }
+      }
+
+      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";
+        }
+      }
+
+      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";
+          }
+        }
+        leaf security-profile {
+          type leafref {
+            path "/sec:security-profile/sec:security-profile/sec:id";
+          }              
+          description
+            "Link to security profile";
+        }
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-2.x/files/yang/apn-profile.yang b/config-models/aether-2.x/files/yang/apn-profile.yang
new file mode 100755
index 0000000..df18024
--- /dev/null
+++ b/config-models/aether-2.x/files/yang/apn-profile.yang
@@ -0,0 +1,91 @@
+// 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;
+        }
+  }
+
+  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/connectivity-service.yang b/config-models/aether-2.x/files/yang/connectivity-service.yang
new file mode 100755
index 0000000..1343a0d
--- /dev/null
+++ b/config-models/aether-2.x/files/yang/connectivity-service.yang
@@ -0,0 +1,66 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module connectivity-service {
+  namespace "http://opennetworking.org/aether/connectivity-service";
+  prefix cs;
+
+  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-11-30" {
+    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 {
+            length 1..32;
+        }
+  }
+
+  container connectivity-service {
+    description "The top level container";
+
+    list connectivity-service {
+      key "id";
+      description
+        "List of connectivity services";
+
+      leaf id {
+        type connectivity-service-id;
+        description "ID for this connectivity service.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }     
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this connectivity service";
+      }
+
+      leaf spgwc-endpoint {
+        type inet:uri;
+        description "url of the spgwc service";
+      }
+
+      leaf hss-endpoint {
+        type inet:uri;
+        description "url of the hss service";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-2.x/files/yang/enterprise.yang b/config-models/aether-2.x/files/yang/enterprise.yang
new file mode 100755
index 0000000..38cb4b8
--- /dev/null
+++ b/config-models/aether-2.x/files/yang/enterprise.yang
@@ -0,0 +1,73 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module enterprise {
+  namespace "http://opennetworking.org/aether/enterprise";
+  prefix ent;
+
+  import 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";
+
+  revision "2020-11-30" {
+    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 {
+            length 1..32;
+        }
+  }
+
+  container enterprise {
+    description "The top level container";
+
+    list enterprise {
+      key "id";
+      description
+        "List of enterprises";
+
+      leaf id {
+        type enterprise-id;
+        description "ID for this enterprise.";
+      }
+
+      leaf display-name {
+        type string {
+            length 1..80;
+        }
+        description "display name to use in GUI or CLI";
+      }     
+
+      leaf description {
+        type string {
+          length 1..100;
+        }
+        description "description of this enterprise";
+      }
+
+      list connectivity-service {
+        key "connectivity-service";
+        leaf connectivity-service {
+          type leafref {
+            path "/cs:connectivity-service/cs:connectivity-service/cs:id";
+          }            
+          description
+            "Link to connectivity services where configuration should be pushed for this enterprise's devices";
+        }
+        leaf enabled {
+          type boolean;
+          default true;
+          description
+            "Allow or disallow pushes to this connectivity service";
+        }
+      }              
+    }
+  } 
+}
diff --git a/config-models/aether-2.x/files/yang/ietf-inet-types.yang b/config-models/aether-2.x/files/yang/ietf-inet-types.yang
new file mode 100644
index 0000000..eacefb6
--- /dev/null
+++ b/config-models/aether-2.x/files/yang/ietf-inet-types.yang
@@ -0,0 +1,458 @@
+module ietf-inet-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+  prefix "inet";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of types related to protocol fields ***/
+
+  typedef ip-version {
+    type enumeration {
+      enum unknown {
+        value "0";
+        description
+         "An unknown or unspecified version of the Internet
+          protocol.";
+      }
+      enum ipv4 {
+        value "1";
+        description
+         "The IPv4 protocol as defined in RFC 791.";
+      }
+      enum ipv6 {
+        value "2";
+        description
+         "The IPv6 protocol as defined in RFC 2460.";
+      }
+    }
+    description
+     "This value represents the version of the IP protocol.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+    reference
+     "RFC  791: Internet Protocol
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  typedef dscp {
+    type uint8 {
+      range "0..63";
+    }
+    description
+     "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+    reference
+     "RFC 3289: Management Information Base for the Differentiated
+                Services Architecture
+      RFC 2474: Definition of the Differentiated Services Field
+                (DS Field) in the IPv4 and IPv6 Headers
+      RFC 2780: IANA Allocation Guidelines For Values In
+                the Internet Protocol and Related Headers";
+  }
+
+  typedef ipv6-flow-label {
+    type uint32 {
+      range "0..1048575";
+    }
+    description
+     "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+    reference
+     "RFC 3595: Textual Conventions for IPv6 Flow Label
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+  }
+
+  typedef port-number {
+    type uint16 {
+      range "0..65535";
+    }
+    description
+     "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+    reference
+     "RFC  768: User Datagram Protocol
+      RFC  793: Transmission Control Protocol
+      RFC 4960: Stream Control Transmission Protocol
+      RFC 4340: Datagram Congestion Control Protocol (DCCP)
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  /*** collection of types related to autonomous systems ***/
+
+  typedef as-number {
+    type uint32;
+    description
+     "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+    reference
+     "RFC 1930: Guidelines for creation, selection, and registration
+                of an Autonomous System (AS)
+      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+      RFC 4001: Textual Conventions for Internet Network Addresses
+      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+                Number Space";
+  }
+
+  /*** collection of types related to IP addresses and hostnames ***/
+
+  typedef ip-address {
+    type union {
+      type inet:ipv4-address;
+      type inet:ipv6-address;
+    }
+    description
+     "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+      + '(%[\p{N}\p{L}]+)?';
+    }
+    description
+      "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format for the zone index is the numerical
+       format";
+  }
+
+  typedef ipv6-address {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(%[\p{N}\p{L}]+)?';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(%.+)?';
+    }
+    description
+     "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-address-no-zone {
+    type union {
+      type inet:ipv4-address-no-zone;
+      type inet:ipv6-address-no-zone;
+    }
+    description
+     "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address-no-zone {
+    type inet:ipv4-address {
+      pattern '[0-9\.]*';
+    }
+    description
+      "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+  }
+
+  typedef ipv6-address-no-zone {
+    type inet:ipv6-address {
+      pattern '[0-9a-fA-F:\.]*';
+    }
+    description
+      "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-prefix {
+    type union {
+      type inet:ipv4-prefix;
+      type inet:ipv6-prefix;
+    }
+    description
+     "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+  }
+
+  typedef ipv4-prefix {
+    type string {
+      pattern
+         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
+    }
+    description
+     "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+  }
+
+  typedef ipv6-prefix {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(/.+)';
+    }
+
+    description
+     "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+    reference
+     "RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  /*** collection of domain name and URI types ***/
+
+  typedef domain-name {
+    type string {
+      pattern
+        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
+      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
+      + '|\.';
+      length "1..253";
+    }
+    description
+     "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+    reference
+     "RFC  952: DoD Internet Host Table Specification
+      RFC 1034: Domain Names - Concepts and Facilities
+      RFC 1123: Requirements for Internet Hosts -- Application
+                and Support
+      RFC 2782: A DNS RR for specifying the location of services
+                (DNS SRV)
+      RFC 5890: Internationalized Domain Names in Applications
+                (IDNA): Definitions and Document Framework";
+  }
+
+  typedef host {
+    type union {
+      type inet:ip-address;
+      type inet:domain-name;
+    }
+    description
+     "The host type represents either an IP address or a DNS
+      domain name.";
+  }
+
+  typedef uri {
+    type string;
+    description
+     "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+    reference
+     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+                Group: Uniform Resource Identifiers (URIs), URLs,
+                and Uniform Resource Names (URNs): Clarifications
+                and Recommendations
+      RFC 5017: MIB Textual Conventions for Uniform Resource
+                Identifiers (URIs)";
+  }
+
+}
diff --git a/config-models/aether-2.x/files/yang/ietf-yang-types.yang b/config-models/aether-2.x/files/yang/ietf-yang-types.yang
new file mode 100644
index 0000000..ee58fa3
--- /dev/null
+++ b/config-models/aether-2.x/files/yang/ietf-yang-types.yang
@@ -0,0 +1,474 @@
+module ietf-yang-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+  prefix "yang";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - yang-identifier
+      - hex-string
+      - uuid
+      - dotted-quad";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of counter and gauge types ***/
+
+  typedef counter32 {
+    type uint32;
+    description
+     "The counter32 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter32 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter32 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter32.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter32 {
+    type yang:counter32;
+    default "0";
+    description
+     "The zero-based-counter32 type represents a counter32
+      that has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter32 textual convention of the SMIv2.";
+    reference
+      "RFC 4502: Remote Network Monitoring Management Information
+                 Base Version 2";
+  }
+
+  typedef counter64 {
+    type uint64;
+    description
+     "The counter64 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter64 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter64 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter64.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter64 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter64 {
+    type yang:counter64;
+    default "0";
+    description
+     "The zero-based-counter64 type represents a counter64 that
+      has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter64 textual convention of the SMIv2.";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  typedef gauge32 {
+    type uint32;
+    description
+     "The gauge32 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^32-1 (4294967295 decimal), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge32 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge32 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the Gauge32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef gauge64 {
+    type uint64;
+    description
+     "The gauge64 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^64-1 (18446744073709551615), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge64 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge64 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the CounterBasedGauge64 SMIv2 textual convention defined
+      in RFC 2856";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  /*** collection of identifier-related types ***/
+
+  typedef object-identifier {
+    type string {
+      pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+            + '(\.(0|([1-9]\d*)))*';
+    }
+    description
+     "The object-identifier type represents administratively
+      assigned names in a registration-hierarchical-name tree.
+
+      Values of this type are denoted as a sequence of numerical
+      non-negative sub-identifier values.  Each sub-identifier
+      value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
+      are separated by single dots and without any intermediate
+      whitespace.
+
+      The ASN.1 standard restricts the value space of the first
+      sub-identifier to 0, 1, or 2.  Furthermore, the value space
+      of the second sub-identifier is restricted to the range
+      0 to 39 if the first sub-identifier is 0 or 1.  Finally,
+      the ASN.1 standard requires that an object identifier
+      has always at least two sub-identifiers.  The pattern
+      captures these restrictions.
+
+      Although the number of sub-identifiers is not limited,
+      module designers should realize that there may be
+      implementations that stick with the SMIv2 limit of 128
+      sub-identifiers.
+
+      This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+      since it is not restricted to 128 sub-identifiers.  Hence,
+      this type SHOULD NOT be used to represent the SMIv2 OBJECT
+      IDENTIFIER type; the object-identifier-128 type SHOULD be
+      used instead.";
+    reference
+     "ISO9834-1: Information technology -- Open Systems
+      Interconnection -- Procedures for the operation of OSI
+      Registration Authorities: General procedures and top
+      arcs of the ASN.1 Object Identifier tree";
+  }
+
+  typedef object-identifier-128 {
+    type object-identifier {
+      pattern '\d*(\.\d*){1,127}';
+    }
+    description
+     "This type represents object-identifiers restricted to 128
+      sub-identifiers.
+
+      In the value set and its semantics, this type is equivalent
+      to the OBJECT IDENTIFIER type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef yang-identifier {
+    type string {
+      length "1..max";
+      pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
+      pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
+    }
+    description
+      "A YANG identifier string as defined by the 'identifier'
+       rule in Section 12 of RFC 6020.  An identifier must
+       start with an alphabetic character or an underscore
+       followed by an arbitrary sequence of alphabetic or
+       numeric characters, underscores, hyphens, or dots.
+
+       A YANG identifier MUST NOT start with any possible
+       combination of the lowercase or uppercase character
+       sequence 'xml'.";
+    reference
+      "RFC 6020: YANG - A Data Modeling Language for the Network
+                 Configuration Protocol (NETCONF)";
+  }
+
+  /*** collection of types related to date and time***/
+
+  typedef date-and-time {
+    type string {
+      pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+            + '(Z|[\+\-]\d{2}:\d{2})';
+    }
+    description
+     "The date-and-time type is a profile of the ISO 8601
+      standard for representation of dates and times using the
+      Gregorian calendar.  The profile is defined by the
+      date-time production in Section 5.6 of RFC 3339.
+
+      The date-and-time type is compatible with the dateTime XML
+      schema type with the following notable exceptions:
+
+      (a) The date-and-time type does not allow negative years.
+
+      (b) The date-and-time time-offset -00:00 indicates an unknown
+          time zone (see RFC 3339) while -00:00 and +00:00 and Z
+          all represent the same time zone in dateTime.
+
+      (c) The canonical format (see below) of data-and-time values
+          differs from the canonical format used by the dateTime XML
+          schema type, which requires all times to be in UTC using
+          the time-offset 'Z'.
+
+      This type is not equivalent to the DateAndTime textual
+      convention of the SMIv2 since RFC 3339 uses a different
+      separator between full-date and full-time and provides
+      higher resolution of time-secfrac.
+
+      The canonical format for date-and-time values with a known time
+      zone uses a numeric time zone offset that is calculated using
+      the device's configured known offset to UTC time.  A change of
+      the device's offset to UTC time will cause date-and-time values
+      to change accordingly.  Such changes might happen periodically
+      in case a server follows automatically daylight saving time
+      (DST) time zone offset changes.  The canonical format for
+      date-and-time values with an unknown time zone (usually
+      referring to the notion of local time) uses the time-offset
+      -00:00.";
+    reference
+     "RFC 3339: Date and Time on the Internet: Timestamps
+      RFC 2579: Textual Conventions for SMIv2
+      XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+  }
+
+  typedef timeticks {
+    type uint32;
+    description
+     "The timeticks type represents a non-negative integer that
+      represents the time, modulo 2^32 (4294967296 decimal), in
+      hundredths of a second between two epochs.  When a schema
+      node is defined that uses this type, the description of
+      the schema node identifies both of the reference epochs.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeTicks type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef timestamp {
+    type yang:timeticks;
+    description
+     "The timestamp type represents the value of an associated
+      timeticks schema node at which a specific occurrence
+      happened.  The specific occurrence must be defined in the
+      description of any schema node defined using this type.  When
+      the specific occurrence occurred prior to the last time the
+      associated timeticks attribute was zero, then the timestamp
+      value is zero.  Note that this requires all timestamp values
+      to be reset to zero when the value of the associated timeticks
+      attribute reaches 497+ days and wraps around to zero.
+
+      The associated timeticks schema node must be specified
+      in the description of any schema node using this type.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeStamp textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of generic address types ***/
+
+  typedef phys-address {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+
+    description
+     "Represents media- or physical-level addresses represented
+      as a sequence octets, each octet represented by two hexadecimal
+      numbers.  Octets are separated by colons.  The canonical
+      representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the PhysAddress textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  typedef mac-address {
+    type string {
+      pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
+    }
+    description
+     "The mac-address type represents an IEEE 802 MAC address.
+      The canonical representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the MacAddress textual convention of the SMIv2.";
+    reference
+     "IEEE 802: IEEE Standard for Local and Metropolitan Area
+                Networks: Overview and Architecture
+      RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of XML-specific types ***/
+
+  typedef xpath1.0 {
+    type string;
+    description
+     "This type represents an XPATH 1.0 expression.
+
+      When a schema node is defined that uses this type, the
+      description of the schema node MUST specify the XPath
+      context in which the XPath expression is evaluated.";
+    reference
+     "XPATH: XML Path Language (XPath) Version 1.0";
+  }
+
+  /*** collection of string types ***/
+
+  typedef hex-string {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+    description
+     "A hexadecimal string with octets represented as hex digits
+      separated by colons.  The canonical representation uses
+      lowercase characters.";
+  }
+
+  typedef uuid {
+    type string {
+      pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+            + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
+    }
+    description
+     "A Universally Unique IDentifier in the string representation
+      defined in RFC 4122.  The canonical representation uses
+      lowercase characters.
+
+      The following is an example of a UUID in string representation:
+      f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+      ";
+    reference
+     "RFC 4122: A Universally Unique IDentifier (UUID) URN
+                Namespace";
+  }
+
+  typedef dotted-quad {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
+    }
+    description
+      "An unsigned 32-bit number expressed in the dotted-quad
+       notation, i.e., four octets written as decimal numbers
+       and separated with the '.' (full stop) character.";
+  }
+}
diff --git a/config-models/aether-2.x/files/yang/qos-profile.yang b/config-models/aether-2.x/files/yang/qos-profile.yang
new file mode 100755
index 0000000..5ad91b4
--- /dev/null
+++ b/config-models/aether-2.x/files/yang/qos-profile.yang
@@ -0,0 +1,111 @@
+// 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;
+        }
+  }
+
+  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;
+          }
+          default 0;
+          units bps;
+          description
+            "Upstream aggregate maximum bit rate";
+        }
+        leaf downlink {
+          type uint32 {
+            range 0..4294967295;
+          }
+          default 0;
+          units bps;
+          description
+            "Downstream aggregate maximum bit rate";
+        }        
+      }
+
+      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
new file mode 100755
index 0000000..a8a3069
--- /dev/null
+++ b/config-models/aether-2.x/files/yang/security-profile.yang
@@ -0,0 +1,73 @@
+// 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;
+        }
+  }
+
+  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
new file mode 100755
index 0000000..9a38b02
--- /dev/null
+++ b/config-models/aether-2.x/files/yang/up-profile.yang
@@ -0,0 +1,71 @@
+// 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;
+        }
+  }
+
+  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/_helpers.tpl b/config-models/aether-2.x/templates/_helpers.tpl
new file mode 100644
index 0000000..0380f1a
--- /dev/null
+++ b/config-models/aether-2.x/templates/_helpers.tpl
@@ -0,0 +1,52 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Expand the name of the chart.
+*/}}
+{{- define "aether.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "aether.fullname" -}}
+{{- if contains "config-model-aether" .Release.Name -}}
+{{- printf "%s-%s" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s-config-model-aether" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "aether.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Common labels
+*/}}
+{{- define "aether.labels" -}}
+helm.sh/chart: {{ include "aether.chart" . }}
+{{ include "aether.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "aether.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "aether.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
+}
diff --git a/config-models/aether-2.x/templates/model.yaml b/config-models/aether-2.x/templates/model.yaml
new file mode 100644
index 0000000..787912e
--- /dev/null
+++ b/config-models/aether-2.x/templates/model.yaml
@@ -0,0 +1,53 @@
+# 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
new file mode 100644
index 0000000..1b22ea4
--- /dev/null
+++ b/config-models/aether-2.x/values.yaml
@@ -0,0 +1,3 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
diff --git a/config-models/aether-3.x/Chart.yaml b/config-models/aether-3.x/Chart.yaml
new file mode 100644
index 0000000..79c5a63
--- /dev/null
+++ b/config-models/aether-3.x/Chart.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: config-model-aether
+version: 3.0.13
+kubeVersion: ">=1.18.0"
+appVersion: 3.0.0
+description: Aether config model
+keywords:
+  - onos
+  - sdn
+  - config
+home: https://onosproject.org
+maintainers:
+  - name: ONOS Support
+    email: support@opennetworking.org
diff --git a/config-models/aether-3.x/files/aether-3.0.0.tree b/config-models/aether-3.x/files/aether-3.0.0.tree
new file mode 100644
index 0000000..f23f176
--- /dev/null
+++ b/config-models/aether-3.x/files/aether-3.0.0.tree
@@ -0,0 +1,140 @@
+module: ap-list
+  +--rw ap-list
+     +--rw ap-list* [id]
+        +--rw id               ap-list-id
+        +--rw access-points* [address]
+        |  +--rw address    inet:host
+        |  +--rw tac        at:tac
+        |  +--rw enable?    boolean
+        +--rw display-name?    string
+        +--rw description?     at:description
+        +--rw enterprise       -> /ent:enterprise/enterprise/id
+
+module: application
+  +--rw application
+     +--rw application* [id]
+        +--rw id              application-id
+        +--rw display-name?   string
+        +--rw description?    at:description
+        +--rw endpoint* [name]
+        |  +--rw name          string
+        |  +--rw address       ietf:host
+        |  +--rw port-start    ietf:port-number
+        |  +--rw port-end?     ietf:port-number
+        |  +--rw protocol?     at:protocol
+        +--rw enterprise      -> /ent:enterprise/enterprise/id
+
+module: connectivity-service
+  +--rw connectivity-service
+     +--rw connectivity-service* [id]
+        +--rw id                  connectivity-service-id
+        +--rw display-name?       string
+        +--rw description?        at:description
+        +--rw spgwc-endpoint?     inet:uri
+        +--rw hss-endpoint?       inet:uri
+        +--rw pcrf-endpoint?      inet:uri
+        +--rw core-5g-endpoint?   inet:uri
+
+module: device-group
+  +--rw device-group
+     +--rw device-group* [id]
+        +--rw id              device-group-id
+        +--rw description?    at:description
+        +--rw display-name?   string
+        +--rw imsis* [name]
+        |  +--rw name               string
+        |  +--rw imsi-range-from?   uint64
+        |  +--rw imsi-range-to?     uint64
+        +--rw ip-domain?      -> /ipd:ip-domain/ip-domain/id
+        +--rw site            -> /st:site/site/id
+
+module: 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: 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: site
+  +--rw site
+     +--rw site* [id]
+        +--rw id                 site-id
+        +--rw display-name?      string
+        +--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: template
+  +--rw template
+     +--rw template* [id]
+        +--rw id               template-id
+        +--rw display-name?    string
+        +--rw sst?             at:sst
+        +--rw sd?              at:sd
+        +--rw uplink?          uint32
+        +--rw downlink?        uint32
+        +--rw traffic-class?   -> /tc:traffic-class/traffic-class/id
+        +--rw description?     at:description
+
+module: traffic-class
+  +--rw traffic-class
+     +--rw traffic-class* [id]
+        +--rw id              traffic-class-id
+        +--rw display-name?   string
+        +--rw pelr?           at:pelr
+        +--rw pdb?            at:pdb
+        +--rw qci?            at:qci
+        +--rw description?    at:description
+
+module: upf
+  +--rw upf
+     +--rw upf* [id]
+        +--rw id              upf-id
+        +--rw address         inet:host
+        +--rw port            inet:port-number
+        +--rw display-name?   string
+        +--rw description?    at:description
+        +--rw enterprise      -> /ent:enterprise/enterprise/id
+
+module: 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 template?        -> /vt:template/template/id
+        +--rw application* [application]
+        |  +--rw application    -> /app:application/application/id
+        |  +--rw allow?         boolean
+        +--rw upf?             -> /upf:upf/upf/id
+        +--rw ap?              -> /apl:ap-list/ap-list/id
+        +--rw description?     at:description
+        +--rw enterprise       -> /ent:enterprise/enterprise/id
+        +--rw sst              at:sst
+        +--rw sd               at:sd
+        +--rw uplink?          uint32
+        +--rw downlink?        uint32
+        +--rw traffic-class    -> /tc:traffic-class/traffic-class/id
diff --git a/config-models/aether-3.x/files/yang/aether-types.yang b/config-models/aether-3.x/files/yang/aether-types.yang
new file mode 100755
index 0000000..fedbdc6
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/aether-types.yang
@@ -0,0 +1,109 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module 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-06-02" {
+    description "Aether Base Types";
+    reference "RFC 6087";
+  }
+
+  typedef mcc {
+      type string {
+        pattern '[0-9]{3}';
+      }
+  }
+
+  typedef mnc {
+      type string {
+        pattern '[0-9]{2,3}';
+      }
+  }
+
+  typedef tac {
+      type string {
+        length 4..8;
+        pattern '[0-9A-F\.]*';
+      }
+  }
+
+  typedef ent {
+      type uint32 {
+        range 0..999;
+      }
+  }  
+
+  typedef dnn {
+      type string {
+        length 1..32;
+      }
+  }  
+
+  typedef sst {
+      type uint8 {
+        range 1..255;
+      }
+  }
+
+  typedef sd {
+      type uint32 {
+        range 0..16777215;
+      }
+  }
+
+  typedef qci {
+      type uint8 {
+        range 1..32;
+      }
+  }
+
+  typedef pelr {
+      type int8 {
+        range 0..10;
+      }
+  }
+
+  typedef pdb {
+      type uint16 {
+        range 0..1000;
+      }
+  }  
+
+  // "TCP" or "UDP"
+  typedef protocol {
+      type string {
+        length 3;
+        pattern "TCP|UDP";
+      }
+      default "TCP";
+  }
+
+  // "ENABLE" | "MAINTENTANCE" | "DISABLE"
+  typedef admin-status {
+      type string {
+        length 0..16;
+        pattern "ENABLE|MAINTENANCE|DISABLE";
+      }
+      default "ENABLE";
+  }  
+
+  typedef mtu {
+      type inet:port-number;
+      default 1492;
+  }
+
+  typedef description {
+    type string {
+      length 1..1024;
+    }
+  }
+}
diff --git a/config-models/aether-3.x/files/yang/ap-list.yang b/config-models/aether-3.x/files/yang/ap-list.yang
new file mode 100755
index 0000000..3c1a759
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/ap-list.yang
@@ -0,0 +1,91 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module ap-list {
+  namespace "http://opennetworking.org/aether/ap-list";
+  prefix apl;
+
+  import ietf-inet-types { prefix inet; }
+  import aether-types { prefix at; }
+  import enterprise{ prefix ent; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "An Aether AP List is a named list of access points.";
+
+  revision "2021-06-02" {
+    description "An Aether Access Point List";
+    reference "RFC 6087";
+  }
+
+  typedef ap-list-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  container ap-list {
+    description "The top level container";
+
+    list ap-list {
+      key "id";
+      description
+        "A list of named ap-lists.";
+
+      leaf id {
+        type ap-list-id;
+        description "ID for this ap-list.";
+      }
+
+      list access-points {
+        key "address";
+        leaf address {
+          type inet:host;
+          description
+            "Address of access point";
+        }
+        leaf tac {
+          type at:tac;
+          mandatory true;
+          description
+              "Type Allocation Code";
+        }        
+        leaf enable {
+          type boolean;
+          default true;
+          description
+            "Enable this access point";
+        }
+        description
+          "List of access point addresses";
+      }        
+
+      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 ap-list";
+      }
+
+      // Access point lists are always owned by an Enterprise, since they typically exist on the
+      // Enterprise's edge. An ApList is not owned by Site, to cover the case where a ApList may
+      // include access points that span multiple sites.
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }
+        mandatory true;
+        description
+          "Link to enterprise that owns this Access Point List";
+      }       
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/application.yang b/config-models/aether-3.x/files/yang/application.yang
new file mode 100755
index 0000000..2f1a4fc
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/application.yang
@@ -0,0 +1,99 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module application {
+  namespace "http://opennetworking.org/enterprise/application";
+  prefix app;
+
+  import ietf-inet-types{ prefix ietf; }
+  import aether-types{ prefix at; }
+  import enterprise{ prefix ent; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "An Aether Application is an application that UE devices may
+     connect to. Includes a set of endpoints where services are
+     provided.";
+
+  revision "2021-06-02" {
+    description "Aether Application.";
+    reference "RFC 6087";
+  }
+
+  typedef application-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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";
+      }
+
+      list endpoint {
+        key "name";
+        max-elements 1;
+        leaf name {
+          type string;
+          description
+              "Name of this endpoint";
+        }
+        leaf address {
+          type ietf:host;
+          mandatory true;
+          description
+              "Address of this endpoint. Either a hostname, and IP, or a subnet.";
+        }
+        leaf port-start {
+          type ietf:port-number;
+          mandatory true;
+          description
+              "First port in range";
+        }
+        leaf port-end {
+          type ietf:port-number;
+          description
+              "Last port in range";
+        }
+        leaf protocol {
+          type at:protocol;
+          description
+              "Name of this 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-3.x/files/yang/connectivity-service.yang b/config-models/aether-3.x/files/yang/connectivity-service.yang
new file mode 100755
index 0000000..f3cc3fc
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/connectivity-service.yang
@@ -0,0 +1,76 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module connectivity-service {
+  namespace "http://opennetworking.org/aether/connectivity-service";
+  prefix cs;
+
+  import aether-types { prefix at; }
+  import ietf-inet-types { prefix inet; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "An Aether Connectivity service is the linkage between the
+     ROC and a core that provides connectivity.";
+
+  revision "2021-06-02" {
+    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 yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  container connectivity-service {
+    description "The top level container";
+
+    list connectivity-service {
+      key "id";
+      description
+        "List of connectivity services";
+
+      leaf id {
+        type connectivity-service-id;
+        description "ID for this connectivity service.";
+      }
+
+      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 connectivity service";
+      }
+
+      leaf spgwc-endpoint {
+        type inet:uri;
+        description "url of the spgwc service";
+      }
+
+      leaf hss-endpoint {
+        type inet:uri;
+        description "url of the hss service";
+      }
+
+      leaf pcrf-endpoint {
+        type inet:uri;
+        description "url of the pcrf service";
+      }
+
+      leaf core-5g-endpoint {
+        type inet:uri;
+        description "url of the 5g core";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/device-group.yang b/config-models/aether-3.x/files/yang/device-group.yang
new file mode 100755
index 0000000..e9c1590
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/device-group.yang
@@ -0,0 +1,99 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module device-group {
+  namespace "http://opennetworking.org/aether/device-group";
+  prefix dg;
+
+  import aether-types { prefix at; }
+  import ip-domain{ prefix ipd; }
+  import site{ prefix st; }
+  import ietf-yang-types{ prefix yg; }
+
+  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;
+        }
+  }  
+
+  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 "name";
+        leaf name {
+          type string;
+        }
+        leaf imsi-range-from {
+          type uint64;
+        }
+        leaf imsi-range-to {
+          type uint64;
+        }
+        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";
+      }
+
+      leaf site {
+        type leafref {
+          path "/st:site/st:site/st:id";
+        }
+        mandatory true;
+        description
+          "Link to site";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/enterprise.yang b/config-models/aether-3.x/files/yang/enterprise.yang
new file mode 100755
index 0000000..4d91f47
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/enterprise.yang
@@ -0,0 +1,73 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module enterprise {
+  namespace "http://opennetworking.org/aether/enterprise";
+  prefix ent;
+
+  import aether-types { prefix at; }
+  import connectivity-service { prefix cs; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "An Aether Enterprise is an administration entity that
+     has ownership of resrouces.";
+
+  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 yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  container enterprise {
+    description "The top level container";
+
+    list enterprise {
+      key "id";
+      description
+        "List of enterprises";
+
+      leaf id {
+        type enterprise-id;
+        description "ID for this enterprise.";
+      }
+
+      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 enterprise";
+      }
+
+      list connectivity-service {
+        key "connectivity-service";
+        leaf connectivity-service {
+          type leafref {
+            path "/cs:connectivity-service/cs:connectivity-service/cs:id";
+          }            
+          description
+            "Link to connectivity services where configuration should be pushed for this enterprise's devices";
+        }
+        leaf enabled {
+          type boolean;
+          default true;
+          description
+            "Allow or disallow pushes to this connectivity service";
+        }
+      }              
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/ietf-inet-types.yang b/config-models/aether-3.x/files/yang/ietf-inet-types.yang
new file mode 100644
index 0000000..eacefb6
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/ietf-inet-types.yang
@@ -0,0 +1,458 @@
+module ietf-inet-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+  prefix "inet";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of types related to protocol fields ***/
+
+  typedef ip-version {
+    type enumeration {
+      enum unknown {
+        value "0";
+        description
+         "An unknown or unspecified version of the Internet
+          protocol.";
+      }
+      enum ipv4 {
+        value "1";
+        description
+         "The IPv4 protocol as defined in RFC 791.";
+      }
+      enum ipv6 {
+        value "2";
+        description
+         "The IPv6 protocol as defined in RFC 2460.";
+      }
+    }
+    description
+     "This value represents the version of the IP protocol.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+    reference
+     "RFC  791: Internet Protocol
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  typedef dscp {
+    type uint8 {
+      range "0..63";
+    }
+    description
+     "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+    reference
+     "RFC 3289: Management Information Base for the Differentiated
+                Services Architecture
+      RFC 2474: Definition of the Differentiated Services Field
+                (DS Field) in the IPv4 and IPv6 Headers
+      RFC 2780: IANA Allocation Guidelines For Values In
+                the Internet Protocol and Related Headers";
+  }
+
+  typedef ipv6-flow-label {
+    type uint32 {
+      range "0..1048575";
+    }
+    description
+     "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+    reference
+     "RFC 3595: Textual Conventions for IPv6 Flow Label
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+  }
+
+  typedef port-number {
+    type uint16 {
+      range "0..65535";
+    }
+    description
+     "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+    reference
+     "RFC  768: User Datagram Protocol
+      RFC  793: Transmission Control Protocol
+      RFC 4960: Stream Control Transmission Protocol
+      RFC 4340: Datagram Congestion Control Protocol (DCCP)
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  /*** collection of types related to autonomous systems ***/
+
+  typedef as-number {
+    type uint32;
+    description
+     "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+    reference
+     "RFC 1930: Guidelines for creation, selection, and registration
+                of an Autonomous System (AS)
+      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+      RFC 4001: Textual Conventions for Internet Network Addresses
+      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+                Number Space";
+  }
+
+  /*** collection of types related to IP addresses and hostnames ***/
+
+  typedef ip-address {
+    type union {
+      type inet:ipv4-address;
+      type inet:ipv6-address;
+    }
+    description
+     "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+      + '(%[\p{N}\p{L}]+)?';
+    }
+    description
+      "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format for the zone index is the numerical
+       format";
+  }
+
+  typedef ipv6-address {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(%[\p{N}\p{L}]+)?';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(%.+)?';
+    }
+    description
+     "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-address-no-zone {
+    type union {
+      type inet:ipv4-address-no-zone;
+      type inet:ipv6-address-no-zone;
+    }
+    description
+     "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address-no-zone {
+    type inet:ipv4-address {
+      pattern '[0-9\.]*';
+    }
+    description
+      "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+  }
+
+  typedef ipv6-address-no-zone {
+    type inet:ipv6-address {
+      pattern '[0-9a-fA-F:\.]*';
+    }
+    description
+      "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-prefix {
+    type union {
+      type inet:ipv4-prefix;
+      type inet:ipv6-prefix;
+    }
+    description
+     "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+  }
+
+  typedef ipv4-prefix {
+    type string {
+      pattern
+         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
+    }
+    description
+     "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+  }
+
+  typedef ipv6-prefix {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(/.+)';
+    }
+
+    description
+     "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+    reference
+     "RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  /*** collection of domain name and URI types ***/
+
+  typedef domain-name {
+    type string {
+      pattern
+        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
+      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
+      + '|\.';
+      length "1..253";
+    }
+    description
+     "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+    reference
+     "RFC  952: DoD Internet Host Table Specification
+      RFC 1034: Domain Names - Concepts and Facilities
+      RFC 1123: Requirements for Internet Hosts -- Application
+                and Support
+      RFC 2782: A DNS RR for specifying the location of services
+                (DNS SRV)
+      RFC 5890: Internationalized Domain Names in Applications
+                (IDNA): Definitions and Document Framework";
+  }
+
+  typedef host {
+    type union {
+      type inet:ip-address;
+      type inet:domain-name;
+    }
+    description
+     "The host type represents either an IP address or a DNS
+      domain name.";
+  }
+
+  typedef uri {
+    type string;
+    description
+     "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+    reference
+     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+                Group: Uniform Resource Identifiers (URIs), URLs,
+                and Uniform Resource Names (URNs): Clarifications
+                and Recommendations
+      RFC 5017: MIB Textual Conventions for Uniform Resource
+                Identifiers (URIs)";
+  }
+
+}
diff --git a/config-models/aether-3.x/files/yang/ietf-yang-types.yang b/config-models/aether-3.x/files/yang/ietf-yang-types.yang
new file mode 100644
index 0000000..ee58fa3
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/ietf-yang-types.yang
@@ -0,0 +1,474 @@
+module ietf-yang-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+  prefix "yang";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - yang-identifier
+      - hex-string
+      - uuid
+      - dotted-quad";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of counter and gauge types ***/
+
+  typedef counter32 {
+    type uint32;
+    description
+     "The counter32 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter32 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter32 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter32.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter32 {
+    type yang:counter32;
+    default "0";
+    description
+     "The zero-based-counter32 type represents a counter32
+      that has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter32 textual convention of the SMIv2.";
+    reference
+      "RFC 4502: Remote Network Monitoring Management Information
+                 Base Version 2";
+  }
+
+  typedef counter64 {
+    type uint64;
+    description
+     "The counter64 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter64 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter64 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter64.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter64 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter64 {
+    type yang:counter64;
+    default "0";
+    description
+     "The zero-based-counter64 type represents a counter64 that
+      has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter64 textual convention of the SMIv2.";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  typedef gauge32 {
+    type uint32;
+    description
+     "The gauge32 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^32-1 (4294967295 decimal), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge32 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge32 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the Gauge32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef gauge64 {
+    type uint64;
+    description
+     "The gauge64 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^64-1 (18446744073709551615), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge64 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge64 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the CounterBasedGauge64 SMIv2 textual convention defined
+      in RFC 2856";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  /*** collection of identifier-related types ***/
+
+  typedef object-identifier {
+    type string {
+      pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+            + '(\.(0|([1-9]\d*)))*';
+    }
+    description
+     "The object-identifier type represents administratively
+      assigned names in a registration-hierarchical-name tree.
+
+      Values of this type are denoted as a sequence of numerical
+      non-negative sub-identifier values.  Each sub-identifier
+      value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
+      are separated by single dots and without any intermediate
+      whitespace.
+
+      The ASN.1 standard restricts the value space of the first
+      sub-identifier to 0, 1, or 2.  Furthermore, the value space
+      of the second sub-identifier is restricted to the range
+      0 to 39 if the first sub-identifier is 0 or 1.  Finally,
+      the ASN.1 standard requires that an object identifier
+      has always at least two sub-identifiers.  The pattern
+      captures these restrictions.
+
+      Although the number of sub-identifiers is not limited,
+      module designers should realize that there may be
+      implementations that stick with the SMIv2 limit of 128
+      sub-identifiers.
+
+      This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+      since it is not restricted to 128 sub-identifiers.  Hence,
+      this type SHOULD NOT be used to represent the SMIv2 OBJECT
+      IDENTIFIER type; the object-identifier-128 type SHOULD be
+      used instead.";
+    reference
+     "ISO9834-1: Information technology -- Open Systems
+      Interconnection -- Procedures for the operation of OSI
+      Registration Authorities: General procedures and top
+      arcs of the ASN.1 Object Identifier tree";
+  }
+
+  typedef object-identifier-128 {
+    type object-identifier {
+      pattern '\d*(\.\d*){1,127}';
+    }
+    description
+     "This type represents object-identifiers restricted to 128
+      sub-identifiers.
+
+      In the value set and its semantics, this type is equivalent
+      to the OBJECT IDENTIFIER type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef yang-identifier {
+    type string {
+      length "1..max";
+      pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
+      pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
+    }
+    description
+      "A YANG identifier string as defined by the 'identifier'
+       rule in Section 12 of RFC 6020.  An identifier must
+       start with an alphabetic character or an underscore
+       followed by an arbitrary sequence of alphabetic or
+       numeric characters, underscores, hyphens, or dots.
+
+       A YANG identifier MUST NOT start with any possible
+       combination of the lowercase or uppercase character
+       sequence 'xml'.";
+    reference
+      "RFC 6020: YANG - A Data Modeling Language for the Network
+                 Configuration Protocol (NETCONF)";
+  }
+
+  /*** collection of types related to date and time***/
+
+  typedef date-and-time {
+    type string {
+      pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+            + '(Z|[\+\-]\d{2}:\d{2})';
+    }
+    description
+     "The date-and-time type is a profile of the ISO 8601
+      standard for representation of dates and times using the
+      Gregorian calendar.  The profile is defined by the
+      date-time production in Section 5.6 of RFC 3339.
+
+      The date-and-time type is compatible with the dateTime XML
+      schema type with the following notable exceptions:
+
+      (a) The date-and-time type does not allow negative years.
+
+      (b) The date-and-time time-offset -00:00 indicates an unknown
+          time zone (see RFC 3339) while -00:00 and +00:00 and Z
+          all represent the same time zone in dateTime.
+
+      (c) The canonical format (see below) of data-and-time values
+          differs from the canonical format used by the dateTime XML
+          schema type, which requires all times to be in UTC using
+          the time-offset 'Z'.
+
+      This type is not equivalent to the DateAndTime textual
+      convention of the SMIv2 since RFC 3339 uses a different
+      separator between full-date and full-time and provides
+      higher resolution of time-secfrac.
+
+      The canonical format for date-and-time values with a known time
+      zone uses a numeric time zone offset that is calculated using
+      the device's configured known offset to UTC time.  A change of
+      the device's offset to UTC time will cause date-and-time values
+      to change accordingly.  Such changes might happen periodically
+      in case a server follows automatically daylight saving time
+      (DST) time zone offset changes.  The canonical format for
+      date-and-time values with an unknown time zone (usually
+      referring to the notion of local time) uses the time-offset
+      -00:00.";
+    reference
+     "RFC 3339: Date and Time on the Internet: Timestamps
+      RFC 2579: Textual Conventions for SMIv2
+      XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+  }
+
+  typedef timeticks {
+    type uint32;
+    description
+     "The timeticks type represents a non-negative integer that
+      represents the time, modulo 2^32 (4294967296 decimal), in
+      hundredths of a second between two epochs.  When a schema
+      node is defined that uses this type, the description of
+      the schema node identifies both of the reference epochs.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeTicks type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef timestamp {
+    type yang:timeticks;
+    description
+     "The timestamp type represents the value of an associated
+      timeticks schema node at which a specific occurrence
+      happened.  The specific occurrence must be defined in the
+      description of any schema node defined using this type.  When
+      the specific occurrence occurred prior to the last time the
+      associated timeticks attribute was zero, then the timestamp
+      value is zero.  Note that this requires all timestamp values
+      to be reset to zero when the value of the associated timeticks
+      attribute reaches 497+ days and wraps around to zero.
+
+      The associated timeticks schema node must be specified
+      in the description of any schema node using this type.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeStamp textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of generic address types ***/
+
+  typedef phys-address {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+
+    description
+     "Represents media- or physical-level addresses represented
+      as a sequence octets, each octet represented by two hexadecimal
+      numbers.  Octets are separated by colons.  The canonical
+      representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the PhysAddress textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  typedef mac-address {
+    type string {
+      pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
+    }
+    description
+     "The mac-address type represents an IEEE 802 MAC address.
+      The canonical representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the MacAddress textual convention of the SMIv2.";
+    reference
+     "IEEE 802: IEEE Standard for Local and Metropolitan Area
+                Networks: Overview and Architecture
+      RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of XML-specific types ***/
+
+  typedef xpath1.0 {
+    type string;
+    description
+     "This type represents an XPATH 1.0 expression.
+
+      When a schema node is defined that uses this type, the
+      description of the schema node MUST specify the XPath
+      context in which the XPath expression is evaluated.";
+    reference
+     "XPATH: XML Path Language (XPath) Version 1.0";
+  }
+
+  /*** collection of string types ***/
+
+  typedef hex-string {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+    description
+     "A hexadecimal string with octets represented as hex digits
+      separated by colons.  The canonical representation uses
+      lowercase characters.";
+  }
+
+  typedef uuid {
+    type string {
+      pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+            + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
+    }
+    description
+     "A Universally Unique IDentifier in the string representation
+      defined in RFC 4122.  The canonical representation uses
+      lowercase characters.
+
+      The following is an example of a UUID in string representation:
+      f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+      ";
+    reference
+     "RFC 4122: A Universally Unique IDentifier (UUID) URN
+                Namespace";
+  }
+
+  typedef dotted-quad {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
+    }
+    description
+      "An unsigned 32-bit number expressed in the dotted-quad
+       notation, i.e., four octets written as decimal numbers
+       and separated with the '.' (full stop) character.";
+  }
+}
diff --git a/config-models/aether-3.x/files/yang/ip-domain.yang b/config-models/aether-3.x/files/yang/ip-domain.yang
new file mode 100755
index 0000000..7f2bf73
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/ip-domain.yang
@@ -0,0 +1,102 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module ip-domain {
+  namespace "http://opennetworking.org/aether/ip-domain";
+  prefix ipd;
+
+  import ietf-inet-types { prefix inet; }
+  import aether-types { prefix at; }
+  import enterprise{ prefix ent; }
+  import ietf-yang-types{ prefix yg; }
+
+  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;
+        }
+  }
+
+  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;
+        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-3.x/files/yang/site.yang b/config-models/aether-3.x/files/yang/site.yang
new file mode 100755
index 0000000..89f8fc7
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/site.yang
@@ -0,0 +1,100 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module site {
+  namespace "http://opennetworking.org/aether/site";
+  prefix st;
+
+  import aether-types{ prefix at; }
+  import enterprise{ prefix ent; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "An Aether site is a location where resources are deployed.";
+
+  revision "2021-06-02" {
+    description "An Aether Site.";
+    reference "RFC 6087";
+  }
+
+  typedef site-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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";
+      }
+
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }              
+        description
+          "Link to enterprise that owns this site";
+        mandatory true;          
+      }
+
+      container imsi-definition {
+        leaf mcc {
+          type at:mcc;
+          description "mobile country code";
+          mandatory true;
+        }
+        leaf mnc {
+          type at:mnc;
+          description "mobile network code";
+          mandatory true;
+        }
+        leaf enterprise {
+          type at:ent;
+          description "enterprise-specific identifier";
+          mandatory true;
+        }
+        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
+        }
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this site";
+      }         
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/template.yang b/config-models/aether-3.x/files/yang/template.yang
new file mode 100755
index 0000000..ea040e7
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/template.yang
@@ -0,0 +1,85 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module template {
+  namespace "http://opennetworking.org/aether/template";
+  prefix tp;
+
+  import aether-types{ prefix at; }
+  import traffic-class{ prefix tc; }
+  import ietf-yang-types{ prefix yg; }
+
+  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-06-02" {
+    description "An Aether Virtual Cellular Service Template";
+    reference "RFC 6087";
+  }
+
+  typedef template-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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";
+      }
+
+      leaf uplink {
+        type uint32;
+        description "Uplink data rate in mbps";
+      }
+
+      leaf downlink {
+        type uint32;
+        description "Downlink data rate in mbps";
+      }
+
+      leaf traffic-class {
+        type leafref {
+          path "/tc:traffic-class/tc:traffic-class/tc:id";
+        }          
+        description
+          "Link to traffic class";
+      } 
+
+      leaf description {
+        type at:description;
+        description "description of this vcs template";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/traffic-class.yang b/config-models/aether-3.x/files/yang/traffic-class.yang
new file mode 100755
index 0000000..636c816
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/traffic-class.yang
@@ -0,0 +1,70 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module traffic-class {
+  namespace "http://opennetworking.org/aether/traffic-class";
+  prefix tp;
+
+  import aether-types{ prefix at; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "The aether traffic class associates qos constants
+     with a named class of service";
+
+  revision "2021-06-02" {
+    description "An Aether Traffic Class";
+    reference "RFC 6087";
+  }
+
+  typedef traffic-class-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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 pelr {
+        type at:pelr;
+        description "PELR exponent";
+      }
+
+      leaf pdb {
+        type at:pdb;
+        description "PDB";
+      }        
+
+      leaf qci {
+        type at:qci;
+        description "QCI";
+      }      
+
+      leaf description {
+        type at:description;
+        description "description of this traffic class";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/upf.yang b/config-models/aether-3.x/files/yang/upf.yang
new file mode 100755
index 0000000..1c92214
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/upf.yang
@@ -0,0 +1,81 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module upf {
+  namespace "http://opennetworking.org/aether/upf";
+  prefix upf;
+
+  import aether-types { prefix at; }
+  import ietf-inet-types { prefix inet; }
+  import enterprise{ prefix ent; }
+  import ietf-yang-types{ prefix yg; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description "A Aether UPF List is a named User Plane Function.";
+
+  revision "2021-06-02" {
+    description "An Aether User Plane Function";
+    reference "RFC 6087";
+  }
+
+  typedef upf-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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 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. TODO: Consider whether they should be owned by a Site
+      // instead of Enterprise.
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }
+        mandatory true;
+        description
+          "Link to enterprise that owns this Access Point List";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/files/yang/vcs.yang b/config-models/aether-3.x/files/yang/vcs.yang
new file mode 100755
index 0000000..ab4e370
--- /dev/null
+++ b/config-models/aether-3.x/files/yang/vcs.yang
@@ -0,0 +1,171 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module vcs {
+  namespace "http://opennetworking.org/aether/vcs";
+  prefix sl;
+
+  import template{ prefix vt; }
+  import upf { prefix upf; }
+  import ap-list{ prefix apl; }    
+  import application{ prefix app; }
+  import aether-types{ prefix at; }
+  import device-group{ prefix dg; }
+  import traffic-class{ prefix tc; }
+  import ietf-yang-types{ prefix yg; }
+  import enterprise{ prefix ent; }
+
+  organization "Open Networking Foundation.";
+  contact "Scott Baker";
+  description 
+    "An Aether Virtual Cellular Service (VCS) is
+     used to connect UE devices with applications";
+
+  revision "2021-06-02" {
+    description "An Aether Virtual Cellular Service";
+    reference "RFC 6087";
+  }
+
+  typedef vcs-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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 template {
+        type leafref {
+          path "/vt:template/vt:template/vt:id";
+        }          
+        description
+          "Link to user vcs template that was used to initialize
+           this VCS";
+      }
+
+      list application {
+        key "application";   
+        leaf application {
+          type leafref {
+            path "/app:application/app:application/app:id";
+          }
+          mandatory true;
+          description
+            "Link to application";
+        }
+        leaf allow {
+          type boolean;
+          default true;
+          description
+            "Allow or deny this application";
+        }
+        description
+          "An ordered list of applications to allow and deny. The deny rules
+           will be executed first, followed by the allow rules. The first rule
+           to match is returned. An implicit DENY ALL lies at the end.";
+      }      
+
+      leaf upf {
+        type leafref {
+          path "/upf:upf/upf:upf/upf:id";
+        }          
+        description
+          "Link to user plane that implements this vcf";
+      }
+
+      leaf ap {
+        type leafref {
+          path "/apl:ap-list/apl:ap-list/apl:id";
+        }          
+        description
+          "Link to access-point list";
+      }
+
+      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";
+      }      
+
+      // 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.";
+      }
+
+      leaf uplink {
+        type uint32;
+        description "Uplink data rate in mbps";
+      }
+
+      leaf downlink {
+        type uint32;
+        description "Downlink data rate in mbps";
+      }
+
+      leaf traffic-class {
+        type leafref {
+          path "/tc:traffic-class/tc:traffic-class/tc:id";
+        }
+        mandatory true;
+        description
+          "Link to traffic class";
+      }
+      // end of items populated from the template
+    }
+  } 
+}
diff --git a/config-models/aether-3.x/templates/_helpers.tpl b/config-models/aether-3.x/templates/_helpers.tpl
new file mode 100644
index 0000000..0380f1a
--- /dev/null
+++ b/config-models/aether-3.x/templates/_helpers.tpl
@@ -0,0 +1,52 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Expand the name of the chart.
+*/}}
+{{- define "aether.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "aether.fullname" -}}
+{{- if contains "config-model-aether" .Release.Name -}}
+{{- printf "%s-%s" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s-config-model-aether" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "aether.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Common labels
+*/}}
+{{- define "aether.labels" -}}
+helm.sh/chart: {{ include "aether.chart" . }}
+{{ include "aether.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "aether.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "aether.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
+}
diff --git a/config-models/aether-3.x/templates/model.yaml b/config-models/aether-3.x/templates/model.yaml
new file mode 100644
index 0000000..949b436
--- /dev/null
+++ b/config-models/aether-3.x/templates/model.yaml
@@ -0,0 +1,70 @@
+# 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-06-02
+    file: connectivity-service.yang
+  - name: enterprise
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: enterprise.yang
+# new 5G models
+  - name: aether-types
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: aether-types.yang
+  - name: ap-list
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: ap-list.yang
+  - name: application
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: application.yang
+  - name: device-group
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: device-group.yang
+  - name: ip-domain
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: ip-domain.yang
+  - name: site
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: site.yang
+  - name: upf-list
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: upf.yang
+  - name: vcs
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: vcs.yang
+  - name: template
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: template.yang
+  - name: traffic-class
+    organization: Open Networking Foundation
+    revision: 2021-06-02
+    file: 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-3.x/values.yaml b/config-models/aether-3.x/values.yaml
new file mode 100644
index 0000000..2e984ed
--- /dev/null
+++ b/config-models/aether-3.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-4.x/CHANGELOG.md b/config-models/aether-4.x/CHANGELOG.md
new file mode 100644
index 0000000..6a855ed
--- /dev/null
+++ b/config-models/aether-4.x/CHANGELOG.md
@@ -0,0 +1,32 @@
+<!--
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+Differences from Aether-3.0.0
+
+VCS and Template:
+  * Containerized device MBR Uplink and Download to device.mbr.uplink and device.mbr.downlink
+  * Added slice.mbr.uplink and slice.mbr.downlink
+  * Remove link to AP-List
+  * All bitrates are now uint64 and have units "bps"
+
+Site:
+  * Added link to AP-List
+  * Now includes a list of access points
+  * Small-cell (formerly access-point) list includes a name for each AP
+
+Application:
+  * Added mbr.uplink and mbr.downlink
+
+Traffic-Class:
+  * Removed pelr and pdb
+  * Added arp
+
+AP-List
+  * Removed; contents added to slice
+
+UPF:
+  * Added config-endpoint
+
+Models prefixed with onf- throughout.
diff --git a/config-models/aether-4.x/Chart.yaml b/config-models/aether-4.x/Chart.yaml
new file mode 100644
index 0000000..3f4a1be
--- /dev/null
+++ b/config-models/aether-4.x/Chart.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: config-model-aether
+version: 4.0.3
+kubeVersion: ">=1.18.0"
+appVersion: 4.0.0
+description: Aether config model
+keywords:
+  - onos
+  - sdn
+  - config
+home: https://onosproject.org
+maintainers:
+  - name: ONOS Support
+    email: support@opennetworking.org
diff --git a/config-models/aether-4.x/files/aether-4.0.0.tree b/config-models/aether-4.x/files/aether-4.0.0.tree
new file mode 100644
index 0000000..11038cc
--- /dev/null
+++ b/config-models/aether-4.x/files/aether-4.0.0.tree
@@ -0,0 +1,147 @@
+module: onf-application
+  +--rw application
+     +--rw application* [id]
+        +--rw id              application-id
+        +--rw display-name?   string
+        +--rw description?    at:description
+        +--rw endpoint* [name]
+        |  +--rw name          string
+        |  +--rw address       ietf:host
+        |  +--rw port-start    ietf:port-number
+        |  +--rw port-end?     ietf:port-number
+        |  +--rw protocol?     at:protocol
+        +--rw enterprise      -> /ent:enterprise/enterprise/id
+        +--rw mbr
+           +--rw uplink?     at:bitrate
+           +--rw downlink?   at:bitrate
+
+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 spgwc-endpoint?     inet:uri
+        +--rw hss-endpoint?       inet:uri
+        +--rw pcrf-endpoint?      inet:uri
+        +--rw core-5g-endpoint?   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* [name]
+        |  +--rw name               string
+        |  +--rw imsi-range-from?   uint64
+        |  +--rw imsi-range-to?     uint64
+        +--rw ip-domain?      -> /ipd:ip-domain/ip-domain/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* [name]
+        |  +--rw name       yg:yang-identifier
+        |  +--rw address?   inet:host
+        |  +--rw tac        at:tac
+        |  +--rw enable?    boolean
+        +--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 device
+        |  +--rw mbr
+        |     +--rw uplink?     at:bitrate
+        |     +--rw downlink?   at:bitrate
+        +--rw slice
+        |  +--rw mbr
+        |     +--rw uplink?     at:bitrate
+        |     +--rw downlink?   at:bitrate
+        +--rw traffic-class?   -> /tc:traffic-class/traffic-class/id
+        +--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 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
+
+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 template?        -> /vt:template/template/id
+        +--rw application* [application]
+        |  +--rw application    -> /app:application/application/id
+        |  +--rw allow?         boolean
+        +--rw upf?             -> /upf:upf/upf/id
+        +--rw description?     at:description
+        +--rw enterprise       -> /ent:enterprise/enterprise/id
+        +--rw sst              at:sst
+        +--rw sd               at:sd
+        +--rw device
+        |  +--rw mbr
+        |     +--rw uplink?     at:bitrate
+        |     +--rw downlink?   at:bitrate
+        +--rw slice
+        |  +--rw mbr
+        |     +--rw uplink?     at:bitrate
+        |     +--rw downlink?   at:bitrate
+        +--rw traffic-class    -> /tc:traffic-class/traffic-class/id
diff --git a/config-models/aether-4.x/files/yang/ietf-inet-types.yang b/config-models/aether-4.x/files/yang/ietf-inet-types.yang
new file mode 100644
index 0000000..eacefb6
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/ietf-inet-types.yang
@@ -0,0 +1,458 @@
+module ietf-inet-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+  prefix "inet";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of types related to protocol fields ***/
+
+  typedef ip-version {
+    type enumeration {
+      enum unknown {
+        value "0";
+        description
+         "An unknown or unspecified version of the Internet
+          protocol.";
+      }
+      enum ipv4 {
+        value "1";
+        description
+         "The IPv4 protocol as defined in RFC 791.";
+      }
+      enum ipv6 {
+        value "2";
+        description
+         "The IPv6 protocol as defined in RFC 2460.";
+      }
+    }
+    description
+     "This value represents the version of the IP protocol.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+    reference
+     "RFC  791: Internet Protocol
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  typedef dscp {
+    type uint8 {
+      range "0..63";
+    }
+    description
+     "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+    reference
+     "RFC 3289: Management Information Base for the Differentiated
+                Services Architecture
+      RFC 2474: Definition of the Differentiated Services Field
+                (DS Field) in the IPv4 and IPv6 Headers
+      RFC 2780: IANA Allocation Guidelines For Values In
+                the Internet Protocol and Related Headers";
+  }
+
+  typedef ipv6-flow-label {
+    type uint32 {
+      range "0..1048575";
+    }
+    description
+     "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+    reference
+     "RFC 3595: Textual Conventions for IPv6 Flow Label
+      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+  }
+
+  typedef port-number {
+    type uint16 {
+      range "0..65535";
+    }
+    description
+     "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+    reference
+     "RFC  768: User Datagram Protocol
+      RFC  793: Transmission Control Protocol
+      RFC 4960: Stream Control Transmission Protocol
+      RFC 4340: Datagram Congestion Control Protocol (DCCP)
+      RFC 4001: Textual Conventions for Internet Network Addresses";
+  }
+
+  /*** collection of types related to autonomous systems ***/
+
+  typedef as-number {
+    type uint32;
+    description
+     "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+    reference
+     "RFC 1930: Guidelines for creation, selection, and registration
+                of an Autonomous System (AS)
+      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+      RFC 4001: Textual Conventions for Internet Network Addresses
+      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+                Number Space";
+  }
+
+  /*** collection of types related to IP addresses and hostnames ***/
+
+  typedef ip-address {
+    type union {
+      type inet:ipv4-address;
+      type inet:ipv6-address;
+    }
+    description
+     "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+      + '(%[\p{N}\p{L}]+)?';
+    }
+    description
+      "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format for the zone index is the numerical
+       format";
+  }
+
+  typedef ipv6-address {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(%[\p{N}\p{L}]+)?';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(%.+)?';
+    }
+    description
+     "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-address-no-zone {
+    type union {
+      type inet:ipv4-address-no-zone;
+      type inet:ipv6-address-no-zone;
+    }
+    description
+     "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+    reference
+     "RFC 4007: IPv6 Scoped Address Architecture";
+  }
+
+  typedef ipv4-address-no-zone {
+    type inet:ipv4-address {
+      pattern '[0-9\.]*';
+    }
+    description
+      "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+  }
+
+  typedef ipv6-address-no-zone {
+    type inet:ipv6-address {
+      pattern '[0-9a-fA-F:\.]*';
+    }
+    description
+      "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    reference
+     "RFC 4291: IP Version 6 Addressing Architecture
+      RFC 4007: IPv6 Scoped Address Architecture
+      RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  typedef ip-prefix {
+    type union {
+      type inet:ipv4-prefix;
+      type inet:ipv6-prefix;
+    }
+    description
+     "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+  }
+
+  typedef ipv4-prefix {
+    type string {
+      pattern
+         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
+    }
+    description
+     "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+  }
+
+  typedef ipv6-prefix {
+    type string {
+      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+            + '(/.+)';
+    }
+
+    description
+     "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+    reference
+     "RFC 5952: A Recommendation for IPv6 Address Text
+                Representation";
+  }
+
+  /*** collection of domain name and URI types ***/
+
+  typedef domain-name {
+    type string {
+      pattern
+        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
+      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
+      + '|\.';
+      length "1..253";
+    }
+    description
+     "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+    reference
+     "RFC  952: DoD Internet Host Table Specification
+      RFC 1034: Domain Names - Concepts and Facilities
+      RFC 1123: Requirements for Internet Hosts -- Application
+                and Support
+      RFC 2782: A DNS RR for specifying the location of services
+                (DNS SRV)
+      RFC 5890: Internationalized Domain Names in Applications
+                (IDNA): Definitions and Document Framework";
+  }
+
+  typedef host {
+    type union {
+      type inet:ip-address;
+      type inet:domain-name;
+    }
+    description
+     "The host type represents either an IP address or a DNS
+      domain name.";
+  }
+
+  typedef uri {
+    type string;
+    description
+     "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+    reference
+     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+                Group: Uniform Resource Identifiers (URIs), URLs,
+                and Uniform Resource Names (URNs): Clarifications
+                and Recommendations
+      RFC 5017: MIB Textual Conventions for Uniform Resource
+                Identifiers (URIs)";
+  }
+
+}
diff --git a/config-models/aether-4.x/files/yang/ietf-yang-types.yang b/config-models/aether-4.x/files/yang/ietf-yang-types.yang
new file mode 100644
index 0000000..ee58fa3
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/ietf-yang-types.yang
@@ -0,0 +1,474 @@
+module ietf-yang-types {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+  prefix "yang";
+
+  organization
+   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+   "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+   "This module contains a collection of generally useful derived
+    YANG data types.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+  revision 2013-07-15 {
+    description
+     "This revision adds the following new data types:
+      - yang-identifier
+      - hex-string
+      - uuid
+      - dotted-quad";
+    reference
+     "RFC 6991: Common YANG Data Types";
+  }
+
+  revision 2010-09-24 {
+    description
+     "Initial revision.";
+    reference
+     "RFC 6021: Common YANG Data Types";
+  }
+
+  /*** collection of counter and gauge types ***/
+
+  typedef counter32 {
+    type uint32;
+    description
+     "The counter32 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter32 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter32 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter32.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter32 {
+    type yang:counter32;
+    default "0";
+    description
+     "The zero-based-counter32 type represents a counter32
+      that has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^32-1 (4294967295 decimal), when it
+      wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter32 textual convention of the SMIv2.";
+    reference
+      "RFC 4502: Remote Network Monitoring Management Information
+                 Base Version 2";
+  }
+
+  typedef counter64 {
+    type uint64;
+    description
+     "The counter64 type represents a non-negative integer
+      that monotonically increases until it reaches a
+      maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Counters have no defined 'initial' value, and thus, a
+      single value of a counter has (in general) no information
+      content.  Discontinuities in the monotonically increasing
+      value normally occur at re-initialization of the
+      management system, and at other times as specified in the
+      description of a schema node using this type.  If such
+      other times can occur, for example, the creation of
+      a schema node of type counter64 at times other than
+      re-initialization, then a corresponding schema node
+      should be defined, with an appropriate type, to indicate
+      the last discontinuity.
+
+      The counter64 type should not be used for configuration
+      schema nodes.  A default statement SHOULD NOT be used in
+      combination with the type counter64.
+
+      In the value set and its semantics, this type is equivalent
+      to the Counter64 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef zero-based-counter64 {
+    type yang:counter64;
+    default "0";
+    description
+     "The zero-based-counter64 type represents a counter64 that
+      has the defined 'initial' value zero.
+
+      A schema node of this type will be set to zero (0) on creation
+      and will thereafter increase monotonically until it reaches
+      a maximum value of 2^64-1 (18446744073709551615 decimal),
+      when it wraps around and starts increasing again from zero.
+
+      Provided that an application discovers a new schema node
+      of this type within the minimum time to wrap, it can use the
+      'initial' value as a delta.  It is important for a management
+      station to be aware of this minimum time and the actual time
+      between polls, and to discard data if the actual time is too
+      long or there is no defined minimum time.
+
+      In the value set and its semantics, this type is equivalent
+      to the ZeroBasedCounter64 textual convention of the SMIv2.";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  typedef gauge32 {
+    type uint32;
+    description
+     "The gauge32 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^32-1 (4294967295 decimal), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge32 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge32 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the Gauge32 type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef gauge64 {
+    type uint64;
+    description
+     "The gauge64 type represents a non-negative integer, which
+      may increase or decrease, but shall never exceed a maximum
+      value, nor fall below a minimum value.  The maximum value
+      cannot be greater than 2^64-1 (18446744073709551615), and
+      the minimum value cannot be smaller than 0.  The value of
+      a gauge64 has its maximum value whenever the information
+      being modeled is greater than or equal to its maximum
+      value, and has its minimum value whenever the information
+      being modeled is smaller than or equal to its minimum value.
+      If the information being modeled subsequently decreases
+      below (increases above) the maximum (minimum) value, the
+      gauge64 also decreases (increases).
+
+      In the value set and its semantics, this type is equivalent
+      to the CounterBasedGauge64 SMIv2 textual convention defined
+      in RFC 2856";
+    reference
+     "RFC 2856: Textual Conventions for Additional High Capacity
+                Data Types";
+  }
+
+  /*** collection of identifier-related types ***/
+
+  typedef object-identifier {
+    type string {
+      pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+            + '(\.(0|([1-9]\d*)))*';
+    }
+    description
+     "The object-identifier type represents administratively
+      assigned names in a registration-hierarchical-name tree.
+
+      Values of this type are denoted as a sequence of numerical
+      non-negative sub-identifier values.  Each sub-identifier
+      value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
+      are separated by single dots and without any intermediate
+      whitespace.
+
+      The ASN.1 standard restricts the value space of the first
+      sub-identifier to 0, 1, or 2.  Furthermore, the value space
+      of the second sub-identifier is restricted to the range
+      0 to 39 if the first sub-identifier is 0 or 1.  Finally,
+      the ASN.1 standard requires that an object identifier
+      has always at least two sub-identifiers.  The pattern
+      captures these restrictions.
+
+      Although the number of sub-identifiers is not limited,
+      module designers should realize that there may be
+      implementations that stick with the SMIv2 limit of 128
+      sub-identifiers.
+
+      This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+      since it is not restricted to 128 sub-identifiers.  Hence,
+      this type SHOULD NOT be used to represent the SMIv2 OBJECT
+      IDENTIFIER type; the object-identifier-128 type SHOULD be
+      used instead.";
+    reference
+     "ISO9834-1: Information technology -- Open Systems
+      Interconnection -- Procedures for the operation of OSI
+      Registration Authorities: General procedures and top
+      arcs of the ASN.1 Object Identifier tree";
+  }
+
+  typedef object-identifier-128 {
+    type object-identifier {
+      pattern '\d*(\.\d*){1,127}';
+    }
+    description
+     "This type represents object-identifiers restricted to 128
+      sub-identifiers.
+
+      In the value set and its semantics, this type is equivalent
+      to the OBJECT IDENTIFIER type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef yang-identifier {
+    type string {
+      length "1..max";
+      pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
+      pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
+    }
+    description
+      "A YANG identifier string as defined by the 'identifier'
+       rule in Section 12 of RFC 6020.  An identifier must
+       start with an alphabetic character or an underscore
+       followed by an arbitrary sequence of alphabetic or
+       numeric characters, underscores, hyphens, or dots.
+
+       A YANG identifier MUST NOT start with any possible
+       combination of the lowercase or uppercase character
+       sequence 'xml'.";
+    reference
+      "RFC 6020: YANG - A Data Modeling Language for the Network
+                 Configuration Protocol (NETCONF)";
+  }
+
+  /*** collection of types related to date and time***/
+
+  typedef date-and-time {
+    type string {
+      pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+            + '(Z|[\+\-]\d{2}:\d{2})';
+    }
+    description
+     "The date-and-time type is a profile of the ISO 8601
+      standard for representation of dates and times using the
+      Gregorian calendar.  The profile is defined by the
+      date-time production in Section 5.6 of RFC 3339.
+
+      The date-and-time type is compatible with the dateTime XML
+      schema type with the following notable exceptions:
+
+      (a) The date-and-time type does not allow negative years.
+
+      (b) The date-and-time time-offset -00:00 indicates an unknown
+          time zone (see RFC 3339) while -00:00 and +00:00 and Z
+          all represent the same time zone in dateTime.
+
+      (c) The canonical format (see below) of data-and-time values
+          differs from the canonical format used by the dateTime XML
+          schema type, which requires all times to be in UTC using
+          the time-offset 'Z'.
+
+      This type is not equivalent to the DateAndTime textual
+      convention of the SMIv2 since RFC 3339 uses a different
+      separator between full-date and full-time and provides
+      higher resolution of time-secfrac.
+
+      The canonical format for date-and-time values with a known time
+      zone uses a numeric time zone offset that is calculated using
+      the device's configured known offset to UTC time.  A change of
+      the device's offset to UTC time will cause date-and-time values
+      to change accordingly.  Such changes might happen periodically
+      in case a server follows automatically daylight saving time
+      (DST) time zone offset changes.  The canonical format for
+      date-and-time values with an unknown time zone (usually
+      referring to the notion of local time) uses the time-offset
+      -00:00.";
+    reference
+     "RFC 3339: Date and Time on the Internet: Timestamps
+      RFC 2579: Textual Conventions for SMIv2
+      XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+  }
+
+  typedef timeticks {
+    type uint32;
+    description
+     "The timeticks type represents a non-negative integer that
+      represents the time, modulo 2^32 (4294967296 decimal), in
+      hundredths of a second between two epochs.  When a schema
+      node is defined that uses this type, the description of
+      the schema node identifies both of the reference epochs.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeTicks type of the SMIv2.";
+    reference
+     "RFC 2578: Structure of Management Information Version 2
+                (SMIv2)";
+  }
+
+  typedef timestamp {
+    type yang:timeticks;
+    description
+     "The timestamp type represents the value of an associated
+      timeticks schema node at which a specific occurrence
+      happened.  The specific occurrence must be defined in the
+      description of any schema node defined using this type.  When
+      the specific occurrence occurred prior to the last time the
+      associated timeticks attribute was zero, then the timestamp
+      value is zero.  Note that this requires all timestamp values
+      to be reset to zero when the value of the associated timeticks
+      attribute reaches 497+ days and wraps around to zero.
+
+      The associated timeticks schema node must be specified
+      in the description of any schema node using this type.
+
+      In the value set and its semantics, this type is equivalent
+      to the TimeStamp textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of generic address types ***/
+
+  typedef phys-address {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+
+    description
+     "Represents media- or physical-level addresses represented
+      as a sequence octets, each octet represented by two hexadecimal
+      numbers.  Octets are separated by colons.  The canonical
+      representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the PhysAddress textual convention of the SMIv2.";
+    reference
+     "RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  typedef mac-address {
+    type string {
+      pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
+    }
+    description
+     "The mac-address type represents an IEEE 802 MAC address.
+      The canonical representation uses lowercase characters.
+
+      In the value set and its semantics, this type is equivalent
+      to the MacAddress textual convention of the SMIv2.";
+    reference
+     "IEEE 802: IEEE Standard for Local and Metropolitan Area
+                Networks: Overview and Architecture
+      RFC 2579: Textual Conventions for SMIv2";
+  }
+
+  /*** collection of XML-specific types ***/
+
+  typedef xpath1.0 {
+    type string;
+    description
+     "This type represents an XPATH 1.0 expression.
+
+      When a schema node is defined that uses this type, the
+      description of the schema node MUST specify the XPath
+      context in which the XPath expression is evaluated.";
+    reference
+     "XPATH: XML Path Language (XPath) Version 1.0";
+  }
+
+  /*** collection of string types ***/
+
+  typedef hex-string {
+    type string {
+      pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+    }
+    description
+     "A hexadecimal string with octets represented as hex digits
+      separated by colons.  The canonical representation uses
+      lowercase characters.";
+  }
+
+  typedef uuid {
+    type string {
+      pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+            + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
+    }
+    description
+     "A Universally Unique IDentifier in the string representation
+      defined in RFC 4122.  The canonical representation uses
+      lowercase characters.
+
+      The following is an example of a UUID in string representation:
+      f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+      ";
+    reference
+     "RFC 4122: A Universally Unique IDentifier (UUID) URN
+                Namespace";
+  }
+
+  typedef dotted-quad {
+    type string {
+      pattern
+        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+      + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
+    }
+    description
+      "An unsigned 32-bit number expressed in the dotted-quad
+       notation, i.e., four octets written as decimal numbers
+       and separated with the '.' (full stop) character.";
+  }
+}
diff --git a/config-models/aether-4.x/files/yang/onf-aether-types.yang b/config-models/aether-4.x/files/yang/onf-aether-types.yang
new file mode 100755
index 0000000..07b526e
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/onf-aether-types.yang
@@ -0,0 +1,120 @@
+// 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 {
+      }
+  }
+
+  typedef mcc {
+      type string {
+        pattern '[0-9]{3}';
+      }
+  }
+
+  typedef mnc {
+      type string {
+        pattern '[0-9]{2,3}';
+      }
+  }
+
+  typedef tac {
+      type string {
+        length 4..8;
+        pattern '[0-9A-F\.]*';
+      }
+  }
+
+  typedef ent {
+      type uint32 {
+        range 0..999;
+      }
+  }  
+
+  typedef dnn {
+      type string {
+        length 1..32;
+      }
+  }  
+
+  typedef sst {
+      type uint8 {
+        range 1..255;
+      }
+  }
+
+  typedef sd {
+      type uint32 {
+        range 0..16777215;
+      }
+  }
+
+  typedef qci {
+      type uint8 {
+        range 1..32;
+      }
+  }
+
+  typedef arp {
+      type uint8 {
+        range 1..15;
+      }
+  }  
+
+  typedef pelr {
+      type int8 {
+        range 0..10;
+      }
+  }
+
+  typedef pdb {
+      type uint16 {
+        range 0..1000;
+      }
+  }  
+
+  // "TCP" or "UDP"
+  typedef protocol {
+      type string {
+        length 3;
+        pattern "TCP|UDP";
+      }
+      default "TCP";
+  }
+
+  // "ENABLE" | "MAINTENTANCE" | "DISABLE"
+  typedef admin-status {
+      type string {
+        length 0..16;
+        pattern "ENABLE|MAINTENANCE|DISABLE";
+      }
+      default "ENABLE";
+  }  
+
+  typedef mtu {
+      type inet:port-number;
+      default 1492;
+  }
+
+  typedef description {
+    type string {
+      length 1..1024;
+    }
+  }
+}
diff --git a/config-models/aether-4.x/files/yang/onf-application.yang b/config-models/aether-4.x/files/yang/onf-application.yang
new file mode 100755
index 0000000..0f7d4b6
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/onf-application.yang
@@ -0,0 +1,114 @@
+// 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; }
+
+  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;
+        }
+  }
+
+  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";
+      }
+
+      list endpoint {
+        key "name";
+        max-elements 1;
+        leaf name {
+          type string;
+          description
+              "Name of this endpoint";
+        }
+        leaf address {
+          type ietf:host;
+          mandatory true;
+          description
+              "Address of this endpoint. Either a hostname, and IP, or a subnet.";
+        }
+        leaf port-start {
+          type ietf:port-number;
+          mandatory true;
+          description
+              "First port in range";
+        }
+        leaf port-end {
+          type ietf:port-number;
+          description
+              "Last port in range";
+        }
+        leaf protocol {
+          type at:protocol;
+          description
+              "Name of this 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.";
+      }
+
+      container mbr {
+        description "Maximum bitrate";
+        leaf uplink {
+          type at:bitrate;
+          units mbr;
+          description "Per-Application mbr uplink data rate in mbps";
+        }
+
+        leaf downlink {
+          type at:bitrate;
+          units mbr;
+          description "Per-Application mbr downlink data rate in mbps";
+        }
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-4.x/files/yang/onf-connectivity-service.yang b/config-models/aether-4.x/files/yang/onf-connectivity-service.yang
new file mode 100755
index 0000000..f5ca075
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/onf-connectivity-service.yang
@@ -0,0 +1,76 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+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 
+    "An Aether Connectivity service is the linkage between the
+     ROC and a core that provides connectivity.";
+
+  revision "2021-06-02" {
+    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 yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  container connectivity-service {
+    description "The top level container";
+
+    list connectivity-service {
+      key "id";
+      description
+        "List of connectivity services";
+
+      leaf id {
+        type connectivity-service-id;
+        description "ID for this connectivity service.";
+      }
+
+      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 connectivity service";
+      }
+
+      leaf spgwc-endpoint {
+        type inet:uri;
+        description "url of the spgwc service";
+      }
+
+      leaf hss-endpoint {
+        type inet:uri;
+        description "url of the hss service";
+      }
+
+      leaf pcrf-endpoint {
+        type inet:uri;
+        description "url of the pcrf service";
+      }
+
+      leaf core-5g-endpoint {
+        type inet:uri;
+        description "url of the 5g core";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-4.x/files/yang/onf-device-group.yang b/config-models/aether-4.x/files/yang/onf-device-group.yang
new file mode 100755
index 0000000..90ce834
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/onf-device-group.yang
@@ -0,0 +1,99 @@
+// 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; }
+
+  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;
+        }
+  }  
+
+  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 "name";
+        leaf name {
+          type string;
+        }
+        leaf imsi-range-from {
+          type uint64;
+        }
+        leaf imsi-range-to {
+          type uint64;
+        }
+        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";
+      }
+
+      leaf site {
+        type leafref {
+          path "/st:site/st:site/st:id";
+        }
+        mandatory true;
+        description
+          "Link to site";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-4.x/files/yang/onf-enterprise.yang b/config-models/aether-4.x/files/yang/onf-enterprise.yang
new file mode 100755
index 0000000..ec61bf4
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/onf-enterprise.yang
@@ -0,0 +1,73 @@
+// SPDX-FileCopyrightText: 2021 Open Networking Foundation
+//
+// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+module onf-enterprise {
+  namespace "http://opennetworking.org/aether/enterprise";
+  prefix ent;
+
+  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 
+    "An Aether Enterprise is an administration entity that
+     has ownership of resrouces.";
+
+  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 yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  container enterprise {
+    description "The top level container";
+
+    list enterprise {
+      key "id";
+      description
+        "List of enterprises";
+
+      leaf id {
+        type enterprise-id;
+        description "ID for this enterprise.";
+      }
+
+      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 enterprise";
+      }
+
+      list connectivity-service {
+        key "connectivity-service";
+        leaf connectivity-service {
+          type leafref {
+            path "/cs:connectivity-service/cs:connectivity-service/cs:id";
+          }            
+          description
+            "Link to connectivity services where configuration should be pushed for this enterprise's devices";
+        }
+        leaf enabled {
+          type boolean;
+          default true;
+          description
+            "Allow or disallow pushes to this connectivity service";
+        }
+      }              
+    }
+  } 
+}
diff --git a/config-models/aether-4.x/files/yang/onf-ip-domain.yang b/config-models/aether-4.x/files/yang/onf-ip-domain.yang
new file mode 100755
index 0000000..837647a
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/onf-ip-domain.yang
@@ -0,0 +1,102 @@
+// 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;
+        }
+  }
+
+  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;
+        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-4.x/files/yang/onf-site.yang b/config-models/aether-4.x/files/yang/onf-site.yang
new file mode 100755
index 0000000..74a6b80
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/onf-site.yang
@@ -0,0 +1,129 @@
+// 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;
+        }
+  }
+
+  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 "name";
+        leaf name {
+          type yg:yang-identifier;
+          description
+            "Name 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";
+        }
+        description
+          "List of small cell addresses";
+      }        
+
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }              
+        description
+          "Link to enterprise that owns this site";
+        mandatory true;          
+      }
+
+      container imsi-definition {
+        leaf mcc {
+          type at:mcc;
+          description "mobile country code";
+          mandatory true;
+        }
+        leaf mnc {
+          type at:mnc;
+          description "mobile network code";
+          mandatory true;
+        }
+        leaf enterprise {
+          type at:ent;
+          description "enterprise-specific identifier";
+          mandatory true;
+        }
+        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
+        }
+      }
+
+      leaf description {
+        type at:description;
+        description "description of this site";
+      }         
+    }
+  } 
+}
diff --git a/config-models/aether-4.x/files/yang/onf-template.yang b/config-models/aether-4.x/files/yang/onf-template.yang
new file mode 100755
index 0000000..7d05600
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/onf-template.yang
@@ -0,0 +1,111 @@
+// 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; }
+  import onf-traffic-class{ prefix tc; }
+
+  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-06-02" {
+    description "An Aether Virtual Cellular Service Template";
+    reference "RFC 6087";
+  }
+
+  typedef template-id {
+        type yg:yang-identifier {
+            length 1..32;
+        }
+  }
+
+  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 device {
+        description "Per-device QOS Settings";
+        container mbr {
+          description "Maximum bitrate";
+          leaf uplink {
+            type at:bitrate;
+            units bps;
+            description "Per-device mbr uplink data rate in mbps";
+          }
+
+          leaf downlink {
+            type at:bitrate;
+            units bps;
+            description "Per-device mbr downlink data rate in mbps";
+          }
+        }
+      }
+
+      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 mbps";
+          }
+
+          leaf downlink {
+            type at:bitrate;
+            units bps;
+            description "Per-Slice mbr downlink data rate in mbps";
+          }
+        }
+      }      
+
+      leaf traffic-class {
+        type leafref {
+          path "/tc:traffic-class/tc:traffic-class/tc:id";
+        }          
+        description
+          "Link to traffic class";
+      } 
+
+      leaf description {
+        type at:description;
+        description "description of this vcs template";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-4.x/files/yang/onf-traffic-class.yang b/config-models/aether-4.x/files/yang/onf-traffic-class.yang
new file mode 100755
index 0000000..8a84ee0
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/onf-traffic-class.yang
@@ -0,0 +1,65 @@
+// 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;
+        }
+  }
+
+  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 description {
+        type at:description;
+        description "description of this traffic class";
+      }
+    }
+  } 
+}
diff --git a/config-models/aether-4.x/files/yang/onf-upf.yang b/config-models/aether-4.x/files/yang/onf-upf.yang
new file mode 100755
index 0000000..3d1c764
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/onf-upf.yang
@@ -0,0 +1,86 @@
+// 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; }
+
+  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;
+        }
+  }
+
+  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. TODO: Consider whether they should be owned by a Site
+      // instead of Enterprise.
+      leaf enterprise {
+        type leafref {
+          path "/ent:enterprise/ent:enterprise/ent:id";
+        }
+        mandatory true;
+        description
+          "Link to enterprise that owns this Access Point List";
+      }      
+    }
+  } 
+}
diff --git a/config-models/aether-4.x/files/yang/onf-vcs.yang b/config-models/aether-4.x/files/yang/onf-vcs.yang
new file mode 100755
index 0000000..7a7487d
--- /dev/null
+++ b/config-models/aether-4.x/files/yang/onf-vcs.yang
@@ -0,0 +1,188 @@
+// 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-template{ prefix vt; }
+  import onf-traffic-class{ prefix tc; }
+  import onf-upf { prefix upf; }
+
+  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;
+        }
+  }
+
+  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 template {
+        type leafref {
+          path "/vt:template/vt:template/vt:id";
+        }          
+        description
+          "Link to user vcs template that was used to initialize
+           this VCS";
+      }
+
+      list application {
+        key "application";   
+        leaf application {
+          type leafref {
+            path "/app:application/app:application/app:id";
+          }
+          mandatory true;
+          description
+            "Link to application";
+        }
+        leaf allow {
+          type boolean;
+          default true;
+          description
+            "Allow or deny this application";
+        }
+        description
+          "An ordered list of applications to allow and deny. The deny rules
+           will be executed first, followed by the allow rules. The first rule
+           to match is returned. An implicit DENY ALL lies at the end.";
+      }      
+
+      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";
+      }      
+
+      // 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 device {
+        description "Per-device QOS Settings";
+        container mbr {
+          description "Maximum bitrate";
+          leaf uplink {
+            type at:bitrate;
+            units bps;
+            description "Per-device mbr uplink data rate in mbps";
+          }
+
+          leaf downlink {
+            type at:bitrate;
+            units bps;
+            description "Per-device mbr downlink data rate in mbps";
+          }
+        }
+      }
+
+      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 mbps";
+          }
+
+          leaf downlink {
+            type at:bitrate;
+            units bps;
+            description "Per-Slice mbr downlink data rate in mbps";
+          }
+        }
+      }
+
+      leaf traffic-class {
+        type leafref {
+          path "/tc:traffic-class/tc:traffic-class/tc:id";
+        }
+        mandatory true;
+        description
+          "Link to traffic class";
+      }
+      // end of items populated from the template
+    }
+  } 
+}
diff --git a/config-models/aether-4.x/templates/_helpers.tpl b/config-models/aether-4.x/templates/_helpers.tpl
new file mode 100644
index 0000000..0380f1a
--- /dev/null
+++ b/config-models/aether-4.x/templates/_helpers.tpl
@@ -0,0 +1,52 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Expand the name of the chart.
+*/}}
+{{- define "aether.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "aether.fullname" -}}
+{{- if contains "config-model-aether" .Release.Name -}}
+{{- printf "%s-%s" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s-config-model-aether" .Release.Name .Chart.AppVersion | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "aether.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Common labels
+*/}}
+{{- define "aether.labels" -}}
+helm.sh/chart: {{ include "aether.chart" . }}
+{{ include "aether.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "aether.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "aether.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
+}
diff --git a/config-models/aether-4.x/templates/model.yaml b/config-models/aether-4.x/templates/model.yaml
new file mode 100644
index 0000000..2581353
--- /dev/null
+++ b/config-models/aether-4.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-06-02
+    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-4.x/values.yaml b/config-models/aether-4.x/values.yaml
new file mode 100644
index 0000000..2e984ed
--- /dev/null
+++ b/config-models/aether-4.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/sdcore-adapter/.helmignore b/sdcore-adapter/.helmignore
new file mode 100644
index 0000000..01d4cd9
--- /dev/null
+++ b/sdcore-adapter/.helmignore
@@ -0,0 +1,25 @@
+# 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/sdcore-adapter/Chart.yaml b/sdcore-adapter/Chart.yaml
new file mode 100644
index 0000000..b4b7191
--- /dev/null
+++ b/sdcore-adapter/Chart.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: sdcore-adapter
+kubeVersion: ">=1.17.0"
+type: application
+version: 3.0.15
+appVersion: v3.0.0
+description: ONOS SD-Core Adapter
+keywords:
+  - onos
+  - sdn
+home: https://onosproject.org
+maintainers:
+  - name: ONOS Support
+    email: support@opennetworking.org
diff --git a/sdcore-adapter/README.md b/sdcore-adapter/README.md
new file mode 100644
index 0000000..c589608
--- /dev/null
+++ b/sdcore-adapter/README.md
@@ -0,0 +1,9 @@
+<!--
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+
+## ONOS SD-Core Adapter
+
+Provides a [Helm] chart for deploying µONOS SD-Core adapter on [Kubernetes].
diff --git a/sdcore-adapter/files/certs/README.md b/sdcore-adapter/files/certs/README.md
new file mode 100644
index 0000000..ae3f841
--- /dev/null
+++ b/sdcore-adapter/files/certs/README.md
@@ -0,0 +1,32 @@
+<!--
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+
+This folder contains self-signed certificates for use in testing. _DO NOT USE THESE
+CERTIFICATES IN PRODUCTION!_
+
+The certificates were generated with the
+https://github.com/onosproject/simulators/blob/master/pkg/certs/generate_certs.sh 
+script as
+```bash
+generate_certs.sh sdcore-adapter
+```
+
+In this folder they **must** be (re)named
+* tls.cacrt
+* tls.crt
+* tls.key
+
+Use
+```bash
+openssl x509 -in deployments/helm/onos-config/files/certs/tls.crt -text -noout
+```
+to verify the contents (especially the subject).
+
+There is another Cert for onos-config in test/certs but these were created with:
+```
+generate-certs.sh onos-config
+```
+and are left named onf.cacrt, onos-config.key and onos-config.crt
\ No newline at end of file
diff --git a/sdcore-adapter/files/certs/tls.cacert b/sdcore-adapter/files/certs/tls.cacert
new file mode 100644
index 0000000..879bc06
--- /dev/null
+++ b/sdcore-adapter/files/certs/tls.cacert
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDYDCCAkgCCQDe99fSN9qxSTANBgkqhkiG9w0BAQsFADByMQswCQYDVQQGEwJV
+UzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCU1lbmxvUGFyazEMMAoGA1UECgwDT05G
+MRQwEgYDVQQLDAtFbmdpbmVlcmluZzEeMBwGA1UEAwwVY2Eub3Blbm5ldHdvcmtp
+bmcub3JnMB4XDTE5MDQxMTA5MDYxM1oXDTI5MDQwODA5MDYxM1owcjELMAkGA1UE
+BhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQHDAlNZW5sb1BhcmsxDDAKBgNVBAoM
+A09ORjEUMBIGA1UECwwLRW5naW5lZXJpbmcxHjAcBgNVBAMMFWNhLm9wZW5uZXR3
+b3JraW5nLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMEg7CZR
+X8Y+syKHaQCh6mNIL1D065trwX8RnuKM2kBwSu034zefQAPloWugSoJgJnf5fe0j
+nUD8gN3Sm8XRhCkvf67pzfabgw4n8eJmHScyL/ugyExB6Kahwzn37bt3oT3gSqhr
+6PUznWJ8fvfVuCHZZkv/HPRp4eyAcGzbJ4TuB0go4s6VE0WU5OCxCSlAiK3lvpVr
+3DOLdYLVoCa5q8Ctl3wXDrfTLw5/Bpfrg9fF9ED2/YKIdV8KZ2ki/gwEOQqWcKp8
+0LkTlfOWsdGjp4opPuPT7njMBGXMJzJ8/J1e1aJvIsoB7n8XrfvkNiWL5U3fM4N7
+UZN9jfcl7ULmm7cCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAIh6FjkQuTfXddmZY
+FYpoTen/VD5iu2Xxc1TexwmKeH+YtaKp1Zk8PTgbCtMEwEiyslfeHTMtODfnpUIk
+DwvtB4W0PAnreRsqh9MBzdU6YZmzGyZ92vSUB3yukkHaYzyjeKM0AwgVl9yRNEZw
+Y/OM070hJXXzJh3eJpLl9dlUbMKzaoAh2bZx6y3ZJIZFs/zrpGfg4lvBAvfO/59i
+mxJ9bQBSN3U2Hwp6ioOQzP0LpllfXtx9N5LanWpB0cu/HN9vAgtp3kRTBZD0M1XI
+Ctit8bXV7Mz+1iGqoyUhfCYcCSjuWTgAxzir+hrdn7uO67Hv4ndCoSj4SQaGka3W
+eEfVeA==
+-----END CERTIFICATE-----
diff --git a/sdcore-adapter/files/certs/tls.crt b/sdcore-adapter/files/certs/tls.crt
new file mode 100644
index 0000000..c724912
--- /dev/null
+++ b/sdcore-adapter/files/certs/tls.crt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDZDCCAkwCFErBGzsXHo1l8bmZRmDkF+h2bsdWMA0GCSqGSIb3DQEBCwUAMHIx
+CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJTWVubG9QYXJrMQww
+CgYDVQQKDANPTkYxFDASBgNVBAsMC0VuZ2luZWVyaW5nMR4wHAYDVQQDDBVjYS5v
+cGVubmV0d29ya2luZy5vcmcwHhcNMjAwOTIxMjAyNzM3WhcNMzAwOTE5MjAyNzM3
+WjBrMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCU1lbmxvUGFy
+azEMMAoGA1UECgwDT05GMRQwEgYDVQQLDAtFbmdpbmVlcmluZzEXMBUGA1UEAwwO
+c2Rjb3JlLWFkYXB0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3
+w6n5TzQ3Mx6T7q9WCxEsqpWja9EOV+4GrHLJU/DiIbNTBb7zchOZ56uXoZwpVSeu
+mGz+teCE59S55Iwmx6RJ3Hwqxv+ZVN93sYf7E+91I2ccRj4GvJHz4cVifgug0aG4
+CpqWeBP96Xa0fIJnw6s3sslG27N+KO3Qv5o+V1cz0P3mnYePt+PzTUyKVM5mEsH9
+RjzGSJRuIpB388K+2XW+tMAdB+0IpszKXrUH5bIWCbi/hYMDXI7Gs7TtNQw7ZkIn
+sUQ8FYgJQI1F1hVAsFjsKsN0/resy+YG80ClMV2lXKCr/jUOv0PWwOKwt8TYKDNX
+g4qxn6V/zUGqSttW1KhZAgMBAAEwDQYJKoZIhvcNAQELBQADggEBABXfT9THxoEF
+nHfN+7wAJSh/BGvGcDj/aqMSFItWU8L5meixgZMwdLhjBbjpkSaY5xWw/MMSsXEA
+pemjCvuOO/gD9/HNr1e1xh112O9a2QDRtv5WgAx/ugYeV/wGOxQZROzMFVpAzSUU
+yQO5iGPGGaVOZJ6E1iOSP5SJn2XWjOBQEcmUAV8DtdRzsOWRda/YDdqX6KDULwl9
+hym9r96skzS/jMejV/MYaxgaVB5Xqr6k3JT23msBpkzUIzlO0rMOiJ98h36zqynQ
+HnPtpaZ45VgBxNlU39T81C1UjKhw1HTWEuPX5bJyGnNAdKBfHfQVJrdnJYTCZfYZ
+9CeRFCy3P84=
+-----END CERTIFICATE-----
diff --git a/sdcore-adapter/files/certs/tls.key b/sdcore-adapter/files/certs/tls.key
new file mode 100644
index 0000000..58b76b7
--- /dev/null
+++ b/sdcore-adapter/files/certs/tls.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC3w6n5TzQ3Mx6T
+7q9WCxEsqpWja9EOV+4GrHLJU/DiIbNTBb7zchOZ56uXoZwpVSeumGz+teCE59S5
+5Iwmx6RJ3Hwqxv+ZVN93sYf7E+91I2ccRj4GvJHz4cVifgug0aG4CpqWeBP96Xa0
+fIJnw6s3sslG27N+KO3Qv5o+V1cz0P3mnYePt+PzTUyKVM5mEsH9RjzGSJRuIpB3
+88K+2XW+tMAdB+0IpszKXrUH5bIWCbi/hYMDXI7Gs7TtNQw7ZkInsUQ8FYgJQI1F
+1hVAsFjsKsN0/resy+YG80ClMV2lXKCr/jUOv0PWwOKwt8TYKDNXg4qxn6V/zUGq
+SttW1KhZAgMBAAECggEAcxbbHGYriKq+at3g+B2ESxonD6uVycruK0XTuh2VTrrW
+iZeeqO94MTqz8ApqOES5zpJuKPQVwodDZo0p7Zu5W/z30v7A0/Ig5uDMDkbFAPME
+P+QKMsPlEP4EVhQlCjpgc1hIyxY3Rx3xl0Ynkf8s+3xArN0qREgz8Toeyw5+cddR
+DM7kh9rdq9euA7lnoyiTP8UgSDzMrzLnGj8CbJHcKLzNwA2zwSJtBhdLoWbYCyCD
+JLPFGsuIHV2kuvHpmOxxS+vypT9bETxf60yevug+ay7K7Bgt+amX30RU/SFkF6Aa
+JJYaMf2VAdg6O1g5jNXZ4KuWvRUFt6jxjOg8MI87tQKBgQDmjZTD3mogD5LbT8uv
+sMe9QMp/xGvRiAiOkalpDrsF9zgob0fH9nTf1o767OjYJwRmBE1vQPRd/KFNJQ/d
+zulyR5rdWKoLen/q+fYJSdf1gl7ZDomFSr1IVBksab4ifQ9bSBn6d2n5PKenlW9M
+aJMj5izeskuRlCsjkBsuU+voowKBgQDMDAnCnxOdI/ryY6wx5WXsMPh0RLkcXPnq
+d00iVjKNhrpBVwvh8VGAuUfpGoEmI2I3WWwrmAp6t8LrdHPQlQDS/dlmY1+CarF7
+soCpw8UjhKiB18jUPewaYNbr5olVdYC/Nt70JJwxvQZNCnCwCfJpgkG83UtXSFsA
+WKILTFkO0wKBgQDEowy24gPxxFak5rH67vPs3k3YG1c6JqPltSagjAfHVst28TJv
+wix8nSrlqRoPAXgm6pSAxw2k+8s3WNzneYpyBdB36R9fGuPvLbJCydB/fOoYhuWT
+4eL+xXuS/b1E/RUT7bL6hM7F3I3ByRpcOPUGMVMjvT3mtFD2y/ni0YDrsQKBgCBf
+sJS+ZIBEGyamBcYM3XTx+BmKZcxIPCalMwnFn1OxEpAXXX1Fqma//tbPK7p/Vq/t
+ciogf1klGrn8yftICM9xEzMZhSfOAcbcdWl59CdEfu/K6sQx5unwf2kCNLvoXrr3
+27vkqxuBICTNCUAE8/8leYSbn76DblzJszwTqvWdAoGBAKscYUC9wyrcersVHFmD
+L8sba/8alQ/orX9/Ex3Fyhe8Hn4877znq2Cixnd6zA13o0mJIMRtKOX3CC6XG1WI
+eC0WgAUnbdWlgIyrAnyYQytSWEItJH7nBIOcB7BvkqVHd1/y0/OMgeDiBI7/mHb9
+EZHA1SMvz1yEKUm53DyCh8Nj
+-----END PRIVATE KEY-----
diff --git a/sdcore-adapter/files/configs/README.md b/sdcore-adapter/files/configs/README.md
new file mode 100644
index 0000000..cade213
--- /dev/null
+++ b/sdcore-adapter/files/configs/README.md
@@ -0,0 +1,10 @@
+<!--
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+
+This folder contains test configurations that are loaded into the application
+via a `ConfigMap` when deploying via this Helm chart. The root test configurations
+are copied here because Helm does not allow files outside the chart to be accessed
+via templates. Changes to the root test configurations should be reflected here.
diff --git a/sdcore-adapter/files/configs/empty_config.json b/sdcore-adapter/files/configs/empty_config.json
new file mode 100644
index 0000000..2c63c08
--- /dev/null
+++ b/sdcore-adapter/files/configs/empty_config.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/sdcore-adapter/files/configs/typical_aether_config.json b/sdcore-adapter/files/configs/typical_aether_config.json
new file mode 100644
index 0000000..3353206
--- /dev/null
+++ b/sdcore-adapter/files/configs/typical_aether_config.json
@@ -0,0 +1,72 @@
+{
+  "access-profile": {
+    "access-profile": [
+      {
+        "id": "typical-access-profile",
+        "type": "internet-only",
+        "filter": "allow app name",
+        "description": "a typical access profile"
+      }
+    ]
+  },  
+  "apn-profile": {
+    "apn-profile": [
+      {
+        "id": "typical-apn-profile",
+        "apn-name": "internet",
+        "dns-primary": "8.8.8.4",
+        "dns-secondary": "8.8.8.8",
+        "mtu": 1460,
+        "gx-enabled": true,
+        "description": "a typical apn profile"
+      }
+    ]
+  },
+  "qos-profile": {
+    "qos-profile": [
+      {
+        "id": "typical-qos-profile",
+        "apn-ambr": {
+          "uplink": 4096,
+          "downlink": 4096
+        },
+        "description": "a typical qos profile"
+      }
+    ]
+  },
+  "up-profile": {
+    "up-profile": [
+      {
+        "id": "typical-up-profile",
+        "user-plane": "spgwu1.headless",
+        "access-control": "all",
+        "description": "a typical up profile"
+      }
+    ]
+  },    
+  "subscriber": {
+    "ue": [
+      {
+        "ueid": "e150109999111",
+        "serving-plmn": {
+          "mcc": 208,
+          "mnc": 11,
+          "tac": 1
+        },
+        "enabled": true,
+        "requested-apn": "mme-selected-apn",
+        "profiles": {
+          "apn-profile": "typical-apn-profile",
+          "qos-profile": "typical-qos-profile",
+          "up-profile": "typical-up-profile",
+          "access-profile": [
+            {
+              "access-profile": "typical-access-profile",
+              "allowed": true
+            }
+          ]
+        }
+      }
+    ]
+  }
+}
diff --git a/sdcore-adapter/templates/_helpers.tpl b/sdcore-adapter/templates/_helpers.tpl
new file mode 100644
index 0000000..e7d9bab
--- /dev/null
+++ b/sdcore-adapter/templates/_helpers.tpl
@@ -0,0 +1,56 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Expand the name of the chart.
+*/}}
+{{- define "sdcore-adapter.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "sdcore-adapter.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "sdcore-adapter.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Common labels
+*/}}
+{{- define "sdcore-adapter.labels" -}}
+helm.sh/chart: {{ include "sdcore-adapter.chart" . }}
+{{ include "sdcore-adapter.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "sdcore-adapter.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "sdcore-adapter.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
diff --git a/sdcore-adapter/templates/configmap.yaml b/sdcore-adapter/templates/configmap.yaml
new file mode 100644
index 0000000..057871f
--- /dev/null
+++ b/sdcore-adapter/templates/configmap.yaml
@@ -0,0 +1,33 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ template "sdcore-adapter.fullname" . }}-targetconfig
+  labels:
+    app: {{ template "sdcore-adapter.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+data:
+  {{ $root := . }}
+  {{ range $path, $bytes := .Files.Glob "files/configs/*.json" }}
+  {{ base $path }}: '{{ $root.Files.Get $path }}'
+  {{ end }}
+
+---
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ template "sdcore-adapter.fullname" . }}-logconfig
+  labels:
+    app: {{ template "sdcore-adapter.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+data:
+  logging.yaml: |-
+{{ toYaml .Values.logging | indent 4 }}
diff --git a/sdcore-adapter/templates/deployment.yaml b/sdcore-adapter/templates/deployment.yaml
new file mode 100644
index 0000000..e381db6
--- /dev/null
+++ b/sdcore-adapter/templates/deployment.yaml
@@ -0,0 +1,131 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ template "sdcore-adapter.fullname" . }}
+  namespace: {{ .Release.Namespace }}
+  labels:
+    name: {{ template "sdcore-adapter.fullname" . }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  selector:
+    matchLabels:
+      {{- include "sdcore-adapter.selectorLabels" . | nindent 6 }}
+  template:
+    metadata:
+      labels:
+        name: {{ template "sdcore-adapter.fullname" . }}
+        {{- include "sdcore-adapter.selectorLabels" . | nindent 8 }}
+    spec:
+    {{- with .Values.imagePullSecrets }}
+      imagePullSecrets:
+        {{- toYaml . | nindent 6 }}
+    {{- end }}
+      securityContext:
+        {{- toYaml .Values.podSecurityContext | nindent 8 }}
+      containers:
+        - name: {{ .Chart.Name }}
+          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          env:
+            - name: POD_NAMESPACE
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.namespace
+            - name: POD_NAME
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.name
+            - name: NODE_NAME
+              valueFrom:
+                fieldRef:
+                  fieldPath: spec.nodeName
+          args:
+            - "/usr/local/bin/sdcore-adapter"
+            - "-bind_address=:{{ .Values.ports.gnmi.secure }}"
+            - "-key=/etc/sdcore-adapter/certs/tls.key"
+            - "-cert=/etc/sdcore-adapter/certs/tls.crt"
+            - "-ca=/etc/sdcore-adapter/certs/tls.cacert"
+            - "-alsologtostderr"
+            - "-hostCheckDisabled"
+            - "-model_version={{ .Values.model.version }}"
+            {{ if .Values.initialConfig }}
+            - "-config={{ .Values.initialConfig }}"
+            {{ end }}
+            {{ if .Values.output }}
+            - "-output={{ .Values.output }}"
+            {{ end }}
+            {{ if .Values.spgwEndpoint }}
+            - "-spgw_endpoint={{ .Values.spgwEndpoint }}"
+            {{ end }}
+          ports:
+            {{- range $key, $port := .Values.ports.gnmi }}
+            - name: gnmi{{ $key }}
+              containerPort: {{ $port }}
+            {{- end}}
+          readinessProbe:
+            tcpSocket:
+              port: {{ .Values.ports.gnmi.secure }}
+            initialDelaySeconds: 5
+            periodSeconds: 10
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.ports.gnmi.secure }}
+            initialDelaySeconds: 15
+            periodSeconds: 20
+          volumeMounts:
+            - name: targetconfig
+              mountPath: /etc/sdcore-adapter/configs
+              readOnly: true
+            - name: secret
+              mountPath: /etc/sdcore-adapter/certs
+              readOnly: true              
+            - name: logconfig
+              mountPath: /etc/onos/config
+              readOnly: true
+        - name: {{ .Chart.Name }}-exporter
+          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          env:
+            - name: POD_NAMESPACE
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.namespace
+            - name: POD_NAME
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.name
+            - name: NODE_NAME
+              valueFrom:
+                fieldRef:
+                  fieldPath: spec.nodeName
+          args:
+            - "/usr/local/bin/sdcore-exporter"
+          ports:
+            - name: metrics
+              containerPort: 2112
+          readinessProbe:
+            httpGet:
+              path: /metrics
+              port: 2112
+            initialDelaySeconds: 5
+            periodSeconds: 10
+          livenessProbe:
+            httpGet:
+              path: /metrics
+              port: 2112
+            initialDelaySeconds: 15
+            periodSeconds: 20
+      volumes:
+        - name: logconfig
+          configMap:
+            name: {{ template "sdcore-adapter.fullname" . }}-logconfig
+        - name: targetconfig
+          configMap:
+            name: {{ template "sdcore-adapter.fullname" . }}-targetconfig            
+        - name: secret
+          secret:
+            secretName: {{ template "sdcore-adapter.fullname" . }}-secret
diff --git a/sdcore-adapter/templates/secret.yaml b/sdcore-adapter/templates/secret.yaml
new file mode 100644
index 0000000..f54e403
--- /dev/null
+++ b/sdcore-adapter/templates/secret.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ template "sdcore-adapter.fullname" . }}-secret
+  labels:
+     chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+     release: "{{ .Release.Name }}"
+     heritage: "{{ .Release.Service }}"
+data:
+  {{ $root := . }}
+  {{ range $path, $bytes := .Files.Glob "files/certs/tls.*" }}
+  {{ base $path }}: '{{ $root.Files.Get $path | b64enc }}'
+  {{ end }}
+type: Opaque
diff --git a/sdcore-adapter/templates/service.yaml b/sdcore-adapter/templates/service.yaml
new file mode 100644
index 0000000..a266be4
--- /dev/null
+++ b/sdcore-adapter/templates/service.yaml
@@ -0,0 +1,47 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "sdcore-adapter.fullname" . }}
+  labels:
+    app: {{ template "sdcore-adapter.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    {{- include "sdcore-adapter.labels" . | nindent 4 }}
+spec:
+  type: {{ .Values.service.type }}
+  selector:
+    name: {{ template "sdcore-adapter.fullname" . }}
+  ports:
+    {{- range $key, $port := .Values.ports.gnmi }}
+    - name: gnmi{{ $key }}
+      port: {{ $port }}
+    {{- end}}
+    - name: prometheus
+      port: {{ .Values.ports.prometheus }}
+    - name: diag-api
+      port: {{ .Values.ports.diagApi }}
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "sdcore-adapter.fullname" . }}-exporter
+  labels:
+    app: {{ template "sdcore-adapter.fullname" . }}-exporter
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    {{- include "sdcore-adapter.labels" . | nindent 4 }}
+spec:
+  type: {{ .Values.service.type }}
+  selector:
+    name: {{ template "sdcore-adapter.fullname" . }}
+  ports:
+  - name: metrics
+    port: 2112
+  - name: exporterui
+    port: 8081
diff --git a/sdcore-adapter/templates/servicemonitor.yaml b/sdcore-adapter/templates/servicemonitor.yaml
new file mode 100644
index 0000000..f3d9c89
--- /dev/null
+++ b/sdcore-adapter/templates/servicemonitor.yaml
@@ -0,0 +1,21 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+{{- if eq .Values.prometheusEnabled true }}
+
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: sdcore-adapter
+  labels:
+    {{- include "sdcore-adapter.labels" . | nindent 4 }}
+spec:
+  selector:
+    matchLabels:
+      {{- include "sdcore-adapter.selectorLabels" . | nindent 6 }}
+  endpoints:
+  - port: prometheus
+    path: /metrics
+    scheme: HTTP
+{{ end }}
diff --git a/sdcore-adapter/values.yaml b/sdcore-adapter/values.yaml
new file mode 100644
index 0000000..eca6754
--- /dev/null
+++ b/sdcore-adapter/values.yaml
@@ -0,0 +1,57 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+nameOverride: ""
+fullnameOverride: ""
+
+replicaCount: 1
+annotations: {}
+
+image:
+  repository: onosproject/sdcore-adapter
+  tag: v0.1.36
+  pullPolicy: IfNotPresent
+  pullSecrets: []
+
+resources:
+  requests:
+    cpu: 0.5
+    memory: 512Mi
+
+service:
+  type: ClusterIP
+
+model:
+  version: v3
+
+secure: true
+initialConfig: ""
+output: ""
+spgwEndpoint: ""
+
+ports:
+  gnmi:
+    secure: 5150
+  prometheus: 9851
+  diagApi: 8080
+
+prometheusEnabled: true
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity: {}
+
+logging:
+  loggers:
+    root:
+      level: info
+      output:
+        stdout:
+          sink: stdout
+  sinks:
+    stdout:
+      type: stdout
+      stdout: {}
diff --git a/subscriber-proxy/.helmignore b/subscriber-proxy/.helmignore
new file mode 100644
index 0000000..01d4cd9
--- /dev/null
+++ b/subscriber-proxy/.helmignore
@@ -0,0 +1,25 @@
+# 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/subscriber-proxy/Chart.yaml b/subscriber-proxy/Chart.yaml
new file mode 100644
index 0000000..69c6126
--- /dev/null
+++ b/subscriber-proxy/Chart.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v2
+name: subscriber-proxy
+kubeVersion: ">=1.17.0"
+type: application
+version: 0.0.3
+appVersion: v0.1.32
+description: Subscriber-Proxy
+keywords:
+  - aether
+  - config
+home: https://onosproject.org
+maintainers:
+  - name: Aether Ops team
+    email: support@opennetworking.org
diff --git a/subscriber-proxy/README.md b/subscriber-proxy/README.md
new file mode 100644
index 0000000..0ce0da9
--- /dev/null
+++ b/subscriber-proxy/README.md
@@ -0,0 +1,10 @@
+<!--
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+
+## ONOS SD-Core Adapter
+
+Provides a [Helm] chart for deploying µONOS Subscriber Proxy on [Kubernetes].
+It helps to add IMSI to webui and onos-config
diff --git a/subscriber-proxy/files/certs/README.md b/subscriber-proxy/files/certs/README.md
new file mode 100644
index 0000000..54b62ae
--- /dev/null
+++ b/subscriber-proxy/files/certs/README.md
@@ -0,0 +1,32 @@
+<!--
+SPDX-FileCopyrightText: 2021 Open Networking Foundation
+
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+-->
+
+This folder contains self-signed certificates for use in testing. _DO NOT USE THESE
+CERTIFICATES IN PRODUCTION!_
+
+The certificates were generated with the
+https://github.com/onosproject/simulators/blob/master/pkg/certs/generate_certs.sh 
+script as
+```bash
+generate_certs.sh subscriber-proxy
+```
+
+In this folder they **must** be (re)named
+* tls.cacrt
+* tls.crt
+* tls.key
+
+Use
+```bash
+openssl x509 -in deployments/helm/onos-config/files/certs/tls.crt -text -noout
+```
+to verify the contents (especially the subject).
+
+There is another Cert for onos-config in test/certs but these were created with:
+```
+generate-certs.sh onos-config
+```
+and are left named onf.cacrt, onos-config.key and onos-config.crt
diff --git a/subscriber-proxy/files/certs/tls.cacert b/subscriber-proxy/files/certs/tls.cacert
new file mode 100644
index 0000000..879bc06
--- /dev/null
+++ b/subscriber-proxy/files/certs/tls.cacert
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDYDCCAkgCCQDe99fSN9qxSTANBgkqhkiG9w0BAQsFADByMQswCQYDVQQGEwJV
+UzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCU1lbmxvUGFyazEMMAoGA1UECgwDT05G
+MRQwEgYDVQQLDAtFbmdpbmVlcmluZzEeMBwGA1UEAwwVY2Eub3Blbm5ldHdvcmtp
+bmcub3JnMB4XDTE5MDQxMTA5MDYxM1oXDTI5MDQwODA5MDYxM1owcjELMAkGA1UE
+BhMCVVMxCzAJBgNVBAgMAkNBMRIwEAYDVQQHDAlNZW5sb1BhcmsxDDAKBgNVBAoM
+A09ORjEUMBIGA1UECwwLRW5naW5lZXJpbmcxHjAcBgNVBAMMFWNhLm9wZW5uZXR3
+b3JraW5nLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMEg7CZR
+X8Y+syKHaQCh6mNIL1D065trwX8RnuKM2kBwSu034zefQAPloWugSoJgJnf5fe0j
+nUD8gN3Sm8XRhCkvf67pzfabgw4n8eJmHScyL/ugyExB6Kahwzn37bt3oT3gSqhr
+6PUznWJ8fvfVuCHZZkv/HPRp4eyAcGzbJ4TuB0go4s6VE0WU5OCxCSlAiK3lvpVr
+3DOLdYLVoCa5q8Ctl3wXDrfTLw5/Bpfrg9fF9ED2/YKIdV8KZ2ki/gwEOQqWcKp8
+0LkTlfOWsdGjp4opPuPT7njMBGXMJzJ8/J1e1aJvIsoB7n8XrfvkNiWL5U3fM4N7
+UZN9jfcl7ULmm7cCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAIh6FjkQuTfXddmZY
+FYpoTen/VD5iu2Xxc1TexwmKeH+YtaKp1Zk8PTgbCtMEwEiyslfeHTMtODfnpUIk
+DwvtB4W0PAnreRsqh9MBzdU6YZmzGyZ92vSUB3yukkHaYzyjeKM0AwgVl9yRNEZw
+Y/OM070hJXXzJh3eJpLl9dlUbMKzaoAh2bZx6y3ZJIZFs/zrpGfg4lvBAvfO/59i
+mxJ9bQBSN3U2Hwp6ioOQzP0LpllfXtx9N5LanWpB0cu/HN9vAgtp3kRTBZD0M1XI
+Ctit8bXV7Mz+1iGqoyUhfCYcCSjuWTgAxzir+hrdn7uO67Hv4ndCoSj4SQaGka3W
+eEfVeA==
+-----END CERTIFICATE-----
diff --git a/subscriber-proxy/files/certs/tls.crt b/subscriber-proxy/files/certs/tls.crt
new file mode 100644
index 0000000..3b4a936
--- /dev/null
+++ b/subscriber-proxy/files/certs/tls.crt
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIDZjCCAk4CFAGJmp4Hath03YSm4dunIw10dksyMA0GCSqGSIb3DQEBCwUAMHIx
+CzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTESMBAGA1UEBwwJTWVubG9QYXJrMQww
+CgYDVQQKDANPTkYxFDASBgNVBAsMC0VuZ2luZWVyaW5nMR4wHAYDVQQDDBVjYS5v
+cGVubmV0d29ya2luZy5vcmcwHhcNMjEwODE2MDYxNjEzWhcNMzEwODE0MDYxNjEz
+WjBtMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCU1lbmxvUGFy
+azEMMAoGA1UECgwDT05GMRQwEgYDVQQLDAtFbmdpbmVlcmluZzEZMBcGA1UEAwwQ
+c3Vic2NyaWJlci1wcm94eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
+ANJOwRCu9BEToWSN3eizuQiWeeroM2+nTT89t2fW2PwiMI98aTQNwVza04LMthIu
+OtPoGGnJadWZAi6hPqZYHWAI/p8dfE+eE2ZN+jOifQ4k47JOKo8N52TR4c69aEMH
+oa922aXZsaQkYCL0Xh3hJ7iV6sELVZTRxP9xM2x2yHNzRiDKS7b23k/m7BS6zHm/
+kru3F7W08FQAxBo+8RlhJ++F5cqubND2Giwbjel6+ssbXh4aHwdFppvrW/LaeCnc
+0EzgMefBZnUKxhzV0s2CjCHjHDusK+u0ed0kDwLJcBPNIzYywZvoqUrq/D2NkcXL
+nZv5ONXD/bClTahr1ePqdDcCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEApTVTlHpB
+0wfgxlerJ+clfYs5TMoyU9RGg0fl7d/sHk/shohV5N7vaPCJL3TvrWNpwvwTUHk/
+zdh+OVdjgpscYJgeQnAaoe9CWLqJbVpYGIdOCOZA5eNTSmOjxRUunhPVKH2VEBe3
+RuAg0KjQVAy63Nmc20L38jhNnqr9kVkDMMRA0uSmKa058YHEBbB1N4dwwqO7kPin
+VTGXMLuLb0S/yfjKqtR6wOgeA/0gu17DJdJoRGybPO15kvvy67m5gmr9WZTaJaZj
+8EpHO0ZMJlSSV/IPZGqRDtBWXZuNuUPQuGUvGvJLXfgdo+aL9lKnNQK9v0FApXrc
+9Mkrr2Fy8WdfkQ==
+-----END CERTIFICATE-----
diff --git a/subscriber-proxy/files/certs/tls.key b/subscriber-proxy/files/certs/tls.key
new file mode 100644
index 0000000..ee55ea4
--- /dev/null
+++ b/subscriber-proxy/files/certs/tls.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDSTsEQrvQRE6Fk
+jd3os7kIlnnq6DNvp00/Pbdn1tj8IjCPfGk0DcFc2tOCzLYSLjrT6BhpyWnVmQIu
+oT6mWB1gCP6fHXxPnhNmTfozon0OJOOyTiqPDedk0eHOvWhDB6Gvdtml2bGkJGAi
+9F4d4Se4lerBC1WU0cT/cTNsdshzc0Ygyku29t5P5uwUusx5v5K7txe1tPBUAMQa
+PvEZYSfvheXKrmzQ9hosG43pevrLG14eGh8HRaab61vy2ngp3NBM4DHnwWZ1CsYc
+1dLNgowh4xw7rCvrtHndJA8CyXATzSM2MsGb6KlK6vw9jZHFy52b+TjVw/2wpU2o
+a9Xj6nQ3AgMBAAECggEAVdPiIubjoFx8j0b+e0tthj2y/9VHuJd0hQyw3uXlo/Bo
+FQbXAHFkqnp7u3PEEmNfir+7xuB2Gr/ZDiKsKMLpKhpBn7ou02dVz3ifVZdIpg8U
+Bd60q7Em8BRfrTnLZR+mMq+0X2UahDx8J4fHKTaMOV6lcacohBWf6gfOzsMjR0nU
+t1LQnpue3iFBcwt271B94sottuJCsBLeG4v77L4FSAln/J/3sh1j44rCBNCo4oV5
+3XNvdY7u9HMbN8c7zXycOBN2c49MrusvjQV8aY3wUT63ZeC30gtTwSgjJJ65vENF
+YyPEHo/2qZxoniqgA4OagxQ9h/XBlAA7Gvuy6yPxcQKBgQDsPIBnyRTsC7zRak0r
+2SCS5R50E2CYFciqRZGzsEHcDzV0m90ShiHOpbLcK2aut2u8rODpx3E52ZezqtAA
+YSzX/HQaOgp/QqHdVZwEYF0EXiDkMgBl175aPsSabBAXHkx4WL3vDZ6AjnTw9U6q
+rGIueVd5E5CGEMbKjRT9ZaO2swKBgQDj5u9TO4Ff64fto26pT5gTxecj2BVZWaLh
+DGufYLgOxWR8EzHeb5ygguFlO1hL0RV8sqk+WhcdQ4+Y8HnsOWXQB9W4As7FrONm
+swA12KaOQxG2vWxRQoGe7zcKpNVtTHDSAjgWs7HEy10AtbGbLTWdF1lwnotbgXPk
+1u71ENiubQKBgQDXGF9yIEzEgAt0Qe3yNsjJ94Q6/Em/MFZ9csqvaZUN4WsyuZgY
+/bhah9TLU1kzTB70tBQ1yDr4CX9vP+AT+Gb0YhD0sFROe0UWWpSsB3GqQGqCXGSw
+Vjgjw3MPh8U+x3+pNGP7/dKMCym/HBx8mmjrF+DlhULaTvwyATNTZfAisQKBgQDL
+tZyutT3LU2jIzZEY3gB9jCQzMe7DUw/4QXXhnD5pVZ+gGDg3L2S9RL/cENO30Uh3
+kesdxMFscvtkJW+V6yhKbvZl6HySzRrmrZG+j80w1Fp9EYxEhkH+oqx8YyIy9GTU
+Ew+3mx+HXI/hFoeOwTZvGHPl6pF+VZQWNNibTVehcQKBgQChQ4WOmRB0CmY2AFn+
+aagxTiHGBCvVhyxS9NNV3iGQM8h2iteoxbJF99p4RZhFqmFLW3XuhW4yaaSXcxFd
+skf27j15CbcHLt4KzHLHfFfiYMXPaCFefUGj7EeVvQJMM2KcRrX8ZlsnphOO9ecn
+YoE3q7tuYwlYmcAWYMF5uEaa+Q==
+-----END PRIVATE KEY-----
diff --git a/subscriber-proxy/templates/_helpers.tpl b/subscriber-proxy/templates/_helpers.tpl
new file mode 100644
index 0000000..ba0078e
--- /dev/null
+++ b/subscriber-proxy/templates/_helpers.tpl
@@ -0,0 +1,56 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+Expand the name of the chart.
+*/}}
+{{- define "subscriber-proxy.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "subscriber-proxy.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "subscriber-proxy.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+
+{{/*
+Common labels
+*/}}
+{{- define "subscriber-proxy.labels" -}}
+helm.sh/chart: {{ include "subscriber-proxy.chart" . }}
+{{ include "subscriber-proxy.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end -}}
+
+{{/*
+Selector labels
+*/}}
+{{- define "subscriber-proxy.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "subscriber-proxy.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end -}}
diff --git a/subscriber-proxy/templates/configmap.yaml b/subscriber-proxy/templates/configmap.yaml
new file mode 100644
index 0000000..e1d59c2
--- /dev/null
+++ b/subscriber-proxy/templates/configmap.yaml
@@ -0,0 +1,19 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+
+---
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ template "subscriber-proxy.fullname" . }}-logconfig
+  labels:
+    app: {{ template "subscriber-proxy.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+data:
+  logging.yaml: |-
+{{ toYaml .Values.logging | indent 4 }}
diff --git a/subscriber-proxy/templates/deployment.yaml b/subscriber-proxy/templates/deployment.yaml
new file mode 100644
index 0000000..2cbccc7
--- /dev/null
+++ b/subscriber-proxy/templates/deployment.yaml
@@ -0,0 +1,81 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ template "subscriber-proxy.fullname" . }}
+  namespace: {{ .Release.Namespace }}
+  labels:
+    name: {{ template "subscriber-proxy.fullname" . }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  selector:
+    matchLabels:
+      {{- include "subscriber-proxy.selectorLabels" . | nindent 6 }}
+  template:
+    metadata:
+      labels:
+        name: {{ template "subscriber-proxy.fullname" . }}
+        {{- include "subscriber-proxy.selectorLabels" . | nindent 8 }}
+    spec:
+    {{- with .Values.imagePullSecrets }}
+      imagePullSecrets:
+        {{- toYaml . | nindent 6 }}
+    {{- end }}
+      securityContext:
+        {{- toYaml .Values.podSecurityContext | nindent 8 }}
+      containers:
+        - name: {{ .Chart.Name }}
+          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          env:
+            - name: POD_NAMESPACE
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.namespace
+            - name: POD_NAME
+              valueFrom:
+                fieldRef:
+                  fieldPath: metadata.name
+            - name: NODE_NAME
+              valueFrom:
+                fieldRef:
+                  fieldPath: spec.nodeName
+          args:
+            - "/usr/local/bin/subscriber-proxy"
+            - "-bind_port=:{{ .Values.ports.port }}"
+            - "-client_key=/etc/subscriber-proxy/certs/tls.key"
+            - "-client_crt=/etc/subscriber-proxy/certs/tls.crt"
+            - "-ca_crt=/etc/subscriber-proxy/certs/tls.cacert"
+            - "-alsologtostderr"
+            - "-hostCheckDisabled"
+            - "-webconsole_url=http://{{ .Values.ports.webui_endpt.addr}}:{{ .Values.ports.webui_endpt.port}}"
+            - "-onos_config_url={{ .Values.ports.aether_config_endpt.addr}}:{{ .Values.ports.aether_config_endpt.port}}"
+          ports:
+            - containerPort: {{.Values.ports.port}}
+          readinessProbe:
+            tcpSocket:
+              port: {{ .Values.ports.port }}
+            initialDelaySeconds: 5
+            periodSeconds: 10
+          livenessProbe:
+            tcpSocket:
+              port: {{ .Values.ports.port }}
+            initialDelaySeconds: 15
+            periodSeconds: 20
+          volumeMounts:
+            - name: secret
+              mountPath: /etc/subscriber-proxy/certs
+              readOnly: true
+            - name: logconfig
+              mountPath: /etc/onos/config
+              readOnly: true
+      volumes:
+        - name: logconfig
+          configMap:
+            name: {{ template "subscriber-proxy.fullname" . }}-logconfig
+        - name: secret
+          secret:
+            secretName: {{ template "subscriber-proxy.fullname" . }}-secret
diff --git a/subscriber-proxy/templates/secret.yaml b/subscriber-proxy/templates/secret.yaml
new file mode 100644
index 0000000..445c6bf
--- /dev/null
+++ b/subscriber-proxy/templates/secret.yaml
@@ -0,0 +1,18 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ template "subscriber-proxy.fullname" . }}-secret
+  labels:
+     chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+     release: "{{ .Release.Name }}"
+     heritage: "{{ .Release.Service }}"
+data:
+  {{ $root := . }}
+  {{ range $path, $bytes := .Files.Glob "files/certs/tls.*" }}
+  {{ base $path }}: '{{ $root.Files.Get $path | b64enc }}'
+  {{ end }}
+type: Opaque
diff --git a/subscriber-proxy/templates/service.yaml b/subscriber-proxy/templates/service.yaml
new file mode 100644
index 0000000..91e173c
--- /dev/null
+++ b/subscriber-proxy/templates/service.yaml
@@ -0,0 +1,24 @@
+# SPDX-FileCopyrightText: 2020-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "subscriber-proxy.fullname" . }}
+  labels:
+    app: {{ template "subscriber-proxy.fullname" . }}
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+    release: "{{ .Release.Name }}"
+    heritage: "{{ .Release.Service }}"
+    {{- include "subscriber-proxy.labels" . | nindent 4 }}
+spec:
+  type: {{ .Values.service.type }}
+  selector:
+    name: {{ template "subscriber-proxy.fullname" . }}
+  ports:
+    - name: sub-proxy
+      port: {{.Values.ports.port}}
+      protocol: TCP
+
diff --git a/subscriber-proxy/values.yaml b/subscriber-proxy/values.yaml
new file mode 100644
index 0000000..4889fad
--- /dev/null
+++ b/subscriber-proxy/values.yaml
@@ -0,0 +1,60 @@
+# SPDX-FileCopyrightText: 2021-present Open Networking Foundation <info@opennetworking.org>
+#
+# SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
+
+nameOverride: ""
+fullnameOverride: ""
+
+replicaCount: 1
+annotations: {}
+
+image:
+  repository: onosproject/sdcore-adapter
+  tag: v0.1.32
+  pullPolicy: IfNotPresent
+  pullSecrets: []
+
+resources:
+  requests:
+    cpu: 0.5
+    memory: 512Mi
+
+service:
+  type: ClusterIP
+
+model:
+  version: v3
+
+secure: true
+initialConfig: ""
+output: ""
+spgwEndpoint: ""
+
+ports:
+  port: 5001
+  webui_endpt:
+    addr: webui.omec.svc.cluster.local
+    port: 5000
+  aether_config_endpt:
+    addr: onos-config
+    port: 5150
+
+prometheusEnabled: true
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity: {}
+
+logging:
+  loggers:
+    root:
+      level: info
+      output:
+        stdout:
+          sink: stdout
+  sinks:
+    stdout:
+      type: stdout
+      stdout: {}
