This patch is used to commit helm for VMware 83/1083/1
authorxinhuili <lxinhui@vmware.com>
Fri, 28 Jun 2019 04:39:38 +0000 (21:39 -0700)
committerxinhuili <lxinhui@vmware.com>
Fri, 28 Jun 2019 04:39:38 +0000 (21:39 -0700)
These files has been tested on vmware stack

Signed-off-by: XINHUI LI <lxinhui@vmware.com>
wq

Change-Id: I9065e9e1b134fa48ea07ac7910ed48ef29bf8000

106 files changed:
helm-charts/att-workflow-1.2.2.tgz [new file with mode: 0644]
helm-charts/base-kubernetes-1.0.4.tgz [new file with mode: 0644]
helm-charts/configs/mininet-values.yaml [new file with mode: 0644]
helm-charts/configs/seba-ponsim-latest.yaml
helm-charts/configs/seba-ponsim-voltha-1.7.yaml [new file with mode: 0644]
helm-charts/etcd-operator-0.8.3.tgz [new file with mode: 0644]
helm-charts/examples/bbsim-16-latest.yaml [new file with mode: 0644]
helm-charts/kafka-0.13.3.tgz [new file with mode: 0644]
helm-charts/mcord-release/cdn-services/cdn-local/Chart.yaml [new file with mode: 0644]
helm-charts/mcord-release/cdn-services/cdn-local/templates/cm.yaml [new file with mode: 0644]
helm-charts/mcord-release/cdn-services/cdn-local/templates/nginx.yaml [new file with mode: 0644]
helm-charts/mcord-release/cdn-services/cdn-local/values.yaml [new file with mode: 0644]
helm-charts/mcord-release/cdn-services/cdn-remote/Chart.yaml [new file with mode: 0644]
helm-charts/mcord-release/cdn-services/cdn-remote/templates/ant-media.yaml [new file with mode: 0644]
helm-charts/mcord-release/cdn-services/cdn-remote/templates/cm.yaml [new file with mode: 0644]
helm-charts/mcord-release/cdn-services/cdn-remote/templates/remote-streamer.yaml [new file with mode: 0644]
helm-charts/mcord-release/cdn-services/cdn-remote/values.yaml [new file with mode: 0644]
helm-charts/mcord-release/mcord-setup/Chart.yaml
helm-charts/mcord-release/mcord-setup/templates/multus-sriov-ds.yaml
helm-charts/mcord-release/mcord-setup/templates/sriov-conf.yaml
helm-charts/mcord/cni-config/04-sriov-device-plugin-configmap.yaml
helm-charts/mcord/mcord-cdn-monitoring/.helmignore [new file with mode: 0644]
helm-charts/mcord/mcord-cdn-monitoring/Chart.yaml [new file with mode: 0644]
helm-charts/mcord/mcord-cdn-monitoring/configs/cdn-metrics.json [new file with mode: 0755]
helm-charts/mcord/mcord-cdn-monitoring/configs/grafana.ini [new file with mode: 0755]
helm-charts/mcord/mcord-cdn-monitoring/configs/ldap.toml [new file with mode: 0755]
helm-charts/mcord/mcord-cdn-monitoring/templates/NOTES.txt [new file with mode: 0644]
helm-charts/mcord/mcord-cdn-monitoring/templates/cadvisor-ds.yaml [new file with mode: 0644]
helm-charts/mcord/mcord-cdn-monitoring/templates/grafana-cfg.yaml [new file with mode: 0644]
helm-charts/mcord/mcord-cdn-monitoring/templates/grafana-rc.yaml [new file with mode: 0644]
helm-charts/mcord/mcord-cdn-monitoring/templates/grafana-svc.yaml [new file with mode: 0644]
helm-charts/mcord/mcord-cdn-monitoring/templates/prometheus-cfg.yaml [new file with mode: 0644]
helm-charts/mcord/mcord-cdn-monitoring/templates/prometheus-rc.yaml [new file with mode: 0644]
helm-charts/mcord/mcord-cdn-monitoring/templates/prometheus-svc.yaml [new file with mode: 0644]
helm-charts/mcord/mcord-cdn-monitoring/values.yaml [new file with mode: 0644]
helm-charts/mininet-0.5.1.tgz [new file with mode: 0644]
helm-charts/mininet/Chart.yaml
helm-charts/mininet/templates/_helpers.tpl
helm-charts/mininet/templates/deployment.yaml
helm-charts/mininet/toposcripts/topo.py
helm-charts/mininet/values.yaml
helm-charts/nem-monitoring/Chart.yaml
helm-charts/nem-monitoring/grafana-dashboards/aaa-stats.json [new file with mode: 0644]
helm-charts/nem-monitoring/templates/grafana-dashboard-aaa-configmap.yaml [new file with mode: 0644]
helm-charts/nem-monitoring/values.yaml
helm-charts/onos-1.1.0.tgz [new file with mode: 0644]
helm-charts/ponnet-1.2.1.tgz [new file with mode: 0644]
helm-charts/ponnet/Chart.yaml
helm-charts/ponnet/templates/genie-cni-1.8.yaml
helm-charts/ponnet/templates/ponnet-cni.yaml [new file with mode: 0644]
helm-charts/ponnet/values.yaml
helm-charts/ponsim-pod-1.3.3.tgz [new file with mode: 0644]
helm-charts/ponsimv2-1.1.1.tgz [new file with mode: 0644]
helm-charts/ponsimv2/Chart.yaml
helm-charts/ponsimv2/templates/olt.yaml
helm-charts/ponsimv2/templates/onu.yaml
helm-charts/ponsimv2/templates/rg.yaml
helm-charts/ponsimv2/values.yaml
helm-charts/seba-services-1.2.5.tgz [new file with mode: 0644]
helm-charts/voltha-1.0.4.tgz [new file with mode: 0644]
helm-charts/voltha/charts/etcd-cluster-0.1.2.tgz [new file with mode: 0644]
helm-charts/voltha/requirements.lock [new file with mode: 0644]
helm-charts/voltha/templates/alarm-generator.yaml
helm-charts/voltha/templates/freeradius.yaml
helm-charts/voltha/templates/netconf.yaml
helm-charts/voltha/templates/ofagent.yaml
helm-charts/voltha/templates/vcli.yaml
helm-charts/voltha/templates/vcore_for_etcd.yaml
helm-charts/workflows/att-workflow/Chart.yaml
helm-charts/workflows/att-workflow/charts/att-workflow-driver-1.1.0.tgz [new file with mode: 0644]
helm-charts/workflows/att-workflow/requirements.lock [new file with mode: 0644]
helm-charts/workflows/tt-workflow/Chart.yaml
helm-charts/xos-core-3.0.7.tgz [new file with mode: 0644]
helm-charts/xos-core/Chart.yaml
helm-charts/xos-core/charts/xos-db-1.0.1.tgz [new file with mode: 0644]
helm-charts/xos-core/charts/xos-gui-1.2.4.tgz [new file with mode: 0644]
helm-charts/xos-core/requirements.lock [new file with mode: 0644]
helm-charts/xos-core/values.yaml
helm-charts/xos-profiles/base-kubernetes/Chart.yaml
helm-charts/xos-profiles/base-kubernetes/charts/kubernetes-1.0.3.tgz [new file with mode: 0644]
helm-charts/xos-profiles/base-kubernetes/requirements.lock [new file with mode: 0644]
helm-charts/xos-profiles/base-kubernetes/requirements.yaml
helm-charts/xos-profiles/ponsim-pod/Chart.yaml
helm-charts/xos-profiles/ponsim-pod/templates/tosca-job.yaml
helm-charts/xos-profiles/ponsim-pod/tosca/020-pod-olt.yaml
helm-charts/xos-profiles/ponsim-pod/tosca/030-fabric.yaml
helm-charts/xos-profiles/ponsim-pod/tosca/040-subscriber.yaml
helm-charts/xos-profiles/ponsim-pod/tosca/att-workflow/010-att-workflow.yaml
helm-charts/xos-profiles/ponsim-pod/values.yaml
helm-charts/xos-profiles/rcord-lite/Chart.yaml
helm-charts/xos-profiles/rcord-lite/requirements.yaml
helm-charts/xos-profiles/seba-services/Chart.yaml
helm-charts/xos-profiles/seba-services/charts/fabric-2.2.0.tgz [new file with mode: 0644]
helm-charts/xos-profiles/seba-services/charts/fabric-crossconnect-1.2.0.tgz [new file with mode: 0644]
helm-charts/xos-profiles/seba-services/charts/onos-service-2.1.0.tgz [new file with mode: 0644]
helm-charts/xos-profiles/seba-services/charts/rcord-1.0.14.tgz [new file with mode: 0644]
helm-charts/xos-profiles/seba-services/charts/sadis-server-1.0.2.tgz [new file with mode: 0644]
helm-charts/xos-profiles/seba-services/charts/volt-2.2.3.tgz [new file with mode: 0644]
helm-charts/xos-profiles/seba-services/requirements.lock [new file with mode: 0644]
helm-charts/xos-profiles/seba-services/requirements.yaml
helm-charts/xos-profiles/seba-services/templates/_tosca.tpl
helm-charts/xos-services/kubernetes/Chart.yaml
helm-charts/xos-services/kubernetes/templates/_helpers.tpl
helm-charts/xos-services/volt/Chart.yaml
helm-charts/xos-services/volt/templates/_tosca.tpl
helm-charts/xos-services/volt/values.yaml

diff --git a/helm-charts/att-workflow-1.2.2.tgz b/helm-charts/att-workflow-1.2.2.tgz
new file mode 100644 (file)
index 0000000..fb175f3
Binary files /dev/null and b/helm-charts/att-workflow-1.2.2.tgz differ
diff --git a/helm-charts/base-kubernetes-1.0.4.tgz b/helm-charts/base-kubernetes-1.0.4.tgz
new file mode 100644 (file)
index 0000000..7578f42
Binary files /dev/null and b/helm-charts/base-kubernetes-1.0.4.tgz differ
diff --git a/helm-charts/configs/mininet-values.yaml b/helm-charts/configs/mininet-values.yaml
new file mode 100644 (file)
index 0000000..e8618f7
--- /dev/null
@@ -0,0 +1,3 @@
+---
+nodeSelector:
+  kubernetes.io/hostname: eepks-n1
index bd4ad22..636b7cb 100644 (file)
@@ -35,7 +35,6 @@ images:
     tag: 'master'
 # ONOS
   onos:
-    repository: 'matteoscandolo/onos'
     tag: '1.13.9-rc4'
 # VOLTHA
   vcore:
@@ -52,14 +51,21 @@ images:
     tag: 'latest'
   freeradius:
     tag: 'latest'
+# BBSim
+  bbsim:
+    tag: 'latest'
 
 # Ponsimv2
   olt:
-    repository: "voltha/voltha-ponsim"
     tag: "latest"
   onu:
-   repository: "voltha/voltha-ponsim"
-   tag: "latest"
+    tag: "latest"
+  rg:
+    tag: "latest"
+
+# NEM Monitoring
+  voltha_kpi_exporter:
+    tag: 'latest'
 
 # in xos-gui sub-chart required by xos-core chart
 xos-gui:
@@ -110,14 +116,22 @@ tt-workflow-driver:
   # this is mandatory, it's needed to correctly configure the kafka endpoint
   kafkaService: cord-kafka
 
+# in mininet chart
+vlanMatchDepth: 2
+enableMulticast: True
+
+# in ponsim-pod chart
+bandwidthProfiles: True
+legacyPonsim: False
+
 # ONOS applications
-aaaAppUrl: "https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.opencord&a=aaa&v=1.9.0-SNAPSHOT&e=oar"
+aaaAppUrl: "https://oss.sonatype.org/content/groups/public/org/opencord/aaa-app/1.9.0-SNAPSHOT/aaa-app-1.9.0-20190521.071409-20.oar"
 aaaAppVersion: "1.9.0.SNAPSHOT"
 
 sadisAppUrl: "https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.opencord&a=sadis-app&v=3.1.0-SNAPSHOT&e=oar"
 sadisAppVersion: "3.1.0.SNAPSHOT"
 
-dhcpl2relayAppUrl: "https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.opencord&a=dhcpl2relay&v=1.6.0-SNAPSHOT&e=oar"
+dhcpl2relayAppUrl: "https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.opencord&a=dhcpl2relay-app&v=1.6.0-SNAPSHOT&e=oar"
 dhcpl2relayAppVersion: "1.6.0.SNAPSHOT"
 
 oltAppUrl: "https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.opencord&a=olt-app&v=3.0.1-SNAPSHOT&e=oar"
diff --git a/helm-charts/configs/seba-ponsim-voltha-1.7.yaml b/helm-charts/configs/seba-ponsim-voltha-1.7.yaml
new file mode 100644 (file)
index 0000000..337c3a9
--- /dev/null
@@ -0,0 +1,107 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+# Values file for deploying SEBA with Ponsim
+# Use this file to deploy the 'master' (dev) versions of all services.
+# This is mainly useful for testing.
+
+# voltha
+etcd-cluster:
+  clusterSize: 1
+
+# in xos-core chart and other charts with multiple images
+images:
+  xos_tosca:
+    tag: '1.3.1'
+
+# ONOS
+  onos:
+    tag: '1.13.9-rc4'
+
+# VOLTHA
+  vcore:
+    tag: 'voltha-1.7'
+  vcli:
+    tag: 'voltha-1.7'
+  ofagent:
+    tag: 'voltha-1.7'
+  netconf:
+    tag: 'voltha-1.7'
+  envoy_for_etcd:
+    tag: 'voltha-1.7'
+  alarm_generator:
+    tag: 'voltha-1.7'
+  freeradius:
+    tag: 'latest'
+
+# Ponsimv2
+  olt:
+    tag: "voltha-1.7"
+  onu:
+    tag: "voltha-1.7"
+  rg:
+    tag: "voltha-1.7"
+
+# in seba service chart
+sadis-server:
+  image:
+    tag: 'latest'
+rcord:
+  image:
+    tag: 'master'
+volt:
+  image:
+    tag: 'master'
+
+
+# in workflow/att-workflow service chart
+att-workflow-driver:
+  image:
+    tag: '1.2.2'
+
+  # this is mandatory, it's needed to correctly configure the kafka endpoint
+  kafkaService: cord-kafka
+
+# in workflow/tt-workflow service chart
+tt-workflow-driver:
+  image:
+    tag: 'master'
+
+  # this is mandatory, it's needed to correctly configure the kafka endpoint
+  kafkaService: cord-kafka
+
+# in mininet chart
+vlanMatchDepth: 2
+enableMulticast: True
+
+# in ponsim-pod chart
+bandwidthProfiles: True
+legacyPonsim: False
+
+# ONOS applications
+aaaAppUrl: "https://oss.sonatype.org/content/groups/public/org/opencord/aaa-app/1.9.0-SNAPSHOT/aaa-app-1.9.0-20190521.071409-20.oar"
+aaaAppVersion: "1.9.0.SNAPSHOT"
+
+sadisAppUrl: "https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.opencord&a=sadis-app&v=3.1.0-SNAPSHOT&e=oar"
+sadisAppVersion: "3.1.0.SNAPSHOT"
+
+dhcpl2relayAppUrl: "https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.opencord&a=dhcpl2relay-app&v=1.6.0-SNAPSHOT&e=oar"
+dhcpl2relayAppVersion: "1.6.0.SNAPSHOT"
+
+oltAppUrl: "https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.opencord&a=olt-app&v=3.0.1-SNAPSHOT&e=oar"
+oltAppVersion: "3.0.1.SNAPSHOT"
+
+kafkaAppUrl: "https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.opencord&a=kafka&v=1.1.0-SNAPSHOT&e=oar"
+kafkaAppVersion: "1.1.0.SNAPSHOT"
diff --git a/helm-charts/etcd-operator-0.8.3.tgz b/helm-charts/etcd-operator-0.8.3.tgz
new file mode 100644 (file)
index 0000000..165fc0a
Binary files /dev/null and b/helm-charts/etcd-operator-0.8.3.tgz differ
diff --git a/helm-charts/examples/bbsim-16-latest.yaml b/helm-charts/examples/bbsim-16-latest.yaml
new file mode 100644 (file)
index 0000000..ade67ed
--- /dev/null
@@ -0,0 +1,571 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+# Example TOSCA to create a BBSim OLT and 16 ONUs with SiaB
+# Load into xos-tosca with:
+#  curl -H "xos-username: admin@opencord.org" -H "xos-password: letmein" -X POST --data-binary @bbsim-16.yaml http://127.0.0.1:30007/run
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+imports:
+  - custom_types/voltservice.yaml
+  - custom_types/oltdevice.yaml
+  - custom_types/onudevice.yaml
+  - custom_types/attworkflowdriverservice.yaml
+  - custom_types/attworkflowdriverwhitelistentry.yaml
+  - custom_types/rcordsubscriber.yaml
+  - custom_types/bandwidthprofile.yaml
+
+description: Create a simulated OLT Device in VOLTHA
+topology_template:
+  node_templates:
+
+    # Bronze bandwidthprofile for subscriber
+    bronze_bp:
+      type: tosca.nodes.BandwidthProfile
+      properties:
+         air: 99999
+         cbs: 99999
+         cir: 99999
+         ebs: 99999
+         eir: 99999
+         name: Bronze
+
+    service#volt:
+      type: tosca.nodes.VOLTService
+      properties:
+        name: volt
+        must-exist: true
+
+    olt_device:
+      type: tosca.nodes.OLTDevice
+      properties:
+        name: BBSIM_OLT
+        device_type: openolt
+        host: bbsim.voltha.svc
+        port: 50060
+        switch_datapath_id: of:0000000000000002
+        switch_port: "3"
+        outer_tpid: "0x8100"
+        uplink: "65536"
+        nas_id: "NAS_ID"
+        serial_number: "bbsim.voltha.svc:50060"
+        technology: xgspon
+      requirements:
+        - volt_service:
+            node: service#volt
+            relationship: tosca.relationships.BelongsToOne
+
+    # Whitelist
+    service#att:
+      type: tosca.nodes.AttWorkflowDriverService
+      properties:
+        name: att-workflow-driver
+        must-exist: true
+
+    BBSM00000000:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM00000000
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM00000001:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM00000001
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM00000002:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM00000002
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM00000003:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM00000003
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM00000004:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM00000004
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM00000005:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM00000005
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM00000006:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM00000006
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM00000007:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM00000007
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM00000008:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM00000008
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM00000009:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM00000009
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM0000000a:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM0000000a
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM0000000b:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM0000000b
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM0000000c:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM0000000c
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM0000000d:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM0000000d
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM0000000e:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM0000000e
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    BBSM0000000f:
+      type: tosca.nodes.AttWorkflowDriverWhiteListEntry
+      properties:
+        serial_number: BBSM0000000f
+        pon_port_id: 536870912
+        device_id: of:0000626273696d76
+      requirements:
+        - owner:
+            node: service#att
+            relationship: tosca.relationships.BelongsToOne
+
+    # Pre-provision the subscriber
+    bbsim_subscriber_0:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM00000000
+        status: pre-provisioned
+        c_tag: 900
+        s_tag: 999
+        onu_device: BBSM00000000
+        circuit_id: circuit0
+        remote_id: remote0
+        nas_port_id: PON 2/1/01/1:1.1.0
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_1:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM00000001
+        status: pre-provisioned
+        c_tag: 901
+        s_tag: 999
+        onu_device: BBSM00000001
+        circuit_id: circuit1
+        remote_id: remote1
+        nas_port_id: PON 2/1/01/1:1.1.1
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_2:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM00000002
+        status: pre-provisioned
+        c_tag: 902
+        s_tag: 999
+        onu_device: BBSM00000002
+        circuit_id: circuit2
+        remote_id: remote2
+        nas_port_id: PON 2/1/01/1:1.1.2
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_3:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM00000003
+        status: pre-provisioned
+        c_tag: 903
+        s_tag: 999
+        onu_device: BBSM00000003
+        circuit_id: circuit3
+        remote_id: remote3
+        nas_port_id: PON 2/1/01/1:1.1.3
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_4:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM00000004
+        status: pre-provisioned
+        c_tag: 904
+        s_tag: 999
+        onu_device: BBSM00000004
+        circuit_id: circuit4
+        remote_id: remote4
+        nas_port_id: PON 2/1/01/1:1.1.4
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_5:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM00000005
+        status: pre-provisioned
+        c_tag: 905
+        s_tag: 999
+        onu_device: BBSM00000005
+        circuit_id: circuit5
+        remote_id: remote5
+        nas_port_id: PON 2/1/01/1:1.1.5
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_6:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM00000006
+        status: pre-provisioned
+        c_tag: 906
+        s_tag: 999
+        onu_device: BBSM00000006
+        circuit_id: circuit6
+        remote_id: remote6
+        nas_port_id: PON 2/1/01/1:1.1.6
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_7:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM00000007
+        status: pre-provisioned
+        c_tag: 907
+        s_tag: 999
+        onu_device: BBSM00000007
+        circuit_id: circuit7
+        remote_id: remote7
+        nas_port_id: PON 2/1/01/1:1.1.7
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_8:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM00000008
+        status: pre-provisioned
+        c_tag: 908
+        s_tag: 999
+        onu_device: BBSM00000008
+        circuit_id: circuit8
+        remote_id: remote8
+        nas_port_id: PON 2/1/01/1:1.1.8
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_9:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM00000009
+        status: pre-provisioned
+        c_tag: 909
+        s_tag: 999
+        onu_device: BBSM00000009
+        circuit_id: circuit9
+        remote_id: remote9
+        nas_port_id: PON 2/1/01/1:1.1.9
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_a:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM0000000a
+        status: pre-provisioned
+        c_tag: 910
+        s_tag: 999
+        onu_device: BBSM0000000a
+        circuit_id: circuit10a
+        remote_id: remote10a
+        nas_port_id: PON 2/1/01/1:1.1.10a
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_b:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM0000000b
+        status: pre-provisioned
+        c_tag: 911
+        s_tag: 999
+        onu_device: BBSM0000000b
+        circuit_id: circuit10b
+        remote_id: remote10b
+        nas_port_id: PON 2/1/01/1:1.1.10b
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_c:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM0000000c
+        status: pre-provisioned
+        c_tag: 912
+        s_tag: 999
+        onu_device: BBSM0000000c
+        circuit_id: circuit10c
+        remote_id: remote10c
+        nas_port_id: PON 2/1/01/1:1.1.10c
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_d:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM0000000d
+        status: pre-provisioned
+        c_tag: 913
+        s_tag: 999
+        onu_device: BBSM0000000d
+        circuit_id: circuit10d
+        remote_id: remote10d
+        nas_port_id: PON 2/1/01/1:1.1.10d
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_e:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM0000000e
+        status: pre-provisioned
+        c_tag: 914
+        s_tag: 999
+        onu_device: BBSM0000000e
+        circuit_id: circuit10e
+        remote_id: remote10e
+        nas_port_id: PON 2/1/01/1:1.1.10e
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+
+    bbsim_subscriber_f:
+      type: tosca.nodes.RCORDSubscriber
+      properties:
+        name: Sub_BBSM0000000f
+        status: pre-provisioned
+        c_tag: 915
+        s_tag: 999
+        onu_device: BBSM0000000f
+        circuit_id: circuit10f
+        remote_id: remote10f
+        nas_port_id: PON 2/1/01/1:1.1.10f
+        tech_profile_id: 64
+      requirements:
+        - upstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
+        - downstream_bps:
+            node: bronze_bp
+            relationship: tosca.relationships.BelongsToOne
diff --git a/helm-charts/kafka-0.13.3.tgz b/helm-charts/kafka-0.13.3.tgz
new file mode 100644 (file)
index 0000000..26ea8d9
Binary files /dev/null and b/helm-charts/kafka-0.13.3.tgz differ
diff --git a/helm-charts/mcord-release/cdn-services/cdn-local/Chart.yaml b/helm-charts/mcord-release/cdn-services/cdn-local/Chart.yaml
new file mode 100644 (file)
index 0000000..d162d11
--- /dev/null
@@ -0,0 +1,20 @@
+---
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+apiVersion: v1
+appVersion: "1.0"
+description: A Helm chart for M-CORD CDN Services in Local Edge
+name: cdn-local
+version: 0.0.1
diff --git a/helm-charts/mcord-release/cdn-services/cdn-local/templates/cm.yaml b/helm-charts/mcord-release/cdn-services/cdn-local/templates/cm.yaml
new file mode 100644 (file)
index 0000000..d6d7849
--- /dev/null
@@ -0,0 +1,77 @@
+---
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: nginx-rtmp-config
+data:
+  nginx_rtmp_config.sh: |+
+    #!/bin/bash
+    ip route add {{ .Values.ue_ip_subnet1 }} via {{ .Values.spgwu_sgiip }} dev sgi-net;
+    ip route add {{ .Values.ue_ip_subnet2 }} via {{ .Values.spgwu_sgiip }} dev sgi-net;
+    ip link set sgi-net mtu 1200;
+    cp /conf/nginx.conf  /etc/nginx/
+    nginx -g "daemon off;"
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: nginx-rtmp-conf
+data:
+  nginx.conf: |+
+    worker_processes  1;
+
+    events {
+        worker_connections  1024;
+    }
+
+
+    http {
+        include       mime.types;
+        default_type  application/octet-stream;
+
+        sendfile        on;
+        keepalive_timeout  65;
+
+        server {
+            listen       8085;
+            server_name  localhost;
+
+            location / {
+                root   html;
+                index  index.html index.htm;
+            }
+
+            error_page   500 502 503 504  /50x.html;
+            location = /50x.html {
+                root   html;
+            }
+        }
+    }
+    rtmp {
+        server {
+            listen 1935;
+            chunk_size 4000;
+            application r {
+               live on;
+               pull rtmp://{{ .Values.remote_ip }}:30935/LiveApp/{{ .Values.stream_name }};
+            }
+            application l {
+               play /opt/cdn/movies;
+            }
+        }
+    }
diff --git a/helm-charts/mcord-release/cdn-services/cdn-local/templates/nginx.yaml b/helm-charts/mcord-release/cdn-services/cdn-local/templates/nginx.yaml
new file mode 100644 (file)
index 0000000..7c9548f
--- /dev/null
@@ -0,0 +1,107 @@
+---
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: nginx-rtmp
+spec:
+  selector:
+    app: nginx-rtmp
+  type: NodePort
+  ports:
+  - name: vlc
+    port: {{ .Values.nginx.ports.rtmp_orig }}
+    nodePort: {{ .Values.nginx.ports.rtmp_np }}
+    protocol: TCP
+
+---
+apiVersion: apps/v1beta1
+kind: StatefulSet
+metadata:
+  name: nginx-rtmp
+spec:
+  serviceName: nginx-rtmp
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        name: nginx-rtmp
+        app: nginx-rtmp
+      annotations:
+        k8s.v1.cni.cncf.io/networks: '[
+            { "name": "sgi-net", "interface": "sgi-net", "namespace": "default" }
+        ]'
+    spec:
+      #hostNetwork: true
+      nodeSelector:
+        kubernetes.io/hostname: {{ .Values.cdn_node_selector }}
+      terminationGracePeriodSeconds: 0
+      imagePullSecrets:
+      - name: nexus-docker-secret
+      initContainers:
+      - name: "nginx-rtmp-init"
+        image: {{ .Values.nginx.images.nginx_image }}
+        imagePullPolicy: "IfNotPresent"
+        args:
+        - cp /config/*.sh /shared-vol;cp /conf/* /shared-vol
+        command:
+        - "/bin/bash"
+        - "-c"
+        volumeMounts:
+        - name: "shared-volume"
+          mountPath: "/shared-vol"
+        - name: "nginx-rtmp-config"
+          mountPath: "/config"
+        - name: "nginx-rtmp-conf"
+          mountPath: "/conf"
+      containers:
+      - name: nginx-rtmp
+        image: {{ .Values.nginx.images.nginx_image }}
+        imagePullPolicy: IfNotPresent
+        args:
+        - chmod a+x /config/*.sh;/config/nginx_rtmp_config.sh
+        command:
+        - "/bin/bash"
+        - "-c"
+        tty: true
+        securityContext:
+          privileged: true
+        ports:
+        - containerPort: {{ .Values.nginx.ports.rtmp_orig }}
+        volumeMounts:
+        - name: shared-volume
+          mountPath: /config
+        - name: shared-volume
+          mountPath: /conf
+        resources:
+          limits:
+            intel.com/sriov: '2'
+      volumes:
+      - name: nginx-rtmp-config
+        configMap:
+          name: nginx-rtmp-config
+          items:
+          - key: nginx_rtmp_config.sh
+            path: nginx_rtmp_config.sh
+      - name: nginx-rtmp-conf
+        configMap:
+          name: nginx-rtmp-conf
+          items:
+          - key: nginx.conf
+            path: nginx.conf
+      - name: shared-volume
+        emptyDir: {}
\ No newline at end of file
diff --git a/helm-charts/mcord-release/cdn-services/cdn-local/values.yaml b/helm-charts/mcord-release/cdn-services/cdn-local/values.yaml
new file mode 100644 (file)
index 0000000..965456c
--- /dev/null
@@ -0,0 +1,32 @@
+---
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+cdn_node_selector: node3
+nginx_hostname: "nginx"
+local_vlc_hostname: "local_vlc"
+
+remote_ip: 10.90.0.132
+stream_name: 1.stream
+spgwu_sgiip: 13.0.0.83
+ue_ip_subnet1: 16.0.0.0/8
+ue_ip_subnet2: 17.0.0.0/8
+
+nginx:
+  images:
+    nginx_image: "woojoong/nginx:onf-video-v3"
+  ports:
+    rtmp_orig: 1935
+    rtmp_np: 31935
+  replicas: 1
diff --git a/helm-charts/mcord-release/cdn-services/cdn-remote/Chart.yaml b/helm-charts/mcord-release/cdn-services/cdn-remote/Chart.yaml
new file mode 100644 (file)
index 0000000..719ccf3
--- /dev/null
@@ -0,0 +1,20 @@
+---
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+apiVersion: v1
+appVersion: "1.0"
+description: A Helm chart for M-CORD CDN Services in Remote Edge
+name: cdn-remote
+version: 0.0.1
diff --git a/helm-charts/mcord-release/cdn-services/cdn-remote/templates/ant-media.yaml b/helm-charts/mcord-release/cdn-services/cdn-remote/templates/ant-media.yaml
new file mode 100644 (file)
index 0000000..0dc8efc
--- /dev/null
@@ -0,0 +1,73 @@
+---
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: antmedia
+spec:
+  selector:
+    app: antmedia
+  type: NodePort
+  ports:
+  - name: httpui
+    port: {{ .Values.antmedia.ports.httpui }}
+    nodePort: {{ .Values.antmedia.ports.httpui_np }}
+    protocol: TCP
+  - name: rtmp
+    port: {{ .Values.antmedia.ports.rtmp }}
+    nodePort: {{ .Values.antmedia.ports.rtmp_np }}
+    protocol: TCP
+
+---
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: antmedia
+  labels:
+    name: antmedia
+    app: antmedia
+spec:
+  replicas: {{ .Values.antmedia.replicas }}
+  selector:
+    matchLabels:
+      app: antmedia
+  serviceName: "antmedia"
+  template:
+    metadata:
+      labels:
+        app: antmedia
+        name: antmedia
+    spec:
+      terminationGracePeriodSeconds: 1
+      nodeSelector:
+        kubernetes.io/hostname: {{ .Values.cdn_node_selector }}
+      containers:
+      - name: antmedia
+        image: {{ .Values.antmedia.images.antmedia_image }}
+        imagePullPolicy: IfNotPresent
+        ports:
+        - containerPort: {{ .Values.antmedia.ports.httpui }}
+        - containerPort: {{ .Values.antmedia.ports.rtmp }}
+        stdin: true
+        tty: true
+        command: [ "bash",  "-xc"]
+        args:
+          - cd /usr/local/antmedia && ./start.sh | tee /opt/start.log
+        resources:
+          limits:
+            cpu: {{ .Values.antmedia.resources.cpu }}
+            memory: {{ .Values.antmedia.resources.mem }}
\ No newline at end of file
diff --git a/helm-charts/mcord-release/cdn-services/cdn-remote/templates/cm.yaml b/helm-charts/mcord-release/cdn-services/cdn-remote/templates/cm.yaml
new file mode 100644 (file)
index 0000000..6b419c5
--- /dev/null
@@ -0,0 +1,24 @@
+---
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+---
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: start-remote-stream
+data:
+  start-remote-stream.sh: |+
+    #!/bin/bash
+    while true; do ffmpeg -re -i /opt/cdn/movies/{{ .Values.remote_streaming.video_quality }}.mp4 -c copy -f flv rtmp://{{ .Values.remote_streaming.antmedia_ip }}:30935/LiveApp/{{ .Values.stream_name }}; done
\ No newline at end of file
diff --git a/helm-charts/mcord-release/cdn-services/cdn-remote/templates/remote-streamer.yaml b/helm-charts/mcord-release/cdn-services/cdn-remote/templates/remote-streamer.yaml
new file mode 100644 (file)
index 0000000..b974c44
--- /dev/null
@@ -0,0 +1,80 @@
+---
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: remote-streaming
+spec:
+  selector:
+    app: remote-streaming
+  type: NodePort
+  ports:
+  - name: vlc
+    port: {{ .Values.remote_streaming.ports.vlc }}
+    nodePort: {{ .Values.remote_streaming.ports.vlc_np }}
+    protocol: TCP
+  - name: http
+    port: {{ .Values.remote_streaming.ports.http }}
+    nodePort: {{ .Values.remote_streaming.ports.http_np }}
+    protocol: TCP
+
+---
+apiVersion: apps/v1beta1
+kind: StatefulSet
+metadata:
+  name: remote-streaming
+spec:
+  replicas: {{ .Values.remote_streaming.replicas }}
+  selector:
+    matchLabels:
+      app: remote-streaming
+  serviceName: "remote-streaming"
+  template:
+    metadata:
+      labels:
+        app: remote-streaming
+        name: remote-streaming
+    spec:
+      terminationGracePeriodSeconds: 1
+      nodeSelector:
+        kubernetes.io/hostname: {{ .Values.cdn_node_selector }}
+      containers:
+      - name: streaming
+        image: {{ .Values.remote_streaming.images.remote_streaming_image }}
+        imagePullPolicy: IfNotPresent
+        ports:
+        - containerPort: {{ .Values.remote_streaming.ports.vlc }}
+        - containerPort: {{ .Values.remote_streaming.ports.http }}
+        stdin: true
+        tty: true
+        command: [ "bash",  "-xc"]
+        args:
+        - sed -i 's/geteuid/getppid/' /usr/bin/vlc;
+          /opt/start-remote-stream.sh
+        resources:
+          limits:
+            cpu: {{ .Values.remote_streaming.resources.cpu }}
+            memory: {{ .Values.remote_streaming.resources.mem }}
+        volumeMounts:
+        - name: start-script
+          mountPath: /opt/start-remote-stream.sh
+          subPath: start-remote-stream.sh
+      volumes:
+      - name: start-script
+        configMap:
+          name: start-remote-stream
+          defaultMode: 493
\ No newline at end of file
diff --git a/helm-charts/mcord-release/cdn-services/cdn-remote/values.yaml b/helm-charts/mcord-release/cdn-services/cdn-remote/values.yaml
new file mode 100644 (file)
index 0000000..e1e8ad8
--- /dev/null
@@ -0,0 +1,47 @@
+---
+# Copyright 2019-present Open Networking Foundation
+#
+# 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.
+
+namespace: remotecdn
+cdn_node_selector: node2
+remote_streaming_hostname: "remote-streaming"
+stream_name: 1.stream
+
+remote_streaming:
+  video_quality: 360
+  antmedia_ip: 10.90.0.132
+  images:
+    remote_streaming_image: "woojoong/mwc-cdn:remote-v3"
+  ports:
+    vlc: 8089
+    vlc_np: 31889
+    http: 50001
+    http_np: 31501
+  replicas: 1
+  resources:
+    cpu: 3
+    mem: "1Gi"
+
+antmedia:
+  images:
+    antmedia_image: "woojoong/antmedia:1.7.0"
+  ports:
+    httpui: 5080
+    httpui_np: 32080
+    rtmp: 1935
+    rtmp_np: 30935
+  replicas: 1
+  resources:
+    cpu: 3
+    mem: "1Gi"
index ddbb3f3..c3db31c 100644 (file)
@@ -18,4 +18,4 @@ apiVersion: v1
 appVersion: "1.0"
 description: The prerequisite setup of M-CORD
 name: mcord-setup
-version: 0.1.0
+version: 0.1.1
index 135e769..b65fa64 100644 (file)
@@ -81,7 +81,7 @@ metadata:
 data:
   install-certs.sh: |
     # Copied from Calico
-    # https://github.com/projectcalico/cni-plugin/blob/master/k8s-install/scripts/install-cni.sh
+    # https://github.com/projectnsx/cni-plugin/blob/master/k8s-install/scripts/install-cni.sh
     touch /host/etc/cni/net.d/multus-kubeconfig
     chmod 600 /host/etc/cni/net.d/multus-kubeconfig
     SERVICE_ACCOUNT_PATH=/var/run/secrets/multus/serviceaccount
index 963beb6..03befce 100644 (file)
@@ -28,7 +28,7 @@ data:
           "resourceName": {{ .Values.sriov.name | quote }},
           "rootDevices": [{{ .Values.sriov.devicepci | quote }}],
           "sriovMode": true,
-          "deviceType": "vfio"
+          "deviceType": {{ .Values.sriov.devicetype | quote }}
         }
       ]
     }
index a5f9d20..ddaf93b 100644 (file)
@@ -22,7 +22,7 @@ metadata:
 data:
   install-certs.sh: |
     # Copied from Calico
-    # https://github.com/projectcalico/cni-plugin/blob/master/k8s-install/scripts/install-cni.sh
+    # https://github.com/projectnsx/cni-plugin/blob/master/k8s-install/scripts/install-cni.sh
     touch /host/etc/cni/net.d/multus-kubeconfig
     chmod 600 /host/etc/cni/net.d/multus-kubeconfig
     SERVICE_ACCOUNT_PATH=/var/run/secrets/kubernetes.io/serviceaccount
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/.helmignore b/helm-charts/mcord/mcord-cdn-monitoring/.helmignore
new file mode 100644 (file)
index 0000000..50af031
--- /dev/null
@@ -0,0 +1,22 @@
+# 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/helm-charts/mcord/mcord-cdn-monitoring/Chart.yaml b/helm-charts/mcord/mcord-cdn-monitoring/Chart.yaml
new file mode 100644 (file)
index 0000000..c8babb2
--- /dev/null
@@ -0,0 +1,20 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+apiVersion: v1
+appVersion: "1.0"
+description: A Helm chart for Time Series Storage and Dashboard for CDN monitoring
+name: mcord-cdn-monitoring
+version: 0.1.0
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/configs/cdn-metrics.json b/helm-charts/mcord/mcord-cdn-monitoring/configs/cdn-metrics.json
new file mode 100755 (executable)
index 0000000..e24b6d6
--- /dev/null
@@ -0,0 +1,269 @@
+{\r
+  "annotations": {\r
+    "list": [\r
+      {\r
+        "builtIn": 1,\r
+        "datasource": "-- Grafana --",\r
+        "enable": true,\r
+        "hide": true,\r
+        "iconColor": "rgba(0, 211, 255, 1)",\r
+        "name": "Annotations & Alerts",\r
+        "type": "dashboard"\r
+      }\r
+    ]\r
+  },\r
+  "editable": true,\r
+  "gnetId": null,\r
+  "graphTooltip": 0,\r
+  "id": 3,\r
+  "links": [],\r
+  "panels": [\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "prom",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 9,\r
+        "w": 12,\r
+        "x": 0,\r
+        "y": 0\r
+      },\r
+      "id": 2,\r
+      "legend": {\r
+        "alignAsTable": true,\r
+        "avg": true,\r
+        "current": true,\r
+        "max": true,\r
+        "min": true,\r
+        "show": true,\r
+        "sort": "max",\r
+        "sortDesc": true,\r
+        "total": false,\r
+        "values": true\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(container_network_transmit_bytes_total{container_label_io_kubernetes_pod_name=\"wowza-0\"}[5m])) by (interface)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "tx: {{interface}}",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "-sum(irate(container_network_receive_bytes_total{container_label_io_kubernetes_pod_name=\"wowza-0\"}[5m])) by (interface)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "rx: {{interface}}",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Remote",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "Bps",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    },\r
+    {\r
+      "aliasColors": {},\r
+      "bars": false,\r
+      "dashLength": 10,\r
+      "dashes": false,\r
+      "datasource": "prom",\r
+      "fill": 1,\r
+      "gridPos": {\r
+        "h": 9,\r
+        "w": 12,\r
+        "x": 12,\r
+        "y": 0\r
+      },\r
+      "id": 3,\r
+      "legend": {\r
+        "alignAsTable": true,\r
+        "avg": true,\r
+        "current": true,\r
+        "max": true,\r
+        "min": true,\r
+        "show": true,\r
+        "sort": "max",\r
+        "sortDesc": true,\r
+        "total": false,\r
+        "values": true\r
+      },\r
+      "lines": true,\r
+      "linewidth": 1,\r
+      "links": [],\r
+      "nullPointMode": "null",\r
+      "percentage": false,\r
+      "pointradius": 5,\r
+      "points": false,\r
+      "renderer": "flot",\r
+      "seriesOverrides": [],\r
+      "spaceLength": 10,\r
+      "stack": false,\r
+      "steppedLine": false,\r
+      "targets": [\r
+        {\r
+          "expr": "sum(irate(container_network_transmit_bytes_total{container_label_io_kubernetes_pod_name=\"nginx-rtmp-0\"}[5m])) by (interface)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "tx: {{interface}}",\r
+          "refId": "A"\r
+        },\r
+        {\r
+          "expr": "-sum(irate(container_network_receive_bytes_total{container_label_io_kubernetes_pod_name=\"nginx-rtmp-0\"}[5m])) by (interface)",\r
+          "format": "time_series",\r
+          "hide": false,\r
+          "intervalFactor": 1,\r
+          "legendFormat": "rx: {{interface}}",\r
+          "refId": "B"\r
+        },\r
+        {\r
+          "expr": "",\r
+          "format": "time_series",\r
+          "intervalFactor": 1,\r
+          "refId": "C"\r
+        }\r
+      ],\r
+      "thresholds": [],\r
+      "timeFrom": null,\r
+      "timeRegions": [],\r
+      "timeShift": null,\r
+      "title": "Local",\r
+      "tooltip": {\r
+        "shared": true,\r
+        "sort": 0,\r
+        "value_type": "individual"\r
+      },\r
+      "type": "graph",\r
+      "xaxis": {\r
+        "buckets": null,\r
+        "mode": "time",\r
+        "name": null,\r
+        "show": true,\r
+        "values": []\r
+      },\r
+      "yaxes": [\r
+        {\r
+          "format": "Bps",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        },\r
+        {\r
+          "format": "short",\r
+          "label": null,\r
+          "logBase": 1,\r
+          "max": null,\r
+          "min": null,\r
+          "show": true\r
+        }\r
+      ],\r
+      "yaxis": {\r
+        "align": false,\r
+        "alignLevel": null\r
+      }\r
+    }\r
+  ],\r
+  "refresh": "1m",\r
+  "schemaVersion": 16,\r
+  "style": "dark",\r
+  "tags": [],\r
+  "templating": {\r
+    "list": []\r
+  },\r
+  "time": {\r
+    "from": "now-15m",\r
+    "to": "now"\r
+  },\r
+  "timepicker": {\r
+    "refresh_intervals": [\r
+      "1s",\r
+      "5s",\r
+      "10s",\r
+      "30s",\r
+      "1m",\r
+      "5m",\r
+      "15m",\r
+      "30m",\r
+      "1h",\r
+      "2h",\r
+      "1d"\r
+    ],\r
+    "time_options": [\r
+      "5m",\r
+      "15m",\r
+      "1h",\r
+      "6h",\r
+      "12h",\r
+      "24h",\r
+      "2d",\r
+      "7d",\r
+      "30d"\r
+    ]\r
+  },\r
+  "timezone": "",\r
+  "title": "CDN Data",\r
+  "uid": "fMw-J9Xiz",\r
+  "version": 2\r
+}\r
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/configs/grafana.ini b/helm-charts/mcord/mcord-cdn-monitoring/configs/grafana.ini
new file mode 100755 (executable)
index 0000000..5e793f8
--- /dev/null
@@ -0,0 +1,461 @@
+##################### Grafana Configuration Example #####################
+#
+# Everything has defaults so you only need to uncomment things you want to
+# change
+
+# possible values : production, development
+;app_mode = production
+
+# instance name, defaults to HOSTNAME environment variable value or hostname if HOSTNAME var is empty
+;instance_name = ${HOSTNAME}
+
+#################################### Paths ####################################
+[paths]
+# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
+;data = /var/lib/grafana
+
+# Directory where grafana can store logs
+;logs = /var/log/grafana
+
+# Directory where grafana will automatically scan and look for plugins
+;plugins = /var/lib/grafana/plugins
+
+# folder that contains provisioning config files that grafana will apply on startup and while running.
+;provisioning = conf/provisioning
+
+#################################### Server ####################################
+[server]
+# Protocol (http, https, socket)
+;protocol = http
+
+# The ip address to bind to, empty will bind to all interfaces
+;http_addr =
+
+# The http port  to use
+;http_port = 3000
+
+# The public facing domain name used to access grafana from a browser
+;domain = localhost
+
+# Redirect to correct domain if host header does not match domain
+# Prevents DNS rebinding attacks
+;enforce_domain = false
+
+# The full public facing url you use in browser, used for redirects and emails
+# If you use reverse proxy and sub path specify full url (with sub path)
+;root_url = http://localhost:3000
+
+# Log web requests
+;router_logging = false
+
+# the path relative working path
+;static_root_path = public
+
+# enable gzip
+;enable_gzip = false
+
+# https certs & key file
+;cert_file =
+;cert_key =
+
+# Unix socket path
+;socket =
+
+#################################### Database ####################################
+[database]
+# You can configure the database connection by specifying type, host, name, user and password
+# as separate properties or as on string using the url properties.
+
+# Either "mysql", "postgres" or "sqlite3", it's your choice
+;type = sqlite3
+;host = 127.0.0.1:3306
+;name = grafana
+;user = root
+# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
+;password =
+
+# Use either URL or the previous fields to configure the database
+# Example: mysql://user:secret@host:port/database
+;url =
+
+# For "postgres" only, either "disable", "require" or "verify-full"
+;ssl_mode = disable
+
+# For "sqlite3" only, path relative to data_path setting
+;path = grafana.db
+
+# Max idle conn setting default is 2
+;max_idle_conn = 2
+
+# Max conn setting default is 0 (mean not set)
+;max_open_conn =
+
+# Connection Max Lifetime default is 14400 (means 14400 seconds or 4 hours)
+;conn_max_lifetime = 14400
+
+# Set to true to log the sql calls and execution times.
+log_queries =
+
+#################################### Session ####################################
+[session]
+# Either "memory", "file", "redis", "mysql", "postgres", default is "file"
+;provider = file
+
+# Provider config options
+# memory: not have any config yet
+# file: session dir path, is relative to grafana data_path
+# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=grafana`
+# mysql: go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1:3306)/database_name`
+# postgres: user=a password=b host=localhost port=5432 dbname=c sslmode=disable
+;provider_config = sessions
+
+# Session cookie name
+;cookie_name = grafana_sess
+
+# If you use session in https only, default is false
+;cookie_secure = false
+
+# Session life time, default is 86400
+;session_life_time = 86400
+
+#################################### Data proxy ###########################
+[dataproxy]
+
+# This enables data proxy logging, default is false
+;logging = false
+
+#################################### Analytics ####################################
+[analytics]
+# Server reporting, sends usage counters to stats.grafana.org every 24 hours.
+# No ip addresses are being tracked, only simple counters to track
+# running instances, dashboard and error counts. It is very helpful to us.
+# Change this option to false to disable reporting.
+;reporting_enabled = true
+
+# Set to false to disable all checks to https://grafana.net
+# for new vesions (grafana itself and plugins), check is used
+# in some UI views to notify that grafana or plugin update exists
+# This option does not cause any auto updates, nor send any information
+# only a GET request to http://grafana.com to get latest versions
+;check_for_updates = true
+
+# Google Analytics universal tracking code, only enabled if you specify an id here
+;google_analytics_ua_id =
+
+#################################### Security ####################################
+[security]
+# default admin user, created on startup
+;admin_user = admin
+
+# default admin password, can be changed before first start of grafana,  or in profile settings
+;admin_password = admin
+
+# used for signing
+;secret_key = SW2YcwTIb9zpOOhoPsMm
+
+# Auto-login remember days
+;login_remember_days = 7
+;cookie_username = grafana_user
+;cookie_remember_name = grafana_remember
+
+# disable gravatar profile images
+;disable_gravatar = false
+
+# data source proxy whitelist (ip_or_domain:port separated by spaces)
+;data_source_proxy_whitelist =
+
+# disable protection against brute force login attempts
+;disable_brute_force_login_protection = false
+
+#################################### Snapshots ###########################
+[snapshots]
+# snapshot sharing options
+;external_enabled = true
+;external_snapshot_url = https://snapshots-origin.raintank.io
+;external_snapshot_name = Publish to snapshot.raintank.io
+
+# remove expired snapshot
+;snapshot_remove_expired = true
+
+#################################### Dashboards History ##################
+[dashboards]
+# Number dashboard versions to keep (per dashboard). Default: 20, Minimum: 1
+;versions_to_keep = 20
+
+;#################################### Dashboard JSON files ##########################
+[dashboards.json]
+enabled = true
+path = /etc/grafana/provisioning/dashboards
+
+#################################### Users ###############################
+[users]
+# disable user signup / registration
+;allow_sign_up = true
+
+# Allow non admin users to create organizations
+;allow_org_create = true
+
+# Set to true to automatically assign new users to the default organization (id 1)
+;auto_assign_org = true
+
+# Default role new users will be automatically assigned (if disabled above is set to true)
+;auto_assign_org_role = Viewer
+
+# Background text for the user field on the login page
+;login_hint = email or username
+
+# Default UI theme ("dark" or "light")
+;default_theme = dark
+
+# External user management, these options affect the organization users view
+;external_manage_link_url =
+;external_manage_link_name =
+;external_manage_info =
+
+# Viewers can edit/inspect dashboard settings in the browser. But not save the dashboard.
+;viewers_can_edit = false
+
+[auth]
+# Set to true to disable (hide) the login form, useful if you use OAuth, defaults to false
+;disable_login_form = false
+
+# Set to true to disable the signout link in the side menu. useful if you use auth.proxy, defaults to false
+;disable_signout_menu = false
+
+# URL to redirect the user to after sign out
+;signout_redirect_url =
+
+#################################### Anonymous Auth ##########################
+[auth.anonymous]
+# enable anonymous access
+;enabled = false
+
+# specify organization name that should be used for unauthenticated users
+;org_name = Main Org.
+
+# specify role for unauthenticated users
+;org_role = Viewer
+
+#################################### Github Auth ##########################
+[auth.github]
+;enabled = false
+;allow_sign_up = true
+;client_id = some_id
+;client_secret = some_secret
+;scopes = user:email,read:org
+;auth_url = https://github.com/login/oauth/authorize
+;token_url = https://github.com/login/oauth/access_token
+;api_url = https://api.github.com/user
+;team_ids =
+;allowed_organizations =
+
+#################################### Google Auth ##########################
+[auth.google]
+;enabled = false
+;allow_sign_up = true
+;client_id = some_client_id
+;client_secret = some_client_secret
+;scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
+;auth_url = https://accounts.google.com/o/oauth2/auth
+;token_url = https://accounts.google.com/o/oauth2/token
+;api_url = https://www.googleapis.com/oauth2/v1/userinfo
+;allowed_domains =
+
+#################################### Generic OAuth ##########################
+[auth.generic_oauth]
+;enabled = false
+;name = OAuth
+;allow_sign_up = true
+;client_id = some_id
+;client_secret = some_secret
+;scopes = user:email,read:org
+;auth_url = https://foo.bar/login/oauth/authorize
+;token_url = https://foo.bar/login/oauth/access_token
+;api_url = https://foo.bar/user
+;team_ids =
+;allowed_organizations =
+
+#################################### Grafana.com Auth ####################
+[auth.grafana_com]
+;enabled = false
+;allow_sign_up = true
+;client_id = some_id
+;client_secret = some_secret
+;scopes = user:email
+;allowed_organizations =
+
+#################################### Auth Proxy ##########################
+[auth.proxy]
+;enabled = false
+;header_name = X-WEBAUTH-USER
+;header_property = username
+;auto_sign_up = true
+;ldap_sync_ttl = 60
+;whitelist = 192.168.1.1, 192.168.2.1
+
+#################################### Basic Auth ##########################
+[auth.basic]
+;enabled = true
+
+#################################### Auth LDAP ##########################
+[auth.ldap]
+;enabled = false
+;config_file = /etc/grafana/ldap.toml
+;allow_sign_up = true
+
+#################################### SMTP / Emailing ##########################
+[smtp]
+;enabled = false
+;host = localhost:25
+;user =
+# If the password contains # or ; you have to wrap it with trippel quotes. Ex """#password;"""
+;password =
+;cert_file =
+;key_file =
+;skip_verify = false
+;from_address = admin@grafana.localhost
+;from_name = Grafana
+# EHLO identity in SMTP dialog (defaults to instance_name)
+;ehlo_identity = dashboard.example.com
+
+[emails]
+;welcome_email_on_sign_up = false
+
+#################################### Logging ##########################
+[log]
+# Either "console", "file", "syslog". Default is console and  file
+# Use space to separate multiple modes, e.g. "console file"
+;mode = console file
+
+# Either "debug", "info", "warn", "error", "critical", default is "info"
+;level = info
+
+# optional settings to set different levels for specific loggers. Ex filters = sqlstore:debug
+;filters =
+
+# For "console" mode only
+[log.console]
+;level =
+
+# log line format, valid options are text, console and json
+;format = console
+
+# For "file" mode only
+[log.file]
+;level =
+
+# log line format, valid options are text, console and json
+;format = text
+
+# This enables automated log rotate(switch of following options), default is true
+;log_rotate = true
+
+# Max line number of single file, default is 1000000
+;max_lines = 1000000
+
+# Max size shift of single file, default is 28 means 1 << 28, 256MB
+;max_size_shift = 28
+
+# Segment log daily, default is true
+;daily_rotate = true
+
+# Expired days of log file(delete after max days), default is 7
+;max_days = 7
+
+[log.syslog]
+;level =
+
+# log line format, valid options are text, console and json
+;format = text
+
+# Syslog network type and address. This can be udp, tcp, or unix. If left blank, the default unix endpoints will be used.
+;network =
+;address =
+
+# Syslog facility. user, daemon and local0 through local7 are valid.
+;facility =
+
+# Syslog tag. By default, the process' argv[0] is used.
+;tag =
+
+#################################### Alerting ############################
+[alerting]
+# Disable alerting engine & UI features
+;enabled = true
+# Makes it possible to turn off alert rule execution but alerting UI is visible
+;execute_alerts = true
+
+#################################### Explore #############################
+[explore]
+# Enable the Explore section
+;enabled = false
+
+#################################### Internal Grafana Metrics ##########################
+# Metrics available at HTTP API Url /metrics
+[metrics]
+# Disable / Enable internal metrics
+;enabled           = true
+
+# Publish interval
+;interval_seconds  = 10
+
+# Send internal metrics to Graphite
+[metrics.graphite]
+# Enable by setting the address setting (ex localhost:2003)
+;address =
+;prefix = prod.grafana.%(instance_name)s.
+
+#################################### Distributed tracing ############
+[tracing.jaeger]
+# Enable by setting the address sending traces to jaeger (ex localhost:6831)
+;address = localhost:6831
+# Tag that will always be included in when creating new spans. ex (tag1:value1,tag2:value2)
+;always_included_tag = tag1:value1
+# Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote
+;sampler_type = const
+# jaeger samplerconfig param
+# for "const" sampler, 0 or 1 for always false/true respectively
+# for "probabilistic" sampler, a probability between 0 and 1
+# for "rateLimiting" sampler, the number of spans per second
+# for "remote" sampler, param is the same as for "probabilistic"
+# and indicates the initial sampling rate before the actual one
+# is received from the mothership
+;sampler_param = 1
+
+#################################### Grafana.com integration  ##########################
+# Url used to to import dashboards directly from Grafana.com
+[grafana_com]
+;url = https://grafana.com
+
+#################################### External image storage ##########################
+[external_image_storage]
+# Used for uploading images to public servers so they can be included in slack/email messages.
+# you can choose between (s3, webdav, gcs, azure_blob, local)
+;provider =
+
+[external_image_storage.s3]
+;bucket =
+;region =
+;path =
+;access_key =
+;secret_key =
+
+[external_image_storage.webdav]
+;url =
+;public_url =
+;username =
+;password =
+
+[external_image_storage.gcs]
+;key_file =
+;bucket =
+;path =
+
+[external_image_storage.azure_blob]
+;account_name =
+;account_key =
+;container_name =
+
+[external_image_storage.local]
+# does not require any configuration
+
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/configs/ldap.toml b/helm-charts/mcord/mcord-cdn-monitoring/configs/ldap.toml
new file mode 100755 (executable)
index 0000000..0dec502
--- /dev/null
@@ -0,0 +1,86 @@
+# To troubleshoot and get more log info enable ldap debug logging in grafana.ini
+# [log]
+# filters = ldap:debug
+
+[[servers]]
+# Ldap server host (specify multiple hosts space separated)
+host = "127.0.0.1"
+# Default port is 389 or 636 if use_ssl = true
+port = 389
+# Set to true if ldap server supports TLS
+use_ssl = false
+# Set to true if connect ldap server with STARTTLS pattern (create connection in insecure, then upgrade to secure connection with TLS)
+start_tls = false
+# set to true if you want to skip ssl cert validation
+ssl_skip_verify = false
+# set to the path to your root CA certificate or leave unset to use system defaults
+# root_ca_cert = "/path/to/certificate.crt"
+
+# Search user bind dn
+bind_dn = "cn=admin,dc=grafana,dc=org"
+# Search user bind password
+# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
+bind_password = 'grafana'
+
+# User search filter, for example "(cn=%s)" or "(sAMAccountName=%s)" or "(uid=%s)"
+search_filter = "(cn=%s)"
+
+# An array of base dns to search through
+search_base_dns = ["dc=grafana,dc=org"]
+
+# In POSIX LDAP schemas, without memberOf attribute a secondary query must be made for groups.
+# This is done by enabling group_search_filter below. You must also set member_of= "cn"
+# in [servers.attributes] below.
+
+# Users with nested/recursive group membership and an LDAP server that supports LDAP_MATCHING_RULE_IN_CHAIN
+# can set group_search_filter, group_search_filter_user_attribute, group_search_base_dns and member_of
+# below in such a way that the user's recursive group membership is considered.
+#
+# Nested Groups + Active Directory (AD) Example:
+#
+#   AD groups store the Distinguished Names (DNs) of members, so your filter must
+#   recursively search your groups for the authenticating user's DN. For example:
+#
+#     group_search_filter = "(member:1.2.840.113556.1.4.1941:=%s)"
+#     group_search_filter_user_attribute = "distinguishedName"
+#     group_search_base_dns = ["ou=groups,dc=grafana,dc=org"]
+#
+#     [servers.attributes]
+#     ...
+#     member_of = "distinguishedName"
+
+## Group search filter, to retrieve the groups of which the user is a member (only set if memberOf attribute is not available)
+# group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"
+## Group search filter user attribute defines what user attribute gets substituted for %s in group_search_filter.
+## Defaults to the value of username in [server.attributes]
+## Valid options are any of your values in [servers.attributes]
+## If you are using nested groups you probably want to set this and member_of in
+## [servers.attributes] to "distinguishedName"
+# group_search_filter_user_attribute = "distinguishedName"
+## An array of the base DNs to search through for groups. Typically uses ou=groups
+# group_search_base_dns = ["ou=groups,dc=grafana,dc=org"]
+
+# Specify names of the ldap attributes your ldap uses
+[servers.attributes]
+name = "givenName"
+surname = "sn"
+username = "cn"
+member_of = "memberOf"
+email =  "email"
+
+# Map ldap groups to grafana org roles
+[[servers.group_mappings]]
+group_dn = "cn=admins,dc=grafana,dc=org"
+org_role = "Admin"
+# The Grafana organization database id, optional, if left out the default org (id 1) will be used
+# org_id = 1
+
+[[servers.group_mappings]]
+group_dn = "cn=users,dc=grafana,dc=org"
+org_role = "Editor"
+
+[[servers.group_mappings]]
+# If you want to match all (or no ldap groups) then you can use wildcard
+group_dn = "*"
+org_role = "Viewer"
+
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/templates/NOTES.txt b/helm-charts/mcord/mcord-cdn-monitoring/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..ae4cf08
--- /dev/null
@@ -0,0 +1,47 @@
+Thank you for installing {{ .Chart.Name }}.
+
+This chart is for CDN monitoring in M-CORD demo scenarios.
+To show CDN traffic of CDN server, this chart deploys cAdvisor, Grafana, and Prometheus.
+
+You can determine which components will be installed by values.yaml.
+
+{{- if .Values.cadvisor.enabled }}
+
+
+- cAdvisor
+
+You can now access cAdvisor at: <node-ip>:{{ .Values.cadvisor.nodePort }}
+Prometheus will collect data through this cAdvisor at: <node-ip>:{{ .Values.cadvisor.nodePort }}/metrics
+
+
+{{- end }}
+
+
+{{- if .Values.grafana.enabled }}
+
+
+- Grafana
+
+You can now access Grafana at: <{{ .Values.grafana.node_selector }}-ip>:{{ .Values.grafana.nodePort }}
+using:
+
+username: {{ .Values.grafana.adminUser}}
+password: {{ .Values.grafana.adminPassword}}
+
+We use configs/cdn_metrics.json in default to create dashboards.
+If you want to monitor other CDN servers which have different container names, you should modify the json file or create your own json files.
+
+
+{{- end}}
+
+
+{{- if .Values.prometheus.enabled }}
+
+
+- Prometheus
+
+You can now access Prometheus at: <{{ .Values.prometheus.node_selector }}-ip>:{{ .Values.prometheus.nodePort }}
+If you want to show CDN traffics by Grafana, Grafana should select this Prometheus as data source.
+
+
+{{- end }}
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/templates/cadvisor-ds.yaml b/helm-charts/mcord/mcord-cdn-monitoring/templates/cadvisor-ds.yaml
new file mode 100644 (file)
index 0000000..5ebe2e8
--- /dev/null
@@ -0,0 +1,74 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+{{- if .Values.cadvisor.enabled }}
+
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+  name: cadvisor-ds
+  annotations:
+      seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
+spec:
+  selector:
+    matchLabels:
+      name: cadvisor
+  template:
+    metadata:
+      labels:
+        name: cadvisor
+    spec:
+      hostNetwork: true
+      containers:
+      - name: cadvisor
+        image: {{ .Values.cadvisor.image }}
+        args:
+          - --port={{ .Values.cadvisor.nodePort }}
+        volumeMounts:
+        - name: rootfs
+          mountPath: /rootfs
+          readOnly: true
+        - name: var-run
+          mountPath: /var/run
+          readOnly: true
+        - name: sys
+          mountPath: /sys
+          readOnly: true
+        - name: docker
+          mountPath: /var/lib/docker
+          readOnly: true
+        - name: disk
+          mountPath: /dev/disk
+          readOnly: true
+      automountServiceAccountToken: false
+      terminationGracePeriodSeconds: 30
+      volumes:
+      - name: rootfs
+        hostPath:
+          path: /
+      - name: var-run
+        hostPath:
+          path: /var/run
+      - name: sys
+        hostPath:
+          path: /sys
+      - name: docker
+        hostPath:
+          path: /var/lib/docker
+      - name: disk
+        hostPath:
+          path: /dev/disk
+
+{{- end }}
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/templates/grafana-cfg.yaml b/helm-charts/mcord/mcord-cdn-monitoring/templates/grafana-cfg.yaml
new file mode 100644 (file)
index 0000000..dc76aef
--- /dev/null
@@ -0,0 +1,78 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+{{- if .Values.grafana.enabled }}
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: grafana-config
+data:
+  grafana.ini: |
+{{ .Files.Get "configs/grafana.ini" | indent 4 }}
+  ldap.toml: |
+{{ .Files.Get "configs/ldap.toml" | indent 4 }}
+
+---
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: grafana-dashs
+  labels:
+    grafana_dashboard: "1"
+data:
+  cdn_metrics.json: |
+{{ .Files.Get "configs/cdn-metrics.json" | indent 4 }}
+
+---
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: grafana-dash-provider
+  labels:
+    grafana_dashboard: "1"
+data:
+  dashboard.yaml: |
+    apiVersion: 1
+
+    providers:
+      - name: 'default'
+        orgId: 1
+        folder: ''
+        type: file
+        disableDeletion: false
+        updateIntervalSeconds: 3
+        options:
+          path: /etc/grafana/dashboards
+---
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: grafana-datasources-provider
+data:
+  prometheus-datasource.yaml: |
+    datasources:
+      -  access: 'proxy'
+         editable: true
+         is_default: true
+         name: 'prom'
+         org_id: 1
+         type: 'prometheus'
+         url: http://{{ .Values.prometheus_host }}:{{ .Values.prometheus.nodePort }}
+
+{{- end }}
\ No newline at end of file
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/templates/grafana-rc.yaml b/helm-charts/mcord/mcord-cdn-monitoring/templates/grafana-rc.yaml
new file mode 100644 (file)
index 0000000..ef9c5b7
--- /dev/null
@@ -0,0 +1,67 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+{{- if .Values.grafana.enabled }}
+
+apiVersion: v1
+kind: ReplicationController
+metadata:
+  name: grafana-cdn-rc
+spec:
+  replicas: 1
+  selector:
+    app: grafana-cdn
+  template:
+    metadata:
+      name: grafana-cdn
+      labels:
+        app: grafana-cdn
+    spec:
+      nodeSelector:
+        kubernetes.io/hostname: {{ .Values.grafana.node_selector }}
+      containers:
+        - name: grafana
+          image: {{ .Values.grafana.image }}
+          env:
+            - name: ADMIN_USER
+              value: {{ .Values.grafana.adminUser }}
+            - name: ADMIN_PASS
+              value: {{ .Values.grafana.adminPassword }}
+          ports:
+            - containerPort: 3000
+          volumeMounts:
+            - mountPath: /etc/grafana/
+              name: grafana-volume
+            - mountPath: /etc/grafana/dashboards
+              name: grafana-dashboards
+            - mountPath: /etc/grafana/provisioning/dashboards
+              name: dashboards-provider
+            - mountPath: /etc/grafana/provisioning/datasources
+              name: datasources-provider
+      volumes:
+        - name: grafana-volume
+          configMap:
+            name: grafana-config
+        - name: grafana-dashboards
+          configMap:
+            name: grafana-dashs
+        - name: dashboards-provider
+          configMap:
+            name: grafana-dash-provider
+        - name: datasources-provider
+          configMap:
+            name: grafana-datasources-provider
+
+{{- end }}
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/templates/grafana-svc.yaml b/helm-charts/mcord/mcord-cdn-monitoring/templates/grafana-svc.yaml
new file mode 100644 (file)
index 0000000..3f09093
--- /dev/null
@@ -0,0 +1,33 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+{{- if .Values.grafana.enabled }}
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: grafana-cdn-service
+spec:
+  selector:
+    app: grafana-cdn
+  type: NodePort
+  ports:
+    - name: grafana
+      port: 3000
+      protocol: TCP
+      targetPort: 3000
+      nodePort: {{ .Values.grafana.nodePort }}
+
+{{- end }}
\ No newline at end of file
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/templates/prometheus-cfg.yaml b/helm-charts/mcord/mcord-cdn-monitoring/templates/prometheus-cfg.yaml
new file mode 100644 (file)
index 0000000..158fce1
--- /dev/null
@@ -0,0 +1,40 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+{{- if .Values.prometheus.enabled }}
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: prometheus-config
+data:
+  prometheus.yml: |
+    global:
+      scrape_interval:     {{ .Values.prometheus.interval }} # By default, scrape targets every 15 seconds.
+      evaluation_interval: {{ .Values.prometheus.interval }} # By default, scrape targets every 15 seconds.
+      # scrape_timeout is set to the global default (10s).
+
+      external_labels:
+        monitor: 'monitoring'
+
+    scrape_configs:
+      - job_name: 'prometheus'
+        static_configs:
+          - targets: ['{{ .Values.prometheus_host }}:{{ .Values.prometheus.nodePort }}']
+      - job_name: 'kube-metrics'
+        static_configs:
+          - targets: ['{{ .Values.cdn_remote_host }}:{{ .Values.cadvisor.nodePort }}', '{{ .Values.cdn_local_host }}:{{ .Values.cadvisor.nodePort }}']
+
+{{- end }}
\ No newline at end of file
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/templates/prometheus-rc.yaml b/helm-charts/mcord/mcord-cdn-monitoring/templates/prometheus-rc.yaml
new file mode 100644 (file)
index 0000000..818c582
--- /dev/null
@@ -0,0 +1,49 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+{{- if .Values.prometheus.enabled }}
+
+apiVersion: v1
+kind: ReplicationController
+metadata:
+  name: prometheus-cdn-rc
+spec:
+  replicas: 1
+  selector:
+    app: prometheus-cdn
+  template:
+    metadata:
+      name: prometheus-cdn
+      labels:
+        app: prometheus-cdn
+    spec:
+      nodeSelector:
+        kubernetes.io/hostname: {{ .Values.prometheus.node_selector }}
+      containers:
+        - args:
+            - --config.file=/etc/prometheus/config_out/prometheus.yml
+          name: prometheus
+          image: {{ .Values.prometheus.image  }}
+          ports:
+            - containerPort: 9090
+          volumeMounts:
+            - mountPath: /etc/prometheus/config_out
+              name: prometheus-volume
+      volumes:
+        - name: prometheus-volume
+          configMap:
+            name: prometheus-config
+
+{{- end }}
\ No newline at end of file
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/templates/prometheus-svc.yaml b/helm-charts/mcord/mcord-cdn-monitoring/templates/prometheus-svc.yaml
new file mode 100644 (file)
index 0000000..b9ebf6c
--- /dev/null
@@ -0,0 +1,33 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+{{- if .Values.prometheus.enabled }}
+
+apiVersion: v1
+kind: Service
+metadata:
+  name: prometheus-cdn-service
+spec:
+  selector:
+    app: prometheus-cdn
+  type: NodePort
+  ports:
+    - name: prometheus
+      nodePort: {{ .Values.prometheus.nodePort }}
+      port: 9090
+      protocol: TCP
+      targetPort: 9090
+
+{{- end }}
\ No newline at end of file
diff --git a/helm-charts/mcord/mcord-cdn-monitoring/values.yaml b/helm-charts/mcord/mcord-cdn-monitoring/values.yaml
new file mode 100644 (file)
index 0000000..3e95055
--- /dev/null
@@ -0,0 +1,38 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+cdn_remote_host: 10.90.0.141
+cdn_local_host: 10.90.0.153
+prometheus_host: 10.90.0.152
+
+cadvisor:
+  image: google/cadvisor:latest
+  nodePort: 8888
+  enabled: true
+
+prometheus:
+  image: prom/prometheus:v2.3.1
+  node_selector: node2
+  nodePort: 31000
+  interval: 10s
+  enabled: true
+
+grafana:
+  image: grafana/grafana:5.2.2
+  node_selector: node2
+  nodePort: 30000
+  adminUser: admin
+  adminPassword: admin
+  enabled: true
diff --git a/helm-charts/mininet-0.5.1.tgz b/helm-charts/mininet-0.5.1.tgz
new file mode 100644 (file)
index 0000000..ed40e93
Binary files /dev/null and b/helm-charts/mininet-0.5.1.tgz differ
index 39568c7..9619440 100644 (file)
@@ -17,4 +17,4 @@ apiVersion: v1
 appVersion: "1.0"
 description: A Helm chart for Mininet
 name: mininet
-version: 0.3.0
+version: 0.5.1
index 31212af..346059e 100644 (file)
@@ -46,3 +46,25 @@ Create chart name and version as used by the chart label.
 {{- define "mininet.chart" -}}
 {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
 {{- end -}}
+
+{{/*
+Generate the CNI annotations depending on number of OLTs
+*/}}
+{{- define "mininet.cni" -}}
+{{- printf "nsx" -}}
+{{- range $i, $junk := until (.Values.numOlts|int) -}}
+{{- printf ",nni%d" $i -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Generate the DHCP subnets depending on number of OLTs
+*/}}
+{{- define "mininet.dhcp_range" -}}
+{{- $onucount := .Values.numOnus|int}}
+{{- range $i, $junk := until (.Values.numOlts|int) -}}
+{{- range $j, $junk1 := until ($onucount) -}}
+{{- printf " --dhcp-range=172.%d.%d.50,172.%d.%d.150,12h" (add $i 19) $j (add $i 19) $j -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
index f75041e..571e024 100644 (file)
@@ -33,10 +33,8 @@ spec:
       labels:
         app: {{ template "mininet.name" . }}
         release: {{ .Release.Name }}
-    {{- with .Values.annotations }}
       annotations:
-{{ toYaml . | indent 8 }}
-    {{- end }}
+        cni: {{ template "mininet.cni" . }}
     spec:
       containers:
         - name: {{ .Chart.Name }}
index 0c9c7cf..67b811e 100644 (file)
@@ -22,42 +22,78 @@ from mininet.cli import CLI
 from mininet.log import setLogLevel, info, error
 from mininet.net import Mininet
 from mininet.link import Intf
-from mininet.topo import SingleSwitchTopo
-from mininet.node import OVSSwitch, RemoteController
+from mininet.topo import Topo, SingleSwitchTopo
+from mininet.node import OVSSwitch, Controller, RemoteController
+from mininet.nodelib import LinuxBridge
 from functools import partial
 from mininet.util import quietRun
 
 if __name__ == '__main__':
     setLogLevel( 'info' )
 
-    info( '*** Installing required software' )
+    info( '*** Installing required software\n' )
     print quietRun( 'apt-get update' )
-    print quietRun( 'apt-get -y install dnsmasq ethtool' )
+    print quietRun( 'apt-get -y install dnsmasq ethtool wget pimd bridge-utils' )
+    print quietRun( 'wget https://github.com/troglobit/mcjoin/releases/download/v2.4/mcjoin_2.4_amd64.deb' )
+    print quietRun( 'dpkg -i mcjoin_2.4_amd64.deb' )
 
-    info( '*** Creating network\n' )
     print quietRun( 'ovs-vsctl set Open_vSwitch . other_config:vlan-limit={{ .Values.vlanMatchDepth }}' )
     OVSSwitch13 = partial( OVSSwitch, protocols='OpenFlow13' )
     controllerIp = socket.gethostbyname( '{{ .Values.onosOpenflowSvc }}' )
-    net = Mininet( topo=SingleSwitchTopo(1),
-                   controller=lambda name: RemoteController( name, ip=controllerIp, port=6653 ),
-                   switch=OVSSwitch13
-    )
-
-    switch = net.switches[ 0 ]
-    info( '*** Adding hardware interface eth1 to switch', switch.name, '\n' )
-    _intf = Intf( 'eth1', node=switch )
-
-    info( '*** Turning off checksum offloading for eth1\n' )
-    print quietRun( 'ethtool -K eth1 tx off rx off' )
-
-    bgphost = net.hosts [ 0 ]
-    info( '*** Adding VLAN interface to host\n')
-    bgphost.cmd( 'ip link add link h1-eth0 name h1-eth0.222 type vlan proto 802.1Q id 222' )
-    bgphost.cmd( 'ip link add link h1-eth0.222 name h1-eth0.222.111 type vlan proto 802.1Q id 111' )
-    bgphost.cmd( 'ifconfig h1-eth0.222 up' )
-    bgphost.cmd( 'ifconfig h1-eth0.222.111 up' )
-    bgphost.cmd( 'ifconfig h1-eth0.222.111 172.18.0.10/24' )
-    bgphost.cmd( 'dnsmasq --dhcp-range=172.18.0.50,172.18.0.150,12h' )
+
+    net = Mininet( topo=None )
+
+    info( '*** Adding controllers\n' )
+    onos = net.addController( name='onos', controller=RemoteController, ip=controllerIp, port=6653 )
+
+    info( '*** Adding switches\n' )
+    s1 = net.addSwitch( name='s1', cls=OVSSwitch13 )
+    s2 = net.addSwitch( 's2', cls=LinuxBridge )
+
+    info( '*** Creating hosts\n' )
+    h1 = net.addHost( 'h1', ip='10.0.0.1/24')
+    h2 = net.addHost( 'h2', ip='10.1.0.2/24')
+
+    # Topology: pon1 - eth1 - s1 - h1 - s2 - h2
+    net.addLink( h1, s1 )
+    net.addLink( h1, s2 )
+    net.addLink( h2, s2 )
+
+{{- range $i, $junk := until (.Values.numOlts|int) -}}
+{{- $intf := printf "eth%d" (add $i 1) }}
+
+    info( '*** Adding hardware interface {{ $intf }} to switch s1\n')
+    _intf = Intf( '{{ $intf }}', node=s1 )
+
+    info( '*** Turning off checksum offloading for {{ $intf }}\n' )
+    print quietRun( 'ethtool -K {{ $intf }} tx off rx off' )
+{{- end }}
+
+    info( '*** Adding VLAN interface to host h1\n')
+    h1.cmd( 'ifconfig h1-eth1 10.1.0.1/24 up')
+
+    {{- $onucount := .Values.numOnus|int}}
+{{- range $i, $junk := until (.Values.numOlts|int) -}}
+{{- $stag := add 222 $i }}
+{{- range $j, $junk1 := until ($onucount) -}}
+{{- $ctag := add 111 $j }}
+    h1.cmd( 'ip link add link h1-eth0 name h1-eth0.{{ $stag }} type vlan proto 802.1Q id {{ $stag }}' )
+    h1.cmd( 'ip link add link h1-eth0.{{ $stag }} name h1-eth0.{{ $stag }}.{{ $ctag }} type vlan proto 802.1Q id {{ $ctag }}' )
+    h1.cmd( 'ifconfig h1-eth0.{{ $stag }} up' )
+    h1.cmd( 'ifconfig h1-eth0.{{ $stag }}.{{ $ctag }} up' )
+    h1.cmd( 'ifconfig h1-eth0.{{ $stag }}.{{ $ctag }} 172.{{ add $i 19  }}.{{ $j }}.10/24' )
+{{- end }}
+{{- end }}
+    h1.cmd( 'dnsmasq {{ template "mininet.dhcp_range" . }}' )
+
+{{- if .Values.enableMulticast }}
+    info( '*** Start multicast routing on h1 and source on h2\n')
+    h1.cmd( 'service pimd start' )
+    h2.cmd( 'mcjoin -s -i h2-eth0 -t 2 >& /tmp/mcjoin.log &')
+{{- end }}
+
+    onos.start()
+    s1.start( [onos] )
 
     net.start()
     CLI( net )
index 3670bef..9bab69a 100644 (file)
@@ -45,8 +45,8 @@ affinity:
             - olt
         topologyKey: kubernetes.io/hostname
 
-annotations:
-  cni: "calico,pon1"
-
 onosOpenflowSvc: "onos-openflow.default.svc.cluster.local"
-vlanMatchDepth: 2
+vlanMatchDepth: 1
+enableMulticast: false
+numOlts: 1
+numOnus: 1
index a47b15f..cebad75 100644 (file)
@@ -15,4 +15,4 @@
 
 name: nem-monitoring
 description: Time Series Storage and Dashboard for SEBA
-version: 1.0.1
+version: 1.0.2
diff --git a/helm-charts/nem-monitoring/grafana-dashboards/aaa-stats.json b/helm-charts/nem-monitoring/grafana-dashboards/aaa-stats.json
new file mode 100644 (file)
index 0000000..7c8be89
--- /dev/null
@@ -0,0 +1,323 @@
+{
+  "annotations": {
+    "list": [
+      {
+        "builtIn": 1,
+        "datasource": "-- Grafana --",
+        "enable": true,
+        "hide": true,
+        "iconColor": "rgba(0, 211, 255, 1)",
+        "name": "Annotations & Alerts",
+        "type": "dashboard"
+      }
+    ]
+  },
+  "editable": true,
+  "gnetId": null,
+  "graphTooltip": 0,
+  "id": 5,
+  "links": [],
+  "panels": [
+    {
+      "cacheTimeout": null,
+      "colorBackground": false,
+      "colorValue": true,
+      "colors": [
+        "#299c46",
+        "#629e51",
+        "#d44a3a"
+      ],
+      "datasource": "Prometheus",
+      "format": "none",
+      "gauge": {
+        "maxValue": 100,
+        "minValue": 0,
+        "show": false,
+        "thresholdLabels": false,
+        "thresholdMarkers": true
+      },
+      "gridPos": {
+        "h": 9,
+        "w": 12,
+        "x": 0,
+        "y": 0
+      },
+      "id": 4,
+      "interval": null,
+      "links": [],
+      "mappingType": 1,
+      "mappingTypes": [
+        {
+          "name": "value to text",
+          "value": 1
+        },
+        {
+          "name": "range to text",
+          "value": 2
+        }
+      ],
+      "maxDataPoints": 100,
+      "nullPointMode": "connected",
+      "nullText": null,
+      "postfix": "",
+      "postfixFontSize": "50%",
+      "prefix": "",
+      "prefixFontSize": "50%",
+      "rangeMaps": [
+        {
+          "from": "null",
+          "text": "N/A",
+          "to": "null"
+        }
+      ],
+      "sparkline": {
+        "fillColor": "rgba(31, 118, 189, 0.18)",
+        "full": false,
+        "lineColor": "rgb(31, 120, 193)",
+        "show": false
+      },
+      "tableColumn": "__name__",
+      "targets": [
+        {
+          "expr": "onosaaa_rx_accept_responses{}",
+          "format": "time_series",
+          "hide": false,
+          "intervalFactor": 1,
+          "refId": "A"
+        }
+      ],
+      "thresholds": "",
+      "title": "Successful Authentication Requests",
+      "type": "singlestat",
+      "valueFontSize": "200%",
+      "valueMaps": [
+        {
+          "op": "=",
+          "text": "N/A",
+          "value": "null"
+        }
+      ],
+      "valueName": "current"
+    },
+    {
+      "cacheTimeout": null,
+      "colorBackground": false,
+      "colorValue": true,
+      "colors": [
+        "#299c46",
+        "#890f02",
+        "#890f02"
+      ],
+      "datasource": "Prometheus",
+      "format": "none",
+      "gauge": {
+        "maxValue": 100,
+        "minValue": 0,
+        "show": false,
+        "thresholdLabels": false,
+        "thresholdMarkers": true
+      },
+      "gridPos": {
+        "h": 9,
+        "w": 12,
+        "x": 12,
+        "y": 0
+      },
+      "id": 5,
+      "interval": null,
+      "links": [],
+      "mappingType": 1,
+      "mappingTypes": [
+        {
+          "name": "value to text",
+          "value": 1
+        },
+        {
+          "name": "range to text",
+          "value": 2
+        }
+      ],
+      "maxDataPoints": 100,
+      "nullPointMode": "connected",
+      "nullText": null,
+      "postfix": "",
+      "postfixFontSize": "50%",
+      "prefix": "",
+      "prefixFontSize": "50%",
+      "rangeMaps": [
+        {
+          "from": "null",
+          "text": "N/A",
+          "to": "null"
+        }
+      ],
+      "sparkline": {
+        "fillColor": "rgba(31, 118, 189, 0.18)",
+        "full": false,
+        "lineColor": "rgb(31, 120, 193)",
+        "show": false
+      },
+      "tableColumn": "__name__",
+      "targets": [
+        {
+          "expr": "onosaaa_rx_reject_responses{}",
+          "format": "time_series",
+          "hide": false,
+          "intervalFactor": 1,
+          "refId": "A"
+        }
+      ],
+      "thresholds": "0",
+      "title": "Failed Authentication Requests",
+      "type": "singlestat",
+      "valueFontSize": "200%",
+      "valueMaps": [
+        {
+          "op": "=",
+          "text": "N/A",
+          "value": "null"
+        }
+      ],
+      "valueName": "current"
+    },
+    {
+      "aliasColors": {},
+      "bars": false,
+      "dashLength": 10,
+      "dashes": false,
+      "datasource": "Prometheus",
+      "fill": 1,
+      "gridPos": {
+        "h": 12,
+        "w": 24,
+        "x": 0,
+        "y": 9
+      },
+      "id": 2,
+      "legend": {
+        "avg": false,
+        "current": false,
+        "max": false,
+        "min": false,
+        "show": true,
+        "total": false,
+        "values": false
+      },
+      "lines": true,
+      "linewidth": 1,
+      "links": [],
+      "nullPointMode": "null",
+      "percentage": false,
+      "pointradius": 5,
+      "points": false,
+      "renderer": "flot",
+      "seriesOverrides": [],
+      "spaceLength": 10,
+      "stack": false,
+      "steppedLine": false,
+      "targets": [
+        {
+          "expr": "onosaaa_rx_accept_responses{}",
+          "format": "time_series",
+          "intervalFactor": 1,
+          "legendFormat": "Accepted Responses",
+          "refId": "A"
+        },
+        {
+          "expr": "onosaaa_rx_reject_responses{}",
+          "format": "time_series",
+          "intervalFactor": 1,
+          "legendFormat": "Rejected Responses",
+          "refId": "B"
+        },
+        {
+          "expr": "onosaaa_pending_responses{}",
+          "format": "time_series",
+          "intervalFactor": 1,
+          "legendFormat": "Pending Responses",
+          "refId": "C"
+        }
+      ],
+      "thresholds": [],
+      "timeFrom": null,
+      "timeShift": null,
+      "title": "Radius Server Status",
+      "tooltip": {
+        "shared": true,
+        "sort": 0,
+        "value_type": "individual"
+      },
+      "transparent": false,
+      "type": "graph",
+      "xaxis": {
+        "buckets": null,
+        "mode": "time",
+        "name": null,
+        "show": true,
+        "values": []
+      },
+      "yaxes": [
+        {
+          "decimals": 0,
+          "format": "short",
+          "label": "Requests Count",
+          "logBase": 1,
+          "max": null,
+          "min": "0",
+          "show": true
+        },
+        {
+          "format": "short",
+          "label": null,
+          "logBase": 1,
+          "max": null,
+          "min": null,
+          "show": true
+        }
+      ],
+      "yaxis": {
+        "align": false,
+        "alignLevel": null
+      }
+    }
+  ],
+  "schemaVersion": 16,
+  "style": "dark",
+  "tags": [],
+  "templating": {
+    "list": []
+  },
+  "time": {
+    "from": "now-15m",
+    "to": "now"
+  },
+  "timepicker": {
+    "refresh_intervals": [
+      "5s",
+      "10s",
+      "30s",
+      "1m",
+      "5m",
+      "15m",
+      "30m",
+      "1h",
+      "2h",
+      "1d"
+    ],
+    "time_options": [
+      "5m",
+      "15m",
+      "1h",
+      "6h",
+      "12h",
+      "24h",
+      "2d",
+      "7d",
+      "30d"
+    ]
+  },
+  "timezone": "",
+  "title": "AAA Stats",
+  "uid": "3ne5yH4Wz",
+  "version": 1
+}
diff --git a/helm-charts/nem-monitoring/templates/grafana-dashboard-aaa-configmap.yaml b/helm-charts/nem-monitoring/templates/grafana-dashboard-aaa-configmap.yaml
new file mode 100644 (file)
index 0000000..8a0722a
--- /dev/null
@@ -0,0 +1,24 @@
+---
+# Copyright 2018-present Open Networking Foundation
+#
+# 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.
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: grafana-dashboard-aaa
+  labels:
+     grafana_dashboard: "1"
+data:
+  kb8s.json: |
+{{ .Files.Get "grafana-dashboards/aaa-stats.json" | indent 4 }}
index a41343b..8d237f7 100644 (file)
@@ -19,7 +19,7 @@ global:
 images:
   voltha_kpi_exporter:
     repository: 'opencord/kafka-topic-exporter'
-    tag: '1.1.2'
+    tag: '1.2.1'
     pullPolicy: 'Always'
 
 nem_voltha_kpi_exporter_nodePort: 31080
diff --git a/helm-charts/onos-1.1.0.tgz b/helm-charts/onos-1.1.0.tgz
new file mode 100644 (file)
index 0000000..f6bd9d9
Binary files /dev/null and b/helm-charts/onos-1.1.0.tgz differ
diff --git a/helm-charts/ponnet-1.2.1.tgz b/helm-charts/ponnet-1.2.1.tgz
new file mode 100644 (file)
index 0000000..aff005b
Binary files /dev/null and b/helm-charts/ponnet-1.2.1.tgz differ
index d9ee22f..54448af 100644 (file)
@@ -14,4 +14,4 @@
 # limitations under the License.
 
 name: ponnet
-version: 1.0.0
+version: 1.2.1
index 0fbf50a..2db810c 100644 (file)
@@ -140,7 +140,7 @@ data:
         "type": "genie",
         "log_level": "info",
         "datastore_type": "kubernetes",
-        "default_plugin": "calico",
+        "default_plugin": "nsx",
         "hostname": "__KUBERNETES_NODE_NAME__",
         "policy": {
             "type": "k8s",
diff --git a/helm-charts/ponnet/templates/ponnet-cni.yaml b/helm-charts/ponnet/templates/ponnet-cni.yaml
new file mode 100644 (file)
index 0000000..c72abab
--- /dev/null
@@ -0,0 +1,188 @@
+---
+# Copyright 2017-present Open Networking Foundation
+#
+# 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.
+
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1beta1
+metadata:
+  name: ponnet-plugin
+rules:
+  - apiGroups:
+      - ""
+    resources:
+      - pods
+    verbs:
+      - get
+      - update
+      - patch
+  - apiGroups:
+      - "alpha.network.k8s.io"
+    resources:
+      - logicalnetworks
+    verbs:
+      - get
+      - update
+      - patch
+  - apiGroups:
+      - "alpha.network.k8s.io"
+    resources:
+      - physicalnetworks
+    verbs:
+      - get
+      - update
+      - patch
+  - apiGroups:
+      - ""
+    resources:
+      - configmaps
+    verbs:
+      - get
+  - apiGroups:
+      - "admissionregistration.k8s.io"
+    resources:
+      - validatingwebhookconfigurations
+    verbs:
+      - get
+      - update
+      - create
+      - delete
+
+---
+kind: ClusterRoleBinding
+apiVersion: rbac.authorization.k8s.io/v1beta1
+metadata:
+  name: ponnet-plugin
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: ponnet-plugin
+subjects:
+- kind: ServiceAccount
+  name: ponnnet-plugin
+  namespace: kube-system
+- kind: Group
+  name: system:authenticated
+  apiGroup: rbac.authorization.k8s.io
+
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: ponnet-plugin
+  namespace: kube-system
+
+---
+# This ConfigMap can be used to configure a self-hosted Ponnet installation.
+kind: ConfigMap
+apiVersion: v1
+metadata:
+  name: ponnet-config
+  namespace: kube-system
+data:
+{{- $onucount := (.Values.numOnus|int) -}}
+{{- range $i, $junk := until (.Values.numOlts|int) }}
+  nni{{ $i }}.conf: |
+    {
+      "name": "nni{{ $i }}",
+      "type": "bridge",
+      "bridge": "nni{{ $i }}",
+      "isGateway": false,
+      "ipMask": false,
+      "ipam": {
+        "type": "host-local",
+        "subnet": "10.23.0.0/16"
+      }
+    }
+{{- range $j, $junk1 := until ($onucount) }}
+  pon{{ $i }}.{{ $j }}.conf: |
+    {
+      "name": "pon{{ $i }}.{{ $j }}",
+      "type": "bridge",
+      "bridge": "pon{{ $i }}.{{ $j }}",
+      "isGateway": false,
+      "ipMask": false,
+      "ipam": {
+        "type": "host-local",
+        "subnet": "10.22.0.0/16"
+      }
+    }
+{{- end }}
+{{- end }}
+---
+# Install Ponnnet CNI conf on each slave node.
+kind: DaemonSet
+apiVersion: extensions/v1beta1
+metadata:
+  name: ponnet-plugin
+  namespace: kube-system
+  labels:
+    k8s-app: ponnet
+spec:
+  selector:
+    matchLabels:
+      k8s-app: ponnet
+  template:
+    metadata:
+      labels:
+        k8s-app: ponnet
+      annotations:
+        scheduler.alpha.kubernetes.io/critical-pod: ''
+        scheduler.alpha.kubernetes.io/tolerations: |
+          [
+            {
+              "key": "dedicated",
+              "value": "master",
+              "effect": "NoSchedule"
+            },
+            {
+              "key": "CriticalAddonsOnly",
+              "operator": "Exists"
+            }
+          ]
+    spec:
+      hostNetwork: true
+      hostPID: true
+      serviceAccountName: ponnet-plugin
+      initContainers:
+        # Installs CNI config files on each node
+        - name: install-cni
+          image: {{ .Values.pull_docker_registry }}{{ .Values.images.ponnet.repository }}:{{ .Values.images.ponnet.tag }} 
+          imagePullPolicy: {{ .Values.images.ponnet.pullPolicy }}
+          command: ["/bin/sh", "-c", "cp /tmp/cni/* /host/etc/cni/net.d"]
+          env:
+            - name: KUBERNETES_NODE_NAME
+              valueFrom:
+                fieldRef:
+                  fieldPath: spec.nodeName
+          volumeMounts:
+            - mountPath: /host/opt/cni/bin
+              name: cni-bin-dir
+            - mountPath: /host/etc/cni/net.d
+              name: cni-net-dir
+            - mountPath: /tmp/cni
+              name: ponnet-config
+      volumes:
+        - name: cni-bin-dir
+          hostPath:
+            path: /opt/cni/bin
+        - name: cni-net-dir
+          hostPath:
+            path: /etc/cni/net.d
+        - name: ponnet-config
+          configMap:
+            name: ponnet-config
+      containers:
+        - name: pause
+          image: gcr.io/google_containers/pause
+
index 402fb1f..641e7a1 100644 (file)
 pull_docker_registry:
 
 images:
-  pon0:
-    repository: gopinatht/pon0-network
-    tag: 'latest'
-    pullPolicy: 'Always'
-  
+  ponnet:
+    repository: 'alpine'
+    tag: '3.9.3'
+    pullPolicy: 'IfNotPresent'
+
 global:
   namespace: voltha
+
+numOlts: 1 
+numOnus: 1
diff --git a/helm-charts/ponsim-pod-1.3.3.tgz b/helm-charts/ponsim-pod-1.3.3.tgz
new file mode 100644 (file)
index 0000000..5115f90
Binary files /dev/null and b/helm-charts/ponsim-pod-1.3.3.tgz differ
diff --git a/helm-charts/ponsimv2-1.1.1.tgz b/helm-charts/ponsimv2-1.1.1.tgz
new file mode 100644 (file)
index 0000000..c9d95be
Binary files /dev/null and b/helm-charts/ponsimv2-1.1.1.tgz differ
index 296e6a1..567aac7 100644 (file)
@@ -17,7 +17,7 @@ name: ponsimv2
 description: PON Simulator
 icon: https://guide.opencord.org/logos/cord.svg
 
-version: 1.0.3
+version: 1.1.1
 
 # VOLTHA version
 appVersion: 1.6.0
index 8026068..39f63ca 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+{{- range $i, $junk := until (.Values.numOlts|int) }}
+---
 apiVersion: v1
 kind: Service
 metadata:
-   name: olt
-   namespace: {{ .Values.global.namespace }}
+   name: olt{{ $i }}
+   namespace: {{ $.Values.global.namespace }}
    labels:
-     name: olt
+     name: olt{{ $i }}
 spec:
   ports:
     - name: grpc
       port: 50060
       targetPort: 50060
   selector:
-    app: olt
+    app: olt{{ $i }}
 ---
 apiVersion: apps/v1beta1
 kind: Deployment
 metadata:
-  name: olt
-  namespace: {{ .Values.global.namespace }}
+  name: olt{{ $i }}
+  namespace: {{ $.Values.global.namespace }}
 spec:
    replicas: 1
    template:
      metadata:
        labels:
-         app: olt
+         app: olt{{ $i }}
        annotations:
-         cni: "calico,pon1"
+         cni: "nsx,nni{{ $i }}"
      spec:
+     {{- with $.Values.nodeSelector }}
+       nodeSelector:
+{{ toYaml . | indent 9 }}
+     {{- end }}
        containers:
-         - name: olt
-           image: "{{ .Values.global.registry }}{{ .Values.images.olt.repository }}:{{ tpl .Values.images.olt.tag . }}"
-           imagePullPolicy: {{ .Values.images.olt.pullPolicy }}
+         - name: olt{{ $i }}
+           image: "{{ $.Values.global.registry }}{{ $.Values.images.olt.repository }}:{{ tpl $.Values.images.olt.tag $ }}"
+           imagePullPolicy: {{ $.Values.images.olt.pullPolicy }}
            env:
              - name: POD_IP
                valueFrom:
@@ -71,3 +77,4 @@ spec:
            ports:
             - containerPort: 50060
               name: grpc-port
+{{- end }}
index 6179fc2..0219c0e 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+{{- $onucount := (.Values.numOnus|int)}}
+{{- range $i, $junk := until (.Values.numOlts|int) }}
+{{- range $j, $junk1 := until ($onucount) }}
+---
 apiVersion: v1
 kind: Service
 metadata:
-   name: onu
-   namespace: {{ .Values.global.namespace }}
+   name: onu{{ $i }}-{{ $j }}
+   namespace: {{ $.Values.global.namespace }}
    labels:
-     name: onu
+     name: onu{{ $i }}-{{ $j }}
 spec:
   ports:
     - name: grpc
       port: 50061
       targetPort: 50061
   selector:
-    app: onu
+    app: onu{{ $i }}-{{ $j }}
 ---
 apiVersion: apps/v1beta1
 kind: Deployment
 metadata:
-  name: onu
-  namespace: {{ .Values.global.namespace }}
+  name: onu{{ $i }}-{{ $j }}
+  namespace: {{ $.Values.global.namespace }}
 spec:
    replicas: 1
    template:
      metadata:
        labels:
-         app: onu
+         app: onu{{ $i }}-{{ $j }}
        annotations:
-         cni: "calico,pon0"
+         cni: "nsx,pon{{ $i }}.{{ $j }}"
      spec:
        affinity:
         podAffinity:
@@ -52,12 +56,16 @@ spec:
                 - key: app
                   operator: In
                   values:
-                  - rg
+                  - rg{{ $i }}-{{ $j }}
               topologyKey: kubernetes.io/hostname
+     {{- with $.Values.nodeSelector }}
+       nodeSelector:
+{{ toYaml . | indent 9 }}
+     {{- end }}
        containers:
-         - name: onu
-           image: "{{ .Values.global.registry }}{{ .Values.images.onu.repository }}:{{ tpl .Values.images.onu.tag . }}"
-           imagePullPolicy: {{ .Values.images.onu.pullPolicy }}
+         - name: onu{{ $i }}-{{ $j }}
+           image: "{{ $.Values.global.registry }}{{ $.Values.images.onu.repository }}:{{ tpl $.Values.images.onu.tag $ }}"
+           imagePullPolicy: {{ $.Values.images.onu.pullPolicy }}
            env:
              - name: POD_IP
                valueFrom:
@@ -72,7 +80,7 @@ spec:
              - "-device_type"
              - "ONU"
              - "-parent_addr"
-             - "olt"
+             - "olt{{ $i }}"
              - "-grpc_port"
              - "50061"
              - "-internal_if"
@@ -80,7 +88,13 @@ spec:
              - "-external_if"
              - "eth1"
              - "-promiscuous"
+{{- if not $.Values.legacyPonsim }}
+             - "-serial_number"
+             - "PSMO{{ printf "%04d%04d" $i $j }}"
+{{- end }}
+{{- end }}
 
            ports:
             - containerPort: 50061
               name: grpc-port
+{{- end }}
index e96c59c..5bbafb6 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+{{- $rgcount := (.Values.numOnus|int) }}
+{{- range $i, $junk := until (.Values.numOlts|int) }}
+{{- range $j, $junk1 := until ($rgcount) }}
+---
 apiVersion: apps/v1beta1
 kind: Deployment
 metadata:
-  name: rg
-  namespace: {{ .Values.global.namespace }}
+  name: rg{{ $i }}-{{ $j }}
+  namespace: {{ $.Values.global.namespace }}
 spec:
    replicas: 1
    template:
      metadata:
        labels:
-         app: rg
+         app: rg{{ $i }}-{{ $j }}
        annotations:
-         cni: "pon0"
+         cni: "pon{{ $i }}.{{ $j }}"
      spec:
        affinity:
         podAffinity:
@@ -37,12 +41,16 @@ spec:
                 - key: app
                   operator: In
                   values:
-                  - onu
+                  - onu{{ $i }}-{{ $j }}
               topologyKey: kubernetes.io/hostname
+     {{- with $.Values.nodeSelector }}
+       nodeSelector:
+{{ toYaml . | indent 9 }}
+     {{- end }}
        containers:
-         - name: rg
-           image: "{{ .Values.global.registry }}{{ .Values.images.rg.repository }}:{{ tpl .Values.images.rg.tag . }}"
-           imagePullPolicy: {{ .Values.images.rg.pullPolicy }}
+         - name: rg{{ $i }}-{{ $j }}
+           image: "{{ $.Values.global.registry }}{{ $.Values.images.rg.repository }}:{{ tpl $.Values.images.rg.tag $ }}"
+           imagePullPolicy: {{ $.Values.images.rg.pullPolicy }}
            env:
              - name: POD_IP
                valueFrom:
@@ -55,3 +63,5 @@ spec:
            command: [ "/bin/bash", "-c", "trap : TERM INT; sleep infinity & wait" ]
            securityContext:
              privileged: true
+{{- end }}
+{{- end }}
index 9fa6c0a..f1bc9db 100644 (file)
@@ -31,6 +31,14 @@ images:
     tag: 'latest'
     pullPolicy: 'Always'
 
+nodeSelector: {}
+
 global:
   namespace: voltha
   registry: ''
+
+# numOlts > 1 only works with voltha-1.7 or greater
+numOlts: 1
+numOnus: 1
+# legacyPonsim == true means that we are using voltha-1.6
+legacyPonsim: true
diff --git a/helm-charts/seba-services-1.2.5.tgz b/helm-charts/seba-services-1.2.5.tgz
new file mode 100644 (file)
index 0000000..fcd15e2
Binary files /dev/null and b/helm-charts/seba-services-1.2.5.tgz differ
diff --git a/helm-charts/voltha-1.0.4.tgz b/helm-charts/voltha-1.0.4.tgz
new file mode 100644 (file)
index 0000000..e5396e8
Binary files /dev/null and b/helm-charts/voltha-1.0.4.tgz differ
diff --git a/helm-charts/voltha/charts/etcd-cluster-0.1.2.tgz b/helm-charts/voltha/charts/etcd-cluster-0.1.2.tgz
new file mode 100644 (file)
index 0000000..461efb2
Binary files /dev/null and b/helm-charts/voltha/charts/etcd-cluster-0.1.2.tgz differ
diff --git a/helm-charts/voltha/requirements.lock b/helm-charts/voltha/requirements.lock
new file mode 100644 (file)
index 0000000..81ca79d
--- /dev/null
@@ -0,0 +1,6 @@
+dependencies:
+- name: etcd-cluster
+  repository: file://../etcd-cluster
+  version: 0.1.2
+digest: sha256:12a9327fed6331bf8815ea3ade724dd2c5ca6b404f0f0b6302decd56574748f9
+generated: "2019-06-19T06:01:03.774445535Z"
index f5ef095..f32115d 100644 (file)
@@ -27,7 +27,7 @@ spec:
       labels:
         app: alarm-generator
       annotations:
-        cni: "calico"
+        cni: "nsx"
     spec:
       serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
       containers:
index ef86b16..2e2d251 100644 (file)
@@ -52,7 +52,7 @@ spec:
       labels:
         app: freeradius
       annotations:
-        cni: "calico"
+        cni: "nsx"
     spec:
       serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
       containers:
index 7aa571b..483b1a2 100644 (file)
@@ -40,7 +40,7 @@ spec:
       labels:
         app: netconf
       annotations:
-        cni: "calico"
+        cni: "nsx"
     spec:
       serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
       terminationGracePeriodSeconds: 10
index c70f408..7f53dc7 100644 (file)
@@ -26,7 +26,7 @@ spec:
       labels:
         app: ofagent
       annotations:
-        cni: "calico"
+        cni: "nsx"
     spec:
       serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
       terminationGracePeriodSeconds: 10
index 2077705..39c83b6 100644 (file)
@@ -44,7 +44,7 @@ spec:
       labels:
         app: vcli
       annotations:
-        cni: "calico"
+        cni: "nsx"
     spec:
       serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
       containers:
index 5ea1d42..3440a90 100644 (file)
@@ -55,7 +55,7 @@ spec:
       labels:
         app: vcore
       annotations:
-        cni: "calico"
+        cni: "nsx"
     spec:
       terminationGracePeriodSeconds: 0
       serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
index 2cc4f97..037a1ca 100644 (file)
@@ -17,7 +17,7 @@ apiVersion: v1
 name: att-workflow
 description: A Helm chart for XOS's "att-workflow"
 icon: https://guide.opencord.org/logos/cord.svg
-version: 1.2.1
+version: 1.2.2
 
 # xosproject/tosca-loader version
-appVersion: 1.3.0
+appVersion: 1.3.1
diff --git a/helm-charts/workflows/att-workflow/charts/att-workflow-driver-1.1.0.tgz b/helm-charts/workflows/att-workflow/charts/att-workflow-driver-1.1.0.tgz
new file mode 100644 (file)
index 0000000..b9d1046
Binary files /dev/null and b/helm-charts/workflows/att-workflow/charts/att-workflow-driver-1.1.0.tgz differ
diff --git a/helm-charts/workflows/att-workflow/requirements.lock b/helm-charts/workflows/att-workflow/requirements.lock
new file mode 100644 (file)
index 0000000..80df717
--- /dev/null
@@ -0,0 +1,6 @@
+dependencies:
+- name: att-workflow-driver
+  repository: file://../../xos-services/att-workflow-driver
+  version: 1.1.0
+digest: sha256:4a44950f31c28610e1face8e7bf585244aa40a15136c23ff3bd870d9348a4a16
+generated: "2019-06-19T06:57:58.047407165Z"
index e95c96b..cdd1d7d 100644 (file)
@@ -17,7 +17,7 @@ apiVersion: v1
 name: tt-workflow
 description: A Helm chart for XOS's "tt-workflow"
 icon: https://guide.opencord.org/logos/cord.svg
-version: 0.1.2-dev
+version: 0.1.3-dev
 
 # xosproject/tosca-loader version
-appVersion: 1.3.0
+appVersion: 1.3.1
diff --git a/helm-charts/xos-core-3.0.7.tgz b/helm-charts/xos-core-3.0.7.tgz
new file mode 100644 (file)
index 0000000..ecdbbf8
Binary files /dev/null and b/helm-charts/xos-core-3.0.7.tgz differ
index 11bdbe7..a0b3841 100644 (file)
@@ -17,8 +17,8 @@ name: xos-core
 description: XOS - An Extensible Cloud Operating System
 icon: https://guide.opencord.org/logos/xos.svg
 
-version: 3.0.2
+version: 3.0.7
 
 # appVersion is of the xos-core containers.
 # xos-tosca, xos-chameleon, and xos-api-tester are versioned in values.yaml
-appVersion: 3.2.3
+appVersion: 3.3.0
diff --git a/helm-charts/xos-core/charts/xos-db-1.0.1.tgz b/helm-charts/xos-core/charts/xos-db-1.0.1.tgz
new file mode 100644 (file)
index 0000000..d9c4cee
Binary files /dev/null and b/helm-charts/xos-core/charts/xos-db-1.0.1.tgz differ
diff --git a/helm-charts/xos-core/charts/xos-gui-1.2.4.tgz b/helm-charts/xos-core/charts/xos-gui-1.2.4.tgz
new file mode 100644 (file)
index 0000000..d184e59
Binary files /dev/null and b/helm-charts/xos-core/charts/xos-gui-1.2.4.tgz differ
diff --git a/helm-charts/xos-core/requirements.lock b/helm-charts/xos-core/requirements.lock
new file mode 100644 (file)
index 0000000..560b633
--- /dev/null
@@ -0,0 +1,9 @@
+dependencies:
+- name: xos-db
+  repository: file://../xos-db
+  version: 1.0.1
+- name: xos-gui
+  repository: file://../xos-gui
+  version: 1.2.4
+digest: sha256:e86e82edcb31f76863315c82b076e4e560a0bbd8ae829f35af0ef71e9d68893d
+generated: "2019-06-19T06:57:31.958304319Z"
index 3bd9df5..b915104 100644 (file)
@@ -69,14 +69,3 @@ xos-db:
   xosDBName: 'xos'
   xosDBUser: 'postgres'
   xosDBPassword: 'password'
-
-# Certificates can be regenerated with scripts/pki/Makefile
-# Created on: Fri Dec 14 16:46:00 UTC 2018, good for 366 days
-ca_cert_chain: |
-  LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQxakNDQXI2Z0F3SUJBZ0lKQUpsNGd5bGtZUi9zTUEwR0NTcUdTSWIzRFFFQkN3VUFNSGd4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZRFZRUUlEQXBEWVd4cFptOXlibWxoTVJNd0VRWURWUVFIREFwTlpXNXNieUJRWVhKcgpNUXd3Q2dZRFZRUUtEQU5QVGtZeEZUQVRCZ05WQkFzTURGUmxjM1JwYm1jZ1QyNXNlVEVhTUJnR0ExVUVBd3dSClEwOVNSQ0JVWlhOMElGSnZiM1FnUTBFd0hoY05NVGd4TWpFME1UWTBOakF3V2hjTk1Ua3hNakUxTVRZME5qQXcKV2pCNE1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQXdLUTJGc2FXWnZjbTVwWVRFVE1CRUdBMVVFQnd3SwpUV1Z1Ykc4Z1VHRnlhekVNTUFvR0ExVUVDZ3dEVDA1R01SVXdFd1lEVlFRTERBeFVaWE4wYVc1bklFOXViSGt4CkdqQVlCZ05WQkFNTUVVTlBVa1FnVkdWemRDQlNiMjkwSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0MKQVE4QU1JSUJDZ0tDQVFFQXlmdXJic3lHNC9NL1o1Y0x1a1drNU84ZjVTemxQY21md20rek11NTFtRlloU05hTgpiRkFic0FReFZqallvbTB1TEUxdjZsTlZuWGkxVzQySG9tM0c3ZFgyb1NEZ0loUXloS29jRkh0WlNGS0o0RWF1CmJsUXhXUzFaQ1VZSFpINUdMVmMxWUNMUHhUbFdndnlGSnVZUk9LZElaWXloT1ZORHY2RHlIN1cwQmsva1M5MEEKamhkZ3h3U0dJcldsS2FveGhjSG01R0ErenZiRnBOYUx1T201aFNDWHlpRnVSdHd1bXV5YlJMalNyUC9jUjF3OAorZjMvejkvQlZXTEdZMVBTN1RvSENUTk5veHNXUVNHQ1piVUlzUVpiSXhDSXNPVUJkbGxDWkRmYnErSUROaXErCnI3dTByVC9Tamh5WVdCcmkrcFNzc0lGdWNwcmhvOHJnZVJyMVpRSURBUUFCbzJNd1lUQWRCZ05WSFE0RUZnUVUKRlNrQmxkdXF5R0hibGhJMUdHV0NEV1NPNXRvd0h3WURWUjBqQkJnd0ZvQVVGU2tCbGR1cXlHSGJsaEkxR0dXQwpEV1NPNXRvd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCQWY4RUJBTUNBWVl3RFFZSktvWklodmNOCkFRRUxCUUFEZ2dFQkFEazNCbVNmbUFpQ3dCZENRRHNodTViZWpQWStnckxNanROdkcxSXNqMUtRZHlpMmF6SGQKYUN0TW5LODdDbmJubDNlNzErcEx4aFJablcwQkFFeUxMNG9NOFYvR1kvcG9SSG45cWV1bGJtRTNqWkF2bTE0VAp5YUJhQXpzYTNDOTBUZkZEZG1WU1lPTWFocEM3Q2IvN01TZldkWFBXL3lLdkpZYzZCdUVvcVNUNE5ZeVBSVmNuCmdwUXp3dU9CMEN6dGMySHU2MDRFNTRRT05GOVl2aW5WYU9zVmFvQTJRQzJTemZtSlUzTWtnWm5HMTAvd0hlZEYKWk4wbUthSk1mMHpwWHI2MU5pOTVZc2pONmJnaVY1aExwZDBYUXBVTXpXVzRFZ0xEbjZyeFNjejcwRWh6SW1aRwpVbG40T20ybnMxSXR4NDE3RGtXbUp1cGRIY1U1d0w4MkZ4Yz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
-secrets:
-  core_api_cert: |
-    Q2VydGlmaWNhdGU6CiAgICBEYXRhOgogICAgICAgIFZlcnNpb246IDMgKDB4MikKICAgICAgICBTZXJpYWwgTnVtYmVyOiA0MDk2ICgweDEwMDApCiAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbgogICAgICAgIElzc3VlcjogQz1VUywgU1Q9Q2FsaWZvcm5pYSwgTD1NZW5sbyBQYXJrLCBPPU9ORiwgT1U9VGVzdGluZyBPbmx5LCBDTj1DT1JEIFRlc3QgUm9vdCBDQQogICAgICAgIFZhbGlkaXR5CiAgICAgICAgICAgIE5vdCBCZWZvcmU6IERlYyAxNCAxNjo0NjowMCAyMDE4IEdNVAogICAgICAgICAgICBOb3QgQWZ0ZXIgOiBEZWMgMTUgMTY6NDY6MDAgMjAxOSBHTVQKICAgICAgICBTdWJqZWN0OiBDPVVTLCBTVD1DYWxpZm9ybmlhLCBMPU1lbmxvIFBhcmssIE89T05GLCBPVT1UZXN0aW5nIE9ubHksIENOPXhvcy1jb3JlCiAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86CiAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3JpdGhtOiByc2FFbmNyeXB0aW9uCiAgICAgICAgICAgICAgICBQdWJsaWMtS2V5OiAoMjA0OCBiaXQpCiAgICAgICAgICAgICAgICBNb2R1bHVzOgogICAgICAgICAgICAgICAgICAgIDAwOmFmOjFiOmRlOjZmOmQ2OjE0OjMyOmQwOjI2OjEzOmM2OjhlOmQ0OjRhOgogICAgICAgICAgICAgICAgICAgIDMzOmNjOjdjOmJhOmVkOmE0Ojg0OjNhOjRiOmJjOmZkOmNiOjFkOjkxOjQzOgogICAgICAgICAgICAgICAgICAgIGUzOmFjOmZiOjBmOjVjOjM5OmI5OjhlOmEzOjU1OjgxOjhhOjUzOjJhOjUxOgogICAgICAgICAgICAgICAgICAgIDE2OjQ2OjIzOmMwOjFmOjIwOmE3OjkxOjY1OmY1OjZjOjM2OmM1OjY0OjhmOgogICAgICAgICAgICAgICAgICAgIGRlOjE0OjMwOjg1OjMzOmM3OjY1OjliOjZkOmE1Ojg2OjU2OjdjOjk0OmZhOgogICAgICAgICAgICAgICAgICAgIGNkOjNkOjIxOjBmOjYwOjBlOjRhOjhjOjdkOmNkOjhkOjQ4OmI0OmRmOjM2OgogICAgICAgICAgICAgICAgICAgIGIyOjgyOjE4Ojg0OjNmOjU3OjQxOmY3OjM0OjA2OjI1OmQwOmI2OjUzOjVhOgogICAgICAgICAgICAgICAgICAgIDgwOmMwOjJhOmZkOmVhOmYyOmM2OmJhOmRmOjc3OjdhOjlhOjIzOjEwOmU3OgogICAgICAgICAgICAgICAgICAgIDlkOjRjOmQ5OmM3OjIxOjBkOjhjOjk4OmJhOmI5OmIyOjQzOmI2OmEwOjRjOgogICAgICAgICAgICAgICAgICAgIDQyOjYyOmZiOjNlOmZkOmY4OjcxOmY4OmUxOjY5OjFhOjk1OjY2OmVkOjQxOgogICAgICAgICAgICAgICAgICAgIGIyOjYyOmVmOjJmOmFkOjA2OjJkOmIwOjQ4OmM2OmJkOmViOmQ2OjlmOmZlOgogICAgICAgICAgICAgICAgICAgIGFjOjEyOmUyOjU4OmQzOmFhOmQyOjdkOjU0OmRlOjc1OjkyOmVhOjllOjFhOgogICAgICAgICAgICAgICAgICAgIDk3OjdiOjAzOjY4OjJjOjEyOjA1OmI1OmQ5OmE1OjMwOmRkOjhhOjk5OmI0OgogICAgICAgICAgICAgICAgICAgIDhkOmE3OjcyOjEwOmYzOmQ5OjljOjg2OmRkOjA5OmI2OmQwOjgyOjQyOjMwOgogICAgICAgICAgICAgICAgICAgIDZkOmNiOmQzOjZhOmI5OjMzOmM2OjM5OmFiOmNhOjhmOmJhOjM0OjJiOmZiOgogICAgICAgICAgICAgICAgICAgIDM2OjQ2Ojc0OmVlOjMwOmVlOjhhOmE4OjJlOjJjOjVmOmM4OjhlOmM5OjkzOgogICAgICAgICAgICAgICAgICAgIGIyOjMwOjJlOmIwOjI2OjQ3Ojg4OjBjOmE5OjE0OjBjOjc4OjAyOjY3OjBjOgogICAgICAgICAgICAgICAgICAgIGFkOmFiCiAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCiAgICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6CiAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKICAgICAgICAgICAgICAgIDkyOjZEOkMwOkU5OjNFOjk5OkNEOkE1OkE0OkM5Ojk1OkIwOkE0OjE1OjE4OkI3OkNBOjFGOkIxOjg3CiAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAogICAgICAgICAgICAgICAga2V5aWQ6MTU6Mjk6MDE6OTU6REI6QUE6Qzg6NjE6REI6OTY6MTI6MzU6MTg6NjU6ODI6MEQ6NjQ6OEU6RTY6REEKICAgICAgICAgICAgICAgIERpck5hbWU6L0M9VVMvU1Q9Q2FsaWZvcm5pYS9MPU1lbmxvIFBhcmsvTz1PTkYvT1U9VGVzdGluZyBPbmx5L0NOPUNPUkQgVGVzdCBSb290IENBCiAgICAgICAgICAgICAgICBzZXJpYWw6OTk6Nzg6ODM6Mjk6NjQ6NjE6MUY6RUMKCiAgICAgICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czogCiAgICAgICAgICAgICAgICBDQTpGQUxTRQogICAgICAgICAgICBYNTA5djMgS2V5IFVzYWdlOiBjcml0aWNhbAogICAgICAgICAgICAgICAgRGlnaXRhbCBTaWduYXR1cmUsIEtleSBFbmNpcGhlcm1lbnQKICAgICAgICAgICAgWDUwOXYzIEV4dGVuZGVkIEtleSBVc2FnZTogCiAgICAgICAgICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRoZW50aWNhdGlvbgogICAgICAgICAgICBYNTA5djMgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lOiAKICAgICAgICAgICAgICAgIEROUzp4b3MtY29yZSwgRE5TOnhvcy1jb3JlLmRlZmF1bHQsIEROUzp4b3MtY29yZS5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsCiAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbgogICAgICAgICBhNTo0MzpmNToyMzozNjpjNDo5MjozMDpiZjowMToxZTphYjo2MTphZDpmZTpiNDo2Yjo5ZjoKICAgICAgICAgODg6YmI6Y2Y6YWU6ZTE6OGE6NTI6MDQ6ODI6NzI6MWM6M2M6ZWI6Mjk6YTU6NTY6NzA6YzI6CiAgICAgICAgIDk3OjEzOjY5OjM1OjVlOmZiOjRlOmMyOmUzOmI2OjQ1OmJhOjEwOjdiOmUxOjRjOmU2OjkwOgogICAgICAgICA1ZTo0MjoyODo3YjpjNDowMzoxNTo3Mjo1MDowMTo3Yjo3NzpjYzo1NDo1Zjo0Yzo4NDpmZjoKICAgICAgICAgY2M6NjM6YzA6ODM6YTc6YTc6YmU6YmU6YTI6N2U6YjE6ZmU6ZmI6OWY6YWY6ZjU6NDQ6YmE6CiAgICAgICAgIDBjOjczOmJlOjYyOmFlOmFiOmZiOmFmOjJjOjAyOmRjOjFmOjc5OjMzOmFlOmMzOjUzOmE0OgogICAgICAgICBkNDo3YTplYzplMzozYjowMTo3Mjo5YTo1ZTo4NzowZjpiNDo2Yjo0Mjo0ODo4ZjpiYTozZjoKICAgICAgICAgZDc6Nzk6YzE6OTk6MTA6NTM6MmY6ODU6MzY6OTY6NmI6NWI6MWY6ZTg6OTE6NTQ6ZDA6ZWM6CiAgICAgICAgIDdmOjk0OmM3Ojg4OjVlOmZmOjBiOjYzOjIzOmJkOmY2OjA3OjhlOmY4OmQ5OjhkOmUxOmIyOgogICAgICAgICBiNzowYzoxNzpkNDo0ZTpmNDpmZjo3ZDpiZDpiMTowNToxODo0MDplZDo2NTpmMTpkZTpmYzoKICAgICAgICAgNzU6OWU6Mjk6YWQ6YTk6NzE6ZWY6NjQ6NTI6Yzg6NWM6ODE6MmQ6NDM6M2Q6Mzk6Yzg6OTI6CiAgICAgICAgIGZlOjMwOmJlOmM1OjIxOmY5OmJlOmNhOmQ0OmFhOjI2Ojk5OmEwOjdjOmNhOmVjOjQzOmI1OgogICAgICAgICAyYjo0YzphMTowMjpjMzo4NzpiYzozNTphYzpkODpiZjplMzo5MDo4Mjo0Mzo5NDphZTplZDoKICAgICAgICAgM2I6MDM6ZWI6NjY6ODk6ZGI6ZDM6MTk6ZTA6NmE6YjA6Njc6MTQ6Zjk6NDQ6NjQ6ODk6MTQ6CiAgICAgICAgIGI1OmZjOmVkOjY0Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFc0RDQ0E1aWdBd0lCQWdJQ0VBQXdEUVlKS29aSWh2Y05BUUVMQlFBd2VERUxNQWtHQTFVRUJoTUNWVk14CkV6QVJCZ05WQkFnTUNrTmhiR2xtYjNKdWFXRXhFekFSQmdOVkJBY01DazFsYm14dklGQmhjbXN4RERBS0JnTlYKQkFvTUEwOU9SakVWTUJNR0ExVUVDd3dNVkdWemRHbHVaeUJQYm14NU1Sb3dHQVlEVlFRRERCRkRUMUpFSUZSbApjM1FnVW05dmRDQkRRVEFlRncweE9ERXlNVFF4TmpRMk1EQmFGdzB4T1RFeU1UVXhOalEyTURCYU1HOHhDekFKCkJnTlZCQVlUQWxWVE1STXdFUVlEVlFRSURBcERZV3hwWm05eWJtbGhNUk13RVFZRFZRUUhEQXBOWlc1c2J5QlEKWVhKck1Rd3dDZ1lEVlFRS0RBTlBUa1l4RlRBVEJnTlZCQXNNREZSbGMzUnBibWNnVDI1c2VURVJNQThHQTFVRQpBd3dJZUc5ekxXTnZjbVV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3ZHOTV2CjFoUXkwQ1lUeG83VVNqUE1mTHJ0cElRNlM3ejl5eDJSUStPcyt3OWNPYm1PbzFXQmlsTXFVUlpHSThBZklLZVIKWmZWc05zVmtqOTRVTUlVengyV2JiYVdHVm55VStzMDlJUTlnRGtxTWZjMk5TTFRmTnJLQ0dJUS9WMEgzTkFZbAowTFpUV29EQUt2M3E4c2E2MzNkNm1pTVE1NTFNMmNjaERZeVl1cm15UTdhZ1RFSmkrejc5K0hINDRXa2FsV2J0ClFiSmk3eSt0Qmkyd1NNYTk2OWFmL3F3UzRsalRxdEo5Vk41MWt1cWVHcGQ3QTJnc0VnVzEyYVV3M1lxWnRJMm4KY2hEejJaeUczUW0yMElKQ01HM0wwMnE1TThZNXE4cVB1alFyK3paR2RPNHc3b3FvTGl4ZnlJN0prN0l3THJBbQpSNGdNcVJRTWVBSm5ESzJyQWdNQkFBR2pnZ0ZMTUlJQlJ6QWRCZ05WSFE0RUZnUVVrbTNBNlQ2WnphV2t5Wld3CnBCVVl0OG9mc1ljd2dhb0dBMVVkSXdTQm9qQ0JuNEFVRlNrQmxkdXF5R0hibGhJMUdHV0NEV1NPNXRxaGZLUjYKTUhneEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlEQXBEWVd4cFptOXlibWxoTVJNd0VRWURWUVFIREFwTgpaVzVzYnlCUVlYSnJNUXd3Q2dZRFZRUUtEQU5QVGtZeEZUQVRCZ05WQkFzTURGUmxjM1JwYm1jZ1QyNXNlVEVhCk1CZ0dBMVVFQXd3UlEwOVNSQ0JVWlhOMElGSnZiM1FnUTBHQ0NRQ1plSU1wWkdFZjdEQUpCZ05WSFJNRUFqQUEKTUE0R0ExVWREd0VCL3dRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUZCUWNEQVRCSkJnTlZIUkVFUWpCQQpnZ2g0YjNNdFkyOXlaWUlRZUc5ekxXTnZjbVV1WkdWbVlYVnNkSUlpZUc5ekxXTnZjbVV1WkdWbVlYVnNkQzV6CmRtTXVZMngxYzNSbGNpNXNiMk5oYkRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXBVUDFJemJFa2pDL0FSNnIKWWEzK3RHdWZpTHZQcnVHS1VnU0NjaHc4NnltbFZuRENseE5wTlY3N1RzTGp0a1c2RUh2aFRPYVFYa0lvZThRRApGWEpRQVh0M3pGUmZUSVQvekdQQWc2ZW52cjZpZnJIKys1K3Y5VVM2REhPK1lxNnIrNjhzQXR3ZmVUT3V3MU9rCjFIcnM0enNCY3BwZWh3KzBhMEpJajdvLzEzbkJtUkJUTDRVMmxtdGJIK2lSVk5Ec2Y1VEhpRjcvQzJNanZmWUgKanZqWmplR3l0d3dYMUU3MC8zMjlzUVVZUU8xbDhkNzhkWjRwcmFseDcyUlN5RnlCTFVNOU9jaVMvakMreFNINQp2c3JVcWlhWm9Ieks3RU8xSzB5aEFzT0h2RFdzMkwvamtJSkRsSzd0T3dQclpvbmIweG5nYXJCbkZQbEVaSWtVCnRmenRaQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
-  core_api_key: |
-    LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcGdJQkFBS0NBUUVBcnh2ZWI5WVVNdEFtRThhTzFFb3p6SHk2N2FTRU9rdTgvY3Nka1VQanJQc1BYRG01CmpxTlZnWXBUS2xFV1JpUEFIeUNua1dYMWJEYkZaSS9lRkRDRk04ZGxtMjJsaGxaOGxQck5QU0VQWUE1S2pIM04KalVpMDN6YXlnaGlFUDFkQjl6UUdKZEMyVTFxQXdDcjk2dkxHdXQ5M2Vwb2pFT2VkVE5uSElRMk1tTHE1c2tPMgpvRXhDWXZzKy9maHgrT0ZwR3BWbTdVR3lZdTh2clFZdHNFakd2ZXZXbi82c0V1SlkwNnJTZlZUZWRaTHFuaHFYCmV3Tm9MQklGdGRtbE1OMkttYlNOcDNJUTg5bWNodDBKdHRDQ1FqQnR5OU5xdVRQR09hdktqN28wSy9zMlJuVHUKTU82S3FDNHNYOGlPeVpPeU1DNndKa2VJREtrVURIZ0Nad3l0cXdJREFRQUJBb0lCQVFDaHhmdHdFclZDWkc1cApJcTFkanRmZitQT3hES1prUFFoeTU2MS9RTnNjT2kxc3BKKzdHVWFya0tGWW5PVVpFM293eDdoSGFZeWMxdFR5CkhMK3NvMDdNRVZEYmtTYTB2ejRGWE5jenZGRTZDcm53cFdDN1FBcHBsVnpCTitrbG8zVjc3Z0luK1hRWCthcXMKM29zSy9oTi9IV2lDU2RoUGk4c1U3clU2NGd1Y0pJNkhnK2lnMlFYWTk0bWFjVHJhVkhOMWtSd0RjYnFLbDhsVwpoUTlSTjNROXpQdFF3OUxGd0xHNGN1VkNtZ09XOW9LeE9weTVjM2hoNGhPL0ZVMEQzOU00eVhmcFJBQ1hzYzhmCmNXMjRaSC9pQzZ2bXVjNEtGejlsaWVmT1hnMy9LVWtJTzgzNkJxNGk1K3Jjc0Y2QS9ucllPV2VKYmZnL2dpR1UKWGV6OXdOcEJBb0dCQU5rNDUxeTV2NVJsYmtmN2VJNzA4NXBtM3JJeTZodkFXUktBRTZ5UWJra0dqa2pkSWZndgp5QjhtdXd4NXpDeXo1Mzl2WjhYVUhIeC9KbkR3UkRlc0NRMlZKSG5Qd1NocFE3ZmNXVDJrWEFkQTdDUDlFcUpwCkpDekZiaFZPTHVlakRGMTdFVGJvU0JOdU9mc0dNWmV1WFhCMzZ6VFJURFh4bzdrR2lkekpFeFM3QW9HQkFNNWUKWCtUUGNydUhkYnVZWnZ4WUZORk9kb3B0UHhUMnJ3YlpkS3lVb2dFM1ZLY2w5MUVlVHMwRHdYTmZLWE1JQ3cybgo3SFUwNEJqVjFJd3FzVFRqMVh0SUhBVHA5elQwV1FkNXgwUUVwUkhXenlSdHduWkpTbGJ3K2NGZFNrU1NnamNpCnlvY1puUE9jNzRKSWphaC9uRUlkUDZicnkzNG9NK3VWTjU1aVRyUFJBb0dCQU5oakZDN05wcWZvUnV5VCtHdkkKWGFjdzFLVUZqU3FwK05FeUh1Y25WWVdQYjB2c1pUdDhOY202WmxpdU9CTkwvODkxcGhWdkVCV0JBRVUvUTJXRwpEZHFtK0pnVHVtSk1RalkwM2YxRzdwb1hOV1ZBWkVDL3BsYW5NZHN0Y0JJMTNVcCtIdzdvWTJ4ZndJaHNpaGlFCmpQWk5yMU9GTDNzSlJNUTdYRGhCWWEyakFvR0JBSTgveTJqVTUxdHRLRGhVRGdqVVMzOE83QklpeTBzT0FXakwKd2NXYVZ1cHBNZ1hrd013Nk1aRDJMbTZiZS9ZeGV4cTdtZE95Skd5WTRiVjZYUS9OcHY2d2kyS04xZCtZVGNSMgpyKzl6R2ZKTUhmVzNpdWo0N3ZWeXlLdUV5bXpYRmpTWG5lWXh6VlQ5ZHZRRTBQQkp4SG5RTzhMdW9vNnI4WDV5ClVlMUxhRDVCQW9HQkFLVjJkYWJvWTBpeUtyOXFDV0NXZ3pjOFpuc0FEdHoyYzZ2Z2lUTXpUeDNNamdPb1d5TXMKWnRUUy94OW1Sei9CZUJnNWhNRCszS0ZoUzNsd1RUZ2xWYUI2NjFQUWZ6Tm1sZXJoQUtXV3pFV3lkelVISzM3dQpUS0hjb01PMUdmWU9mUjVFMWZKNWNWNGlFSTVPVU9rTGtMR0RjZ2lFcUJjck9kRThkeGYxY3NlLwotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
-
index c973968..50c28eb 100644 (file)
@@ -16,7 +16,7 @@
 name: base-kubernetes
 description: A Helm chart for XOS's "base-kubernetes" profile
 icon: https://guide.opencord.org/logos/cord.svg
-version: 1.1.0
+version: 1.0.4
 
 # xosproject/tosca-loader version
-appVersion: 1.3.0
+appVersion: 1.3.1
diff --git a/helm-charts/xos-profiles/base-kubernetes/charts/kubernetes-1.0.3.tgz b/helm-charts/xos-profiles/base-kubernetes/charts/kubernetes-1.0.3.tgz
new file mode 100644 (file)
index 0000000..9999756
Binary files /dev/null and b/helm-charts/xos-profiles/base-kubernetes/charts/kubernetes-1.0.3.tgz differ
diff --git a/helm-charts/xos-profiles/base-kubernetes/requirements.lock b/helm-charts/xos-profiles/base-kubernetes/requirements.lock
new file mode 100644 (file)
index 0000000..dbd1ecf
--- /dev/null
@@ -0,0 +1,6 @@
+dependencies:
+- name: kubernetes
+  repository: file://../../xos-services/kubernetes
+  version: 1.0.3
+digest: sha256:807f29b8cc3584e7fa2679b201a8152644239523d99c17ad038cedd7de4354fe
+generated: "2019-06-26T02:34:06.586945525Z"
index 70d31d9..5db83bd 100644 (file)
@@ -15,5 +15,5 @@
 
 dependencies:
 - name: kubernetes
-  version: 1.2.0
+  version: 1.0.3
   repository: file://../../xos-services/kubernetes
index 23c06b5..97197d6 100644 (file)
@@ -17,7 +17,7 @@ name: ponsim-pod
 description: A Helm chart for loading the Ponsim pod's TOSCA files into XOS
 icon: https://guide.opencord.org/logos/xos.svg
 
-version: 1.2.0
+version: 1.3.3
 
 # xosproject/tosca-loader version
-appVersion: 1.1.5
+appVersion: 1.3.1
index 92d4cd1..d2c37c7 100644 (file)
@@ -37,8 +37,8 @@ spec:
       restartPolicy: OnFailure
       containers:
         - name: {{ .Chart.Name }}-ponsim-pod
-          image: {{ .Values.global.registry }}{{ .Values.image.repository }}:{{ tpl .Values.image.tag . }}
-          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          image: {{ .Values.global.registry }}{{ .Values.images.tosca_loader.repository }}:{{ tpl .Values.images.tosca_loader.tag . }}
+          imagePullPolicy: {{ .Values.images.tosca_loader.pullPolicy }}
           env:
             - name: XOS_USER
               value: {{ .Values.xosAdminUser }}
index 724d56c..9398a65 100644 (file)
@@ -19,6 +19,9 @@ imports:
   - custom_types/onudevice.yaml
   - custom_types/ponport.yaml
   - custom_types/voltservice.yaml
+  {{- if $.Values.bandwidthProfiles }}
+  - custom_types/technologyprofile.yaml
+  {{- end }}
 description: Create a simulated OLT Device in VOLTHA
 topology_template:
   node_templates:
@@ -29,29 +32,103 @@ topology_template:
         name: volt
         must-exist: true
 
-    olt_device:
+{{- range $i, $junk := until (.Values.numOlts|int) }}
+
+    olt{{ $i }}_device:
       type: tosca.nodes.OLTDevice
       properties:
-        name: PONSIM OLT
+        name: PONSIM OLT {{ $i }}
         device_type: ponsim_olt
-        host: olt.voltha.svc
+        host: olt{{ $i }}.voltha.svc
         port: 50060
         switch_datapath_id: of:0000000000000001
-        switch_port: "2"
+        switch_port: "{{ add 2 $i }}"
         outer_tpid: "0x8100"
+{{- if $.Values.bandwidthProfiles }}
+        technology: xgspon
+{{- end }}
+{{- if $.Values.legacyPonsim }}
         dp_id: of:0000aabbccddeeff
+{{- else }}
+        dp_id: {{ index $.Values.oltDpids $i }}
+{{- end }}
         uplink: "2"
       requirements:
         - volt_service:
             node: service#volt
             relationship: tosca.relationships.BelongsToOne
 
-    pon_port:
+    olt{{ $i }}_pon_port:
       type: tosca.nodes.PONPort
       properties:
-        name: pon0
+        name: olt{{ $i }}pon0
         port_no: 1
       requirements:
         - olt_device:
-            node: olt_device
+            node: olt{{ $i }}_device
             relationship: tosca.relationships.BelongsToOne
+{{- end }}
+
+{{- if $.Values.bandwidthProfiles }}
+    technologyProfile:
+      type: tosca.nodes.TechnologyProfile
+      properties:
+        profile_id: 64
+        technology: xgspon
+        profile_value: >
+          {
+            "name": "4QueueHybridProfileMap1",
+            "profile_type": "XPON",
+            "version": 1.0,
+            "num_gem_ports": 1,
+            "instance_control": {
+              "onu": "multi-instance",
+              "uni": "single-instance",
+              "max_gem_payload_size": "auto"
+            },
+            "us_scheduler": {
+              "additional_bw": "auto",
+              "direction": "UPSTREAM",
+              "priority": 0,
+              "weight": 0,
+              "q_sched_policy": "hybrid"
+            },
+            "ds_scheduler": {
+              "additional_bw": "auto",
+              "direction": "DOWNSTREAM",
+              "priority": 0,
+              "weight": 0,
+              "q_sched_policy": "hybrid"
+            },
+            "upstream_gem_port_attribute_list": [{
+                "pbit_map": "0b11000000",
+                "aes_encryption": "TRUE",
+                "scheduling_policy": "Strict-Priority",
+                "priority_q": 1,
+                "weight": 0,
+                "discard_policy": "Tail-Drop",
+                "max_q_size": "auto",
+                "discard_config": {
+                  "min_threshold": 0,
+                  "max_threshold": 0,
+                  "max_probability": 0
+                }
+              }
+            ],
+            "downstream_gem_port_attribute_list": [{
+                "pbit_map": "0b11000000",
+                "aes_encryption": "TRUE",
+                "scheduling_policy": "Strict-Priority",
+                "priority_q": 1,
+                "weight": 0,
+                "discard_policy": "Tail-Drop",
+                "max_q_size": "auto",
+                "discard_config": {
+                  "min_threshold": 0,
+                  "max_threshold": 0,
+                  "max_probability": 0
+                }
+              }
+            ]
+          }
+{{- end }}
index ce3dda8..950551e 100644 (file)
@@ -38,16 +38,19 @@ topology_template:
         ofId: of:0000000000000001
         routerMac: 00:00:02:01:06:01
 
-    # Setup the OLT switch port
-    port#olt_port:
+    # Setup the OLT switch ports
+{{- range $i, $junk := until (.Values.numOlts|int) }}
+
+    port#olt{{ $i }}_port:
       type: tosca.nodes.SwitchPort
       properties:
-        portId: 2
+        portId: {{ add 2 $i }}
         host_learning: false
       requirements:
         - switch:
             node: switch#leaf_1
             relationship: tosca.relationships.BelongsToOne
+{{- end }}
 
     # Port connected to the BNG
     port#bng_port:
index c806d2c..a0952b1 100644 (file)
@@ -20,6 +20,7 @@ imports:
   - custom_types/bandwidthprofile.yaml
 {{- end }}
 
+{{- $onucount := (.Values.numOnus|int) }}
 description: Pre-provsion a subscriber
 
 topology_template:
@@ -38,16 +39,25 @@ topology_template:
          name: Bronze
 {{- end }}
 
-    # Pre-provision the subscriber the subscriber
-    my_house:
+    # Pre-provision the subscribers
+{{- range $i, $junk := until (.Values.numOlts|int) }}
+{{- range $j, $junk1 := until ($onucount) }}
+    house_{{ $i }}-{{ $j }}:
       type: tosca.nodes.RCORDSubscriber
       properties:
-        name: QQClient
+        name: QQClient{{ $i }}-{{ $j }}
         status: pre-provisioned
-        c_tag: 111
-        s_tag: 222
+        c_tag: {{ add 111 $j }}
+        s_tag: {{ add 222 $i }}
+  {{- if $.Values.bandwidthProfiles }}
+        tech_profile_id: 64
+  {{- end }}
+  {{- if $.Values.legacyPonsim }}
         onu_device: PSMO12345678
-{{- if .Values.bandwidthProfiles }}
+  {{- else }}
+        onu_device: PSMO{{ printf "%04d%04d" $i $j }}
+  {{- end }}
+  {{- if $.Values.bandwidthProfiles }}
       requirements:
         - upstream_bps:
             node: bronze_bp
@@ -55,4 +65,6 @@ topology_template:
         - downstream_bps:
             node: bronze_bp
             relationship: tosca.relationships.BelongsToOne
-{{- end }}
\ No newline at end of file
+  {{- end }}
+{{- end }}
+{{- end }}
index 1af0eb2..6dd34a2 100644 (file)
@@ -22,6 +22,7 @@ imports:
   - custom_types/attworkflowdriverwhitelistentry.yaml
   - custom_types/attworkflowdriverservice.yaml
 description: Create an instance of the OSS Service and connect it to the vOLT Service
+
 topology_template:
   node_templates:
 
@@ -31,13 +32,23 @@ topology_template:
         name: att-workflow-driver
         must-exist: true
 
-    whitelist:
+{{- $onucount := (.Values.numOnus|int) }}
+{{- range $i, $junk := until (.Values.numOlts|int) }}
+{{- range $j, $junk1 := until ($onucount) }}
+    whitelist{{ $i }}-{{ $j }}:
       type: tosca.nodes.AttWorkflowDriverWhiteListEntry
       properties:
+{{- if $.Values.legacyPonsim }}
         serial_number: PSMO12345678
         device_id: of:0000aabbccddeeff
+{{- else }}
+        serial_number: PSMO{{ printf "%04d%04d" $i $j }}
+        device_id: {{ index $.Values.oltDpids $i }}
+{{- end }}
         pon_port_id: 1
       requirements:
         - owner:
             node: service#att
             relationship: tosca.relationships.BelongsToOne
+{{- end }}
+{{- end }}
index 5cd5f22..2e0940e 100644 (file)
@@ -22,10 +22,11 @@ replicaCount: 1
 nameOverride: ""
 fullnameOverride: ""
 
-image:
-  repository: 'xosproject/tosca-loader'
-  tag: '{{ .Chart.AppVersion }}'
-  pullPolicy: 'Always'
+images:
+  tosca_loader:
+    repository: 'xosproject/tosca-loader'
+    tag: '{{ .Chart.AppVersion }}'
+    pullPolicy: 'Always'
 
 global:
   registry: ''
@@ -36,4 +37,21 @@ xosAdminPassword: "letmein"
 # Supported workflows: att-workflow (AT&T) or tt-workflow (Turk Telekom)
 workflow: att-workflow
 
-bandwidthProfiles: True
+bandwidthProfiles: False
+
+# numOlts > 1 only works with voltha-1.7 or greater
+numOlts: 1
+numOnus: 1
+# legacyPonsim == true means that we are using voltha-1.6
+legacyPonsim: true
+
+# For legaacyPonsim == false:
+# List of olt dpids that are generated by Ponsim adapter
+# Entry N is generated for oltN.voltha.svc
+# Generate the last 12 characters as follows:
+# $ echo -ne olt0.voltha.svc:50060 | md5sum | cut -c -12
+oltDpids:
+  - of:0000d0d3e158fede
+  - of:00000da7f2c143c7
+  - of:000032be2d4c2abc
+  - of:0000ae9b8dcd58c7
index 5bb81ee..fb62672 100644 (file)
@@ -16,7 +16,7 @@
 name: rcord-lite
 description: A Helm chart for XOS's "rcord-lite" profile
 icon: https://guide.opencord.org/logos/cord.svg
-version: 1.1.0
+version: 1.1.3
 
 # xosproject/tosca-loader version
 appVersion: 1.3.0
index a63d5c3..05303e0 100644 (file)
@@ -24,7 +24,7 @@ dependencies:
   version: 2.2.0
   repository: file://../../xos-services/fabric
 - name: volt
-  version: 2.2.0
+  version: 2.2.3
   repository: file://../../xos-services/volt
 - name: vsg-hw
   version: 1.1.0
index eed0129..c450f1b 100644 (file)
@@ -17,7 +17,7 @@ apiVersion: v1
 name: seba-services
 description: A Helm chart for XOS's "SEBA" profile
 icon: https://guide.opencord.org/logos/cord.svg
-version: 1.2.1
+version: 1.2.5
 
 # xosproject/tosca-loader version
-appVersion: 1.3.0
+appVersion: 1.3.1
diff --git a/helm-charts/xos-profiles/seba-services/charts/fabric-2.2.0.tgz b/helm-charts/xos-profiles/seba-services/charts/fabric-2.2.0.tgz
new file mode 100644 (file)
index 0000000..b292b66
Binary files /dev/null and b/helm-charts/xos-profiles/seba-services/charts/fabric-2.2.0.tgz differ
diff --git a/helm-charts/xos-profiles/seba-services/charts/fabric-crossconnect-1.2.0.tgz b/helm-charts/xos-profiles/seba-services/charts/fabric-crossconnect-1.2.0.tgz
new file mode 100644 (file)
index 0000000..52bae6f
Binary files /dev/null and b/helm-charts/xos-profiles/seba-services/charts/fabric-crossconnect-1.2.0.tgz differ
diff --git a/helm-charts/xos-profiles/seba-services/charts/onos-service-2.1.0.tgz b/helm-charts/xos-profiles/seba-services/charts/onos-service-2.1.0.tgz
new file mode 100644 (file)
index 0000000..d3fb38f
Binary files /dev/null and b/helm-charts/xos-profiles/seba-services/charts/onos-service-2.1.0.tgz differ
diff --git a/helm-charts/xos-profiles/seba-services/charts/rcord-1.0.14.tgz b/helm-charts/xos-profiles/seba-services/charts/rcord-1.0.14.tgz
new file mode 100644 (file)
index 0000000..a8b6fd5
Binary files /dev/null and b/helm-charts/xos-profiles/seba-services/charts/rcord-1.0.14.tgz differ
diff --git a/helm-charts/xos-profiles/seba-services/charts/sadis-server-1.0.2.tgz b/helm-charts/xos-profiles/seba-services/charts/sadis-server-1.0.2.tgz
new file mode 100644 (file)
index 0000000..c665045
Binary files /dev/null and b/helm-charts/xos-profiles/seba-services/charts/sadis-server-1.0.2.tgz differ
diff --git a/helm-charts/xos-profiles/seba-services/charts/volt-2.2.3.tgz b/helm-charts/xos-profiles/seba-services/charts/volt-2.2.3.tgz
new file mode 100644 (file)
index 0000000..6bfddf5
Binary files /dev/null and b/helm-charts/xos-profiles/seba-services/charts/volt-2.2.3.tgz differ
diff --git a/helm-charts/xos-profiles/seba-services/requirements.lock b/helm-charts/xos-profiles/seba-services/requirements.lock
new file mode 100644 (file)
index 0000000..066c343
--- /dev/null
@@ -0,0 +1,21 @@
+dependencies:
+- name: rcord
+  repository: file://../../xos-services/rcord
+  version: 1.0.14
+- name: onos-service
+  repository: file://../../xos-services/onos-service
+  version: 2.1.0
+- name: fabric
+  repository: file://../../xos-services/fabric
+  version: 2.2.0
+- name: volt
+  repository: file://../../xos-services/volt
+  version: 2.2.3
+- name: fabric-crossconnect
+  repository: file://../../xos-services/fabric-crossconnect
+  version: 1.2.0
+- name: sadis-server
+  repository: file://../../sadis-server
+  version: 1.0.2
+digest: sha256:7f837fe9ef3d277d7808a6089c9f9f3e19a7295b4df6ecb94b838baf430127e7
+generated: "2019-06-26T02:33:48.808746492Z"
index fbe7ee6..ce9746f 100644 (file)
@@ -26,7 +26,7 @@ dependencies:
   repository: file://../../xos-services/fabric
   condition: fabric.enabled
 - name: volt
-  version: 2.2.0
+  version: 2.2.3
   repository: file://../../xos-services/volt
 - name: fabric-crossconnect
   version: 1.2.0
index 712f176..26c4517 100644 (file)
@@ -325,10 +325,10 @@ topology_template:
         connect_method: none
       requirements:
         - subscriber_service:
-            node: service#onos
+            node: service#volt
             relationship: tosca.relationships.BelongsToOne
         - provider_service:
-            node: service#volt
+            node: service#onos
             relationship: tosca.relationships.BelongsToOne
 
     service_dependency#volt_fabric-crossconnect:
index 6708cf2..79e5580 100644 (file)
@@ -17,5 +17,5 @@ name: kubernetes
 description: A Helm chart for XOS's "kubernetes" service
 icon: https://guide.opencord.org/logos/cord.svg
 
-version: 1.2.0
-appVersion: 1.2.1
+version: 1.0.3
+appVersion: 1.3.0
index 98ee611..7bd490c 100644 (file)
@@ -44,6 +44,7 @@ Create chart name and version as used by the chart label.
 
 {{- define "kubernetes.serviceConfig" -}}
 name: kubernetes
+kafka_bootstrap_servers: [{{ .Values.kafkaService | quote }}]
 accessor:
   username: {{ .Values.xosAdminUser | quote }}
   password: {{ .Values.xosAdminPassword | quote }}
index d78909c..01eff1b 100644 (file)
@@ -17,5 +17,5 @@ name: volt
 description: A Helm chart for XOS's "olt-service" service
 icon: https://guide.opencord.org/logos/cord.svg
 
-version: 2.2.0
-appVersion: 2.2.1
+version: 2.2.3
+appVersion: 2.2.3
index 9666e06..aede15f 100644 (file)
@@ -29,8 +29,4 @@ topology_template:
         kind: data
         voltha_url: {{ .volthaRestService | quote }}
         voltha_port: 8882
-        onos_voltha_url: {{ .onosRestService | quote }}
-        onos_voltha_port: 8181
-        onos_voltha_user: karaf
-        onos_voltha_pass: karaf
 {{- end -}}
index c91144c..69471ba 100644 (file)
@@ -35,7 +35,6 @@ xosAdminPassword: "letmein"
 xosCoreService: "xos-core:50051"
 
 volthaRestService: "voltha.voltha.svc.cluster.local"
-onosRestService: "onos-ui.default.svc.cluster.local"
 kafkaService: "cord-kafka"
 
 resources: {}