blob: 9be801ef40bd20f1f5dbb1d074dbf0042acd569a [file] [log] [blame]
Joey Armstrongaf679da2023-01-31 14:22:41 -05001#!/usr/bin/env groovy
2// -----------------------------------------------------------------------
Joey Armstrong518f3572024-02-11 07:56:25 -05003// Copyright 2021-2024 Open Networking Foundation (ONF) and the ONF Contributors
Joey Armstrongaf679da2023-01-31 14:22:41 -05004//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16// -----------------------------------------------------------------------
Matteo Scandolo42f6e572021-01-25 15:11:34 -080017
Joey Armstronge391ce12023-09-21 15:55:11 -040018/* -----------------------------------------------------------------------
19groovylint-disable NoDef, VariableTypeRequired
20Reason: jenkins.sh() and groovy String do not play nicely together.
21 cast(String) => java.lang.String not supported natively.
22* -----------------------------------------------------------------------
23*/
24
Matteo Scandolo42f6e572021-01-25 15:11:34 -080025def call(List namespaces = ['default'], List excludes = ['docker-registry']) {
Joey Armstronge391ce12023-09-21 15:55:11 -040026 String spaces = namespaces.join(', ')
Joey Armstrong8ee5e4c2023-09-21 16:06:03 -040027 println("Tearing down charts in namespaces: ${spaces}.")
Matteo Scandolo42f6e572021-01-25 15:11:34 -080028
Joey Armstronge391ce12023-09-21 15:55:11 -040029 def exc = excludes.join('|')
30 for (int i = 0; i < namespaces.size(); i++) {
Matteo Scandolo42f6e572021-01-25 15:11:34 -080031 def n = namespaces[i]
Joey Armstrong8ee5e4c2023-09-21 16:06:03 -040032 sh(label : "Tearing down chart in namespace ${n}",
Joey Armstronge391ce12023-09-21 15:55:11 -040033 script : """
Joey Armstrong8ee5e4c2023-09-21 16:06:03 -040034 set +x
Matteo Scandolobdb2c9d2021-03-18 11:00:29 -070035 for hchart in \$(helm list --all -n ${n} -q | grep -E -v '${exc}');
Matteo Scandolo42f6e572021-01-25 15:11:34 -080036 do
37 echo "Purging chart: \${hchart}"
38 helm delete -n ${n} "\${hchart}"
39 done
Joey Armstrong8ee5e4c2023-09-21 16:06:03 -040040""")
Matteo Scandolo42f6e572021-01-25 15:11:34 -080041 }
42
Joey Armstrong8ee5e4c2023-09-21 16:06:03 -040043 banner = "Waiting for pods to be removed from namespaces: ${spaces}"
Joey Armstronge391ce12023-09-21 15:55:11 -040044 for (int i = 0; i < namespaces.size(); i++) {
Matteo Scandolo42f6e572021-01-25 15:11:34 -080045 def n = namespaces[i]
Joey Armstrong8ee5e4c2023-09-21 16:06:03 -040046 sh(label : "Waiting for pod removal in namespace ${n}",
47 script : """
Matteo Scandolo42f6e572021-01-25 15:11:34 -080048 set +x
49 PODS=\$(kubectl get pods -n ${n} --no-headers | wc -l)
50 while [[ \$PODS != 0 ]]; do
Matteo Scandolo95f3bc12021-06-03 15:25:47 -070051 sleep 5
52 PODS=\$(kubectl get pods -n ${n} --no-headers | wc -l)
Matteo Scandolo42f6e572021-01-25 15:11:34 -080053 done
Joey Armstrong8ee5e4c2023-09-21 16:06:03 -040054""")
Matteo Scandolo42f6e572021-01-25 15:11:34 -080055 }
56}
Joey Armstrongaf679da2023-01-31 14:22:41 -050057
58// EOF