0314c5c848
Change-Id: I0b3b7a819b6c76fdc2e20ee2f6f8ece047fac858 Relates-To: #257 Closes: #257 Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
252 lines
7.4 KiB
Go
252 lines
7.4 KiB
Go
/*
|
|
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
|
|
|
|
https://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"
|
|
"strings"
|
|
|
|
"opendev.org/airship/airshipctl/pkg/remote/redfish"
|
|
redfishdell "opendev.org/airship/airshipctl/pkg/remote/redfish/vendors/dell"
|
|
)
|
|
|
|
// ErrIncompatibleAuthOptions is returned when incompatible
|
|
// AuthTypes are provided
|
|
type ErrIncompatibleAuthOptions struct {
|
|
ForbiddenOptions []string
|
|
AuthType string
|
|
}
|
|
|
|
// NewErrIncompetibleAuthOptions returns Error of type
|
|
// ErrIncompatibleAuthOptions
|
|
func NewErrIncompetibleAuthOptions(fo []string, ao string) error {
|
|
return ErrIncompatibleAuthOptions{
|
|
ForbiddenOptions: fo,
|
|
AuthType: ao,
|
|
}
|
|
}
|
|
|
|
// Error of type ErrIncompatibleAuthOptions is returned when
|
|
// ssh-pass type is selected and http-pass, ssh-key or key-pass
|
|
// options are defined
|
|
func (e ErrIncompatibleAuthOptions) Error() string {
|
|
return fmt.Sprintf("Cannot use %s options with an auth type %s", e.ForbiddenOptions, e.AuthType)
|
|
}
|
|
|
|
// ErrAuthTypeNotSupported is returned when wrong AuthType is provided
|
|
type ErrAuthTypeNotSupported struct {
|
|
}
|
|
|
|
func (e ErrAuthTypeNotSupported) Error() string {
|
|
return "Invalid Auth type. Allowed types: " + strings.Join(AllowedAuthTypes, ",")
|
|
}
|
|
|
|
// ErrRepoSpecRequiresURL is returned when repository URL is not specified
|
|
type ErrRepoSpecRequiresURL struct {
|
|
}
|
|
|
|
func (e ErrRepoSpecRequiresURL) Error() string {
|
|
return "Repository spec requires url."
|
|
}
|
|
|
|
// ErrMutuallyExclusiveCheckout is returned if
|
|
// mutually exclusive options are given as checkout options
|
|
type ErrMutuallyExclusiveCheckout struct {
|
|
}
|
|
|
|
func (e ErrMutuallyExclusiveCheckout) Error() string {
|
|
return "Checkout mutually exclusive, use either: commit-hash, branch or tag."
|
|
}
|
|
|
|
// ErrRepositoryNotFound is returned if repository is empty
|
|
// when using in set-manifest
|
|
type ErrRepositoryNotFound struct {
|
|
Name string
|
|
}
|
|
|
|
func (e ErrRepositoryNotFound) Error() string {
|
|
return fmt.Sprintf("Repository %q not found.", e.Name)
|
|
}
|
|
|
|
// ErrMissingRepositoryName is returned if repository name is empty
|
|
// when using in set-manifest
|
|
type ErrMissingRepositoryName struct {
|
|
}
|
|
|
|
func (e ErrMissingRepositoryName) Error() string {
|
|
return "Missing repository name."
|
|
}
|
|
|
|
// ErrMissingRepoURL is returned if repository is empty
|
|
// when using --primary in set-manifest
|
|
type ErrMissingRepoURL struct {
|
|
}
|
|
|
|
func (e ErrMissingRepoURL) Error() string {
|
|
return "A valid URL should be specified."
|
|
}
|
|
|
|
// ErrMissingRepoCheckoutOptions is returned if repository checkout
|
|
// options is empty in set-manifest
|
|
type ErrMissingRepoCheckoutOptions struct {
|
|
}
|
|
|
|
func (e ErrMissingRepoCheckoutOptions) Error() string {
|
|
return "Missing repository checkout options."
|
|
}
|
|
|
|
// ErrBootstrapInfoNotFound returned if bootstrap
|
|
// information is not found for cluster
|
|
type ErrBootstrapInfoNotFound struct {
|
|
Name string
|
|
}
|
|
|
|
func (e ErrBootstrapInfoNotFound) Error() string {
|
|
return fmt.Sprintf("Bootstrap info %q not found.", e.Name)
|
|
}
|
|
|
|
// ErrInvalidConfig returned in case of incorrect configuration
|
|
type ErrInvalidConfig struct {
|
|
What string
|
|
}
|
|
|
|
func (e ErrInvalidConfig) Error() string {
|
|
return fmt.Sprintf("Invalid configuration: %s", e.What)
|
|
}
|
|
|
|
// ErrMissingConfig returned in case of missing configuration
|
|
type ErrMissingConfig struct {
|
|
What string
|
|
}
|
|
|
|
func (e ErrMissingConfig) Error() string {
|
|
return "Missing configuration: " + e.What
|
|
}
|
|
|
|
// ErrConfigFailed returned in case of failure during configuration
|
|
type ErrConfigFailed struct {
|
|
}
|
|
|
|
func (e ErrConfigFailed) Error() string {
|
|
return "Configuration failed to complete."
|
|
}
|
|
|
|
// ErrManagementConfigurationNotFound describes a situation in which a user has attempted to reference a management
|
|
// configuration that cannot be referenced.
|
|
type ErrManagementConfigurationNotFound struct {
|
|
Name string
|
|
}
|
|
|
|
func (e ErrManagementConfigurationNotFound) Error() string {
|
|
return fmt.Sprintf("Unknown management configuration '%s'.", e.Name)
|
|
}
|
|
|
|
// ErrMissingCurrentContext returned in case --current used without setting current-context
|
|
type ErrMissingCurrentContext struct {
|
|
}
|
|
|
|
func (e ErrMissingCurrentContext) Error() string {
|
|
return "Current context must be set before using --current flag."
|
|
}
|
|
|
|
// ErrMissingManagementConfiguration means the management configuration was not defined for the active cluster.
|
|
type ErrMissingManagementConfiguration struct {
|
|
cluster *Cluster
|
|
}
|
|
|
|
func (e ErrMissingManagementConfiguration) Error() string {
|
|
return fmt.Sprintf("Management configuration %s for cluster %s undefined.", e.cluster.ManagementConfiguration,
|
|
e.cluster.NameInKubeconf)
|
|
}
|
|
|
|
// ErrMissingPrimaryRepo returned when Primary Repository is not set in context manifest
|
|
type ErrMissingPrimaryRepo struct {
|
|
}
|
|
|
|
func (e ErrMissingPrimaryRepo) Error() string {
|
|
return "Current context manifest must have a primary repository set."
|
|
}
|
|
|
|
// ErrMissingPhaseDocument returned when appropriate Phase document was not found in the filesystem
|
|
type ErrMissingPhaseDocument struct {
|
|
PhaseName string
|
|
}
|
|
|
|
func (e ErrMissingPhaseDocument) Error() string {
|
|
return fmt.Sprintf("Phase document '%s' was not found. "+
|
|
"You can initialize it using 'airshipctl document init %s' command.", e.PhaseName, e.PhaseName)
|
|
}
|
|
|
|
// ErrConflictingAuthOptions returned in case both token and username/password is set at same time
|
|
type ErrConflictingAuthOptions struct {
|
|
}
|
|
|
|
func (e ErrConflictingAuthOptions) Error() string {
|
|
return "Specifying token and username/password is not allowed at the same time."
|
|
}
|
|
|
|
// ErrConflictingClusterOptions returned when both certificate-authority and
|
|
// insecure-skip-tls-verify is set at same time
|
|
type ErrConflictingClusterOptions struct {
|
|
}
|
|
|
|
func (e ErrConflictingClusterOptions) Error() string {
|
|
return "Specifying certificate-authority and insecure-skip-tls-verify mode is not allowed at the same time."
|
|
}
|
|
|
|
// ErrEmptyClusterName returned when empty cluster name is set
|
|
type ErrEmptyClusterName struct {
|
|
}
|
|
|
|
func (e ErrEmptyClusterName) Error() string {
|
|
return "Cluster name must not be empty."
|
|
}
|
|
|
|
// ErrConflictingContextOptions returned when both context and --current is set at same time
|
|
type ErrConflictingContextOptions struct {
|
|
}
|
|
|
|
func (e ErrConflictingContextOptions) Error() string {
|
|
return "Specifying context and --current Flag is not allowed at the same time."
|
|
}
|
|
|
|
// ErrEmptyContextName returned when empty context name is set
|
|
type ErrEmptyContextName struct {
|
|
}
|
|
|
|
func (e ErrEmptyContextName) Error() string {
|
|
return "Context name must not be empty."
|
|
}
|
|
|
|
// ErrDecodingCredentials returned when the given string cannot be decoded
|
|
type ErrDecodingCredentials struct {
|
|
Given string
|
|
}
|
|
|
|
func (e ErrDecodingCredentials) Error() string {
|
|
return fmt.Sprintf("Error decoding credentials. String '%s' cannot not be decoded", e.Given)
|
|
}
|
|
|
|
// ErrUnknownManagementType describes a situation in which an unknown management type is listed in the airshipctl
|
|
// config.
|
|
type ErrUnknownManagementType struct {
|
|
Type string
|
|
}
|
|
|
|
func (e ErrUnknownManagementType) Error() string {
|
|
return fmt.Sprintf("Unknown management type '%s'. Known types include '%s' and '%s'.", e.Type,
|
|
redfish.ClientType, redfishdell.ClientType)
|
|
}
|