config

package
v1.0.0-alpha.4 Latest Latest
Warning

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

Go to latest
Published: Oct 13, 2021 License: Apache-2.0 Imports: 9 Imported by: 11

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"

	// 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"
)
View Source
const (
	BuildDriverDocker   = "docker"
	BuildDriverBuildkit = "buildkit"
)

Variables

This section is empty.

Functions

func NoopDataLoader

func NoopDataLoader(_ *Config) error

NoopDataLoader skips loading the datastore.

Types

type Config

type Config struct {
	*context.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) GetBundleArchiveLogs

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

GetArchiveLogs locates the output for Bundle Archive Operations.

func (*Config) GetBundlesCache

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

GetBundlesDir locates the bundle cache from the porter home directory.

func (*Config) GetFeatureFlags added in v1.0.1

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

FeatureFlags 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) 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) LoadData

func (c *Config) LoadData() error

LoadData from the datastore in PORTER_HOME. This defaults to reading the configuration file and environment variables.

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.FlagBuildDrivers | ...)

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.
	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"`
}

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(*Config) error

func LoadFromEnvironment added in v1.0.1

func LoadFromEnvironment() DataStoreLoaderFunc

LoadHierarchicalConfig loads data with the following precedence: * User set flag Flags (highest) * 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 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 TestConfig

type TestConfig struct {
	*Config
	TestContext *context.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