Documentation ¶
Index ¶
- Constants
- func IsCoreAction(value Action) bool
- func NoopDataLoader(config *Config) error
- func OutputAppliesTo(action string, output bundle.Output) bool
- type Action
- type BundleOutput
- type Config
- func (c *Config) GetBundlesCache() (string, error)
- func (c *Config) GetClaimsDir() (string, error)
- func (c *Config) GetCredentialPath(name string) (string, error)
- func (c *Config) GetCredentialsDir() (string, error)
- func (c *Config) GetHomeDir() (string, error)
- func (c *Config) GetMixinDir(mixin string) (string, error)
- func (c *Config) GetMixinPath(mixin string) (string, error)
- func (c *Config) GetMixinRuntimePath(mixin string) (string, error)
- func (c *Config) GetMixinsDir() (string, error)
- func (c *Config) GetPorterPath() (string, error)
- func (c *Config) GetPorterRuntimePath() (string, error)
- func (c *Config) LoadData() error
- func (c *Config) LoadManifest() error
- func (c *Config) LoadManifestFrom(file string) error
- func (c *Config) ReadManifest(path string) (*Manifest, error)
- func (c *Config) SetHomeDir(home string)
- type CredentialDefinition
- type CustomActionDefinition
- type Data
- type DataStoreLoaderFunc
- type Dependency
- type Location
- type Manifest
- type MappedImage
- type MixinDeclaration
- type OutputDefinition
- type ParameterDefinition
- type RuntimeManifest
- func (m *RuntimeManifest) ApplyStepOutputs(step *Step, assignments map[string]string) error
- func (m *RuntimeManifest) GetSensitiveValues() []string
- func (m *RuntimeManifest) GetSteps() Steps
- func (m *RuntimeManifest) Prepare() error
- func (m *RuntimeManifest) ResolveStep(step *Step) error
- func (m *RuntimeManifest) Validate() error
- type Step
- type StepOutput
- type Steps
- type TestConfig
Constants ¶
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" // EnvClaimName is the name of the environment variable containing the name of the claim. EnvClaimName = "CNAB_INSTALLATION_NAME" // EnvACTION is the request 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" CustomBundleKey = "sh.porter" // BundleOutputsDir is the directory where outputs are expected to be placed // during the execution of a bundle action. BundleOutputsDir = "/cnab/app/outputs" )
Variables ¶
This section is empty.
Functions ¶
func IsCoreAction ¶
IsCoreAction determines if the value is a core action from the CNAB spec.
func NoopDataLoader ¶
NoopDataLoader skips loading the datastore.
func OutputAppliesTo ¶
TODO: remove in favor of cnab-go logic: https://github.com/deislabs/cnab-go/pull/129
Types ¶
type BundleOutput ¶
type Config ¶
type Config struct { *context.Context Data *Data Manifest *Manifest ManifestPath string DataLoader DataStoreLoaderFunc // contains filtered or unexported fields }
func (*Config) GetBundlesCache ¶
GetBundlesDir locates the bundle cache from the porter home directory.
func (*Config) GetClaimsDir ¶
func (*Config) GetCredentialsDir ¶
func (*Config) GetHomeDir ¶
GetHomeDir determines the absolute path to the porter home directory.
func (*Config) GetMixinRuntimePath ¶
func (*Config) GetMixinsDir ¶
func (*Config) GetPorterPath ¶
func (*Config) GetPorterRuntimePath ¶
func (*Config) LoadData ¶
LoadData from the datastore in PORTER_HOME. This defaults to doing nothing unless DataLoader has been set.
func (*Config) LoadManifest ¶
func (*Config) LoadManifestFrom ¶
func (*Config) ReadManifest ¶
ReadManifest determines if specified path is a URL or a filepath. After reading the data in the path it returns a Manifest and any errors
func (*Config) SetHomeDir ¶
type CredentialDefinition ¶
type CredentialDefinition struct { Name string `yaml:"name"` Description string `yaml:"description,omitempty"` Required bool `yaml:"required,omitempty"` Location `yaml:",inline"` }
CredentialDefinition represents the structure or fields of a credential parameter
func (*CredentialDefinition) UnmarshalYAML ¶
func (cd *CredentialDefinition) UnmarshalYAML(unmarshal func(interface{}) error) error
type CustomActionDefinition ¶
type DataStoreLoaderFunc ¶
type Dependency ¶
type Dependency struct { Tag string `yaml:"tag"` Versions []string `yaml:"versions"` AllowPrereleases bool `yaml:"prereleases"` Parameters map[string]string `yaml:"parameters,omitempty"` }
func (*Dependency) Validate ¶
func (d *Dependency) Validate() error
type Location ¶
type Location struct { Path string `yaml:"path,omitempty"` EnvironmentVariable string `yaml:"env,omitempty"` }
TODO: use cnab-go's bundle.Location instead, once yaml tags have been added Location represents a Parameter or Credential location in an InvocationImage
type Manifest ¶
type Manifest struct { Name string `yaml:"name,omitempty"` Description string `yaml:"description,omitempty"` Version string `yaml:"version,omitempty"` // Image is the name of the invocation image in the format REGISTRY/NAME:TAG Image string `yaml:"invocationImage,omitempty"` // BundleTag is the name of the bundle in the format REGISTRY/NAME:TAG BundleTag string `yaml:"tag"` // Dockerfile is the relative path to the Dockerfile template for the invocation image Dockerfile string `yaml:"dockerfile,omitempty"` Mixins []MixinDeclaration `yaml:"mixins,omitempty"` Install Steps `yaml:"install"` Uninstall Steps `yaml:"uninstall"` Upgrade Steps `yaml:"upgrade"` CustomActions map[string]Steps `yaml:"-"` CustomActionDefinitions map[string]CustomActionDefinition `yaml:"customActions,omitempty"` Parameters []ParameterDefinition `yaml:"parameters,omitempty"` Credentials []CredentialDefinition `yaml:"credentials,omitempty"` Dependencies map[string]Dependency `yaml:"dependencies,omitempty"` Outputs []OutputDefinition `yaml:"outputs,omitempty"` // ImageMap is a map of images referenced in the bundle. If an image relocation mapping is later provided, that // will be mounted at as a file at runtime to /cnab/app/relocation-mapping.json. // TODO: porter should handle the relocation and overwrite the repository and tag (if present), and // populate originalImage ImageMap map[string]MappedImage `yaml:"images,omitempty"` }
func UnmarshalManifest ¶
type MappedImage ¶
type MappedImage struct { Description string `yaml:"description"` ImageType string `yaml:"imageType"` Repository string `yaml:"repository"` OriginalImage string `yaml:"originalImage,omitempty"` Digest string `yaml:"digest,omitempty"` Size uint64 `yaml:"size,omitempty"` MediaType string `yaml:"mediaType,omitempty"` Labels map[string]string `yaml:"labels,omitempty"` Tag string `yaml:"tag,omitempty"` }
type MixinDeclaration ¶
type MixinDeclaration struct { Name string Config interface{} }
func (MixinDeclaration) MarshalYAML ¶
func (m MixinDeclaration) MarshalYAML() (interface{}, error)
MarshalYAML allows mixin declarations to either be a normal list of strings mixins: - exec - helm or allow some entries to have config data defined
- az: extensions:
- iot
func (*MixinDeclaration) UnmarshalYAML ¶
func (m *MixinDeclaration) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML allows mixin declarations to either be a normal list of strings mixins: - exec - helm or allow some entries to have config data defined
- az: extensions:
- iot
type OutputDefinition ¶
type OutputDefinition struct { Name string `yaml:"name"` ApplyTo []string `yaml:"applyTo,omitempty"` Sensitive bool `yaml:"sensitive"` definition.Schema `yaml:",inline"` }
OutputDefinition defines a single output for a CNAB
func (*OutputDefinition) Validate ¶
func (od *OutputDefinition) Validate() error
type ParameterDefinition ¶
type ParameterDefinition struct { Name string `yaml:"name"` Sensitive bool `yaml:"sensitive"` // These fields represent a subset of bundle.Parameter as defined in deislabs/cnab-go, // minus the 'Description' field (definition.Schema's will be used) and `Definition` field ApplyTo []string `yaml:"applyTo,omitempty"` Destination Location `yaml:",inline,omitempty"` definition.Schema `yaml:",inline"` }
ParameterDefinition defines a single parameter for a CNAB bundle
func (*ParameterDefinition) DeepCopy ¶
func (pd *ParameterDefinition) DeepCopy() *ParameterDefinition
DeepCopy copies a ParameterDefinition and returns the copy
func (*ParameterDefinition) Validate ¶
func (pd *ParameterDefinition) Validate() error
type RuntimeManifest ¶
type RuntimeManifest struct { *Manifest *context.Context Action Action // contains filtered or unexported fields }
func NewRuntimeManifest ¶
func NewRuntimeManifest(cxt *context.Context, action Action, manifest *Manifest) RuntimeManifest
func (*RuntimeManifest) ApplyStepOutputs ¶
func (m *RuntimeManifest) ApplyStepOutputs(step *Step, assignments map[string]string) error
func (*RuntimeManifest) GetSensitiveValues ¶
func (m *RuntimeManifest) GetSensitiveValues() []string
func (*RuntimeManifest) GetSteps ¶
func (m *RuntimeManifest) GetSteps() Steps
func (*RuntimeManifest) Prepare ¶
func (m *RuntimeManifest) Prepare() error
Prepare prepares the runtime environment prior to step execution
func (*RuntimeManifest) ResolveStep ¶
func (m *RuntimeManifest) ResolveStep(step *Step) error
ResolveStep will walk through the Step's data and resolve any placeholder data using the definitions in the manifest, like parameters or credentials.
func (*RuntimeManifest) Validate ¶
func (m *RuntimeManifest) Validate() error
type Step ¶
type Step struct {
Data map[string]interface{} `yaml:",inline"`
}
func (*Step) GetDescription ¶
GetDescription returns a description of the step. Every step must have this property.
func (*Step) GetMixinName ¶
type StepOutput ¶
type TestConfig ¶
type TestConfig struct { *Config TestContext *context.TestContext }
func NewTestConfig ¶
func NewTestConfig(t *testing.T) *TestConfig
NewTestConfig initializes a configuration suitable for testing, with the output buffered, and an in-memory file system.
func (*TestConfig) SetupIntegrationTest ¶
func (c *TestConfig) SetupIntegrationTest(home string)
InitializePorterHome initializes the filesystem with the supporting files in the PORTER_HOME directory.
func (*TestConfig) SetupPorterHome ¶
func (c *TestConfig) SetupPorterHome()
InitializePorterHome initializes the test filesystem with the supporting files in the PORTER_HOME directory.