69 lines
1.9 KiB
Go
69 lines
1.9 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"`
|
|
}
|
|
|
|
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")
|
|
}
|
|
|
|
return nil
|
|
}
|