blob: a6870d8c1cad4151dccdba132181a08332622b7a [file] [log] [blame]
Matteo Scandolo42f6e572021-01-25 15:11:34 -08001// usage
2//
3// stage('test stage') {
4// steps {
5// volthaDeploy([
6// onosReplica: 3
7// ])
8// }
9// }
10
11
12def call(Map config) {
13 // NOTE use params or directule extraHelmFlags??
14 def defaultConfig = [
15 onosReplica: 1,
16 atomixReplica: 1,
17 kafkaReplica: 1,
18 etcdReplica: 1,
19 infraNamespace: "infra",
20 workflow: "att",
Hardik Windlass810b6cf2022-02-24 09:21:18 +000021 withMacLearning: false,
Hardik Windlassc97ceae2022-05-13 10:12:55 +053022 withFttb: false,
Matteo Scandolo42f6e572021-01-25 15:11:34 -080023 extraHelmFlags: "",
Matteo Scandolofcfc60d2021-02-24 09:06:48 -080024 localCharts: false,
Matteo Scandolod82d1de2021-04-06 14:55:58 -070025 kubeconfig: null, // location of the kubernetes config file, if null we assume it's stored in the $KUBECONFIG environment variable
Matteo Scandolo42f6e572021-01-25 15:11:34 -080026 ]
27
28 if (!config) {
29 config = [:]
30 }
31
32 def cfg = defaultConfig + config
33
Matteo Scandolofcfc60d2021-02-24 09:06:48 -080034 def volthaInfraChart = "onf/voltha-infra"
35
36 if (cfg.localCharts) {
37 volthaInfraChart = "$WORKSPACE/voltha-helm-charts/voltha-infra"
38
39 sh """
40 pushd $WORKSPACE/voltha-helm-charts/voltha-infra
41 helm dep update
42 popd
43 """
44 }
45
Matteo Scandolo42f6e572021-01-25 15:11:34 -080046 println "Deploying VOLTHA Infra with the following parameters: ${cfg}."
47
Matteo Scandolod82d1de2021-04-06 14:55:58 -070048 def kubeconfig = cfg.kubeconfig
49 if (kubeconfig == null) {
50 kubeconfig = env.KUBECONFIG
51 }
52
Matteo Scandolo42f6e572021-01-25 15:11:34 -080053 sh """
54 kubectl create namespace ${cfg.infraNamespace} || true
Matteo Scandolod82d1de2021-04-06 14:55:58 -070055 kubectl create configmap -n ${cfg.infraNamespace} kube-config "--from-file=kube_config=${kubeconfig}" || true
Matteo Scandolo42f6e572021-01-25 15:11:34 -080056 """
Matteo Scandolod82d1de2021-04-06 14:55:58 -070057
Hardik Windlass810b6cf2022-02-24 09:21:18 +000058 def serviceConfigFile = cfg.workflow
59 if (cfg.withMacLearning && cfg.workflow == 'tt') {
60 serviceConfigFile = "tt-maclearner"
Hardik Windlassc97ceae2022-05-13 10:12:55 +053061 } else if (cfg.withFttb && cfg.workflow == 'dt') {
62 serviceConfigFile = "dt-fttb"
Hardik Windlass810b6cf2022-02-24 09:21:18 +000063 }
64
Matteo Scandoloa1b5d792021-06-01 12:19:31 -070065 // bitnamic/etch has change the replica format between the currently used 5.4.2 and the latest 6.2.5
66 // for now put both values in the extra helm chart flags
Matteo Scandolo42f6e572021-01-25 15:11:34 -080067 sh """
Matteo Scandoloed1afdd2021-04-02 16:25:45 -070068 helm upgrade --install --create-namespace -n ${cfg.infraNamespace} voltha-infra ${volthaInfraChart} \
Matteo Scandolo660e4af2021-04-02 11:16:09 -070069 --set onos-classic.replicas=${cfg.onosReplica},onos-classic.atomix.replicas=${cfg.atomixReplica} \
Matteo Scandolod43bb302021-04-20 10:19:29 -070070 --set kafka.replicaCount=${cfg.kafkaReplica},kafka.zookeeper.replicaCount=${cfg.kafkaReplica} \
71 --set etcd.statefulset.replicaCount=${cfg.etcdReplica} \
Matteo Scandoloa1b5d792021-06-01 12:19:31 -070072 --set etcd.replicaCount=${cfg.etcdReplica} \
Hardik Windlass810b6cf2022-02-24 09:21:18 +000073 -f $WORKSPACE/voltha-helm-charts/examples/${serviceConfigFile}-values.yaml ${cfg.extraHelmFlags}
Matteo Scandolo42f6e572021-01-25 15:11:34 -080074 """
75}