anx/provider/configuration/configuration.go
package configuration import ( "fmt" "io" 2: cannot find package "github.com/kelseyhightower/envconfig" in any of: "github.com/kelseyhightower/envconfig" "gopkg.in/yaml.v3" "k8s.io/cloud-provider/options") type ProviderConfig struct { Token string `yaml:"anexiaToken" split_words:"true"` CustomerID string `yaml:"customerID,omitempty" split_words:"true"` ClusterName string `yaml:"clusterName,omitempty" split_words:"true"` AutoDiscoveryTagPrefix string `yaml:"autoDiscoveryTagPrefix,omitempty" split_words:"true" default:"anxkube-ccm-lb"` // if ccm shall discover $LoadBalancerIdentifier, $SecondaryLoadBalancerIdentifiers and $LoadBalancerPrefixIdentifiers via tag "$AutoDiscoveryTagPrefix-$ClusterName" AutoDiscoverLoadBalancer bool `yaml:"autoDiscoverLoadBalancer,omitempty" split_words:"true"` // the LBaaS LoadBalancer resource to configure for LoadBalancer Services LoadBalancerIdentifier string `yaml:"loadBalancerIdentifier,omitempty" split_words:"true"` // identifiers of LBaaS LoadBalancer resources to keep in sync with $LoadBalancerIdentifier SecondaryLoadBalancerIdentifiers []string `yaml:"secondaryLoadBalancersIdentifiers" split_words:"true"` // lists the identifiers of prefixes from which external IPs for LoadBalancer Services can be allocated LoadBalancerPrefixIdentifiers []string `yaml:"loadBalancerPrefixIdentifiers,omitempty" split_words:"true"` // defines the number of retries to wait for LoadBalancer resources to be ready LoadBalancerBackoffSteps int `yaml:"loadBalancerBackoffSteps" default:"30"`} const ( CloudProviderName = "anexia") // managerOptions is used to capture the configuration values that are added via cmd flagsvar managerOptions *options.CloudControllerManagerOptions func GetManagerOptions() (*options.CloudControllerManagerOptions, error) { if managerOptions != nil { return managerOptions, nil } var err error managerOptions, err = options.NewCloudControllerManagerOptions() return managerOptions, err} var ( CloudProviderScheme = fmt.Sprintf("%s://", CloudProviderName)) func NewProviderConfig(configReader io.Reader) (ProviderConfig, error) { var providerConfig ProviderConfig if configReader != nil { config, err := io.ReadAll(configReader) if err != nil { return ProviderConfig{}, err } err = yaml.Unmarshal(config, &providerConfig) if err != nil { return ProviderConfig{}, err } } err := envconfig.Process("ANEXIA", &providerConfig) if err != nil { return ProviderConfig{}, err } err = applyCliFlagsToProviderConfig(&providerConfig) return providerConfig, err} func applyCliFlagsToProviderConfig(providerConfig *ProviderConfig) error { managerOptions, err := GetManagerOptions() if err != nil { return err } sharedConfigClusterName := managerOptions.KubeCloudShared.ClusterName // kubernetes is a fallback name we don't want to use if sharedConfigClusterName != "kubernetes" { providerConfig.ClusterName = sharedConfigClusterName } return nil}