From 65c14d55261d86c32e0d5e044156559b2e141a37 Mon Sep 17 00:00:00 2001 From: Karsten van Baal Date: Mon, 10 Feb 2025 16:41:39 +0100 Subject: [PATCH] added possibility to retrieve hcloud cluster config from file --- .../cloudprovider/hetzner/hetzner_manager.go | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/cluster-autoscaler/cloudprovider/hetzner/hetzner_manager.go b/cluster-autoscaler/cloudprovider/hetzner/hetzner_manager.go index 1308e5ce7c50..35b3a11e3774 100644 --- a/cluster-autoscaler/cloudprovider/hetzner/hetzner_manager.go +++ b/cluster-autoscaler/cloudprovider/hetzner/hetzner_manager.go @@ -110,18 +110,15 @@ func newManager() (*hetznerManager, error) { var err error clusterConfigBase64 := os.Getenv("HCLOUD_CLUSTER_CONFIG") + clusterConfigFile := os.Getenv("HCLOUD_CLUSTER_CONFIG_FILE") cloudInitBase64 := os.Getenv("HCLOUD_CLOUD_INIT") - if clusterConfigBase64 == "" && cloudInitBase64 == "" { - return nil, errors.New("`HCLOUD_CLUSTER_CONFIG` or `HCLOUD_CLOUD_INIT` is not specified") + if clusterConfigBase64 == "" && cloudInitBase64 == "" && clusterConfigFile == "" { + return nil, errors.New("neither `HCLOUD_CLUSTER_CONFIG`, `HCLOUD_CLOUD_INIT` nor `HCLOUD_CLUSTER_CONFIG_FILE` is specified") } - var clusterConfig *ClusterConfig = &ClusterConfig{} + var clusterConfig = &ClusterConfig{} if clusterConfigBase64 != "" { - clusterConfig.IsUsingNewFormat = true - } - - if clusterConfig.IsUsingNewFormat { clusterConfigEnv, err := base64.StdEncoding.DecodeString(clusterConfigBase64) if err != nil { return nil, fmt.Errorf("failed to parse cluster config error: %s", err) @@ -130,9 +127,20 @@ func newManager() (*hetznerManager, error) { if err != nil { return nil, fmt.Errorf("failed to unmarshal cluster config JSON: %s", err) } - } + clusterConfig.IsUsingNewFormat = true - if !clusterConfig.IsUsingNewFormat { + } else if clusterConfigFile != "" { + clusterConfigData, err := os.ReadFile(clusterConfigFile) + if err != nil { + return nil, fmt.Errorf("failed to read cluster config file: %s", err) + } + err = json.Unmarshal(clusterConfigData, &clusterConfig) + if err != nil { + return nil, fmt.Errorf("failed to unmarshal cluster config JSON: %s", err) + } + clusterConfig.IsUsingNewFormat = true + + } else { cloudInit, err := base64.StdEncoding.DecodeString(cloudInitBase64) if err != nil { return nil, fmt.Errorf("failed to parse cloud init error: %s", err)