manifest

package
v0.38.11 Latest Latest
Warning

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

Go to latest
Published: May 2, 2022 License: Apache-2.0 Imports: 25 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 specifies if the credential must be specified for applicable actions. Defaults to true.
	Required bool `yaml:"required,omitempty"`

	// ApplyTo lists the actions to which the credential applies. When unset, defaults to all actions.
	ApplyTo []string `yaml:"applyTo,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 CustomDefinitions added in v0.35.0

type CustomDefinitions map[string]interface{}

func (*CustomDefinitions) UnmarshalYAML added in v0.35.0

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

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.
	// This should be removed prior to v1.0.0
	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(cxt *context.Context) 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 Editor added in v0.31.0

type Editor struct {
	// contains filtered or unexported fields
}

Editor can modify the yaml in a Porter manifest.

func NewEditor added in v0.31.0

func NewEditor(cxt *context.Context) *Editor

func (*Editor) Read added in v0.31.0

func (e *Editor) Read(data []byte) (n int, err error)

func (*Editor) ReadFile added in v0.31.0

func (e *Editor) ReadFile(src string) error

func (*Editor) SetValue added in v0.31.0

func (e *Editor) SetValue(path string, value string) error

func (*Editor) WriteFile added in v0.31.0

func (e *Editor) WriteFile(dest string) 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

func (Location) IsEmpty

func (l Location) IsEmpty() bool

type Manifest

type Manifest struct {
	// ManifestPath is location to the original, user-supplied manifest, 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:"-"`

	// DockerTag is the Docker tag portion of the published invocation
	// image and bundle.  It will only be set at time of publishing.
	DockerTag 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                  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"`
	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 - helm3 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 - helm3 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) GetApplyTo added in v0.38.4

func (pd *ParameterDefinition) GetApplyTo() []string

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