blob: 30998d17060a5e2d34f770200a20b8dc4d5b210e [file] [log] [blame]
Matteo Scandolo51b76302020-02-05 12:07:23 -08001/* voltha-scale-measurements pipeline */
2pipeline {
Matteo Scandolo51b76302020-02-05 12:07:23 -08003 /* no label, executor is determined by JJB */
4 agent {
5 label "${params.buildNode}"
6 }
Shrey Baid00ff5c42020-02-07 15:14:08 -08007 environment {
Shrey Baidb001c712020-02-11 11:12:46 -08008 SSHPASS="karaf"
Shrey Baid00ff5c42020-02-07 15:14:08 -08009 }
Matteo Scandolo51b76302020-02-05 12:07:23 -080010 stages {
Matteo Scandolod1a15082020-04-22 10:57:49 -070011 stage('Set build description') {
Shrey Baide7614d02020-02-25 10:26:42 -080012 steps {
13 script {
Shrey Baid943e2072020-03-04 10:31:32 -080014 currentBuild.description = "$BUILD_TIMESTAMP"
Shrey Baide7614d02020-02-25 10:26:42 -080015 }
16 }
17 }
Matteo Scandolod1a15082020-04-22 10:57:49 -070018 stage('Cleanup') {
Matteo Scandolo51b76302020-02-05 12:07:23 -080019 steps {
Shrey Baidb0447182020-02-27 16:39:35 -080020 sh '''
Matteo Scandolod1a15082020-04-22 10:57:49 -070021 rm -rf *.txt
Matteo Scandolodd5bbe92020-03-27 11:43:08 -070022 for hchart in \$(helm list -q | grep -E -v 'docker-registry|kafkacat|etcd-operator');
Matteo Scandolo151e35c2020-02-28 15:45:15 -080023 do
24 echo "Purging chart: \${hchart}"
25 helm delete --purge "\${hchart}"
26 done
Shrey Baidb0447182020-02-27 16:39:35 -080027 bash /home/cord/voltha-scale/wait_for_pods.sh
28 bash /home/cord/voltha-scale/stop_port_forward.sh
29 '''
Matteo Scandolo51b76302020-02-05 12:07:23 -080030 }
31 }
Matteo Scandolod1a15082020-04-22 10:57:49 -070032 stage('Start') {
Matteo Scandolo51b76302020-02-05 12:07:23 -080033 steps {
Shrey Baid00ff5c42020-02-07 15:14:08 -080034 sh '''
Matteo Scandolo51b76302020-02-05 12:07:23 -080035 #!/usr/bin/env bash
36 set -euo pipefail
Shrey Baid00ff5c42020-02-07 15:14:08 -080037 '''
38 }
39 }
Matteo Scandolod1a15082020-04-22 10:57:49 -070040 stage('Deploy voltha') {
Matteo Scandolo2fc1dac2020-03-09 08:39:53 -070041 options {
42 timeout(time:10)
43 }
Shrey Baid00ff5c42020-02-07 15:14:08 -080044 steps {
45 sh '''
Matteo Scandoloa3470b72020-03-17 12:26:47 -070046 helm repo update
Matteo Scandolof87e1da2020-04-16 16:13:31 -070047 helm install -n cord-kafka incubator/kafka -f /home/cord/voltha-scale/voltha-values.yaml --version 0.13.3 --set replicas=${numOfKafka} --set persistence.enabled=false --set zookeeper.replicaCount=${numOfKafka} --set zookeeper.persistence.enabled=false
Matteo Scandoloe1c200f2020-03-24 10:33:58 -070048 helm install -n nem-monitoring cord/nem-monitoring --set kpi_exporter.enabled=false,dashboards.xos=false,dashboards.onos=false,dashboards.aaa=false,dashboards.voltha=false
Shrey Baidb06b55a2020-03-12 15:04:58 -070049
Matteo Scandolof87e1da2020-04-16 16:13:31 -070050 helm install -n radius onf/freeradius ${extraHelmFlags}
51
Matteo Scandolod1a15082020-04-22 10:57:49 -070052 # Multi BBSim sadis server (to be migrated in ONF and included in the helm-chart)
53 # kubectl create -f https://raw.githubusercontent.com/ciena/bbsim-sadis-server/master/bbsim-sadis-server.yaml
54
Matteo Scandolof87e1da2020-04-16 16:13:31 -070055 # NOTE wait for the infrastructure to be running before installing VOLTHA
56 bash /home/cord/voltha-scale/wait_for_pods.sh
57
Matteo Scandoloe69614f2020-03-10 11:35:35 -070058 IFS=: read -r onosRepo onosTag <<< ${onosImg}
59 helm install -n onos onf/onos --set images.onos.repository=${onosRepo} --set images.onos.tag=${onosTag} ${extraHelmFlags}
Shrey Baidb0447182020-02-27 16:39:35 -080060
Matteo Scandoloa2928e72020-03-02 16:38:22 -080061 IFS=: read -r volthaRepo volthaTag <<< ${volthaImg}
Matteo Scandoloe69614f2020-03-10 11:35:35 -070062 IFS=: read -r ofAgentRepo ofAgentTag <<< ${ofAgentImg}
Matteo Scandolofddcb002020-03-24 09:14:57 -070063 helm install -n voltha ${volthaChart} -f /home/cord/voltha-scale/voltha-values.yaml --set defaults.log_level=${logLevel},images.rw_core.repository=${volthaRepo},images.rw_core.tag=${volthaTag},images.ofagent_go.repository=${ofAgentRepo},images.ofagent_go.tag=${ofAgentTag} ${extraHelmFlags}
Matteo Scandoloa2928e72020-03-02 16:38:22 -080064
65 IFS=: read -r openoltAdapterRepo openoltAdapterTag <<< ${openoltAdapterImg}
Matteo Scandolo330f7522020-03-17 17:15:53 -070066 helm install -n openolt ${openoltAdapterChart} -f /home/cord/voltha-scale/voltha-values.yaml --set defaults.log_level=${logLevel},images.adapter_open_olt.repository=${openoltAdapterRepo},images.adapter_open_olt.tag=${openoltAdapterTag} ${extraHelmFlags}
Matteo Scandoloa2928e72020-03-02 16:38:22 -080067
68 IFS=: read -r openonuAdapterRepo openonuAdapterTag <<< ${openonuAdapterImg}
Matteo Scandolo330f7522020-03-17 17:15:53 -070069 helm install -n openonu ${openonuAdapterChart} -f /home/cord/voltha-scale/voltha-values.yaml --set defaults.log_level=${logLevel},images.adapter_open_onu.repository=${openonuAdapterRepo},images.adapter_open_onu.tag=${openonuAdapterTag} ${extraHelmFlags}
Matteo Scandoloa2928e72020-03-02 16:38:22 -080070
71 IFS=: read -r bbsimRepo bbsimTag <<< ${bbsimImg}
Matteo Scandolo7059b082020-03-17 09:05:03 -070072
Matteo Scandolof87e1da2020-04-16 16:13:31 -070073 for i in $(seq 1 $((${numOfBbsim}))); do
74 helm install -n bbsim-$i ${bbsimChart} --set olt_id=$i,enablePerf=true,pon=${ponPorts},onu=${onuPerPon},auth=${bbsimAuth},dhcp=${bbsimDhcp},delay=${BBSIMdelay},images.bbsim.repository=${bbsimRepo},images.bbsim.tag=${bbsimTag} ${extraHelmFlags}
75 done
Shrey Baidb0447182020-02-27 16:39:35 -080076
Shrey Baidb0447182020-02-27 16:39:35 -080077 bash /home/cord/voltha-scale/wait_for_pods.sh
78 bash /home/cord/voltha-scale/start_port_forward.sh
Shrey Baid00ff5c42020-02-07 15:14:08 -080079 '''
80 }
81 }
Matteo Scandolod1a15082020-04-22 10:57:49 -070082 stage('Wait for Adapters to be registered in VOLTHA') {
Matteo Scandolo2fc1dac2020-03-09 08:39:53 -070083 options {
84 timeout(time:5)
85 }
Matteo Scandoloa711ddf2020-03-06 16:41:34 -080086 steps{
87 waitUntil {
88 script {
89 openolt_res = sh returnStdout: true, script: """
90 voltctl adapter list | grep openolt | wc -l
91 """
92
93 openonu_res = sh returnStdout: true, script: """
94 voltctl adapter list | grep brcm_openomci_onu | wc -l
95 """
96
Matteo Scandolo89f1cea2020-04-10 10:20:20 -070097 return openolt_res.toInteger() >= 1 && openonu_res.toInteger() >= 1
Matteo Scandoloa711ddf2020-03-06 16:41:34 -080098 }
99 }
100 }
101 }
Matteo Scandolod1a15082020-04-22 10:57:49 -0700102 stage('Push MIB template to ETCD') {
Shrey Baide7614d02020-02-25 10:26:42 -0800103 steps {
104 sh '''
105 if [ ${withMibTemplate} = true ] ; then
Shrey Baidb0447182020-02-27 16:39:35 -0800106 rm -f BBSM-12345123451234512345-00000000000001-v1.json
Shrey Baide7614d02020-02-25 10:26:42 -0800107 wget https://raw.githubusercontent.com/opencord/voltha-openonu-adapter/master/templates/BBSM-12345123451234512345-00000000000001-v1.json
Shrey Baidb0447182020-02-27 16:39:35 -0800108 cat BBSM-12345123451234512345-00000000000001-v1.json | kubectl exec -it $(kubectl get pods | grep etcd-cluster | awk 'NR==1{print $1}') etcdctl put service/voltha/omci_mibs/templates/BBSM/12345123451234512345/00000000000001
Shrey Baide7614d02020-02-25 10:26:42 -0800109 fi
110 '''
Shrey Baid0d4e31d2020-02-11 13:28:47 -0800111 }
Shrey Baide7614d02020-02-25 10:26:42 -0800112 }
Matteo Scandolod1a15082020-04-22 10:57:49 -0700113 stage('Configure ONOS and VOLTHA') {
Shrey Baide7614d02020-02-25 10:26:42 -0800114 steps {
115 sh '''
Matteo Scandolo330f7522020-03-17 17:15:53 -0700116 #Setting LOG level to ${logLevel}
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700117 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 log:set ${logLevel}
Shrey Baidb0447182020-02-27 16:39:35 -0800118 kubectl exec $(kubectl get pods | grep bbsim | awk 'NR==1{print $1}') bbsimctl log warn false
Matteo Scandolod1a15082020-04-22 10:57:49 -0700119
Shrey Baide7614d02020-02-25 10:26:42 -0800120 #Setting link discovery
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700121 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 cfg set org.onosproject.provider.lldp.impl.LldpLinkProvider enabled ${setLinkDiscovery}
Matteo Scandolod1a15082020-04-22 10:57:49 -0700122
Matteo Scandolo7b3fde92020-02-26 16:17:16 -0800123 # extending voltctl timeout
Shrey Baidb0447182020-02-27 16:39:35 -0800124 sed -i 's/timeout: 10s/timeout: 5m/g' /home/cord/.volt/config
Matteo Scandolod1a15082020-04-22 10:57:49 -0700125
126 #Setting the flow and ports stats collection interval
127 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 cfg set org.onosproject.provider.of.flow.impl.OpenFlowRuleProvider flowPollFrequency ${flowStatInterval}
128 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 cfg set org.onosproject.provider.of.device.impl.OpenFlowDeviceProvider portStatsPollFrequency ${portsStatInterval}
129
Matteo Scandoloc9812232020-04-22 14:18:07 -0700130 # Always deactivate org.opencord.kafka
131 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 app deactivate org.opencord.kafka
132
Matteo Scandolod1a15082020-04-22 10:57:49 -0700133 #Check withOnosApps and disable apps accordingly
134 if [ ${withOnosApps} = false ] ; then
135 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 app deactivate org.opencord.olt
136 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 app deactivate org.opencord.aaa
137 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 app deactivate org.opencord.dhcpl2relay
138 else
Matteo Scandolo3e0e0402020-04-27 16:07:05 -0700139 # config SADIS
Matteo Scandolod1a15082020-04-22 10:57:49 -0700140 curl --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/json "http://127.0.0.1:30120/onos/v1/network/configuration/apps/org.opencord.sadis" --data '{
141 "sadis": {
142 "integration": {
143 "url": "http://bbsim-sadis-server.default.svc:58080/subscribers/%s",
144 "cache": {
145 "enabled": true,
146 "maxsize": 50,
147 "ttl": "PT1m"
148 }
149 }
150 },
151 "bandwidthprofile": {
152 "integration": {
153 "url": "http://bbsim-sadis-server.default.svc:58080/profiles/%s",
154 "cache": {
155 "enabled": true,
156 "maxsize": 50,
157 "ttl": "PT1m"
158 }
159 }
160 }
161 }'
Matteo Scandolo3e0e0402020-04-27 16:07:05 -0700162
163 # config AAA
164 curl --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/json "http://127.0.0.1:30120/onos/v1/network/configuration/apps/org.opencord.aaa" --data '{
165 "AAA": {
166 "radiusConnectionType" : "socket",
167 "radiusHost": "radius.default.svc.cluster.local",
168 "radiusServerPort": "1812",
169 "radiusSecret": "SECRET"
170 }
171 }'
172
173 # config DHCP
174 curl --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/json "http://127.0.0.1:30120/onos/v1/network/configuration/apps/org.opencord.dhcpl2relay" --data '{
175 "dhcpl2relay" : {
176 "useOltUplinkForServerPktInOut": true
177 }
178 }'
Matteo Scandolod1a15082020-04-22 10:57:49 -0700179 fi
Shrey Baide7614d02020-02-25 10:26:42 -0800180 '''
181 }
182 }
Matteo Scandolod1a15082020-04-22 10:57:49 -0700183 stage('Set timeout at 10 minutes') {
Shrey Baide7614d02020-02-25 10:26:42 -0800184 options {
185 timeout(time:10)
186 }
187 stages {
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700188 stage('Activate OLTs') {
189 steps {
190 sh '''
191 for i in $(seq 1 $((${numOfBbsim}))); do
192 voltctl device create -t openolt -H bbsim-$i:50060 -m 0f:f1:ce:c$i:ff:ee
193 done
194 voltctl device list --filter Type~openolt -q | xargs voltctl device enable
195 '''
196 }
197 }
Matteo Scandolod1a15082020-04-22 10:57:49 -0700198 stage('Wait for ONUs to be enabled') {
Shrey Baida3b8aa62020-02-13 11:22:51 -0800199 steps {
200 sh '''
201 if [ -z ${expectedOnus} ]
202 then
203 echo -e "You need to set the target ONU number\n"
204 exit 1
205 fi
Shrey Baid00ff5c42020-02-07 15:14:08 -0800206
Shrey Baida3b8aa62020-02-13 11:22:51 -0800207 # check ONUs reached Active State in VOLTHA
208 i=$(voltctl device list | grep -v OLT | grep ACTIVE | wc -l)
209 until [ $i -eq ${expectedOnus} ]
210 do
211 echo "$i ONUs ACTIVE of ${expectedOnus} expected (time: $SECONDS)"
212 sleep ${pollInterval}
213 i=$(voltctl device list | grep -v OLT | grep ACTIVE | wc -l)
214 done
215 echo "${expectedOnus} ONUs Activated in $SECONDS seconds (time: $SECONDS)"
Matteo Scandolod1a15082020-04-22 10:57:49 -0700216
Shrey Baid49bf8f62020-03-09 17:52:01 -0700217 echo $SECONDS > voltha-devices-time-num.txt
Matteo Scandolod1a15082020-04-22 10:57:49 -0700218
219 echo "VOLTHA Duration(s)" > voltha-devices-time.txt
220 cat voltha-devices-time-num.txt >> voltha-devices-time.txt
Shrey Baida3b8aa62020-02-13 11:22:51 -0800221 '''
222 }
223 }
Matteo Scandolod1a15082020-04-22 10:57:49 -0700224 stage('Wait for ports to be discovered in ONOS') {
Shrey Baida3b8aa62020-02-13 11:22:51 -0800225 steps {
Shrey Baide7614d02020-02-25 10:26:42 -0800226 sh '''
Shrey Baida3b8aa62020-02-13 11:22:51 -0800227 # Check ports showed up in ONOS
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700228 z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 ports -e | grep BBSM | wc -l)
Shrey Baida3b8aa62020-02-13 11:22:51 -0800229 until [ $z -eq ${expectedOnus} ]
230 do
231 echo "${z} enabled ports of ${expectedOnus} expected (time: $SECONDS)"
232 sleep ${pollInterval}
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700233 z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 ports -e | grep BBSM | wc -l)
Shrey Baida3b8aa62020-02-13 11:22:51 -0800234 done
235 echo "${expectedOnus} ports enabled in $SECONDS seconds (time: $SECONDS)"
Matteo Scandolod1a15082020-04-22 10:57:49 -0700236
Shrey Baid49bf8f62020-03-09 17:52:01 -0700237 echo $SECONDS > temp.txt
238 paste voltha-devices-time-num.txt temp.txt | awk '{print ($1 + $2)}' > onos-ports-time-num.txt
Matteo Scandolod1a15082020-04-22 10:57:49 -0700239
240 echo "PORTs Duration(s)" > onos-ports-time.txt
Shrey Baid49bf8f62020-03-09 17:52:01 -0700241 cat onos-ports-time-num.txt >> onos-ports-time.txt
Shrey Baida3b8aa62020-02-13 11:22:51 -0800242 '''
243 }
244 }
Matteo Scandoloc9812232020-04-22 14:18:07 -0700245 stage('Wait for flows to be programmed in VOLTHA') {
246 steps {
247 sh '''
248 if [ ${withOnosApps} = false ] ; then
249 echo "ONOS Apps are not enabled, nothing to check"
250 else
251 function get_flows() {
252 local TOTAL
253 TOTAL=0
254
255 arr=("$@")
256 for id in "${arr[@]}"
257 do
258 TOTAL=$((TOTAL + $(voltctl logicaldevice flows $id | grep -v ID | wc -l)))
259 done
260 echo $TOTAL
261 }
262
263 LOGICAL_DEVICE_IDS=$(voltctl logicaldevice list | grep BBSIM | awk '{print $1}')
264 IDS=($LOGICAL_DEVICE_IDS)
265
266 FLOWS=$(get_flows "${IDS[@]}")
267
268 until [ $FLOWS -eq ${expectedFlows} ]
269 do
270 echo "${FLOWS} of ${expectedFlows} flows programmed in VOLTHA (time: $SECONDS)"
271 sleep ${pollInterval}
272 FLOWS=$(get_flows "${IDS[@]}")
273 done
274 echo "${expectedFlows} flows correctly programmed (time: $SECONDS)"
275 echo $SECONDS > temp.txt
276 paste onos-ports-time-num.txt temp.txt | awk '{print ($1 + $2)}' > voltha-flows-time-num.txt
277
278 echo "VOLTHA FLOWs Duration(s)" > voltha-flows-time.txt
279 cat voltha-flows-time-num.txt >> voltha-flows-time.txt
280 fi
281 '''
282 }
283 }
284 stage('Wait for flows to be acknowledged in ONOS') {
Matteo Scandolod1a15082020-04-22 10:57:49 -0700285 steps {
286 sh '''
287 if [ ${withOnosApps} = false ] ; then
288 echo "ONOS Apps are not enabled, nothing to check"
289 else
290 # wait until all flows are in added state
Matteo Scandoloc9812232020-04-22 14:18:07 -0700291 z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 flows -s | grep ADDED | wc -l)
292 until [ $z -eq ${expectedFlows} ]
Matteo Scandolod1a15082020-04-22 10:57:49 -0700293 do
Matteo Scandoloc9812232020-04-22 14:18:07 -0700294 echo "${z} of ${expectedFlows} flows in ADDED state (time: $SECONDS)"
Matteo Scandolod1a15082020-04-22 10:57:49 -0700295 sleep ${pollInterval}
Matteo Scandoloc9812232020-04-22 14:18:07 -0700296 z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 flows -s | grep ADDED | wc -l)
Matteo Scandolod1a15082020-04-22 10:57:49 -0700297 done
Matteo Scandoloc9812232020-04-22 14:18:07 -0700298 echo "${expectedFlows} flows correctly acknowledged (time: $SECONDS)"
Matteo Scandolod1a15082020-04-22 10:57:49 -0700299
300 echo $SECONDS > temp.txt
Matteo Scandoloc9812232020-04-22 14:18:07 -0700301 paste voltha-flows-time-num.txt temp.txt | awk '{print ($1 + $2)}' > onos-flows-time-num.txt
Matteo Scandolod1a15082020-04-22 10:57:49 -0700302
Matteo Scandoloc9812232020-04-22 14:18:07 -0700303 echo "ONOS FLOWs Duration(s)" > onos-flows-time.txt
Matteo Scandolod1a15082020-04-22 10:57:49 -0700304 cat onos-flows-time-num.txt >> onos-flows-time.txt
305 fi
306 '''
307 }
308 }
Matteo Scandolo268f3222020-04-24 15:19:25 -0700309 stage('Wait for subscribers to authenticate') {
310 steps {
311 sh '''
312 if [ ${withOnosApps} = false ] ; then
313 echo "ONOS Apps are not enabled, nothing to check"
314 elif [ ${bbsimAuth} = false ] ; then
315 echo "Authentication is disabled, nothing to check"
316 else
317 # wait until all subscribers authenticate
318 z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 aaa-users | grep AUTHORIZED_STATE | wc -l)
319 until [ $z -eq ${expectedOnus} ]
320 do
321 echo "${z} of ${expectedOnus} subscribers in AUTHORIZED_STATE state (time: $SECONDS)"
322 sleep ${pollInterval}
323 z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 aaa-users | grep AUTHORIZED_STATE | wc -l)
324 done
325 echo "${expectedOnus} subscribers in AUTHORIZED_STATE (time: $SECONDS)"
326
327 echo $SECONDS > temp.txt
328 paste onos-flows-time-num.txt temp.txt | awk '{print ($1 + $2)}' > onos-auth-time-num.txt
329
330 echo "ONOS Authentication Duration(s)" > onos-auth-time.txt
331 cat onos-auth-time-num.txt >> onos-auth-time.txt
332 fi
333 '''
334 }
335 }
336 stage('Provision subscribers') {
337 steps {
338 sh '''
339 if [ ${withOnosApps} = false ] ; then
340 echo "ONOS Apps are not enabled, nothing to do"
341 elif [ ${bbsimAuth} = false ] ; then
342 echo "Authentication is disabled, nothing to do"
343 else
344 # provision all authenticated subscribers
345 subs=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 aaa-users | grep AUTHORIZED_STATE | grep -o -E "of:[a-z0-9]+/[0-9]+")
346 echo $subs
347 subs=($subs)
348
349 for s in "${subs[@]}"
350 do
351 IFS=/ read -r device port <<< $s
Matteo Scandolo3e0e0402020-04-27 16:07:05 -0700352 echo "Adding subscriber on device $device and port $port"
Matteo Scandolo268f3222020-04-24 15:19:25 -0700353 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 volt-add-subscriber-access $device $port
354 done
355 fi
356 '''
357 }
358 }
359 stage('Wait for subscribers to DHCP') {
360 steps {
361 sh '''
362 if [ ${withOnosApps} = false ] ; then
363 echo "ONOS Apps are not enabled, nothing to check"
364 elif [ ${bbsimDhcp} = false ] ; then
365 echo "DHCP is disabled, nothing to check"
366 else
367 # wait until all subscribers DHCP
368 z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 dhcpl2relay-allocations | grep DHCPACK | wc -l)
369 until [ $z -eq ${expectedOnus} ]
370 do
371 echo "${z} of ${expectedOnus} subscribers received DHCPACK (time: $SECONDS)"
372 sleep ${pollInterval}
373 z=$(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 dhcpl2relay-allocations | grep DHCPACK | wc -l)
374 done
375 echo "${expectedOnus} subscribers received DHCPACK (time: $SECONDS)"
376
377 echo $SECONDS > temp.txt
378 paste onos-auth-time-num.txt temp.txt | awk '{print ($1 + $2)}' > onos-dhcp-time-num.txt
379
380 echo "ONOS DHCP Duration(s)" > onos-dhcp-time.txt
381 cat onos-dhcp-time-num.txt >> onos-dhcp-time.txt
382 fi
383 '''
384 }
385 }
Shrey Baidb001c712020-02-11 11:12:46 -0800386 }
387 }
Matteo Scandolo51b76302020-02-05 12:07:23 -0800388 }
389 post {
Shrey Baid4da57a62020-03-05 15:49:50 -0800390 success {
Shrey Baide7614d02020-02-25 10:26:42 -0800391 plot([
392 csvFileName: 'plot-onu-activation.csv',
Matteo Scandolod1a15082020-04-22 10:57:49 -0700393 csvSeries: [
394 [displayTableFlag: false, exclusionValues: '', file: 'voltha-devices-time.txt', inclusionFlag: 'OFF', url: ''],
395 [displayTableFlag: false, exclusionValues: '', file: 'onos-ports-time.txt', inclusionFlag: 'OFF', url: ''],
Matteo Scandoloc9812232020-04-22 14:18:07 -0700396 [displayTableFlag: false, exclusionValues: '', file: 'voltha-flows-time.txt', inclusionFlag: 'OFF', url: ''],
Matteo Scandolo2f321bd2020-04-27 11:19:41 -0700397 [displayTableFlag: false, exclusionValues: '', file: 'onos-flows-time.txt', inclusionFlag: 'OFF', url: ''],
398 [displayTableFlag: false, exclusionValues: '', file: 'onos-auth-time.txt', inclusionFlag: 'OFF', url: ''],
399 [displayTableFlag: false, exclusionValues: '', file: 'onos-dhcp-time.txt', inclusionFlag: 'OFF', url: ''],
Matteo Scandolod1a15082020-04-22 10:57:49 -0700400 ],
401 group: 'Voltha-Scale-Numbers', numBuilds: '20', style: 'line', title: "Time (${BBSIMdelay}s Delay)", yaxis: 'Time (s)', useDescr: true
Shrey Baide7614d02020-02-25 10:26:42 -0800402 ])
Shrey Baid4da57a62020-03-05 15:49:50 -0800403 }
404 always {
Matteo Scandolod1a15082020-04-22 10:57:49 -0700405 // count how many ONUs have been activated
Shrey Baid4da57a62020-03-05 15:49:50 -0800406 sh '''
Shrey Baid49bf8f62020-03-09 17:52:01 -0700407 echo "#-of-ONUs" > voltha-devices-count.txt
Matteo Scandolod1a15082020-04-22 10:57:49 -0700408 echo $(voltctl device list | grep -v OLT | grep ACTIVE | wc -l) >> voltha-devices-count.txt
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700409 '''
Matteo Scandolod1a15082020-04-22 10:57:49 -0700410 // count how many ports have been discovered
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700411 sh '''
Shrey Baid49bf8f62020-03-09 17:52:01 -0700412 echo "#-of-ports" > onos-ports-count.txt
Matteo Scandolod1a15082020-04-22 10:57:49 -0700413 echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 ports -e | grep BBSM | wc -l) >> onos-ports-count.txt
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700414 '''
Matteo Scandolod1a15082020-04-22 10:57:49 -0700415 // count how many flows have been provisioned
416 sh '''
417 echo "#-of-flows" > onos-flows-count.txt
418 echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 flows -s | grep ADDED | wc -l) >> onos-flows-count.txt
419 '''
Matteo Scandolo18e576b2020-04-28 07:26:09 -0700420 // dump and count the authenticated users
Matteo Scandolo268f3222020-04-24 15:19:25 -0700421 sh '''
422 if [ ${withOnosApps} = true ] && [ ${bbsimAuth} ] ; then
423 echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 aaa-users) >> onos-aaa-users.txt
Matteo Scandolo18e576b2020-04-28 07:26:09 -0700424
425 echo "#-of-authenticated-users" > onos-aaa-count.txt
426 echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 aaa-users | grep AUTHORIZED_STATE | wc -l) >> onos-aaa-count.txt
Matteo Scandolo268f3222020-04-24 15:19:25 -0700427 fi
428 '''
Matteo Scandolo18e576b2020-04-28 07:26:09 -0700429 // dump and count the dhcp users
Matteo Scandolo268f3222020-04-24 15:19:25 -0700430 sh '''
Matteo Scandolo18e576b2020-04-28 07:26:09 -0700431 if [ ${withOnosApps} = true ] && [ ${bbsimDhcp} ] ; then
Matteo Scandolo268f3222020-04-24 15:19:25 -0700432 echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 dhcpl2relay-allocations) >> onos-dhcp-allocations.txt
Matteo Scandolo18e576b2020-04-28 07:26:09 -0700433
434 echo "#-of-dhcp-allocations" > onos-dhcp-count.txt
435 echo $(sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 dhcpl2relay-allocations | grep DHCPACK | wc -l) >> onos-dhcp-count.txt
Matteo Scandolo268f3222020-04-24 15:19:25 -0700436 fi
437 '''
Matteo Scandolod1a15082020-04-22 10:57:49 -0700438 // check which containers were used in this build
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700439 sh '''
Matteo Scandolo24044fc2020-04-14 10:07:14 -0700440 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq
441 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700442 '''
Matteo Scandolod1a15082020-04-22 10:57:49 -0700443 // dump all the VOLTHA devices informations
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700444 sh '''
Shrey Baid4da57a62020-03-05 15:49:50 -0800445 voltctl device list -o json > device-list.json
Shrey Baid49bf8f62020-03-09 17:52:01 -0700446 python -m json.tool device-list.json > voltha-devices-list.json
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700447 '''
Matteo Scandolo18e576b2020-04-28 07:26:09 -0700448 // dump all the BBSim(s) ONU informations
Matteo Scandolof9b76382020-04-27 11:40:58 -0700449 sh '''
Matteo Scandolo18e576b2020-04-28 07:26:09 -0700450 BBSIM_IDS=$(kubectl get pods | grep bbsim | grep -v server | awk '{print $1}')
451 IDS=($BBSIM_IDS)
452
453 for bbsim in "${IDS[@]}"
454 do
455 kubectl exec -t $bbsim bbsimctl onu list > $bbsim-device-list.txt
456 done
Matteo Scandolof9b76382020-04-27 11:40:58 -0700457 '''
Matteo Scandolod1a15082020-04-22 10:57:49 -0700458 // get ports and flows from ONOS
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700459 sh '''
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700460 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 ports > onos-ports-list.txt
Matteo Scandolod1a15082020-04-22 10:57:49 -0700461 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 flows -s > onos-flows-list.txt
462 '''
463 // collect the CPU usage
464 sh '''
Shrey Baidce9ed552020-03-13 13:40:13 -0700465 curl -s -X GET -G http://127.0.0.1:31301/api/v1/query --data-urlencode 'query=avg(rate(container_cpu_usage_seconds_total[10m])*100) by (pod_name)' | jq . > cpu-usage.json
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700466 '''
Matteo Scandolod1a15082020-04-22 10:57:49 -0700467 // get all the logs from kubernetes PODs
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700468 sh '''
Matteo Scandolo3d31ebc2020-04-16 14:39:40 -0700469 kubectl get pods -o wide
Matteo Scandolo89f1cea2020-04-10 10:20:20 -0700470 kubectl logs -l app=adapter-open-olt > open-olt-logs.txt
471 kubectl logs -l app=adapter-open-onu > open-onu-logs.txt
472 kubectl logs -l app=rw-core > voltha-rw-core-logs.txt
473 kubectl logs -l app=ofagent > voltha-ofagent-logs.txt
474 kubectl logs -l app=bbsim > bbsim-logs.txt
Matteo Scandolo4b03e3b2020-04-23 09:44:17 -0700475 kubectl logs -l app=onos > onos-logs.txt
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700476 '''
Matteo Scandolod1a15082020-04-22 10:57:49 -0700477 // cleanup of things we don't want to archive
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700478 sh '''
Matteo Scandolod1a15082020-04-22 10:57:49 -0700479 rm -rf BBSM-12345123451234512345-00000000000001-v1.json device-list.json temp.txt
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700480 '''
Matteo Scandolod1a15082020-04-22 10:57:49 -0700481 // compile a plot of the activate informations
Shrey Baid4da57a62020-03-05 15:49:50 -0800482 plot([
483 csvFileName: 'plot-numbers.csv',
Matteo Scandolod1a15082020-04-22 10:57:49 -0700484 csvSeries: [
485 [displayTableFlag: false, exclusionValues: '', file: 'voltha-devices-count.txt', inclusionFlag: 'OFF', url: ''],
Matteo Scandolo18e576b2020-04-28 07:26:09 -0700486 [displayTableFlag: false, exclusionValues: '', file: 'onos-ports-count.txt', inclusionFlag: 'OFF', url: ''],
487 [displayTableFlag: false, exclusionValues: '', file: 'onos-flows-count.txt', inclusionFlag: 'OFF', url: ''],
488 [displayTableFlag: false, exclusionValues: '', file: 'onos-aaa-count.txt', inclusionFlag: 'OFF', url: ''],
489 [displayTableFlag: false, exclusionValues: '', file: 'onos-dhcp-count.txt', inclusionFlag: 'OFF', url: ''],
Matteo Scandolod1a15082020-04-22 10:57:49 -0700490 ],
Shrey Baid4da57a62020-03-05 15:49:50 -0800491 group: 'Voltha-Scale-Numbers', numBuilds: '100', style: 'line', title: "Activated ONUs and Recognized Ports", yaxis: 'Number of Ports/ONUs', useDescr: true
492 ])
493
494 archiveArtifacts artifacts: '*.log,*.json,*txt'
495
Matteo Scandolo51b76302020-02-05 12:07:23 -0800496 }
497 }
Matteo Scandoloe69614f2020-03-10 11:35:35 -0700498}