config

package
v1.0.0-alpha.19 Latest Latest
Warning

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

Go to latest
Published: Apr 7, 2022 License: Apache-2.0 Imports: 19 Imported by: 2

Documentation

Index

Constants

View Source
const (
	// Name is the file name of the porter configuration file.
	Name = "porter.yaml"

	// EnvHOME is the name of the environment variable containing the porter home directory path.
	EnvHOME = "PORTER_HOME"

	// EnvBundleName is the name of the environment variable containing the name of the bundle.
	EnvBundleName = "CNAB_BUNDLE_NAME"

	// EnvInstallationName is the name of the environment variable containing the name of the installation.
	EnvInstallationName = "CNAB_INSTALLATION_NAME"

	// EnvACTION is the requested action to be executed
	EnvACTION = "CNAB_ACTION"

	// EnvDEBUG is a custom porter parameter that signals that --debug flag has been passed through from the client to the runtime.
	EnvDEBUG = "PORTER_DEBUG"

	// EnvCorrelationID is the name of the environment variable containing the
	// id to correlate logs with a workflow.
	EnvCorrelationID = "PORTER_CORRELATION_ID"

	// CustomPorterKey is the key in the bundle.json custom section that contains the Porter stamp
	// It holds all the metadata that Porter includes that is specific to Porter about the bundle.
	CustomPorterKey = "sh.porter"

	// BundleOutputsDir is the directory where outputs are expected to be placed
	// during the execution of a bundle action.
	BundleOutputsDir = "/cnab/app/outputs"

	// ClaimFilepath is the filepath to the claim.json inside of an invocation image
	ClaimFilepath = "/cnab/claim.json"

	// EnvPorterInstallationNamespace is the name of the environment variable which is injected into the
	// invocation image, containing the namespace of the installation.
	EnvPorterInstallationNamespace = "PORTER_INSTALLATION_NAMESPACE"

	// EnvPorterInstallationName is the name of the environment variable which is injected into the
	// invocation image, containing the name of the installation.
	EnvPorterInstallationName = "PORTER_INSTALLATION_NAME"
)
View Source
const (
	// BuildDriverDocker is no longer supported.
	BuildDriverDocker = "docker"

	// BuildDriverBuildkit is the configuration value for specifying BuildKit as
	// the build driver.
	BuildDriverBuildkit = "buildkit"
)

Variables

This section is empty.

Functions

func NoopDataLoader

func NoopDataLoader(_ context.Context, _ *Config, _ map[string]interface{}) error

NoopDataLoader skips loading the datastore.

Types

type Config

type Config struct {
	*portercontext.Context
	Data       Data
	DataLoader DataStoreLoaderFunc

	// ConfigFilePath is the path to the loaded configuration file
	ConfigFilePath string
	// contains filtered or unexported fields
}

func New

func New() *Config

New Config initializes a default porter configuration.

func (*Config) GetBuildDriver added in v1.0.1

func (c *Config) GetBuildDriver() string

GetBuildDriver determines the correct build driver to use, taking into account experimental flags. Use this instead of Config.Data.BuildDriver directly.

func (*Config) GetBundleArchiveLogs

func (c *Config) GetBundleArchiveLogs() (string, error)

GetBundleArchiveLogs locates the output for Bundle Archive Operations.

func (*Config) GetBundlesCache

func (c *Config) GetBundlesCache() (string, error)

GetBundlesCache locates the bundle cache from the porter home directory.

func (*Config) GetFeatureFlags added in v1.0.1

func (c *Config) GetFeatureFlags() experimental.FeatureFlags

GetFeatureFlags indicates which experimental feature flags are enabled

func (*Config) GetHomeDir

func (c *Config) GetHomeDir() (string, error)

GetHomeDir determines the absolute path to the porter home directory. Hierarchy of checks: - PORTER_HOME - HOME/.porter or USERPROFILE/.porter

func (*Config) GetPluginPath

func (c *Config) GetPluginPath(plugin string) (string, error)

func (*Config) GetPluginsDir

func (c *Config) GetPluginsDir() (string, error)

func (*Config) GetPorterPath

func (c *Config) GetPorterPath() (string, error)

func (*Config) GetSchemaCheckStrategy added in v1.0.1

func (c *Config) GetSchemaCheckStrategy(ctx context.Context) schema.CheckStrategy

func (*Config) GetSecretsPlugin added in v1.0.1

func (c *Config) GetSecretsPlugin(name string) (SecretsPlugin, error)

func (*Config) GetStorage added in v1.0.1

func (c *Config) GetStorage(name string) (StoragePlugin, error)

func (*Config) IsFeatureEnabled added in v1.0.1

func (c *Config) IsFeatureEnabled(flag experimental.FeatureFlags) bool

IsFeatureEnabled returns true if the specified experimental flag is enabled.

func (*Config) Load added in v1.0.1

func (c *Config) Load(ctx context.Context, resolveSecret func(secretKey string) (string, error)) error

Load loads the configuration file, rendering any templating used in the config file such as ${secret.NAME} or ${env.NAME}. Pass nil for resolveSecret to skip resolving secrets.

func (*Config) SetExperimentalFlags added in v1.0.1

func (c *Config) SetExperimentalFlags(flags experimental.FeatureFlags)

SetExperimentalFlags programmatically, overriding Config.Data.ExperimentalFlags. Example: Config.SetExperimentalFlags(experimental.FlagStructuredLogs | ...)

func (*Config) SetHomeDir

func (c *Config) SetHomeDir(home string)

SetHomeDir is a test function that allows tests to use an alternate Porter home directory.

func (*Config) SetPorterPath added in v0.30.1

func (c *Config) SetPorterPath(path string)

SetPorterPath is a test function that allows tests to use an alternate Porter binary location.

type Data

type Data struct {

	// BuildDriver is the driver to use when building bundles.
	// Available values are: docker, buildkit.
	// Do not use directly, use Config.GetBuildDriver.
	BuildDriver string `mapstructure:"build-driver"`

	// RuntimeDriver is the driver to use when executing bundles.
	// Available values are: docker, kubernetes.
	RuntimeDriver string `mapstructure:"runtime-driver"`

	// AllowDockerHostAccess grants bundles access to the underlying docker host
	// upon which it is running so that it can do things like build and run containers.
	// It's a security risk.
	AllowDockerHostAccess bool `mapstructure:"allow-docker-host-access"`

	// DefaultStoragePlugin is the storage plugin to use when no named storage is specified.
	DefaultStoragePlugin string `mapstructure:"default-storage-plugin"`

	// DefaultStorage to use when a named storage is not specified by a flag.
	DefaultStorage string `mapstructure:"default-storage"`

	// ExperimentalFlags is a list of enabled experimental.FeatureFlags.
	// Use Config.IsFeatureEnabled instead of parsing directly.
	ExperimentalFlags []string `mapstructure:"experimental"`

	// StoragePlugins defined in the configuration file.
	StoragePlugins []StoragePlugin `mapstructure:"storage"`

	// DefaultSecretsPlugin is the plugin to use when no plugin is specified.
	DefaultSecretsPlugin string `mapstructure:"default-secrets-plugin"`

	// DefaultSecrets to use when one is not specified by a flag.
	DefaultSecrets string `mapstructure:"default-secrets"`

	// Namespace is the default namespace for commands that do not override it with a flag.
	Namespace string `mapstructure:"namespace"`

	// SecretsPlugin defined in the configuration file.
	SecretsPlugin []SecretsPlugin `mapstructure:"secrets"`

	// Logs are settings related to Porter's log files.
	Logs LogConfig `mapstructure:"logs"`

	// Telemetry are settings related to Porter's tracing with open telemetry.
	Telemetry TelemetryConfig `mapstructure:"telemetry"`

	// SchemaCheck specifies how strict Porter should be when comparing the
	// schemaVersion field on a resource with the supported schemaVersion.
	// Supported values are: exact, minor, major, none.
	SchemaCheck string `mapstructure:"schema-check"`
}

Data is the data stored in PORTER_HOME/porter.toml|yaml|json. Use the accessor functions to ensure default values are handled properly.

func DefaultDataStore added in v1.0.1

func DefaultDataStore() Data

DefaultDataStore used when no config file is found.

type DataStoreLoaderFunc

type DataStoreLoaderFunc func(context.Context, *Config, map[string]interface{}) error

DataStoreLoaderFunc defines the Config.DataLoader function signature used to load data into Config.DataStore.

func LoadFromEnvironment added in v1.0.1

func LoadFromEnvironment() DataStoreLoaderFunc

LoadFromEnvironment loads data with the following precedence: * Environment variables where --flag is assumed to be PORTER_FLAG * Config file * Flag default (lowest)

func LoadFromViper added in v1.0.1

func LoadFromViper(viperCfg func(v *viper.Viper)) DataStoreLoaderFunc

LoadFromViper loads data from a configurable viper instance.

type LogConfig added in v1.0.1

type LogConfig struct {
	Enabled bool     `mapstructure:"enabled,omitempty"`
	Level   LogLevel `mapstructure:"level,omitempty"`
}

LogConfig are settings related to Porter's log files.

type LogLevel added in v1.0.1

type LogLevel string

func (LogLevel) Level added in v1.0.1

func (l LogLevel) Level() zapcore.Level

type PluginConfig

type PluginConfig struct {
	Name         string                 `mapstructure:"name"`
	PluginSubKey string                 `mapstructure:"plugin"`
	Config       map[string]interface{} `mapstructure:"config"`
}

PluginConfig is a standardized config stanza that defines which plugin to use and its custom configuration.

func (PluginConfig) GetConfig

func (p PluginConfig) GetConfig() interface{}

func (PluginConfig) GetName

func (p PluginConfig) GetName() string

func (PluginConfig) GetPluginSubKey

func (p PluginConfig) GetPluginSubKey() string

type SecretsPlugin added in v1.0.1

type SecretsPlugin struct {
	PluginConfig `mapstructure:",squash"`
}

SecretsPlugin is the plugin stanza for secrets.

type StoragePlugin added in v1.0.1

type StoragePlugin struct {
	PluginConfig `mapstructure:",squash"`
}

StoragePlugin is the plugin stanza for storage.

type TelemetryConfig added in v1.0.1

type TelemetryConfig struct {
	Enabled     bool              `mapstructure:"enabled,omitempty"`
	Endpoint    string            `mapstructure:"endpoint,omitempty"`
	Protocol    string            `mapstructure:"protocol,omitempty"`
	Insecure    bool              `mapstructure:"insecure,omitempty"`
	Certificate string            `mapstructure:"certificate,omitempty"`
	Headers     map[string]string `mapstructure:"headers,omitempty"`
	Timeout     string            `mapstructure:"timeout,omitempty"`
	Compression string            `mapstructure:"compression,omitempty"`
}

TelemetryConfig specifies how to connect to an open telemetry collector. See https://github.com/open-telemetry/opentelemetry-go/tree/main/exporters/otlp/otlptrace

type TestConfig

type TestConfig struct {
	*Config
	TestContext *portercontext.TestContext
}

func NewTestConfig

func NewTestConfig(t *testing.T) *TestConfig

NewTestConfig initializes a configuration suitable for testing: * buffered output, * in-memory file system, * does not automatically load config from ambient environment.

func (*TestConfig) SetupIntegrationTest

func (c *TestConfig) SetupIntegrationTest() (testDir string, homeDir string)

SetupIntegrationTest initializes the filesystem with the supporting files in a temp PORTER_HOME directory.

func (*TestConfig) SetupUnitTest added in v0.31.0

func (c *TestConfig) SetupUnitTest()

SetupUnitTest initializes the unit test filesystem with the supporting files in the PORTER_HOME directory.

Jump to

Keyboard shortcuts

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