blob: e7b4f85b85486451b21147b8932e0859373a46ea [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 {
8 KUBECONFIG="$HOME/.kube/kind-config-voltha-minimal"
9 VOLTCONFIG="$HOME/.volt/config-minimal"
Shrey Baidb001c712020-02-11 11:12:46 -080010 SSHPASS="karaf"
Shrey Baide7614d02020-02-25 10:26:42 -080011 DEPLOY_K8S="n"
Shrey Baid00ff5c42020-02-07 15:14:08 -080012 }
Matteo Scandolo51b76302020-02-05 12:07:23 -080013 stages {
Shrey Baide7614d02020-02-25 10:26:42 -080014 stage('set-description') {
15 steps {
16 script {
Shrey Baid943e2072020-03-04 10:31:32 -080017 currentBuild.description = "$BUILD_TIMESTAMP"
Shrey Baide7614d02020-02-25 10:26:42 -080018 }
19 }
20 }
Shrey Baidb0447182020-02-27 16:39:35 -080021 stage('cleanup') {
Matteo Scandolo51b76302020-02-05 12:07:23 -080022 steps {
Shrey Baidb0447182020-02-27 16:39:35 -080023 sh '''
Shrey Baid49bf8f62020-03-09 17:52:01 -070024 rm -rf voltha-devices-count.txt voltha-devices-time.txt onos-ports-count.txt onos-ports-time.txt onos-ports-list.txt voltha-devices-list.json onos-ports-time-num.txt voltha-devices-time-num.txt
Matteo Scandolodd5bbe92020-03-27 11:43:08 -070025 for hchart in \$(helm list -q | grep -E -v 'docker-registry|kafkacat|etcd-operator');
Matteo Scandolo151e35c2020-02-28 15:45:15 -080026 do
27 echo "Purging chart: \${hchart}"
28 helm delete --purge "\${hchart}"
29 done
Shrey Baidb0447182020-02-27 16:39:35 -080030 bash /home/cord/voltha-scale/wait_for_pods.sh
31 bash /home/cord/voltha-scale/stop_port_forward.sh
32 '''
Matteo Scandolo51b76302020-02-05 12:07:23 -080033 }
34 }
35 stage('start') {
36 steps {
Shrey Baid00ff5c42020-02-07 15:14:08 -080037 sh '''
Matteo Scandolo51b76302020-02-05 12:07:23 -080038 #!/usr/bin/env bash
39 set -euo pipefail
Shrey Baid00ff5c42020-02-07 15:14:08 -080040 '''
41 }
42 }
Shrey Baid00ff5c42020-02-07 15:14:08 -080043 stage('deploy-voltha') {
Matteo Scandolo2fc1dac2020-03-09 08:39:53 -070044 options {
45 timeout(time:10)
46 }
Shrey Baid00ff5c42020-02-07 15:14:08 -080047 steps {
48 sh '''
Matteo Scandoloa3470b72020-03-17 12:26:47 -070049 helm repo update
Matteo Scandolof87e1da2020-04-16 16:13:31 -070050 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 -070051 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 -070052
Matteo Scandolof87e1da2020-04-16 16:13:31 -070053 helm install -n radius onf/freeradius ${extraHelmFlags}
54
55 # 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 Scandoloa711ddf2020-03-06 16:41:34 -080082 stage('wait for adapters to be registered') {
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 }
Shrey Baide7614d02020-02-25 10:26:42 -0800102 stage('MIB-template') {
103 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 }
113 stage('disable-ONOS-apps') {
114 steps {
115 sh '''
116 #Check withOnosApps and disable apps accordingly
117 if [ ${withOnosApps} = false ] ; then
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700118 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 app deactivate org.opencord.olt
119 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 app deactivate org.opencord.aaa
120 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 app deactivate org.opencord.dhcpl2relay
Shrey Baide7614d02020-02-25 10:26:42 -0800121 fi
122 '''
Shrey Baid0d4e31d2020-02-11 13:28:47 -0800123 }
Shrey Baide7614d02020-02-25 10:26:42 -0800124 }
125 stage('configuration') {
126 steps {
127 sh '''
Matteo Scandolo330f7522020-03-17 17:15:53 -0700128 #Setting LOG level to ${logLevel}
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700129 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 -0800130 kubectl exec $(kubectl get pods | grep bbsim | awk 'NR==1{print $1}') bbsimctl log warn false
Shrey Baide7614d02020-02-25 10:26:42 -0800131 #Setting link discovery
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700132 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}
Shrey Baide7614d02020-02-25 10:26:42 -0800133 #Setting the flow stats collection interval
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700134 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}
Shrey Baide7614d02020-02-25 10:26:42 -0800135 #Setting the ports stats collection interval
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700136 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}
Matteo Scandolo7b3fde92020-02-26 16:17:16 -0800137 # extending voltctl timeout
Shrey Baidb0447182020-02-27 16:39:35 -0800138 sed -i 's/timeout: 10s/timeout: 5m/g' /home/cord/.volt/config
Shrey Baide7614d02020-02-25 10:26:42 -0800139 '''
140 }
141 }
142 stage('execute') {
143 options {
144 timeout(time:10)
145 }
146 stages {
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700147 stage('Activate OLTs') {
148 steps {
149 sh '''
150 for i in $(seq 1 $((${numOfBbsim}))); do
151 voltctl device create -t openolt -H bbsim-$i:50060 -m 0f:f1:ce:c$i:ff:ee
152 done
153 voltctl device list --filter Type~openolt -q | xargs voltctl device enable
154 '''
155 }
156 }
Shrey Baida3b8aa62020-02-13 11:22:51 -0800157 stage('ONUs-enabled') {
158 steps {
159 sh '''
160 if [ -z ${expectedOnus} ]
161 then
162 echo -e "You need to set the target ONU number\n"
163 exit 1
164 fi
Shrey Baid00ff5c42020-02-07 15:14:08 -0800165
Shrey Baida3b8aa62020-02-13 11:22:51 -0800166 # check ONUs reached Active State in VOLTHA
167 i=$(voltctl device list | grep -v OLT | grep ACTIVE | wc -l)
168 until [ $i -eq ${expectedOnus} ]
169 do
170 echo "$i ONUs ACTIVE of ${expectedOnus} expected (time: $SECONDS)"
171 sleep ${pollInterval}
172 i=$(voltctl device list | grep -v OLT | grep ACTIVE | wc -l)
173 done
174 echo "${expectedOnus} ONUs Activated in $SECONDS seconds (time: $SECONDS)"
Shrey Baid49bf8f62020-03-09 17:52:01 -0700175 echo $SECONDS > voltha-devices-time-num.txt
Shrey Baida3b8aa62020-02-13 11:22:51 -0800176 '''
177 }
178 }
179 stage('ONOS-ports') {
180 steps {
Shrey Baide7614d02020-02-25 10:26:42 -0800181 sh '''
Shrey Baida3b8aa62020-02-13 11:22:51 -0800182 # Check ports showed up in ONOS
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700183 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 -0800184 until [ $z -eq ${expectedOnus} ]
185 do
186 echo "${z} enabled ports of ${expectedOnus} expected (time: $SECONDS)"
187 sleep ${pollInterval}
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700188 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 -0800189 done
190 echo "${expectedOnus} ports enabled in $SECONDS seconds (time: $SECONDS)"
Shrey Baid49bf8f62020-03-09 17:52:01 -0700191 echo $SECONDS > temp.txt
192 paste voltha-devices-time-num.txt temp.txt | awk '{print ($1 + $2)}' > onos-ports-time-num.txt
193 echo "ONOS-Duration(s)" > onos-ports-time.txt
194 echo "VOLTHA-Duration(s)" > voltha-devices-time.txt
195 cat voltha-devices-time-num.txt >> voltha-devices-time.txt
196 cat onos-ports-time-num.txt >> onos-ports-time.txt
Shrey Baida3b8aa62020-02-13 11:22:51 -0800197 '''
198 }
199 }
Shrey Baidb001c712020-02-11 11:12:46 -0800200 }
201 }
Matteo Scandolo51b76302020-02-05 12:07:23 -0800202 }
203 post {
Shrey Baid4da57a62020-03-05 15:49:50 -0800204 success {
Shrey Baide7614d02020-02-25 10:26:42 -0800205 plot([
206 csvFileName: 'plot-onu-activation.csv',
Shrey Baid49bf8f62020-03-09 17:52:01 -0700207 csvSeries: [[displayTableFlag: false, exclusionValues: '', file: 'voltha-devices-time.txt', inclusionFlag: 'OFF', url: ''], [displayTableFlag: false, exclusionValues: '', file: 'onos-ports-time.txt', inclusionFlag: 'OFF', url: '']],
Shrey Baid943e2072020-03-04 10:31:32 -0800208 group: 'Voltha-Scale-Numbers', numBuilds: '100', style: 'line', title: "Time (${BBSIMdelay}s Delay)", yaxis: 'Time (s)', useDescr: true
Shrey Baide7614d02020-02-25 10:26:42 -0800209 ])
Shrey Baid4da57a62020-03-05 15:49:50 -0800210 }
211 always {
212 sh '''
213 echo $(voltctl device list | grep -v OLT | grep ACTIVE | wc -l) > onus.txt
Shrey Baid49bf8f62020-03-09 17:52:01 -0700214 echo "#-of-ONUs" > voltha-devices-count.txt
215 cat onus.txt >> voltha-devices-count.txt
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700216 '''
217 sh '''
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700218 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) > ports.txt
Shrey Baid49bf8f62020-03-09 17:52:01 -0700219 echo "#-of-ports" > onos-ports-count.txt
220 cat ports.txt >> onos-ports-count.txt
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700221 '''
222 sh '''
Matteo Scandolo24044fc2020-04-14 10:07:14 -0700223 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.image}{'\\n'}" | sort | uniq
224 kubectl get pods --all-namespaces -o jsonpath="{range .items[*].status.containerStatuses[*]}{.imageID}{'\\n'}" | sort | uniq
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700225 '''
226 sh '''
Shrey Baid4da57a62020-03-05 15:49:50 -0800227 voltctl device list -o json > device-list.json
Shrey Baid49bf8f62020-03-09 17:52:01 -0700228 python -m json.tool device-list.json > voltha-devices-list.json
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700229 '''
230 sh '''
Matteo Scandolof87e1da2020-04-16 16:13:31 -0700231 sshpass -e ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 30115 karaf@127.0.0.1 ports > onos-ports-list.txt
Shrey Baidce9ed552020-03-13 13:40:13 -0700232 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 -0700233 '''
234 sh '''
Matteo Scandolo3d31ebc2020-04-16 14:39:40 -0700235 kubectl get pods -o wide
Matteo Scandolo89f1cea2020-04-10 10:20:20 -0700236 kubectl logs -l app=adapter-open-olt > open-olt-logs.txt
237 kubectl logs -l app=adapter-open-onu > open-onu-logs.txt
238 kubectl logs -l app=rw-core > voltha-rw-core-logs.txt
239 kubectl logs -l app=ofagent > voltha-ofagent-logs.txt
240 kubectl logs -l app=bbsim > bbsim-logs.txt
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700241 '''
242 sh '''
Shrey Baid49bf8f62020-03-09 17:52:01 -0700243 rm -rf BBSM-12345123451234512345-00000000000001-v1.json device-list.json onus.txt ports.txt temp.txt
Matteo Scandoloe1c200f2020-03-24 10:33:58 -0700244 '''
Shrey Baid4da57a62020-03-05 15:49:50 -0800245 plot([
246 csvFileName: 'plot-numbers.csv',
Shrey Baid49bf8f62020-03-09 17:52:01 -0700247 csvSeries: [[displayTableFlag: false, exclusionValues: '', file: 'voltha-devices-count.txt', inclusionFlag: 'OFF', url: ''], [displayTableFlag: false, exclusionValues: '', file: 'onos-ports-count.txt', inclusionFlag: 'OFF', url: '']],
Shrey Baid4da57a62020-03-05 15:49:50 -0800248 group: 'Voltha-Scale-Numbers', numBuilds: '100', style: 'line', title: "Activated ONUs and Recognized Ports", yaxis: 'Number of Ports/ONUs', useDescr: true
249 ])
250
251 archiveArtifacts artifacts: '*.log,*.json,*txt'
252
Matteo Scandolo51b76302020-02-05 12:07:23 -0800253 }
254 }
Matteo Scandoloe69614f2020-03-10 11:35:35 -0700255}