From 582894d389222f05c9818b973cb72166ddb2180e Mon Sep 17 00:00:00 2001 From: Alexander Noskov Date: Tue, 11 Aug 2020 20:09:35 +0000 Subject: [PATCH] Switch to Ubuntu focal (20.04) based image Since we have switched from debian to ubuntu based image and changed the name (in https://review.opendev.org/733078) we need to align it with airshipctl repository. Renaming the following names: 1) debian-custom.iso -> ubuntu-focal.iso 2) quay.io/airshipit/isogen:latest-debian_stable -> quay.io/airshipit/isogen:latest-ubuntu_focal Updating the following packages and resources: 1) k8s 1.17.3 -> 1.18.6 2) docker 19.03.9 -> 19.03.12 3) Calico 3.9 -> 3.15 Change-Id: I7eaf382acb79016a511db6e0955fa932c02963c4 --- manifests/function/ephemeral/secret.yaml | 25 ++++++++------- .../function/k8scontrol/controlplane.yaml | 31 ++++++++++--------- .../cmd/testdata/airshipconfig.yaml | 4 +-- pkg/config/constants.go | 4 +-- pkg/phase/apply/testdata/config.yaml | 4 +-- pkg/phase/testdata/airshipconfig.yaml | 4 +-- pkg/remote/redfish/client_test.go | 2 +- playbooks/vars/test-config.yaml | 2 +- testdata/k8s/config.yaml | 4 +-- tools/deployment/22_test_configs.sh | 4 +-- tools/deployment/30_deploy_controlplane.sh | 2 +- tools/document/validate_site_docs.sh | 4 +-- 12 files changed, 46 insertions(+), 44 deletions(-) diff --git a/manifests/function/ephemeral/secret.yaml b/manifests/function/ephemeral/secret.yaml index 8690a0169..40b33ceee 100644 --- a/manifests/function/ephemeral/secret.yaml +++ b/manifests/function/ephemeral/secret.yaml @@ -26,20 +26,21 @@ stringData: net.bridge.bridge-nf-call-iptables = 1 EOF - sysctl --system - - curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - - - curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - - - echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list - - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list - - apt-get update - - apt-get install -y - docker-ce="$(apt policy docker-ce | grep 19.03.9 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2 )" - docker-ce-cli="$(apt policy docker-ce-cli | grep 19.03.9 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2 )" - containerd.io - swapoff -a - - apt-get install -y kubelet=1.17.3-00 kubeadm=1.17.3-00 kubectl=1.17.3-00 - - apt-mark hold kubelet kubeadm kubectl + - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - + - curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - + - echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list + # Replace xenial with focal or $(lsb_release -cs) once available + - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list + - apt update + - apt install -y + docker-ce="$(apt-cache policy docker-ce | grep 19.03.12 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2)" + docker-ce-cli="$(apt-cache policy docker-ce-cli | grep 19.03.12 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2)" + containerd.io + - apt install -y kubelet=1.18.6-00 kubeadm=1.18.6-00 kubectl=1.18.6-00 + - apt-mark hold docker-ce docker-ce-cli containerd.io kubelet kubeadm kubectl - kubeadm init --config /tmp/kubeadm.yaml - - kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml + - kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml - mkdir -p /opt/metal3-dev-env/ironic/html/images write_files: - content: | diff --git a/manifests/function/k8scontrol/controlplane.yaml b/manifests/function/k8scontrol/controlplane.yaml index 7e93aa858..a21a904ac 100644 --- a/manifests/function/k8scontrol/controlplane.yaml +++ b/manifests/function/k8scontrol/controlplane.yaml @@ -4,7 +4,7 @@ metadata: name: cluster-controlplane spec: replicas: 1 - version: v1.17.0 + version: v1.18.6 infrastructureTemplate: kind: Metal3MachineTemplate apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 @@ -17,18 +17,19 @@ spec: net.bridge.bridge-nf-call-iptables = 1 EOF - sysctl --system - - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - - curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - - - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list - - apt-get update - - apt-get install -y - docker-ce="$(apt policy docker-ce | grep 19.03.9 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2 )" - docker-ce-cli="$(apt policy docker-ce-cli | grep 19.03.9 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2 )" - containerd.io - swapoff -a - - apt-get install -y kubelet=1.17.3-00 kubeadm=1.17.3-00 kubectl=1.17.3-00 - - apt-mark hold kubelet kubeadm kubectl + - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - + - curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - + - echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list + # Replace xenial with focal or $(lsb_release -cs) once available + - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list + - apt update + - apt install -y + docker-ce="$(apt-cache policy docker-ce | grep 19.03.12 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2)" + docker-ce-cli="$(apt-cache policy docker-ce-cli | grep 19.03.12 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2)" + containerd.io + - apt install -y kubelet=1.18.6-00 kubeadm=1.18.6-00 kubectl=1.18.6-00 + - apt-mark hold docker-ce docker-ce-cli containerd.io kubelet kubeadm kubectl initConfiguration: nodeRegistration: name: '{{ ds.meta_data.local_hostname }}' @@ -41,7 +42,7 @@ spec: kubeletExtraArgs: node-labels: 'metal3.io/uuid={{ ds.meta_data.uuid }}' postKubeadmCommands: - - kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml + - kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml --- apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3 kind: Metal3MachineTemplate @@ -52,8 +53,8 @@ spec: spec: image: # NOTE (dukov) this should be overridden on lower levels - url: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img - checksum: 4a6909d1480ac30d676accd7b37ec711 + url: https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img + checksum: 2c890254ecbd4e6b4931f864ef72b337 hostSelector: matchLabels: airshipit.org/k8s-role: controlplane-host diff --git a/pkg/clusterctl/cmd/testdata/airshipconfig.yaml b/pkg/clusterctl/cmd/testdata/airshipconfig.yaml index d46839ff6..ecb5b921f 100644 --- a/pkg/clusterctl/cmd/testdata/airshipconfig.yaml +++ b/pkg/clusterctl/cmd/testdata/airshipconfig.yaml @@ -3,14 +3,14 @@ bootstrapInfo: dummy_bootstrap_config: container: volume: /tmp/airship:/config - image: quay.io/airshipit/isogen:latest-debian_stable + image: quay.io/airshipit/isogen:latest-ubuntu_focal containerRuntime: docker builder: userDataFileName: user-data networkConfigFileName: network-config outputMetadataFileName: output-metadata.yaml remoteDirect: - isoUrl: http://localhost:8099/debian-custom.iso + isoUrl: http://localhost:8099/ubuntu-focal.iso clusters: dummycluster: clusterType: diff --git a/pkg/config/constants.go b/pkg/config/constants.go index 9e7da97df..d78bad049 100644 --- a/pkg/config/constants.go +++ b/pkg/config/constants.go @@ -57,8 +57,8 @@ const ( AirshipPluginPathEnv = "AIRSHIP_KUSTOMIZE_PLUGINS" // Modules - AirshipDefaultBootstrapImage = "quay.io/airshipit/isogen:latest-debian_stable" - AirshipDefaultIsoURL = "http://localhost:8099/debian-custom.iso" + AirshipDefaultBootstrapImage = "quay.io/airshipit/isogen:latest-ubuntu_focal" + AirshipDefaultIsoURL = "http://localhost:8099/ubuntu-focal.iso" AirshipDefaultManagementType = redfish.ClientType ) diff --git a/pkg/phase/apply/testdata/config.yaml b/pkg/phase/apply/testdata/config.yaml index 00a65f560..81b280473 100644 --- a/pkg/phase/apply/testdata/config.yaml +++ b/pkg/phase/apply/testdata/config.yaml @@ -3,14 +3,14 @@ bootstrapInfo: dummy_bootstrap_config: container: volume: /tmp/airship:/config - image: quay.io/airshipit/isogen:latest-debian_stable + image: quay.io/airshipit/isogen:latest-ubuntu_focal containerRuntime: docker builder: userDataFileName: user-data networkConfigFileName: network-config outputMetadataFileName: output-metadata.yaml remoteDirect: - isoUrl: http://localhost:8099/debian-custom.iso + isoUrl: http://localhost:8099/ubuntu-focal.iso clusters: dummycluster: clusterType: diff --git a/pkg/phase/testdata/airshipconfig.yaml b/pkg/phase/testdata/airshipconfig.yaml index 71b0caa1e..1e9c40270 100644 --- a/pkg/phase/testdata/airshipconfig.yaml +++ b/pkg/phase/testdata/airshipconfig.yaml @@ -3,14 +3,14 @@ bootstrapInfo: dummy_bootstrap_config: container: volume: /tmp/airship:/config - image: quay.io/airshipit/isogen:latest-debian_stable + image: quay.io/airshipit/isogen:latest-ubuntu_focal containerRuntime: docker builder: userDataFileName: user-data networkConfigFileName: network-config outputMetadataFileName: output-metadata.yaml remoteDirect: - isoUrl: http://localhost:8099/debian-custom.iso + isoUrl: http://localhost:8099/ubuntu-focal.iso remoteType: redfish clusters: dummycluster: diff --git a/pkg/remote/redfish/client_test.go b/pkg/remote/redfish/client_test.go index 49f6580a1..57d5d8407 100644 --- a/pkg/remote/redfish/client_test.go +++ b/pkg/remote/redfish/client_test.go @@ -33,7 +33,7 @@ import ( const ( nodeID = "System.Embedded.1" - isoPath = "https://localhost:8080/debian.iso" + isoPath = "http://localhost:8099/ubuntu-focal.iso" redfishURL = "redfish+https://localhost:2224/Systems/System.Embedded.1" systemActionRetries = 1 systemRebootDelay = 0 diff --git a/playbooks/vars/test-config.yaml b/playbooks/vars/test-config.yaml index c6c35d0d9..3fd689998 100644 --- a/playbooks/vars/test-config.yaml +++ b/playbooks/vars/test-config.yaml @@ -15,7 +15,7 @@ airship_config_iso_gen_target_path: "{{ serve_dir }}" airship_config_primary_repo_url: "https://review.opendev.org/airship/airshipctl" airship_config_manifest_directory: "{{ remote_work_dir | default(zuul.project.src_dir) | default(local_src_dir) }}" airship_config_ephemeral_ip: "{{ airship_gate_ipam.nat_network.ephemeral_ip }}" -airship_config_iso_builder_docker_image: "quay.io/airshipit/isogen:latest-debian_stable" +airship_config_iso_builder_docker_image: "quay.io/airshipit/isogen:latest-ubuntu_focal" airship_config_site_path: manifests/site/test-site airship_config_ca_data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRFNU1USXlOakE0TWpneU5Gb1hEVEk1TVRJeU16QTRNamd5TkZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTTFSClM0d3lnajNpU0JBZjlCR0JUS1p5VTFwYmdDaGQ2WTdJektaZWRoakM2K3k1ZEJpWm81ZUx6Z2tEc2gzOC9YQ1MKenFPS2V5cE5RcDN5QVlLdmJKSHg3ODZxSFZZNjg1ZDVYVDNaOHNyVVRzVDR5WmNzZHAzV3lHdDM0eXYzNi9BSQoxK1NlUFErdU5JemN6bzNEdWhXR0ZoQjk3VjZwRitFUTBlVWN5bk05c2hkL3AwWVFzWDR1ZlhxaENENVpzZnZUCnBka3UvTWkyWnVGUldUUUtNeGpqczV3Z2RBWnBsNnN0L2ZkbmZwd1Q5cC9WTjRuaXJnMEsxOURTSFFJTHVrU2MKb013bXNBeDJrZmxITWhPazg5S3FpMEloL2cyczRFYTRvWURZemt0Y2JRZ24wd0lqZ2dmdnVzM3pRbEczN2lwYQo4cVRzS2VmVGdkUjhnZkJDNUZNQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFJek9BL00xWmRGUElzd2VoWjFuemJ0VFNURG4KRHMyVnhSV0VnclFFYzNSYmV3a1NkbTlBS3MwVGR0ZHdEbnBEL2tRYkNyS2xEeFF3RWg3NFZNSFZYYkFadDdsVwpCSm90T21xdXgxYThKYklDRTljR0FHRzFvS0g5R29jWERZY0JzOTA3ckxIdStpVzFnL0xVdG5hN1dSampqZnBLCnFGelFmOGdJUHZIM09BZ3B1RVVncUx5QU8ya0VnelZwTjZwQVJxSnZVRks2TUQ0YzFmMnlxWGxwNXhrN2dFSnIKUzQ4WmF6d0RmWUVmV3Jrdld1YWdvZ1M2SktvbjVEZ0Z1ZHhINXM2Snl6R3lPVnZ0eG1TY2FvOHNxaCs3UXkybgoyLzFVcU5ZK0hlN0x4d04rYkhwYkIxNUtIMTU5ZHNuS3BRbjRORG1jSTZrVnJ3MDVJMUg5ZGRBbGF0bz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= airship_config_client_cert_data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQwRENDQXJnQ0ZFdFBveEZYSjVrVFNWTXQ0OVlqcHBQL3hCYnlNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CVXgKRXpBUkJnTlZCQU1UQ210MVltVnlibVYwWlhNd0hoY05NakF3TVRJME1Ua3hOVEV3V2hjTk1qa3hNakF5TVRreApOVEV3V2pBME1Sa3dGd1lEVlFRRERCQnJkV0psY201bGRHVnpMV0ZrYldsdU1SY3dGUVlEVlFRS0RBNXplWE4wClpXMDZiV0Z6ZEdWeWN6Q0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQU1iaFhUUmsKVjZiZXdsUjBhZlpBdTBGYWVsOXRtRThaSFEvaGtaSHhuTjc2bDZUUFltcGJvaDRvRjNGMFFqbzROS1o5NVRuWgo0OWNoV240eFJiZVlPU25EcDBpV0Qzd0pXUlZ5aVFvVUFyYTlNcHVPNkVFU1FpbFVGNXNxc0VXUVdVMjBETStBCkdxK1k0Z2c3eDJ1Q0hTdk1GUmkrNEw5RWlXR2xnRDIvb1hXUm5NWEswNExQajZPb3Vkb2Zid2RmT3J6dTBPVkUKUzR0eGtuS1BCY1BUU3YxMWVaWVhja0JEVjNPbExENEZ3dTB3NTcwcnczNzAraEpYdlZxd3Zjb2RjZjZEL1BXWQowamlnd2ppeUJuZ2dXYW04UVFjd1Nud3o0d05sV3hKOVMyWUJFb1ptdWxVUlFaWVk5ZXRBcEpBdFMzTjlUNlQ2ClovSlJRdEdhZDJmTldTYkxEck5qdU1OTGhBYWRMQnhJUHpBNXZWWk5aalJkdEMwU25pMlFUMTVpSFp4d1RxcjQKakRQQ0pYRXU3KytxcWpQVldUaUZLK3JqcVNhS1pqVWZVaUpHQkJWcm5RZkJENHNtRnNkTjB5cm9tYTZOYzRMNQpKS21RV1NHdmd1aG0zbW5sYjFRaVRZanVyZFJQRFNmdmwrQ0NHbnA1QkkvZ1pwMkF1SHMvNUpKVTJlc1ZvL0xsCkVPdHdSOXdXd3dXcTAvZjhXS3R4bVRrMTUyOUp2dFBGQXQweW1CVjhQbHZlYnVwYmJqeW5pL2xWbTJOYmV6dWUKeCtlMEpNbGtWWnFmYkRSS243SjZZSnJHWW1CUFV0QldoSVkzb1pJVTFEUXI4SUlIbkdmYlZoWlR5ME1IMkFCQQp1dlVQcUtSVk80UGkxRTF4OEE2eWVPeVRDcnB4L0pBazVyR2RBZ01CQUFFd0RRWUpLb1pJaHZjTkFRRUxCUUFECmdnRUJBSWNFM1BxZHZDTVBIMnJzMXJESk9ESHY3QWk4S01PVXZPRi90RjlqR2EvSFBJbkh3RlVFNEltbldQeDYKVUdBMlE1bjFsRDFGQlU0T0M4eElZc3VvS1VQVHk1T0t6SVNMNEZnL0lEcG54STlrTXlmNStMR043aG8rblJmawpCZkpJblVYb0tERW1neHZzSWFGd1h6bGtSTDJzL1lKYUZRRzE1Uis1YzFyckJmd2dJOFA5Tkd6aEM1cXhnSmovCm04K3hPMGhXUmJIYklrQ21NekRib2pCSWhaL00rb3VYR1doei9TakpodXhZTVBnek5MZkFGcy9PMTVaSjd3YXcKZ3ZoSGc3L2E5UzRvUCtEYytPa3VrMkV1MUZjL0E5WHpWMzc5aWhNWW5ub3RQMldWeFZ3b0ZZQUg0NUdQcDZsUApCQmwyNnkxc2JMbjl6aGZYUUJIMVpFN0EwZVE9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K diff --git a/testdata/k8s/config.yaml b/testdata/k8s/config.yaml index d7d527d4e..79a4ca59c 100644 --- a/testdata/k8s/config.yaml +++ b/testdata/k8s/config.yaml @@ -7,10 +7,10 @@ bootstrapInfo: userDataFileName: user-data container: containerRuntime: docker - image: quay.io/airshipit/isogen:latest-debian_stable + image: quay.io/airshipit/isogen:latest-ubuntu_focal volume: /srv/iso:/config remoteDirect: - isoUrl: http://localhost:8099/debian-custom.iso + isoUrl: http://localhost:8099/ubuntu-focal.iso clusters: default: clusterType: diff --git a/tools/deployment/22_test_configs.sh b/tools/deployment/22_test_configs.sh index 04836b84e..73eaf260d 100755 --- a/tools/deployment/22_test_configs.sh +++ b/tools/deployment/22_test_configs.sh @@ -23,13 +23,13 @@ export HTTPS_PROXY=${HTTPS_PROXY:-${https_proxy}} export HTTP_PROXY=${HTTP_PROXY:-${http_proxy}} export NO_PROXY=${NO_PROXY:-${no_proxy}} export AIRSHIP_CONFIG_ISO_GEN_TARGET_PATH=${ISO_DIR} -export AIRSHIP_CONFIG_ISO_BUILDER_DOCKER_IMAGE=${BUILDER_IMAGE:-"quay.io/airshipit/isogen:latest-debian_stable"} +export AIRSHIP_CONFIG_ISO_BUILDER_DOCKER_IMAGE=${BUILDER_IMAGE:-"quay.io/airshipit/isogen:latest-ubuntu_focal"} export REMOTE_TYPE=redfish export REMOTE_INSECURE=true export REMOTE_PROXY=false export AIRSHIP_CONFIG_ISO_SERVE_HOST=${HOST:-"localhost"} export AIRSHIP_CONFIG_ISO_PORT=${SERVE_PORT} -export AIRSHIP_CONFIG_ISO_NAME=${ISO_NAME:-"debian-custom.iso"} +export AIRSHIP_CONFIG_ISO_NAME=${ISO_NAME:-"ubuntu-focal.iso"} export SYSTEM_ACTION_RETRIES=30 export SYSTEM_REBOOT_DELAY=30 export AIRSHIP_CONFIG_PRIMARY_REPO_BRANCH=${BRANCH:-"master"} diff --git a/tools/deployment/30_deploy_controlplane.sh b/tools/deployment/30_deploy_controlplane.sh index 87da33557..1c783c733 100755 --- a/tools/deployment/30_deploy_controlplane.sh +++ b/tools/deployment/30_deploy_controlplane.sh @@ -16,7 +16,7 @@ set -ex TARGET_IMAGE_DIR="/srv/iso" EPHEMERAL_DOMAIN_NAME="air-ephemeral" -TARGET_IMAGE_URL="https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img" +TARGET_IMAGE_URL="https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img" # TODO (dukov) this is needed due to sushy tools inserts cdrom image to # all vms. This can be removed once sushy tool is fixed diff --git a/tools/document/validate_site_docs.sh b/tools/document/validate_site_docs.sh index 1a19a4c00..94e5fc3d2 100755 --- a/tools/document/validate_site_docs.sh +++ b/tools/document/validate_site_docs.sh @@ -62,10 +62,10 @@ bootstrapInfo: userDataFileName: user-data container: containerRuntime: docker - image: quay.io/airshipit/isogen:latest-debian_stable + image: quay.io/airshipit/isogen:latest-ubuntu_focal volume: /srv/iso:/config remoteDirect: - isoUrl: http://localhost:8099/debian-custom.iso + isoUrl: http://localhost:8099/ubuntu-focal.iso clusters: ${CONTEXT}_${cluster}: clusterType: