blob: be4adf4bcd5aa8ed64562675cce4af491bb93c36 [file] [log] [blame]
Alexander Dehn9b797d62020-04-21 09:53:50 +00001# Copyright © 2020 Samsung Electronics, highstreet technologies GmbH
vaibhav_16dece04b2fe2018-03-22 09:07:12 +00002# Copyright © 2017 Amdocs, Bell Canada
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
jmac065e2ce2018-03-29 01:18:02 +000016#################################################################
17# Global configuration defaults.
18#################################################################
19global:
20 nodePortPrefix: 302
jmac0e4f7172018-09-07 18:06:43 +000021 nodePortPrefixExt: 304
jmac065e2ce2018-03-29 01:18:02 +000022 repository: nexus3.onap.org:10001
Sylvain Desbureaux1694e1d2020-08-21 09:58:25 +020023 readinessImage: onap/oom/readiness:3.0.1
jmac065e2ce2018-03-29 01:18:02 +000024 loggingRepository: docker.elastic.co
25 loggingImage: beats/filebeat:5.5.0
26 persistence:
27 mountPath: /dockerdata-nfs
Agarwal, Ruchira (ra1926)ec7c75e2019-10-01 17:36:24 +000028 aafEnabled: true
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +010029 # envsusbt
30 envsubstImage: dibi/envsubst
31 mariadbGalera:
32 #This flag allows SO to instantiate its own mariadb-galera cluster
33 #If shared instance is used, this chart assumes that DB already exists
34 localCluster: false
35 service: mariadb-galera
36 internalPort: 3306
37 nameOverride: mariadb-galera
38
39#################################################################
40# Secrets metaconfig
41#################################################################
42secrets:
43 - uid: db-root-password
44 name: '{{ include "common.release" . }}-sdnc-db-root-password'
45 type: password
Krzysztof Opasiakab7a6bb2020-03-24 03:30:51 +010046 externalSecret: '{{ .Values.global.mariadbGalera.localCluster |
47 ternary (default (include "common.mariadb.secret.rootPassSecretName"
48 (dict "dot" . "chartName"
49 (index .Values "mariadb-galera" "nameOverride")))
50 (index .Values "mariadb-galera" "config"
51 "mariadbRootPasswordExternalSecret"))
52 (include "common.mariadb.secret.rootPassSecretName"
53 (dict "dot" . "chartName" .Values.global.mariadbGalera.nameOverride)) }}'
54 password: '{{ (index .Values "mariadb-galera" "config" "mariadbRootPassword") }}'
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +010055 - uid: db-secret
56 name: &dbSecretName '{{ include "common.release" . }}-sdnc-db-secret'
57 type: basicAuth
58 # This is a nasty trick that allows you override this secret using external one
59 # with the same field that is used to pass this to subchart
60 externalSecret: '{{ ternary "" (tpl (default "" (index .Values "mariadb-galera" "config" "userCredentialsExternalSecret")) .) (hasSuffix "sdnc-db-secret" (index .Values "mariadb-galera" "config" "userCredentialsExternalSecret"))}}'
61 login: '{{ index .Values "mariadb-galera" "config" "userName" }}'
62 password: '{{ index .Values "mariadb-galera" "config" "userPassword" }}'
63 - uid: odl-creds
64 name: &odlCredsSecretName '{{ include "common.release" . }}-sdnc-odl-creds'
65 type: basicAuth
66 externalSecret: '{{ .Values.config.odlCredsExternalSecret }}'
67 login: '{{ .Values.config.odlUser }}'
68 password: '{{ .Values.config.odlPassword }}'
69 # For now this is left hardcoded but should be revisited in a future
70 passwordPolicy: required
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +010071 - uid: netbox-apikey
72 type: password
73 externalSecret: '{{ .Values.config.netboxApikeyExternalSecret }}'
74 password: '{{ .Values.config.netboxApikey }}'
75 passwordPolicy: required
76 - uid: aai-user-creds
77 type: basicAuth
78 externalSecret: '{{ .Values.config.aaiCredsExternalSecret}}'
79 login: '{{ .Values.config.aaiUser }}'
80 password: '{{ .Values.config.aaiPassword }}'
81 passwordPolicy: required
82 - uid: modeling-user-creds
83 type: basicAuth
84 externalSecret: '{{ .Values.config.modelingCredsExternalSecret}}'
85 login: '{{ .Values.config.modelingUser }}'
86 password: '{{ .Values.config.modelingPassword }}'
87 passwordPolicy: required
88 - uid: restconf-creds
89 type: basicAuth
90 externalSecret: '{{ .Values.config.restconfCredsExternalSecret}}'
91 login: '{{ .Values.config.restconfUser }}'
92 password: '{{ .Values.config.restconfPassword }}'
93 passwordPolicy: required
94 - uid: ansible-creds
95 name: &ansibleSecretName '{{ include "common.release" . }}-sdnc-ansible-creds'
96 type: basicAuth
97 externalSecret: '{{ .Values.config.ansibleCredsExternalSecret}}'
98 login: '{{ .Values.config.ansibleUser }}'
99 password: '{{ .Values.config.ansiblePassword }}'
100 passwordPolicy: required
101 - uid: scaleout-creds
102 type: basicAuth
103 externalSecret: '{{ .Values.config.scaleoutCredsExternalSecret}}'
104 login: '{{ .Values.config.scaleoutUser }}'
105 password: '{{ .Values.config.scaleoutPassword }}'
106 passwordPolicy: required
jmac065e2ce2018-03-29 01:18:02 +0000107#################################################################
108# Application configuration defaults.
109#################################################################
110# application images
111repository: nexus3.onap.org:10001
112pullPolicy: Always
Dan Timoneydfe1ee02020-07-07 09:26:39 -0400113image: onap/sdnc-image:1.8.4
Alexander Dehn1373c9c2020-09-02 09:01:15 +0000114busyboxRepository: docker.io
115busyboxImage: busybox:1.30
Timoney, Dan (dt5972)a3bc1a52019-06-26 16:16:52 -0400116
jmac065e2ce2018-03-29 01:18:02 +0000117# flag to enable debugging - application support required
118debugEnabled: false
119
120# application configuration
BorislavG5f3b6192018-03-25 18:12:38 +0300121config:
Timoney, Dan (dt5972)ba4d2eb2019-05-07 13:32:42 -0400122 odlUid: 100
123 odlGid: 101
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100124 odlUser: admin
jmaca68f4cb2018-05-10 22:44:19 +0000125 odlPassword: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100126 # odlCredsExternalSecret: some secret
127 netboxApikey: onceuponatimeiplayedwithnetbox20180814
128 # netboxApikeyExternalSecret: some secret
129 aaiUser: sdnc@sdnc.onap.org
130 aaiPassword: demo123456!
131 # aaiCredsExternalSecret: some secret
132 modelingUser: ccsdkapps
133 modelingPassword: ccsdkapps
134 # modelingCredsExternalSecret: some secret
135 restconfUser: admin
136 restconfPassword: admin
137 # restconfCredsExternalSecret: some secret
138 scaleoutUser: admin
139 scaleoutPassword: admin
140 # scaleoutExternalSecret: some secret
141 ansibleUser: sdnc
142 ansiblePassword: sdnc
143 # ansibleCredsExternalSecret: some secret
144 dbSdnctlDatabase: &sdncDbName sdnctl
jmac065e2ce2018-03-29 01:18:02 +0000145 enableClustering: true
Timoney, Dan (dt5972)a3bc1a52019-06-26 16:16:52 -0400146 sdncHome: /opt/onap/sdnc
jmaca68f4cb2018-05-10 22:44:19 +0000147 binDir: /opt/onap/sdnc/bin
Timoney, Dan (dt5972)a3bc1a52019-06-26 16:16:52 -0400148 etcDir: /opt/onap/sdnc/data
Trevor Tait567ff1e2018-05-01 16:20:54 -0400149 geoEnabled: false
Neha Jain7b0d6c62018-05-17 14:34:49 -0400150# if geoEnabled is set to true here, mysql.geoEnabled must be set to true
Trevor Tait567ff1e2018-05-01 16:20:54 -0400151# if geoEnabled is set to true the following 3 values must be set to their proper values
152 myODLCluster: 127.0.0.1
153 peerODLCluster: 127.0.0.1
Mohammadreza Pasandidehb642ee52018-06-19 15:19:53 -0400154 isPrimaryCluster: true
jmac065e2ce2018-03-29 01:18:02 +0000155 configDir: /opt/onap/sdnc/data/properties
Konrad Bańka5ea1db32020-04-06 14:32:46 +0200156 ccsdkConfigDir: /opt/onap/ccsdk/data/properties
jmac065e2ce2018-03-29 01:18:02 +0000157 dmaapTopic: SUCCESS
jmaca68f4cb2018-05-10 22:44:19 +0000158 dmaapPort: 3904
BorislavG5f3b6192018-03-25 18:12:38 +0300159 logstashServiceName: log-ls
160 logstashPort: 5044
jmac7c434672018-05-11 20:14:17 +0000161 ansibleServiceName: sdnc-ansible-server
162 ansiblePort: 8000
Timoney, Dan (dt5972)6819bc92019-02-12 13:30:49 -0500163 javaHome: /usr/lib/jvm/java-1.8-openjdk
jmac7c434672018-05-11 20:14:17 +0000164
Timoney, Dan (dt5972)58774772019-08-21 16:50:54 -0400165 odl:
166 etcDir: /opt/opendaylight/etc
167 binDir: /opt/opendaylight/bin
168 salConfigDir: /opt/opendaylight/system/org/opendaylight/controller/sal-clustering-config
Alexander Dehn9b797d62020-04-21 09:53:50 +0000169 salConfigVersion: 1.9.1
Timoney, Dan (dt5972)58774772019-08-21 16:50:54 -0400170 akka:
171 seedNodeTimeout: 15s
172 circuitBreaker:
173 maxFailures: 10
174 callTimeout: 90s
175 resetTimeout: 30s
176 recoveryEventTimeout: 90s
177 datastore:
178 persistentActorRestartMinBackoffInSeconds: 10
179 persistentActorRestartMaxBackoffInSeconds: 40
180 persistentActorRestartResetBackoffInSeconds: 20
181 shardTransactionCommitTimeoutInSeconds: 120
182 shardIsolatedLeaderCheckIntervalInMillis: 30000
183 operationTimeoutInSeconds: 120
184 javaOptions:
185 maxGCPauseMillis: 100
186 parallelGCThreads : 3
187 numberGGLogFiles: 10
Alexander Dehn9b797d62020-04-21 09:53:50 +0000188 # enables sdnr functionality
189 sdnr:
190 enabled: true
191 # mode: web - SDNC contains device manager only plus dedicated webserver service for ODLUX (default),
192 # mode: dm - SDNC contains sdnr device manager + ODLUX components
193 mode: dm
194 # sdnronly: true starts sdnc container with odl and sdnrwt features only
195 sdnronly: false
196 sdnrdbTrustAllCerts: true
197 mountpointRegistrarEnabled: false
198 mountpointStateProviderEnabled: false
199
200
Timoney, Dan (dt5972)58774772019-08-21 16:50:54 -0400201
jmac065e2ce2018-03-29 01:18:02 +0000202# dependency / sub-chart configuration
Krzysztof Opasiak8ab45472020-05-12 12:53:50 +0200203certInitializer:
204 nameOverride: sdnc-cert-initializer
Jozsef Csongvai9d4d5af2020-07-13 11:10:25 -0400205 truststoreMountpath: /opt/onap/sdnc/data/stores
Krzysztof Opasiak6bab0cc2020-04-29 00:55:47 +0200206 fqdn: "sdnc"
207 app_ns: "org.osaaf.aaf"
208 fqi: "sdnc@sdnc.onap.org"
209 fqi_namespace: org.onap.sdnc
210 public_fqdn: "sdnc.onap.org"
211 aafDeployFqi: "deployer@people.osaaf.org"
212 aafDeployPass: demo123456!
213 cadi_latitude: "38.0"
214 cadi_longitude: "-72.0"
Krzysztof Opasiak6bab0cc2020-04-29 00:55:47 +0200215 credsPath: /opt/app/osaaf/local
Krzysztof Opasiak8ab45472020-05-12 12:53:50 +0200216 aaf_add_config: >
217 cd /opt/app/osaaf/local;
218 /opt/app/aaf_config/bin/agent.sh local showpass {{.Values.fqi}} {{ .Values.fqdn }} | grep cadi_keystore_password= | cut -d= -f 2 > {{ .Values.credsPath }}/.pass 2>&1
Agarwal, Ruchira (ra1926)ec7c75e2019-10-01 17:36:24 +0000219
Alexander Dehn9b797d62020-04-21 09:53:50 +0000220# dependency / sub-chart configuration
221network-name-gen:
222 enabled: true
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100223mariadb-galera: &mariadbGalera
jmac065e2ce2018-03-29 01:18:02 +0000224 nameOverride: sdnc-db
Konrad Bańkaa9d44032020-03-19 18:31:34 +0100225 config: &mariadbGaleraConfig
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100226 rootPasswordExternalSecret: '{{ ternary (include "common.release" .)-sdnc-db-root-password "" .Values.global.mariadbGalera.localCluster }}'
227 userName: sdnctl
228 userCredentialsExternalSecret: *dbSecretName
jmac065e2ce2018-03-29 01:18:02 +0000229 service:
230 name: sdnc-dbhost
jmacbc92d132018-04-07 03:46:12 +0000231 internalPort: 3306
jmac065e2ce2018-03-29 01:18:02 +0000232 sdnctlPrefix: sdnc
233 persistence:
Mahendra Raghuwanshib76cb282019-04-09 10:13:07 +0000234 mountSubPath: sdnc/mariadb-galera
jmac065e2ce2018-03-29 01:18:02 +0000235 enabled: true
jmac065e2ce2018-03-29 01:18:02 +0000236 replicaCount: 1
237
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100238cds:
239 enabled: false
240
241dmaap-listener:
Alexander Dehn9b797d62020-04-21 09:53:50 +0000242 enabled: true
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100243 nameOverride: sdnc-dmaap-listener
244 mariadb-galera:
Konrad Bańkaa9d44032020-03-19 18:31:34 +0100245 <<: *mariadbGalera
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100246 config:
Konrad Bańkaa9d44032020-03-19 18:31:34 +0100247 <<: *mariadbGaleraConfig
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100248 mysqlDatabase: *sdncDbName
249 config:
250 sdncChartName: sdnc
251 dmaapPort: 3904
252 sdncPort: 8282
253 configDir: /opt/onap/sdnc/data/properties
254 odlCredsExternalSecret: *odlCredsSecretName
255
256ueb-listener:
Alexander Dehn9b797d62020-04-21 09:53:50 +0000257 enabled: true
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100258 mariadb-galera:
Konrad Bańkaa9d44032020-03-19 18:31:34 +0100259 <<: *mariadbGalera
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100260 config:
Konrad Bańkaa9d44032020-03-19 18:31:34 +0100261 <<: *mariadbGaleraConfig
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100262 mysqlDatabase: *sdncDbName
263 nameOverride: sdnc-ueb-listener
264 config:
265 sdncPort: 8282
266 sdncChartName: sdnc
267 configDir: /opt/onap/sdnc/data/properties
268 odlCredsExternalSecret: *odlCredsSecretName
269
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100270sdnc-ansible-server:
Alexander Dehn9b797d62020-04-21 09:53:50 +0000271 enabled: true
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100272 config:
273 restCredsExternalSecret: *ansibleSecretName
274 mariadb-galera:
Konrad Bańkaa9d44032020-03-19 18:31:34 +0100275 <<: *mariadbGalera
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100276 config:
Konrad Bańkaa9d44032020-03-19 18:31:34 +0100277 <<: *mariadbGaleraConfig
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100278 mysqlDatabase: ansible
279 service:
280 name: sdnc-ansible-server
281 internalPort: 8000
282
jmac065e2ce2018-03-29 01:18:02 +0000283dgbuilder:
Alexander Dehn9b797d62020-04-21 09:53:50 +0000284 enabled: true
jmac065e2ce2018-03-29 01:18:02 +0000285 nameOverride: sdnc-dgbuilder
286 config:
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100287 db:
288 dbName: *sdncDbName
289 rootPasswordExternalSecret: '{{ ternary (printf "%s-sdnc-db-root-password" (include "common.release" .)) (include "common.mariadb.secret.rootPassSecretName" (dict "dot" . "chartName" "mariadb-galera")) .Values.global.mariadbGalera.localCluster }}'
290 userCredentialsExternalSecret: *dbSecretName
Mahendra Raghuwanshib76cb282019-04-09 10:13:07 +0000291 dbPodName: mariadb-galera
292 dbServiceName: mariadb-galera
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100293 # This should be revisited and changed to plain text
jmac70863e12018-05-16 14:53:03 +0000294 dgUserPassword: cc03e747a6afbbcbf8be7668acfebee5
Krzysztof Opasiakcc97c732020-02-25 23:31:20 +0100295 mariadb-galera:
jmac065e2ce2018-03-29 01:18:02 +0000296 service:
BorislavG1ffbd992018-04-24 07:56:27 +0000297 name: sdnc-dgbuilder
jmac065e2ce2018-03-29 01:18:02 +0000298 nodePort: "03"
299
Sylvain Desbureauxe54644e2020-05-04 11:45:16 +0200300 ingress:
301 enabled: false
302 service:
303 - baseaddr: "sdnc-dgbuilder"
304 name: "sdnc-dgbuilder"
305 port: 3000
Alexander Dehn9b797d62020-04-21 09:53:50 +0000306 - baseaddr: "sdnc-web-service"
307 name: "sdnc-web-service"
308 port: 8443
Sylvain Desbureauxe54644e2020-05-04 11:45:16 +0200309 config:
310 ssl: "redirect"
311
Alexander Dehn9b797d62020-04-21 09:53:50 +0000312
313
Alexander Dehnab86ec12020-02-05 14:38:54 +0000314# local elasticsearch cluster
315localElasticCluster: true
316elasticsearch:
317 nameOverride: sdnrdb
318 name: sdnrdb-cluster
Krzysztof Opasiakc6152ce2020-05-09 01:43:08 +0200319 certInitializer:
Alexander Dehnab86ec12020-02-05 14:38:54 +0000320 fqdn: "sdnc"
321 fqi_namespace: org.onap.sdnc
322 fqi: "sdnc@sdnc.onap.org"
323 service:
324 name: sdnrdb
Alexander Dehnab86ec12020-02-05 14:38:54 +0000325 master:
326 replicaCount: 3
327 # dedicatednode: "yes"
328 # working as master node only, in this case increase replicaCount for elasticsearch-data
329 # dedicatednode: "no"
330 # handles master and data node functionality
331 dedicatednode: "no"
332 nameOverride: sdnrdb
Alexander Dehn9b797d62020-04-21 09:53:50 +0000333# enable
334sdnc-web:
335 enabled: false
jmac065e2ce2018-03-29 01:18:02 +0000336# default number of instances
337replicaCount: 1
338
339nodeSelector: {}
340
341affinity: {}
342
343# probe configuration parameters
344liveness:
345 initialDelaySeconds: 10
346 periodSeconds: 10
347 # necessary to disable liveness probe when setting breakpoints
348 # in debugger so K8s doesn't restart unresponsive container
349 enabled: true
350
351readiness:
352 initialDelaySeconds: 10
353 periodSeconds: 10
354
355service:
356 type: NodePort
357 name: sdnc
BorislavG1ffbd992018-04-24 07:56:27 +0000358 portName: sdnc
jmac065e2ce2018-03-29 01:18:02 +0000359 internalPort: 8181
360 internalPort2: 8101
361 internalPort3: 8080
Timoney, Dan (dt5972)c6de2692019-08-14 14:22:37 -0400362 internalPort4: 8443
Mohammadreza Pasandidehb756fb72018-04-03 10:06:45 -0400363
jmac065e2ce2018-03-29 01:18:02 +0000364 #port
365 externalPort: 8282
jmac065e2ce2018-03-29 01:18:02 +0000366
367 externalPort2: 8202
jmac065e2ce2018-03-29 01:18:02 +0000368
369 externalPort3: 8280
jmac065e2ce2018-03-29 01:18:02 +0000370
jmaca68f4cb2018-05-10 22:44:19 +0000371 externalPort4: 8443
372 nodePort4: 67
373
jmac065e2ce2018-03-29 01:18:02 +0000374 clusterPort: 2550
Mohammadreza Pasandidehb756fb72018-04-03 10:06:45 -0400375 clusterPort2: 2650
376 clusterPort3: 2681
377
378 geoNodePort1: 61
379 geoNodePort2: 62
380 geoNodePort3: 63
381 geoNodePort4: 64
382 geoNodePort5: 65
383 geoNodePort6: 66
jmac065e2ce2018-03-29 01:18:02 +0000384
jmac8d6dc962018-04-26 14:26:55 +0000385## Persist data to a persitent volume
386persistence:
387 enabled: true
388
389 ## A manually managed Persistent Volume and Claim
390 ## Requires persistence.enabled: true
391 ## If defined, PVC must be created manually before volume will be bound
392 # existingClaim:
393 volumeReclaimPolicy: Retain
394
395 ## database data Persistent Volume Storage Class
396 ## If defined, storageClassName: <storageClass>
397 ## If set to "-", storageClassName: "", which disables dynamic provisioning
398 ## If undefined (the default) or set to null, no storageClassName spec is
399 ## set, choosing the default provisioner. (gp2 on AWS, standard on
400 ## GKE, AWS & OpenStack)
401 accessMode: ReadWriteOnce
402 size: 1Gi
403 mountPath: /dockerdata-nfs
404 mountSubPath: sdnc/mdsal
405 mdsalPath: /opt/opendaylight/current/daexim
406
jmac065e2ce2018-03-29 01:18:02 +0000407ingress:
408 enabled: false
Lucjan Bryndza08448402019-11-27 14:26:54 +0100409 service:
Lucjan Bryndza05649652020-04-29 08:52:33 +0000410 - baseaddr: "sdnc.api"
Lucjan Bryndza08448402019-11-27 14:26:54 +0100411 name: "sdnc"
412 port: 8443
413 config:
414 ssl: "redirect"
jmac065e2ce2018-03-29 01:18:02 +0000415
toshrajbhardwaj72b5f0f2018-09-13 02:45:22 +0000416#Resource Limit flavor -By Default using small
417flavor: small
418#segregation for different envionment (Small and Large)
419
420resources:
Mandeep Khindade045712018-09-19 18:11:57 +0000421 small:
422 limits:
423 cpu: 2
424 memory: 4Gi
425 requests:
Mandeep Khinda3c134252018-09-19 23:56:37 +0000426 cpu: 1
427 memory: 2Gi
Mandeep Khindade045712018-09-19 18:11:57 +0000428 large:
429 limits:
430 cpu: 4
431 memory: 8Gi
432 requests:
Mandeep Khinda3c134252018-09-19 23:56:37 +0000433 cpu: 2
434 memory: 4Gi
Mandeep Khinda60d36d42018-09-24 15:15:48 +0000435 unlimited: {}