AETHER-2464, AETHER-2467 Make DG Qos Mandatoy; Add allow-internet boolean

Change-Id: I5ee6e8b384aa062b73aad7774ce072f3e9379ae5
diff --git a/aether-roc-umbrella/Chart.yaml b/aether-roc-umbrella/Chart.yaml
index ba9743f..ed6073b 100644
--- a/aether-roc-umbrella/Chart.yaml
+++ b/aether-roc-umbrella/Chart.yaml
@@ -7,7 +7,7 @@
 description: Aether ROC Umbrella chart to deploy all Aether ROC
 kubeVersion: ">=1.18.0"
 type: application
-version: 1.4.17
+version: 1.4.18
 appVersion: v0.0.0
 keywords:
   - aether
@@ -28,7 +28,7 @@
   - name: config-model-aether-4
     condition: onos-config.models.aether.v4.enabled
     repository: "file://../config-models/aether-4.x"
-    version: 4.0.8
+    version: 4.0.9
   - name: config-model-plproxy
     condition: onos-config.models.plproxy.v1.enabled
     repository: "file://../config-models/plproxy-1.x"
diff --git a/config-models/aether-4.x/CHANGELOG.md b/config-models/aether-4.x/CHANGELOG.md
index 35837db..e1faf9e 100644
--- a/config-models/aether-4.x/CHANGELOG.md
+++ b/config-models/aether-4.x/CHANGELOG.md
@@ -3,6 +3,22 @@
 
 SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
 -->
+
+Changes on 10/19/2021
+=====================
+
+Device-Group:
+  * Device.MBR and Device.Traffic-Class set to mandatory
+
+VCS:
+  * Add Allow-Internet boolean
+  * Restricted application filter priority to 0-200.
+  * Remove link to template
+
+Template:
+  * Add Allow-Internet boolean
+  * Remove Traffic-Class and Device.MBR
+
 Changes on 10/13/2021
 =====================
 Application
diff --git a/config-models/aether-4.x/Chart.yaml b/config-models/aether-4.x/Chart.yaml
index bc19caf..c91af0b 100644
--- a/config-models/aether-4.x/Chart.yaml
+++ b/config-models/aether-4.x/Chart.yaml
@@ -4,7 +4,7 @@
 
 apiVersion: v2
 name: config-model-aether-4
-version: 4.0.8
+version: 4.0.9
 kubeVersion: ">=1.18.0"
 appVersion: 4.0.0
 description: Aether config model
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
index aa70bc5..651820d 100644
--- a/config-models/aether-4.x/files/aether-4.0.0.tree
+++ b/config-models/aether-4.x/files/aether-4.0.0.tree
@@ -40,9 +40,9 @@
         +--rw ip-domain?      -> /ipd:ip-domain/ip-domain/id
         +--rw device
         |  +--rw mbr
-        |  |  +--rw uplink?     at:bitrate
-        |  |  +--rw downlink?   at:bitrate
-        |  +--rw traffic-class?   -> /tc:traffic-class/traffic-class/id
+        |  |  +--rw uplink      at:bitrate
+        |  |  +--rw downlink    at:bitrate
+        |  +--rw traffic-class    -> /tc:traffic-class/traffic-class/id
         +--rw site            -> /st:site/site/id
 
 module: onf-enterprise
@@ -97,20 +97,16 @@
 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 id                  template-id
+        +--rw display-name?       string
+        +--rw sst?                at:sst
+        +--rw sd?                 at:sd
         +--rw slice
         |  +--rw mbr
         |     +--rw uplink?     at:bitrate
         |     +--rw downlink?   at:bitrate
-        +--rw traffic-class?   -> /tc:traffic-class/traffic-class/id
-        +--rw description?     at:description
+        +--rw default-behavior    at:behavior
+        +--rw description?        at:description
 
 module: onf-traffic-class
   +--rw traffic-class
@@ -138,27 +134,22 @@
 module: onf-vcs
   +--rw vcs
      +--rw vcs* [id]
-        +--rw id               vcs-id
-        +--rw display-name?    string
+        +--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 default-behavior    at:behavior
         +--rw filter* [application]
         |  +--rw application    -> /app:application/application/id
-        |  +--rw priority?      uint8
+        |  +--rw priority?      at:priority
         |  +--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 upf?                -> /upf:upf/upf/id
+        +--rw description?        at:description
+        +--rw enterprise          -> /ent:enterprise/enterprise/id
+        +--rw sst                 at:sst
+        +--rw sd                  at:sd
         +--rw slice
-        |  +--rw mbr
-        |     +--rw uplink?     at:bitrate
-        |     +--rw downlink?   at:bitrate
-        +--rw traffic-class    -> /tc:traffic-class/traffic-class/id
+           +--rw mbr
+              +--rw uplink?     at:bitrate
+              +--rw downlink?   at:bitrate
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
index 07b526e..bbf3a5e 100755
--- a/config-models/aether-4.x/files/yang/onf-aether-types.yang
+++ b/config-models/aether-4.x/files/yang/onf-aether-types.yang
@@ -87,7 +87,14 @@
       type uint16 {
         range 0..1000;
       }
-  }  
+  }
+
+  typedef priority {
+    type uint8 {
+      // priorities 201-255 are reserved for system use
+      range 0..200;
+    }
+  }
 
   // "TCP" or "UDP"
   typedef protocol {
@@ -105,7 +112,14 @@
         pattern "ENABLE|MAINTENANCE|DISABLE";
       }
       default "ENABLE";
-  }  
+  }
+
+  typedef behavior {
+      type string {
+        length 0..20;
+        pattern "DENY-ALL|ALLOW-ALL|ALLOW-PUBLIC";
+      }
+  }
 
   typedef mtu {
       type inet:port-number;
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
index 36079e0..6dca9a3 100755
--- a/config-models/aether-4.x/files/yang/onf-device-group.yang
+++ b/config-models/aether-4.x/files/yang/onf-device-group.yang
@@ -95,12 +95,14 @@
             type at:bitrate;
             units bps;
             description "Per-device mbr uplink data rate in mbps";
+            mandatory true;
           }
 
           leaf downlink {
             type at:bitrate;
             units bps;
             description "Per-device mbr downlink data rate in mbps";
+            mandatory true;
           }
         }
         leaf traffic-class {
@@ -109,6 +111,7 @@
           }
           description
             "Link to traffic class";
+          mandatory true;
         }
       }
 
@@ -116,9 +119,9 @@
         type leafref {
           path "/st:site/st:site/st:id";
         }
-        mandatory true;
         description
           "Link to site";
+        mandatory true;
       }
     }
   }
diff --git a/config-models/aether-4.x/files/yang/onf-template.yang b/config-models/aether-4.x/files/yang/onf-template.yang
index 7d05600..0ab16a3 100755
--- a/config-models/aether-4.x/files/yang/onf-template.yang
+++ b/config-models/aether-4.x/files/yang/onf-template.yang
@@ -8,7 +8,6 @@
 
   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";
@@ -17,7 +16,7 @@
      by a virtual connectivity service. Templates are used to
      populate a VCS.";
 
-  revision "2021-06-02" {
+  revision "2021-09-10" {
     description "An Aether Virtual Cellular Service Template";
     reference "RFC 6087";
   }
@@ -58,24 +57,6 @@
         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 {
@@ -92,15 +73,14 @@
             description "Per-Slice mbr downlink data rate in mbps";
           }
         }
-      }      
+      }
 
-      leaf traffic-class {
-        type leafref {
-          path "/tc:traffic-class/tc:traffic-class/tc:id";
-        }          
+      leaf default-behavior {
+        type at:behavior;
+        mandatory true;
         description
-          "Link to traffic class";
-      } 
+          "Default behavior if no filter rules match";
+      }      
 
       leaf description {
         type at:description;
diff --git a/config-models/aether-4.x/files/yang/onf-vcs.yang b/config-models/aether-4.x/files/yang/onf-vcs.yang
index 183d6f6..7373d1b 100755
--- a/config-models/aether-4.x/files/yang/onf-vcs.yang
+++ b/config-models/aether-4.x/files/yang/onf-vcs.yang
@@ -12,7 +12,6 @@
   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.";
@@ -72,13 +71,11 @@
            the VCS if the enable field is set to True";
       }
 
-      leaf template {
-        type leafref {
-          path "/vt:template/vt:template/vt:id";
-        }
+      leaf default-behavior {
+        type at:behavior;
+        mandatory true;
         description
-          "Link to user vcs template that was used to initialize
-           this VCS";
+          "Default behavior if no filter rules match";
       }
 
       list filter {
@@ -92,7 +89,7 @@
             "Link to application";
         }
         leaf priority {
-          type uint8;
+          type at:priority;
           default 0;
           description
             "Priority of this application";
@@ -144,26 +141,6 @@
         description "Slice differentiator. Immutable.";
       }
 
-      // This is deprecated. Per-device QOS is moving
-      // to DG.
-      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 {
@@ -182,14 +159,6 @@
         }
       }
 
-      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
     }
   }