constellation/operators/constellation-node-operator/internal/azure/client/config.go

40 lines
1.0 KiB
Go
Raw Normal View History

/*
Copyright (c) Edgeless Systems GmbH
SPDX-License-Identifier: AGPL-3.0-only
*/
package client
import (
"encoding/json"
"errors"
"github.com/spf13/afero"
)
// cloudConfig uses same format as azure cloud controller manager to share the same kubernetes secret.
// this definition only contains the fields we need.
// reference: https://cloud-provider-azure.sigs.k8s.io/install/configs/ .
type cloudConfig struct {
TenantID string `json:"tenantId,omitempty"`
SubscriptionID string `json:"subscriptionId,omitempty"`
ResourceGroup string `json:"resourceGroup,omitempty"`
}
// loadConfig loads the cloud config from the given path.
func loadConfig(fs afero.Fs, path string) (*cloudConfig, error) {
rawConfig, err := afero.ReadFile(fs, path)
if err != nil {
return nil, err
}
var config cloudConfig
if err := json.Unmarshal(rawConfig, &config); err != nil {
return nil, err
}
if config.TenantID == "" || config.SubscriptionID == "" {
return nil, errors.New("invalid config: tenantId and subscriptionId are required")
}
return &config, nil
}