Some checks failed
Go Tests / go-tests (push) Failing after 2m47s
Makes the EdgeConnect URL configurable through the config.toml file instead of hardcoding it in the provider code. This change: - Adds new EdgeConnectURL field to Config struct - Implements validation to ensure URL is provided - Updates example config.toml with default URL - Modifies provider to use configured URL value This improves deployment flexibility by allowing different edge connect endpoints without code changes.
74 lines
2 KiB
Go
74 lines
2 KiB
Go
// Copyright 2023 Cloudbase Solutions SRL
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
// not use this file except in compliance with the License. You may obtain
|
|
// a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
// License for the specific language governing permissions and limitations
|
|
// under the License.
|
|
|
|
package config
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
)
|
|
|
|
// NewConfig returns a new Config
|
|
func NewConfig(cfgFile string) (*Config, error) {
|
|
var config Config
|
|
if _, err := toml.DecodeFile(cfgFile, &config); err != nil {
|
|
return nil, fmt.Errorf("error decoding config: %w", err)
|
|
}
|
|
|
|
if err := config.Validate(); err != nil {
|
|
return nil, fmt.Errorf("error validating config: %w", err)
|
|
}
|
|
return &config, nil
|
|
}
|
|
|
|
func NewCredentials(credFile string) (*Credentials, error) {
|
|
var creds Credentials
|
|
if _, err := toml.DecodeFile(credFile, &creds); err != nil {
|
|
return nil, fmt.Errorf("error decoding creds: %w", err)
|
|
}
|
|
|
|
return &creds, nil
|
|
}
|
|
|
|
type Config struct {
|
|
LogFile string `toml:"log_file"`
|
|
CredentialsFile string `toml:"credentials_file"`
|
|
Organization string `toml:"organization"`
|
|
CloudletKey CloudletKey `toml:"cloudlet"`
|
|
Region string `toml:"region"`
|
|
EdgeConnectURL string `toml:"edge_connect_url"`
|
|
}
|
|
|
|
type Credentials struct {
|
|
Username string `toml:"username"`
|
|
Password string `toml:"password"`
|
|
}
|
|
|
|
type CloudletKey struct {
|
|
Organization string `toml:"organization"`
|
|
Name string `toml:"name"`
|
|
}
|
|
|
|
func (c *Config) Validate() error {
|
|
if c.LogFile == "" {
|
|
return fmt.Errorf("log_file is not defined in provider config")
|
|
}
|
|
|
|
if c.EdgeConnectURL == "" {
|
|
return fmt.Errorf("edge_connect_url is not defined in provider config")
|
|
}
|
|
|
|
return nil
|
|
}
|