workspaces

package
v0.26.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2023 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

workspaces contains functionality for using the workspace concept of the CLI to store data related to the remote endpoints that are described by the workspace concept (Radius control plane, environment, et al).

Index

Constants

View Source
const (
	// SourceFallback indicates that the workspace was not loaded from config, and is using default settings.
	SourceFallback = "fallback"

	// SourceLocalDirectory indicates that the workspace was loaded from the users working directory.
	SourceLocalDirectory = "localdirectory"

	// SourceUserConfig indicates that the workspace was loaded from per-user config.
	SourceUserConfig = "userconfig"
)
View Source
const KindKubernetes string = "kubernetes"

Variables

View Source
var ErrEditableWorkspaceRequired error = &EditableWorkspaceRequiredError{}

ErrNamedWorkspaceRequired is a value of EditableWorkspaceRequiredError.

View Source
var ErrNamedWorkspaceRequired error = &NamedWorkspaceRequiredError{}

ErrNamedWorkspaceRequired is a value of NamedWorkspaceRequiredError.

Functions

This section is empty.

Types

type ConnectionConfig

type ConnectionConfig interface {
	fmt.Stringer
	GetKind() string
	Connect() (sdk.Connection, error)
}

type EditableWorkspaceRequiredError

type EditableWorkspaceRequiredError struct {
}

EditableWorkspaceRequiredError is an error used when an editable workspace must be specified by the user.

func (*EditableWorkspaceRequiredError) Error

Error() returns an message describing EditableWorkspaceRequiredError.

type KubernetesConnectionConfig

type KubernetesConnectionConfig struct {
	// Kind specifies the kind of connection. For KubernetesConnectionConfig this is always 'kubernetes'.
	Kind string `json:"kind" mapstructure:"kind" yaml:"kind"`

	// Context is the kubernetes kubeconfig context used to connect. The empty string is allowed as it
	// maps to the current kubeconfig context.
	Context string `json:"context" mapstructure:"context" yaml:"context"`

	// Overrides describes local overrides for testing purposes. This field is optional.
	Overrides KubernetesConnectionOverrides `json:"overrides,omitempty" mapstructure:"overrides" yaml:"overrides,omitempty"`
}

func (*KubernetesConnectionConfig) Connect

Connect() checks if a URL is provided in the Overrides field, and if so, creates a direct connection to the URL. If no URL is provided, it creates a connection to Kubernetes using the provided context. If an error occurs, an error is returned.

func (*KubernetesConnectionConfig) GetKind

func (c *KubernetesConnectionConfig) GetKind() string

GetKind() returns the string "KindKubernetes" for a KubernetesConnectionConfig object.

func (*KubernetesConnectionConfig) String

func (c *KubernetesConnectionConfig) String() string

String() returns a string that describes the Kubernetes connection configuration.

type KubernetesConnectionOverrides

type KubernetesConnectionOverrides struct {
	// UCP describes an override for testing UCP. this field is optional.
	UCP string `json:"ucp" mapstructure:"ucp" yaml:"ucp"`
}

type NamedWorkspaceRequiredError

type NamedWorkspaceRequiredError struct {
}

NamedWorkspaceRequiredError is an error used when a named workspace must be specified by the user.

func (*NamedWorkspaceRequiredError) Error

Error() returns a string describing NamedWorkspaceRequiredError.

type Source

type Source string

Source specifies how a workspace was loaded.

type Workspace

type Workspace struct {
	// Source indicates how the workspace was loaded.
	Source Source `json:"-" mapstructure:"-" yaml:"-"`

	// Directory config contains per-directory overrides and settings that affect the behavior of `rad`.
	// This is not stored in the `~/.rad/config.yaml`.
	DirectoryConfig config.DirectoryConfig `json:"-" mapstructure:"-" yaml:"-"`

	// Name is the name of the workspace. The name is not stored as part of the workspace entry but is populated
	// by the configuration APIs in this package.
	//
	// Will be set if the Source == SourceUserConfig, otherwise will be empty.
	Name string `json:"-" mapstructure:"-" yaml:"-"`

	// Connection represents the connection to the workspace. The details required by the connection are different
	// depending on the kind of connection. For example a Kubernetes connection requires a valid kubeconfig context
	// entry and a namespace.
	Connection map[string]any `json:"connection" mapstructure:"connection" yaml:"connection" validate:"required"`

	// Environment represents the default environment used for deployments of applications. This field is optional.
	Environment string `json:"environment,omitempty" mapstructure:"environment" yaml:"environment,omitempty"`

	// Scope represents the default scope used for deployments of Radius resources. This field is optional.
	Scope string `json:"scope,omitempty" mapstructure:"scope" yaml:"scope,omitempty"`

	// DefaultApplication represents the default application used for deployments and management commands. This field is optional.
	DefaultApplication string `json:"defaultApplication,omitempty" mapstructure:"defaultApplication" yaml:"defaultApplication,omitempty"`
}

Workspace represents configuration for the rad CLI.

Workspaces may:

- be stored in per-user config (~/.rad/config.yaml) OR

- be stored in the user's working directory `$pwd/.rad/rad.yaml` OR

- may represent the rad CLI's fallback configuration when no configuration is present

func MakeFallbackWorkspace

func MakeFallbackWorkspace() *Workspace

MakeFallbackWorkspace() creates a Workspace struct with a SourceFallback source and a Kubernetes connection with an empty context. It returns a pointer to the Workspace struct.

func (Workspace) Connect

func (ws Workspace) Connect() (sdk.Connection, error)

Connect attempts to create a connection to the workspace using the connection configuration and returns the connection and an error if one occurs.

func (Workspace) ConnectionConfig

func (ws Workspace) ConnectionConfig() (ConnectionConfig, error)

ConnectionConfig() checks the "kind" field of the workspace's Connection object and returns a ConnectionConfig object based on the kind, or an error if the kind is unsupported.

func (Workspace) ConnectionConfigEquals

func (ws Workspace) ConnectionConfigEquals(other ConnectionConfig) bool

ConnectionConfigEquals() checks if the given ConnectionConfig is of type Kubernetes and if the Kubernetes context is the same as the one stored in the Workspace, and returns a boolean value accordingly.

func (Workspace) FmtConnection

func (ws Workspace) FmtConnection() string

FmtConnection can safely format connection info for display to users.

func (Workspace) IsEditableWorkspace

func (w Workspace) IsEditableWorkspace() bool

IsEditableWorkspace returns true for workspaces stored in per-user or directory-based configuration. These workspaces have configuration files and thus can have their settings updated.

func (Workspace) IsNamedWorkspace

func (w Workspace) IsNamedWorkspace() bool

IsNamedWorkspace returns true for workspaces stored in per-user configuration. These workspaces have names that can be referenced in commands with the `--workspace` flag.

func (Workspace) IsSameKubernetesContext

func (ws Workspace) IsSameKubernetesContext(kubeContext string) bool

IsSameKubernetesContext checks if the "context" field of the "Connection" map of the "Workspace" struct is equal to the given "kubeContext" string and returns a boolean value accordingly.

func (Workspace) KubernetesContext

func (ws Workspace) KubernetesContext() (string, bool)

KubernetesContext checks if the workspace connection is of type Kubernetes and returns the context string if it exists, otherwise it returns an empty string and false.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL