Documentation
¶
Index ¶
- Constants
- Variables
- func AddCommandsTo(rootCmd *cobra.Command)
- func ClearDefaults(cmd *cobra.Command, args []string, noColor bool) error
- func CreateProfile(cmd *cobra.Command, args []string, noColor bool) error
- func DeleteProfile(cmd *cobra.Command, args []string, noColor bool) error
- func ExportConfig(cmd *cobra.Command, args []string, noColor bool) error
- func GetConfigDir() (string, error)
- func GetConfigFilePath() (string, error)
- func GetDefault(cmd *cobra.Command, args []string, noColor bool) error
- func ImportConfig(cmd *cobra.Command, args []string, noColor bool) error
- func ListProfiles(cmd *cobra.Command, args []string, noColor bool, outputFormat string) error
- func Login(ctx context.Context) (*megaport.Client, error)
- func RemoveDefault(cmd *cobra.Command, args []string, noColor bool) error
- func SetDefault(cmd *cobra.Command, args []string, noColor bool) error
- func UpdateProfile(cmd *cobra.Command, args []string, noColor bool) error
- func UseProfile(cmd *cobra.Command, args []string, noColor bool) error
- func ViewConfig(cmd *cobra.Command, args []string, noColor bool) error
- type ConfigFile
- type ConfigManager
- func (m *ConfigManager) ClearDefaults() error
- func (m *ConfigManager) CreateProfile(name, accessKey, secretKey, environment, description string) error
- func (m *ConfigManager) DeleteProfile(name string) error
- func (m *ConfigManager) Export() (*ConfigFile, error)
- func (m *ConfigManager) GetCurrentProfile() (*Profile, string, error)
- func (m *ConfigManager) GetDefault(key string) (interface{}, bool)
- func (m *ConfigManager) ListProfiles() (map[string]*Profile, error)
- func (m *ConfigManager) RemoveDefault(key string) error
- func (m *ConfigManager) Save() error
- func (m *ConfigManager) SetDefault(key string, value interface{}) error
- func (m *ConfigManager) UpdateProfile(name, accessKey, secretKey, environment string, updateDescription bool, ...) error
- func (m *ConfigManager) UseProfile(name string) error
- type Module
- type Profile
- type ProfileOutput
Constants ¶
View Source
const (
ConfigVersion = 1
)
Variables ¶
View Source
var (
ErrProfileNotFound = errors.New("profile not found")
)
View Source
var LoginFunc = func(ctx context.Context) (*megaport.Client, error) { var accessKey, secretKey, env string manager, err := NewConfigManager() if err == nil { profile, _, err := manager.GetCurrentProfile() if err == nil { accessKey = profile.AccessKey secretKey = profile.SecretKey env = profile.Environment } } if accessKey == "" { accessKey = os.Getenv("MEGAPORT_ACCESS_KEY") } if secretKey == "" { secretKey = os.Getenv("MEGAPORT_SECRET_KEY") } if env == "" { env = os.Getenv("MEGAPORT_ENVIRONMENT") } if accessKey == "" { return nil, fmt.Errorf("megaport API access key not provided. Configure an active profile or set MEGAPORT_ACCESS_KEY environment variable") } if secretKey == "" { return nil, fmt.Errorf("megaport API secret key not provided. Configure an active profile or set MEGAPORT_SECRET_KEY environment variable") } if env == "" { env = "production" } var envOpt megaport.ClientOpt switch env { case "production": envOpt = megaport.WithEnvironment(megaport.EnvironmentProduction) case "staging": envOpt = megaport.WithEnvironment(megaport.EnvironmentStaging) case "development": envOpt = megaport.WithEnvironment(megaport.EnvironmentDevelopment) default: envOpt = megaport.WithEnvironment(megaport.EnvironmentProduction) } httpClient := &http.Client{} megaportClient, err := megaport.New(httpClient, megaport.WithCredentials(accessKey, secretKey), envOpt) if err != nil { return nil, err } spinner := output.PrintLoggingIn(false) _, err = megaportClient.Authorize(ctx) if err != nil { spinner.Stop() return nil, err } else { spinner.StopWithSuccess("Successfully logged in to Megaport") } return megaportClient, nil }
LoginFunc logs into the Megaport API using the current profile or environment variables.
Functions ¶
func AddCommandsTo ¶
func GetConfigDir ¶
func GetConfigFilePath ¶
func ListProfiles ¶
Types ¶
type ConfigFile ¶
type ConfigFile struct {
Version int `json:"version"`
ActiveProfile string `json:"active_profile"`
Profiles map[string]*Profile `json:"profiles"`
Defaults map[string]interface{} `json:"defaults"`
}
func NewConfigFile ¶
func NewConfigFile() *ConfigFile
type ConfigManager ¶
type ConfigManager struct {
// contains filtered or unexported fields
}
func NewConfigManager ¶
func NewConfigManager() (*ConfigManager, error)
func (*ConfigManager) ClearDefaults ¶
func (m *ConfigManager) ClearDefaults() error
func (*ConfigManager) CreateProfile ¶
func (m *ConfigManager) CreateProfile(name, accessKey, secretKey, environment, description string) error
func (*ConfigManager) DeleteProfile ¶
func (m *ConfigManager) DeleteProfile(name string) error
func (*ConfigManager) Export ¶
func (m *ConfigManager) Export() (*ConfigFile, error)
func (*ConfigManager) GetCurrentProfile ¶
func (m *ConfigManager) GetCurrentProfile() (*Profile, string, error)
func (*ConfigManager) GetDefault ¶
func (m *ConfigManager) GetDefault(key string) (interface{}, bool)
func (*ConfigManager) ListProfiles ¶
func (m *ConfigManager) ListProfiles() (map[string]*Profile, error)
func (*ConfigManager) RemoveDefault ¶
func (m *ConfigManager) RemoveDefault(key string) error
func (*ConfigManager) Save ¶
func (m *ConfigManager) Save() error
func (*ConfigManager) SetDefault ¶
func (m *ConfigManager) SetDefault(key string, value interface{}) error
func (*ConfigManager) UpdateProfile ¶
func (m *ConfigManager) UpdateProfile(name, accessKey, secretKey, environment string, updateDescription bool, description string) error
func (*ConfigManager) UseProfile ¶
func (m *ConfigManager) UseProfile(name string) error
type ProfileOutput ¶
type ProfileOutput struct {
output.Output `json:"-" header:"-"`
Name string `json:"name" header:"Name"`
AccessKey string `json:"access_key" header:"Access Key"`
Environment string `json:"environment" header:"Environment"`
Description string `json:"description" header:"Description"`
IsActive bool `json:"is_active" header:"Active"`
}
Click to show internal directories.
Click to hide internal directories.