manifest

package
v0.30.0 Latest Latest
Warning

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

Go to latest
Published: Oct 29, 2020 License: Apache-2.0 Imports: 18 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"`

	// Reference is the full bundle reference for the dependency
	// in the format REGISTRY/NAME:TAG
	Reference string `yaml:"reference"`

	// Tag is a deprecated field.  It has been replaced by Reference.
	Tag string `yaml:"-"`

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

	// Registry is the OCI registry and org/subdomain for the bundle
	Registry string `yaml:"registry,omitempty"`

	// Reference is the optional, full bundle reference
	// in the format REGISTRY/NAME or REGISTRY/NAME:TAG
	Reference string `yaml:"reference,omitempty"`

	// BundleTag is the name of the bundle in the format REGISTRY/NAME:TAG
	// It doesn't map to any field in the manifest as it has been deprecated
	// and isn't meant to be user-specified
	BundleTag string `yaml:"-"`

	// 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 has been deprecated
	// and 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                  unmarshallyaml.CustomDefinitions  `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) SetInvocationImageAndReference added in v0.30.0

func (m *Manifest) SetInvocationImageAndReference(ref string) error

SetInvocationImageAndReference sets the invocation image name and the bundle reference on the manifest per the provided reference or via the registry or name values on the manifest.

func (*Manifest) Validate

func (m *Manifest) Validate(cxt *context.Context) error

type MappedImage

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