manifest

package
v0.29.0 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2020 License: MIT Imports: 16 Imported by: 6

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetCoreActions

func GetCoreActions() []string

func GetParameterSourceForDependency added in v0.28.0

func GetParameterSourceForDependency(ref DependencyOutputReference) string

GetParameterSourceForDependency builds the parameter source name used by Porter internally for wiring up an dependency's output to a parameter.

func GetParameterSourceForOutput added in v0.28.0

func GetParameterSourceForOutput(outputName string) string

GetParameterSourceForOutput builds the parameter source name used by Porter internally for wiring up an output to a parameter.

func IsCoreAction

func IsCoreAction(value string) bool

IsCoreAction determines if the value is a core action from the CNAB spec.

func ParamToEnvVar added in v0.28.0

func ParamToEnvVar(name string) string

Convert a parameter name to an environment variable. Anything more complicated should define the variable explicitly.

func ReadManifestData

func ReadManifestData(cxt *context.Context, path string) ([]byte, error)

Types

type BundleOutput

type BundleOutput struct {
	Name                string `yaml:"name"`
	Path                string `yaml:"path"`
	EnvironmentVariable string `yaml:"env"`
}

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 CredentialDefinitions added in v0.28.0

type CredentialDefinitions map[string]CredentialDefinition

CredentialDefinitions allows us to represent credentials as a list in the YAML and work with them as a map internally

func (CredentialDefinitions) MarshalYAML added in v0.28.0

func (cd CredentialDefinitions) MarshalYAML() (interface{}, error)

func (*CredentialDefinitions) UnmarshalYAML added in v0.28.0

func (cd *CredentialDefinitions) UnmarshalYAML(unmarshal func(interface{}) error) error

type CustomActionDefinition

type CustomActionDefinition struct {
	Description       string `yaml:"description,omitempty"`
	ModifiesResources bool   `yaml:"modifies,omitempty"`
	Stateless         bool   `yaml:"stateless,omitempty"`
}

type Dependency

type Dependency struct {
	Name             string            `yaml:"name"`
	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 DependencyOutputReference added in v0.28.0

type DependencyOutputReference struct {
	Dependency string
	Output     string
}

func (DependencyOutputReference) String added in v0.28.0

func (r DependencyOutputReference) String() string

type DependencyOutputReferences added in v0.28.0

type DependencyOutputReferences map[string]DependencyOutputReference

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

func (Location) IsEmpty

func (l Location) IsEmpty() bool

type Manifest

type Manifest struct {
	// ManifestPath is the location from which the manifest was loaded, such as the path on the filesystem or a url.
	ManifestPath string `yaml:"-"`

	// TemplateVariables are the variables used in the templating, e.g. bundle.parameters.NAME, or bundle.outputs.NAME
	TemplateVariables []string `yaml:"-"`

	Name        string `yaml:"name,omitempty"`
	Description string `yaml:"description,omitempty"`
	Version     string `yaml:"version,omitempty"`

	// BundleTag is the name of the bundle in the format REGISTRY/NAME:TAG
	BundleTag string `yaml:"tag"`

	// Image is the name of the invocation image in the format REGISTRY/NAME:TAG
	// It doesn't map to any field in the manifest as it isn't meant to be user-specified
	Image string `yaml:"-"`

	// 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"`

	Custom                  map[string]interface{}            `yaml:"custom,omitempty"`
	CustomActions           map[string]Steps                  `yaml:"-"`
	CustomActionDefinitions map[string]CustomActionDefinition `yaml:"customActions,omitempty"`

	Parameters   ParameterDefinitions  `yaml:"parameters,omitempty"`
	Credentials  CredentialDefinitions `yaml:"credentials,omitempty"`
	Dependencies []Dependency          `yaml:"dependencies,omitempty"`
	Outputs      OutputDefinitions     `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.
	ImageMap map[string]MappedImage `yaml:"images,omitempty"`

	Required []RequiredExtension `yaml:"required,omitempty"`
}

func LoadManifestFrom

func LoadManifestFrom(cxt *context.Context, file string) (*Manifest, error)

func ReadManifest

func ReadManifest(cxt *context.Context, path string) (*Manifest, error)

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 UnmarshalManifest

func UnmarshalManifest(cxt *context.Context, manifestData []byte) (*Manifest, error)

func (*Manifest) GetTemplatedDependencyOutputs added in v0.28.0

func (m *Manifest) GetTemplatedDependencyOutputs() DependencyOutputReferences

GetTemplatedOutputs returns the output definitions for any bundle level outputs that have been templated, keyed by "DEPENDENCY.OUTPUT".

func (*Manifest) GetTemplatedOutputs added in v0.28.0

func (m *Manifest) GetTemplatedOutputs() OutputDefinitions

GetTemplatedOutputs returns the output definitions for any bundle level outputs that have been templated, keyed by the output name.

func (*Manifest) SetDefaults

func (m *Manifest) SetDefaults() error

SetDefaults updates the manifest with default values where not populated

func (*Manifest) SetInvocationImageFromBundleTag added in v0.27.2

func (m *Manifest) SetInvocationImageFromBundleTag(bundleTag string) error

SetInvocationImageFromBundleTag sets the invocation image name on the manifest per the provided bundle tag, also updating the manifest BundleTag value if it initially lacks a Docker tag

func (*Manifest) Validate

func (m *Manifest) Validate() error

type MappedImage

type MappedImage struct {
	Description string            `yaml:"description"`
	ImageType   string            `yaml:"imageType"`
	Repository  string            `yaml:"repository"`
	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"`
}

func (*MappedImage) Validate

func (mi *MappedImage) Validate() error

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

	// This is not in the CNAB spec, but it allows a mixin to create a file
	// and porter will take care of making it a proper output.
	Path string `yaml:"path,omitempty"`

	definition.Schema `yaml:",inline"`
}

OutputDefinition defines a single output for a CNAB

func (*OutputDefinition) DeepCopy

func (od *OutputDefinition) DeepCopy() *OutputDefinition

DeepCopy copies a ParameterDefinition and returns the copy

func (*OutputDefinition) Validate

func (od *OutputDefinition) Validate() error

type OutputDefinitions added in v0.28.0

type OutputDefinitions map[string]OutputDefinition

OutputDefinitions allows us to represent parameters as a list in the YAML and work with them as a map internally

func (OutputDefinitions) MarshalYAML added in v0.28.0

func (od OutputDefinitions) MarshalYAML() (interface{}, error)

func (*OutputDefinitions) UnmarshalYAML added in v0.28.0

func (od *OutputDefinitions) UnmarshalYAML(unmarshal func(interface{}) error) error

type ParameterDefinition

type ParameterDefinition struct {
	Name      string          `yaml:"name"`
	Sensitive bool            `yaml:"sensitive"`
	Source    ParameterSource `yaml:"source,omitempty"`

	// These fields represent a subset of bundle.Parameter as defined in cnabio/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) AppliesTo

func (pd *ParameterDefinition) AppliesTo(action string) bool

AppliesTo returns a boolean value specifying whether or not the Parameter applies to the provided action

func (*ParameterDefinition) DeepCopy

func (pd *ParameterDefinition) DeepCopy() *ParameterDefinition

DeepCopy copies a ParameterDefinition and returns the copy

func (*ParameterDefinition) UpdateApplyTo added in v0.28.0

func (pd *ParameterDefinition) UpdateApplyTo(m *Manifest)

UpdateApplyTo updates a parameter definition's applyTo section based on the provided manifest

func (*ParameterDefinition) Validate

func (pd *ParameterDefinition) Validate() error

type ParameterDefinitions added in v0.28.0

type ParameterDefinitions map[string]ParameterDefinition

ParameterDefinitions allows us to represent parameters as a list in the YAML and work with them as a map internally

func (ParameterDefinitions) MarshalYAML added in v0.28.0

func (pd ParameterDefinitions) MarshalYAML() (interface{}, error)

func (*ParameterDefinitions) UnmarshalYAML added in v0.28.0

func (pd *ParameterDefinitions) UnmarshalYAML(unmarshal func(interface{}) error) error

type ParameterSource added in v0.28.0

type ParameterSource struct {
	Dependency string `yaml:"dependency,omitempty"`
	Output     string `yaml:"output"`
}

type RequiredExtension

type RequiredExtension struct {
	Name   string
	Config map[string]interface{}
}

RequiredExtension represents a custom extension that is required in order for a bundle to work correctly

func (*RequiredExtension) UnmarshalYAML

func (r *RequiredExtension) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML allows required extensions to either be a normal list of strings required: - docker or allow some entries to have config data defined

  • vpn: name: mytrustednetwork

type Step

type Step struct {
	Data map[string]interface{} `yaml:",inline"`
}

func (*Step) GetDescription

func (s *Step) GetDescription() (string, error)

GetDescription returns a description of the step. Every step must have this property.

func (*Step) GetMixinName

func (s *Step) GetMixinName() string

func (*Step) Validate

func (s *Step) Validate(m *Manifest) error

type Steps

type Steps []*Step

func (Steps) Validate

func (s Steps) Validate(m *Manifest) error

Jump to

Keyboard shortcuts

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