From 995669dbec8a64d3e6ff6da3dc9b5055a34bb8e4 Mon Sep 17 00:00:00 2001 From: Gabriel Mainberger Date: Wed, 3 Dec 2025 16:55:59 +0100 Subject: [PATCH 1/2] Add the configurability of the cloudscale API timeout --- class/defaults.yml | 1 + component/main.jsonnet | 6 ++++++ docs/modules/ROOT/pages/references/parameters.adoc | 8 ++++++++ ...t_kube_system_cloudscale_cloud_controller_manager.yaml | 2 ++ ...t_kube_system_cloudscale_cloud_controller_manager.yaml | 2 ++ 5 files changed, 19 insertions(+) diff --git a/class/defaults.yml b/class/defaults.yml index 0356235..bc735b1 100644 --- a/class/defaults.yml +++ b/class/defaults.yml @@ -13,4 +13,5 @@ parameters: args: [] + api_timeout: '20' api_token: ?{vaultkv:${cluster:tenant}/${cluster:name}/cloudscale/token} diff --git a/component/main.jsonnet b/component/main.jsonnet index 6b76694..f60e7d3 100644 --- a/component/main.jsonnet +++ b/component/main.jsonnet @@ -36,6 +36,12 @@ local patchDaemonset(obj) = '%(registry)s/%(repository)s:%(tag)s' % params.images.cloudscale_cloud_controller_manager, command+: params.args, + env+: [ + { + name: 'CLOUDSCALE_API_TIMEOUT', + value: params.api_timeout, + }, + ], } else c diff --git a/docs/modules/ROOT/pages/references/parameters.adoc b/docs/modules/ROOT/pages/references/parameters.adoc index 091c0e3..ebc39b5 100644 --- a/docs/modules/ROOT/pages/references/parameters.adoc +++ b/docs/modules/ROOT/pages/references/parameters.adoc @@ -43,6 +43,14 @@ defaults:: `[]` Additional arguments to provide to the cloudscale CCM. The contents of this parameter are appended to the upstream manifest verbatim. +== `api_timeout` + +[horizontal] +type:: string +default:: https://github.com/cloudscale-ch/cloudscale-cloud-controller-manager/blob/74832bae401dc0fc79dcfba923ae154eac684779/pkg/cloudscale_ccm/cloud.go#L28 + +cloudscale.ch API timeout to be used by the CCM driver. + == `api_token` [horizontal] diff --git a/tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml b/tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml index d78c234..68c257d 100644 --- a/tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml +++ b/tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml @@ -28,6 +28,8 @@ spec: secretKeyRef: key: access-token name: cloudscale + - name: CLOUDSCALE_API_TIMEOUT + value: '20' image: quay.io/cloudscalech/cloudscale-cloud-controller-manager:1.2.0 imagePullPolicy: IfNotPresent name: cloudscale-cloud-controller-manager diff --git a/tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml b/tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml index 346bdb5..7dd17ce 100644 --- a/tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml +++ b/tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml @@ -28,6 +28,8 @@ spec: secretKeyRef: key: access-token name: cloudscale + - name: CLOUDSCALE_API_TIMEOUT + value: '20' image: quay.io/cloudscalech/cloudscale-cloud-controller-manager:1.2.0 imagePullPolicy: IfNotPresent name: cloudscale-cloud-controller-manager From b9ba4adc04ee1f6d591d94e2888bf681ae4191f7 Mon Sep 17 00:00:00 2001 From: Sebastian Widmer Date: Thu, 4 Dec 2025 09:19:41 +0100 Subject: [PATCH 2/2] Allow unset value for upstream default, improve docs, include unit in name, allow numbers --- class/defaults.yml | 2 +- component/main.jsonnet | 13 +++++++------ docs/modules/ROOT/pages/references/parameters.adoc | 12 ++++++++---- ..._system_cloudscale_cloud_controller_manager.yaml | 2 -- ..._system_cloudscale_cloud_controller_manager.yaml | 2 +- tests/openshift4.yml | 3 +++ 6 files changed, 20 insertions(+), 14 deletions(-) diff --git a/class/defaults.yml b/class/defaults.yml index bc735b1..341e7ab 100644 --- a/class/defaults.yml +++ b/class/defaults.yml @@ -13,5 +13,5 @@ parameters: args: [] - api_timeout: '20' + api_timeout_seconds: null api_token: ?{vaultkv:${cluster:tenant}/${cluster:name}/cloudscale/token} diff --git a/component/main.jsonnet b/component/main.jsonnet index f60e7d3..da4c0c0 100644 --- a/component/main.jsonnet +++ b/component/main.jsonnet @@ -36,12 +36,13 @@ local patchDaemonset(obj) = '%(registry)s/%(repository)s:%(tag)s' % params.images.cloudscale_cloud_controller_manager, command+: params.args, - env+: [ - { - name: 'CLOUDSCALE_API_TIMEOUT', - value: params.api_timeout, - }, - ], + env+: + if params.api_timeout_seconds != null then [ + { + name: 'CLOUDSCALE_API_TIMEOUT', + value: std.toString(params.api_timeout_seconds), + }, + ] else [], } else c diff --git a/docs/modules/ROOT/pages/references/parameters.adoc b/docs/modules/ROOT/pages/references/parameters.adoc index ebc39b5..8084078 100644 --- a/docs/modules/ROOT/pages/references/parameters.adoc +++ b/docs/modules/ROOT/pages/references/parameters.adoc @@ -43,13 +43,17 @@ defaults:: `[]` Additional arguments to provide to the cloudscale CCM. The contents of this parameter are appended to the upstream manifest verbatim. -== `api_timeout` +== `api_timeout_seconds` [horizontal] -type:: string -default:: https://github.com/cloudscale-ch/cloudscale-cloud-controller-manager/blob/74832bae401dc0fc79dcfba923ae154eac684779/pkg/cloudscale_ccm/cloud.go#L28 +type:: number +default:: `null` + +The API timeout to be used by the CCM driver when communicating with the cloudscale.ch API. +Unit is seconds. +If not set the CCM driver will use its upstream default. -cloudscale.ch API timeout to be used by the CCM driver. +The current upstream timeout default is 20 seconds (https://github.com/cloudscale-ch/cloudscale-cloud-controller-manager/blob/74832bae401dc0fc79dcfba923ae154eac684779/pkg/cloudscale_ccm/cloud.go#L28[upstream code]). == `api_token` diff --git a/tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml b/tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml index 68c257d..d78c234 100644 --- a/tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml +++ b/tests/golden/defaults/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml @@ -28,8 +28,6 @@ spec: secretKeyRef: key: access-token name: cloudscale - - name: CLOUDSCALE_API_TIMEOUT - value: '20' image: quay.io/cloudscalech/cloudscale-cloud-controller-manager:1.2.0 imagePullPolicy: IfNotPresent name: cloudscale-cloud-controller-manager diff --git a/tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml b/tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml index 7dd17ce..6739308 100644 --- a/tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml +++ b/tests/golden/openshift4/cloudscale-cloud-controller-manager/cloudscale-cloud-controller-manager/10_ccm_daemonset_kube_system_cloudscale_cloud_controller_manager.yaml @@ -29,7 +29,7 @@ spec: key: access-token name: cloudscale - name: CLOUDSCALE_API_TIMEOUT - value: '20' + value: '50' image: quay.io/cloudscalech/cloudscale-cloud-controller-manager:1.2.0 imagePullPolicy: IfNotPresent name: cloudscale-cloud-controller-manager diff --git a/tests/openshift4.yml b/tests/openshift4.yml index 97d8e9b..3ee41f3 100644 --- a/tests/openshift4.yml +++ b/tests/openshift4.yml @@ -1,3 +1,6 @@ parameters: facts: distribution: openshift4 + + cloudscale_cloud_controller_manager: + api_timeout_seconds: 50