Define one more SR-IOV network for NetDevice type

SPGW-U and the other regular network applications (e.g., CDN and BBU/CU)
use SR-IOV/VFIO and SR-IOV/NetDevice, respectively.
Thus, need to define one more SR-IOV network.

Change-Id: Iff331fcb8f2040ce4127be5d591c6bd4e1aa32bd
diff --git a/mcord-release/cdn-services/cdn-local/Chart.yaml b/mcord-release/cdn-services/cdn-local/Chart.yaml
index 6d74c93..7e74640 100644
--- a/mcord-release/cdn-services/cdn-local/Chart.yaml
+++ b/mcord-release/cdn-services/cdn-local/Chart.yaml
@@ -17,4 +17,4 @@
 appVersion: "1.0"
 description: A Helm chart for M-CORD CDN Services in Local Edge
 name: cdn-local
-version: 0.0.2
+version: 0.0.3
diff --git a/mcord-release/cdn-services/cdn-local/templates/networks.yaml b/mcord-release/cdn-services/cdn-local/templates/networks.yaml
new file mode 100644
index 0000000..ec2707f
--- /dev/null
+++ b/mcord-release/cdn-services/cdn-local/templates/networks.yaml
@@ -0,0 +1,42 @@
+---
+# Copyright 2018-present Open Networking Foundation
+# Copyright 2018 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{{- range .Values.network.networks }}
+---
+apiVersion: "k8s.cni.cncf.io/v1"
+kind: NetworkAttachmentDefinition
+metadata:
+  name: {{ .name }}
+{{- if $.Values.network.sriov.enabled }}
+  annotations:
+    k8s.v1.cni.cncf.io/resourceName: intel.com/sriov_netdevice
+{{- end }}
+spec:
+  config: '{
+    "type": {{ .type | quote }},
+    "ipam": {
+        "type": {{ .ipam | quote }},
+    {{- if eq .ipam "host-local" }}
+        "subnet": {{ .subnet | quote }},
+        "gateway": {{ .gateway | quote }}
+    {{- else if eq .ipam "centralip" }}
+        "ipType": "cluster",
+        "network": {{ .subnet | quote }},
+        "etcdURL": {{ $.Values.etcdurl | quote }}
+    {{- end }}
+    }
+  }'
+{{- end }}
diff --git a/mcord-release/cdn-services/cdn-local/templates/nginx.yaml b/mcord-release/cdn-services/cdn-local/templates/nginx.yaml
index c2ef758..8b97592 100644
--- a/mcord-release/cdn-services/cdn-local/templates/nginx.yaml
+++ b/mcord-release/cdn-services/cdn-local/templates/nginx.yaml
@@ -43,7 +43,7 @@
         app: nginx-rtmp
       annotations:
         k8s.v1.cni.cncf.io/networks: '[
-            { "name": "sgi-net", "interface": "sgi-net", "namespace": "default" }
+            { "name": "sgi-net-nd", "interface": "sgi-net-nd" }
         ]'
     spec:
       #hostNetwork: true
@@ -89,7 +89,7 @@
           mountPath: /conf
         resources:
           limits:
-            intel.com/sriov: '2'
+            intel.com/sriov_netdevice: '2'
       volumes:
       - name: nginx-rtmp-config
         configMap:
diff --git a/mcord-release/cdn-services/cdn-local/values.yaml b/mcord-release/cdn-services/cdn-local/values.yaml
index e7cfba3..b790a9c 100644
--- a/mcord-release/cdn-services/cdn-local/values.yaml
+++ b/mcord-release/cdn-services/cdn-local/values.yaml
@@ -21,6 +21,7 @@
 spgwu_sgiip: 13.0.0.83
 ue_ip_subnet1: 16.0.0.0/8
 ue_ip_subnet2: 17.0.0.0/8
+etcdurl: http://node1:32379
 
 nginx:
   images:
@@ -31,3 +32,13 @@
   replicas: 1
   nodeselector:
     sriov: netdevice
+
+network:
+  sriov:
+    enabled: true
+  networks:
+    - name: sgi-net-nd
+      type: sriov
+      ipam: centralip
+      subnet: 13.1.1.0/24
+      gateway: 13.1.1.254
\ No newline at end of file
diff --git a/mcord-release/cdn-services/cdn-remote/Chart.yaml b/mcord-release/cdn-services/cdn-remote/Chart.yaml
index e1eeac7..a98e014 100644
--- a/mcord-release/cdn-services/cdn-remote/Chart.yaml
+++ b/mcord-release/cdn-services/cdn-remote/Chart.yaml
@@ -17,4 +17,4 @@
 appVersion: "1.0"
 description: A Helm chart for M-CORD CDN Services in Remote Edge
 name: cdn-remote
-version: 0.0.2
+version: 0.0.3
diff --git a/mcord-release/mcord-services/Chart.yaml b/mcord-release/mcord-services/Chart.yaml
index 12a8042..57fffe3 100644
--- a/mcord-release/mcord-services/Chart.yaml
+++ b/mcord-release/mcord-services/Chart.yaml
@@ -18,4 +18,4 @@
 appVersion: "1.0"
 description: M-CORD services with OMEC inside
 name: mcord-services
-version: 0.1.2
+version: 0.1.3
diff --git a/mcord-release/mcord-services/templates/networks.yaml b/mcord-release/mcord-services/templates/networks.yaml
index 0cecc3a..8ea9d8e 100644
--- a/mcord-release/mcord-services/templates/networks.yaml
+++ b/mcord-release/mcord-services/templates/networks.yaml
@@ -22,7 +22,7 @@
   name: {{ .name }}
 {{- if $.Values.network.sriov.enabled }}
   annotations:
-    k8s.v1.cni.cncf.io/resourceName: intel.com/sriov
+    k8s.v1.cni.cncf.io/resourceName: intel.com/sriov_vfio
 {{- end }}
 spec:
   config: '{
diff --git a/mcord-release/mcord-services/templates/statefulset-spgwu.yaml b/mcord-release/mcord-services/templates/statefulset-spgwu.yaml
index 837872c..da94a73 100644
--- a/mcord-release/mcord-services/templates/statefulset-spgwu.yaml
+++ b/mcord-release/mcord-services/templates/statefulset-spgwu.yaml
@@ -121,7 +121,7 @@
             cpu: {{ .Values.spgwu.resources.cpu | quote }}
             memory: {{ .Values.spgwu.resources.memory }}
             {{- if .Values.network.sriov.enabled }}
-            intel.com/sriov: 2
+            intel.com/sriov_vfio: 2
             {{- end }}
         securityContext:
           capabilities:
diff --git a/mcord-release/mcord-setup/Chart.yaml b/mcord-release/mcord-setup/Chart.yaml
index c3db31c..afdf2fd 100644
--- a/mcord-release/mcord-setup/Chart.yaml
+++ b/mcord-release/mcord-setup/Chart.yaml
@@ -18,4 +18,4 @@
 appVersion: "1.0"
 description: The prerequisite setup of M-CORD
 name: mcord-setup
-version: 0.1.1
+version: 0.1.2
diff --git a/mcord-release/mcord-setup/templates/NOTES.txt b/mcord-release/mcord-setup/templates/NOTES.txt
index bc70b1d..a059f77 100644
--- a/mcord-release/mcord-setup/templates/NOTES.txt
+++ b/mcord-release/mcord-setup/templates/NOTES.txt
@@ -19,15 +19,15 @@
 
 Your configurations for SR-IOV network device plugin as following:
 
-    10-Gigabit NIC PCI address: {{ .Values.sriov.devicepci }}
-    SR-IOV device type: {{ .Values.sriov.devicetype }}
+    10-Gigabit NIC PCI address: {{ .Values.sriov_vfio.devicepci }}
+    SR-IOV device type: {{ .Values.sriov_vfio.devicetype }} and {{ .Values.sriov_netdevice.devicetype }}
 
 You can run following command to check SR-IOV is working in Kubernetes cluster:
 
     $ kubectl -n kube-system -l name=sriov-device-plugin -o wide get pods
     $ kubectl get nodes -o json | jq -r '.items[] | "\(.metadata.name): \(.status.allocatable)"'
 
-    node1: {"cpu":"39800m","ephemeral-storage":"452697199891","hugepages-1Gi":"32Gi","intel.com/sriov":"63","memory":"31776336Ki","pods":"110"}
-    node2: {"cpu":"39800m","ephemeral-storage":"452697199891","hugepages-1Gi":"32Gi","intel.com/sriov":"63","memory":"31776336Ki","pods":"110"}
+    node1: {"cpu":"39800m","ephemeral-storage":"452697199891","hugepages-1Gi":"32Gi","intel.com/sriov_vfio":"63","intel.com/sriov_netdevice":"63","memory":"31776336Ki","pods":"110"}
+    node2: {"cpu":"39800m","ephemeral-storage":"452697199891","hugepages-1Gi":"32Gi","intel.com/sriov_vfio":"63","intel.com/sriov_netdevice":"63","memory":"31776336Ki","pods":"110"}
 
-The result should show "intel.com/sriov" resource is registered to cluster, and have some virtual function available here.
+The result should show "intel.com/sriov_*" resource is registered to cluster, and have some virtual function available here.
diff --git a/mcord-release/mcord-setup/templates/sriov-conf.yaml b/mcord-release/mcord-setup/templates/sriov-conf.yaml
index 03befce..fcc0f24 100644
--- a/mcord-release/mcord-setup/templates/sriov-conf.yaml
+++ b/mcord-release/mcord-setup/templates/sriov-conf.yaml
@@ -25,10 +25,16 @@
       "resourceList":
       [
         {
-          "resourceName": {{ .Values.sriov.name | quote }},
-          "rootDevices": [{{ .Values.sriov.devicepci | quote }}],
+          "resourceName": {{ .Values.sriov_vfio.name | quote }},
+          "rootDevices": [{{ .Values.sriov_vfio.devicepci | quote }}],
           "sriovMode": true,
-          "deviceType": {{ .Values.sriov.devicetype | quote }}
+          "deviceType": {{ .Values.sriov_vfio.devicetype | quote }}
+        },
+        {
+          "resourceName": {{ .Values.sriov_netdevice.name | quote }},
+          "rootDevices": [{{ .Values.sriov_netdevice.devicepci | quote }}],
+          "sriovMode": true,
+          "deviceType": {{ .Values.sriov_netdevice.devicetype | quote }}
         }
       ]
     }
diff --git a/mcord-release/mcord-setup/values.yaml b/mcord-release/mcord-setup/values.yaml
index d9f8be4..58ca552 100644
--- a/mcord-release/mcord-setup/values.yaml
+++ b/mcord-release/mcord-setup/values.yaml
@@ -18,7 +18,12 @@
   initimage: aweimeow/multus-sriov
   image: aweimeow/multus-sriov
 
-sriov:
-  name: sriov
+sriov_vfio:
+  name: sriov_vfio
   devicepci: 04:00.0
   devicetype: vfio
+
+sriov_netdevice:
+  name: sriov_netdevice
+  devicepci: 04:00.0
+  devicetype: netdevice