2025-09-01 15:39:45 +02:00
|
|
|
// 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 {
|
2025-10-23 17:41:31 +02:00
|
|
|
return nil, fmt.Errorf("error validating config: %w (note: TOML section must be [edge_connect] not [edge-connect])", err)
|
2025-09-01 15:39:45 +02:00
|
|
|
}
|
|
|
|
|
return &config, nil
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-05 14:37:34 +02:00
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-01 15:39:45 +02:00
|
|
|
type Config struct {
|
2025-09-05 14:37:34 +02:00
|
|
|
LogFile string `toml:"log_file"`
|
|
|
|
|
CredentialsFile string `toml:"credentials_file"`
|
2025-10-23 15:14:41 +02:00
|
|
|
EdgeConnect EdgeConnect `toml:"edge_connect"`
|
2025-09-05 14:37:34 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Credentials struct {
|
|
|
|
|
Username string `toml:"username"`
|
|
|
|
|
Password string `toml:"password"`
|
2025-09-03 13:36:57 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type CloudletKey struct {
|
|
|
|
|
Organization string `toml:"organization"`
|
|
|
|
|
Name string `toml:"name"`
|
2025-09-01 15:39:45 +02:00
|
|
|
}
|
|
|
|
|
|
2025-10-23 15:14:41 +02:00
|
|
|
type EdgeConnect struct {
|
|
|
|
|
URL string `toml:"url"`
|
|
|
|
|
Organization string `toml:"organization"`
|
|
|
|
|
Region string `toml:"region"`
|
|
|
|
|
DefaultFlavor string `toml:"default_flavor"`
|
|
|
|
|
CloudletKey CloudletKey `toml:"cloudlet"`
|
|
|
|
|
}
|
|
|
|
|
|
2025-09-01 15:39:45 +02:00
|
|
|
func (c *Config) Validate() error {
|
2025-09-05 11:45:04 +02:00
|
|
|
if c.LogFile == "" {
|
|
|
|
|
return fmt.Errorf("log_file is not defined in provider config")
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-23 15:14:41 +02:00
|
|
|
if c.EdgeConnect.URL == "" {
|
2025-10-23 17:41:31 +02:00
|
|
|
return fmt.Errorf("edge_connect.url is not defined in provider config")
|
2025-10-16 18:03:55 +02:00
|
|
|
}
|
|
|
|
|
|
2025-09-01 15:39:45 +02:00
|
|
|
return nil
|
|
|
|
|
}
|