--- /dev/null
+---
+nodeSelector:
+ kubernetes.io/hostname: eepks-n1
tag: 'master'
# ONOS
onos:
- repository: 'matteoscandolo/onos'
tag: '1.13.9-rc4'
# VOLTHA
vcore:
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:
# 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"
--- /dev/null
+---
+# 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"
--- /dev/null
+# 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
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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;
+ }
+ }
+ }
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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"
appVersion: "1.0"
description: The prerequisite setup of M-CORD
name: mcord-setup
-version: 0.1.0
+version: 0.1.1
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
"resourceName": {{ .Values.sriov.name | quote }},
"rootDevices": [{{ .Values.sriov.devicepci | quote }}],
"sriovMode": true,
- "deviceType": "vfio"
+ "deviceType": {{ .Values.sriov.devicetype | quote }}
}
]
}
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
--- /dev/null
+# 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/
--- /dev/null
+---
+# 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
--- /dev/null
+{\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
--- /dev/null
+##################### 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
+
--- /dev/null
+# 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"
+
--- /dev/null
+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 }}
--- /dev/null
+---
+# 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 }}
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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 }}
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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
--- /dev/null
+---
+# 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
appVersion: "1.0"
description: A Helm chart for Mininet
name: mininet
-version: 0.3.0
+version: 0.5.1
{{- 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 -}}
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 }}
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 )
- 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
name: nem-monitoring
description: Time Series Storage and Dashboard for SEBA
-version: 1.0.1
+version: 1.0.2
--- /dev/null
+{
+ "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
+}
--- /dev/null
+---
+# 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 }}
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
# limitations under the License.
name: ponnet
-version: 1.0.0
+version: 1.2.1
"type": "genie",
"log_level": "info",
"datastore_type": "kubernetes",
- "default_plugin": "calico",
+ "default_plugin": "nsx",
"hostname": "__KUBERNETES_NODE_NAME__",
"policy": {
"type": "k8s",
--- /dev/null
+---
+# 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
+
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
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
# 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:
ports:
- containerPort: 50060
name: grpc-port
+{{- end }}
# 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:
- 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:
- "-device_type"
- "ONU"
- "-parent_addr"
- - "olt"
+ - "olt{{ $i }}"
- "-grpc_port"
- "50061"
- "-internal_if"
- "-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 }}
# 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:
- 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:
command: [ "/bin/bash", "-c", "trap : TERM INT; sleep infinity & wait" ]
securityContext:
privileged: true
+{{- end }}
+{{- end }}
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
--- /dev/null
+dependencies:
+- name: etcd-cluster
+ repository: file://../etcd-cluster
+ version: 0.1.2
+digest: sha256:12a9327fed6331bf8815ea3ade724dd2c5ca6b404f0f0b6302decd56574748f9
+generated: "2019-06-19T06:01:03.774445535Z"
labels:
app: alarm-generator
annotations:
- cni: "calico"
+ cni: "nsx"
spec:
serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
containers:
labels:
app: freeradius
annotations:
- cni: "calico"
+ cni: "nsx"
spec:
serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
containers:
labels:
app: netconf
annotations:
- cni: "calico"
+ cni: "nsx"
spec:
serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
terminationGracePeriodSeconds: 10
labels:
app: ofagent
annotations:
- cni: "calico"
+ cni: "nsx"
spec:
serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
terminationGracePeriodSeconds: 10
labels:
app: vcli
annotations:
- cni: "calico"
+ cni: "nsx"
spec:
serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
containers:
labels:
app: vcore
annotations:
- cni: "calico"
+ cni: "nsx"
spec:
terminationGracePeriodSeconds: 0
serviceAccountName: {{ .Values.global.namespace }}-serviceaccount
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
--- /dev/null
+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"
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
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
--- /dev/null
+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"
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=
-
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
--- /dev/null
+dependencies:
+- name: kubernetes
+ repository: file://../../xos-services/kubernetes
+ version: 1.0.3
+digest: sha256:807f29b8cc3584e7fa2679b201a8152644239523d99c17ad038cedd7de4354fe
+generated: "2019-06-26T02:34:06.586945525Z"
dependencies:
- name: kubernetes
- version: 1.2.0
+ version: 1.0.3
repository: file://../../xos-services/kubernetes
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
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 }}
- 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:
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 }}
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:
- custom_types/bandwidthprofile.yaml
{{- end }}
+{{- $onucount := (.Values.numOnus|int) }}
description: Pre-provsion a subscriber
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
- downstream_bps:
node: bronze_bp
relationship: tosca.relationships.BelongsToOne
-{{- end }}
\ No newline at end of file
+ {{- end }}
+{{- end }}
+{{- end }}
- 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:
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 }}
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: ''
# 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
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
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
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
--- /dev/null
+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"
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
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:
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
{{- define "kubernetes.serviceConfig" -}}
name: kubernetes
+kafka_bootstrap_servers: [{{ .Values.kafkaService | quote }}]
accessor:
username: {{ .Values.xosAdminUser | quote }}
password: {{ .Values.xosAdminPassword | quote }}
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
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 -}}
xosCoreService: "xos-core:50051"
volthaRestService: "voltha.voltha.svc.cluster.local"
-onosRestService: "onos-ui.default.svc.cluster.local"
kafkaService: "cord-kafka"
resources: {}