manifest

package
v1.0.1-0...-b3ee44d Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2021 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Overview

Package manifest represents a valid BOSH manifest and provides funcs to load it, marshal it and access its fields.

Index

Constants

View Source
const (
	// DataDir the mount path for the data directory.
	DataDir = "/var/vcap/data"

	// SysDir the mount path for the sys directory.
	SysDir = "/var/vcap/sys"

	// JobSpecFilename is the name of the job spec manifest in an unpacked BOSH release
	JobSpecFilename = "job.MF"
)
View Source
const (
	ClientAuth AuthType = "client_auth"
	ServerAuth AuthType = "server_auth"

	IGTypeService    InstanceGroupType = "service"
	IGTypeErrand     InstanceGroupType = "errand"
	IGTypeAutoErrand InstanceGroupType = "auto-errand"
	IGTypeDefault    InstanceGroupType = ""

	// BoshDNSAddOnName name of bosh dns addon.
	BoshDNSAddOnName        = "bosh-dns"
	BOSHDNSAliasesAddOnName = "bosh-dns-aliases"
)

AuthType values from BOSH deployment manifest

View Source
const (
	// DesiredManifestKeyName is the name of the key in desired manifest secret
	DesiredManifestKeyName = "manifest.yaml"
)
View Source
const LinkFile = "link"

LinkFile is the property in the secrets data, containing the link properties yaml

View Source
const QuarksLinksProperty = "quarks_links"

QuarksLinksProperty is the key for the manifest.Properties containing all external link secrets

Variables

This section is empty.

Functions

func ExtractWatchTime

func ExtractWatchTime(rawWatchTime string) (string, error)

ExtractWatchTime computes the watch time from a range or an absolute value This parses the time string used in the BOSH manifest's update config: https://bosh.io/docs/manifest-v2/#update

func RenderJobTemplates

func RenderJobTemplates(
	boshManifestPath string,
	jobsDir string,
	jobsOutputDir string,
	instanceGroupName string,
	podIP net.IP,
	azIndex int,
	podOrdinal int,
	replicas int,
	initialRollout bool,
) error

RenderJobTemplates will render templates for all jobs of the instance group https://bosh.io/docs/create-release/#job-specs boshManifest is a resolved manifest for a single instance group

qsts pod mutator sets pod-ordinal (to name suffix of the pod) replicas is set to 1 in the container factory azIndex is set to 1 in the container factory qsts controller overwrites replicas, if InjectReplicasEnv is true, otherwise replicas is 1. qsts controller overwrites azIndex (1..n), or to 0 if ig.AZs is null

func SlashedVariable

func SlashedVariable(name string) bool

SlashedVariable returns true if the variable name contains a slash. This could be a https://bosh.io/docs/cli-int/#absolute explicit variable, but more likely it's the '/' syntax that was introduced to specify the key in a secret, e.g. 'ca.private_key' for *implicit variables*. Explicit variables use a dot to separate the secret name from the key.

Types

type AddOn

type AddOn struct {
	Name    string               `json:"name"`
	Jobs    []AddOnJob           `json:"jobs"`
	Include *AddOnPlacementRules `json:"include,omitempty"`
	Exclude *AddOnPlacementRules `json:"exclude,omitempty"`
}

AddOn from BOSH deployment manifest

type AddOnJob

type AddOnJob struct {
	Name       string                 `json:"name"`
	Release    string                 `json:"release"`
	Properties JobProperties          `json:"properties,omitempty"`
	Consumes   map[string]interface{} `json:"consumes,omitempty"`
	Provides   map[string]interface{} `json:"provides,omitempty"`
}

AddOnJob from BOSH deployment manifest

type AddOnPlacementJob

type AddOnPlacementJob struct {
	Name    string `json:"name"`
	Release string `json:"release"`
}

AddOnPlacementJob from BOSH deployment manifest

type AddOnPlacementRules

type AddOnPlacementRules struct {
	Stemcell      []*AddOnStemcell     `json:"stemcell,omitempty"`
	Deployments   []string             `json:"deployments,omitempty"`
	Jobs          []*AddOnPlacementJob `json:"release,omitempty"`
	InstanceGroup []string             `json:"instance_groups,omitempty"`
	Networks      []string             `json:"networks,omitempty"`
	Teams         []string             `json:"teams,omitempty"`
	Lifecycle     InstanceGroupType    `json:"lifecycle,omitempty"`
}

AddOnPlacementRules from BOSH deployment manifest

type AddOnStemcell

type AddOnStemcell struct {
	OS string `json:"os"`
}

AddOnStemcell from BOSH deployment manifest

type Agent

type Agent struct {
	Settings AgentSettings `json:"settings,omitempty"`
	Tmpfs    *bool         `json:"tmpfs,omitempty"`
}

Agent from BOSH deployment manifest.

type AgentEnv

type AgentEnv struct {
	PersistentDiskFS           string             `json:"persistent_disk_fs,omitempty"`
	PersistentDiskMountOptions []string           `json:"persistent_disk_mount_options,omitempty"`
	AgentEnvBoshConfig         AgentEnvBoshConfig `json:"bosh,omitempty"`
}

AgentEnv from BOSH deployment manifest.

type AgentEnvBoshConfig

type AgentEnvBoshConfig struct {
	Password              string  `json:"password,omitempty"`
	KeepRootPassword      string  `json:"keep_root_password,omitempty"`
	RemoveDevTools        *bool   `json:"remove_dev_tools,omitempty"`
	RemoveStaticLibraries *bool   `json:"remove_static_libraries,omitempty"`
	SwapSize              *int    `json:"swap_size,omitempty"`
	IPv6                  IPv6    `json:"ipv6,omitempty"`
	JobDir                *JobDir `json:"job_dir,omitempty"`
	Agent                 Agent   `json:"agent,omitempty"`
}

AgentEnvBoshConfig contains supported settings from the <instance-group>.env.bosh hash of the BOSH deployment manifest.

type AgentSettings

type AgentSettings struct {
	Annotations                   map[string]string             `json:"annotations,omitempty"`
	Labels                        map[string]string             `json:"labels,omitempty"`
	Affinity                      *corev1.Affinity              `json:"affinity,omitempty"`
	DisableLogSidecar             bool                          `json:"disable_log_sidecar,omitempty" yaml:"disable_log_sidecar,omitempty"`
	ServiceAccountName            string                        `json:"serviceAccountName,omitempty" yaml:"serviceAccountName,omitempty"`
	AutomountServiceAccountToken  *bool                         `json:"automountServiceAccountToken,omitempty" yaml:"automountServiceAccountToken,omitempty"`
	ImagePullSecrets              []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
	Tolerations                   []corev1.Toleration           `json:"tolerations,omitempty"`
	EphemeralAsPVC                bool                          `json:"ephemeralAsPVC,omitempty"`
	Disks                         Disks                         `json:"disks,omitempty"`
	JobBackoffLimit               *int32                        `json:"jobBackoffLimit,omitempty"`
	PreRenderOps                  *PreRenderOps                 `json:"preRenderOps,omitempty"`
	InjectReplicasEnv             *bool                         `json:"injectReplicasEnv,omitempty"`
	TerminationGracePeriodSeconds *int64                        `json:"terminationGracePeriodSeconds,omitempty" yaml:"terminationGracePeriodSeconds,omitempty"`
	DNS                           string                        `json:"dns,omitempty"`
}

AgentSettings from BOSH deployment manifest, '<instance-group>.env.bosh.agent.settings'. These annotations and labels are added to kube resources. Affinity & tolerations are added into the pod's definition.

func (*AgentSettings) Set

func (as *AgentSettings) Set(manifestName, igName, version string)

Set overrides labels and annotations with operator-owned metadata.

type AuthType

type AuthType string

AuthType from BOSH deployment manifest

type BPMInfo

type BPMInfo struct {
	InstanceGroup BPMInstanceGroup `json:"instance_group,omitempty"`
	Configs       bpm.Configs      `json:"configs,omitempty"`
	Variables     []Variable       `json:"variables,omitempty"`
}

BPMInfo contains custom information about instance group which matters for quarksStatefulSet pods such as AZ's, instance group count and BPM Configs

type BPMInstanceGroup

type BPMInstanceGroup struct {
	Name      string   `json:"name"`
	Instances int      `json:"instances"`
	AZs       []string `json:"azs"`
	Env       AgentEnv `json:"env,omitempty"`
}

BPMInstanceGroup is a custom instance group spec that should be included in the BPM secret created by the bpm quarksJob.

type Disk

type Disk struct {
	PersistentVolumeClaim *corev1.PersistentVolumeClaim `json:"pvc,omitempty"`
	Volume                *corev1.Volume                `json:"volume,omitempty"`
	VolumeMount           *corev1.VolumeMount           `json:"volumeMount,omitempty"`

	Filters map[string]string `json:"filters,omitempty"`
}

Disk represents a converted BPM disk to k8s resources.

func (*Disk) MatchesFilter

func (disk *Disk) MatchesFilter(filterKey, filterValue string) bool

MatchesFilter returns true if the disk matches the filter with one of its Filters.

type Disks

type Disks []Disk

Disks represents a slice of BPMResourceDisk. Part of the BOSH manifest at '<instance-group>.env.bosh.agent.settings.disks'.

func (Disks) BPMMounts

func (disks Disks) BPMMounts() (*corev1.VolumeMount, *corev1.VolumeMount)

BPMMounts returns the volume mounts for the containers

func (Disks) Filter

func (disks Disks) Filter(filterKey, filterValue string) Disks

Filter filters BPMResourceDisks on its Filters.

func (Disks) PVCs

func (disks Disks) PVCs() []corev1.PersistentVolumeClaim

PVCs returns a slice of PVC of each BPMResourceDisk

func (Disks) VolumeMounts

func (disks Disks) VolumeMounts() []corev1.VolumeMount

VolumeMounts returns a slice of VolumeMount of each BPMResourceDisk contained in BPMResourceDisks.

func (Disks) Volumes

func (disks Disks) Volumes() []corev1.Volume

Volumes returns a slice of Volume of each BPMResourceDisk contained in BPMResourceDisks.

type Feature

type Feature struct {
	ConvergeVariables    bool  `json:"converge_variables"`
	RandomizeAzPlacement *bool `json:"randomize_az_placement,omitempty"`
	UseDNSAddresses      *bool `json:"use_dns_addresses,omitempty"`
	UseTmpfsJobConfig    *bool `json:"use_tmpfs_job_config,omitempty"`
}

Feature from BOSH deployment manifest

type IPv6

type IPv6 struct {
	Enable bool `json:"enable"`
}

IPv6 from BOSH deployment manifest.

type InstanceGroup

type InstanceGroup struct {
	Name               string                  `json:"name"`
	Instances          int                     `json:"instances"`
	AZs                []string                `json:"azs"`
	Jobs               []Job                   `json:"jobs"`
	VMType             string                  `json:"vm_type,omitempty"`
	VMExtensions       []string                `json:"vm_extensions,omitempty"`
	VMResources        *VMResource             `json:"vm_resources"`
	Stemcell           string                  `json:"stemcell"`
	PersistentDisk     *int                    `json:"persistent_disk,omitempty"`
	PersistentDiskType string                  `json:"persistent_disk_type,omitempty"`
	Networks           []*Network              `json:"networks,omitempty"`
	Update             *Update                 `json:"update,omitempty"`
	MigratedFrom       []*MigratedFrom         `json:"migrated_from,omitempty"`
	LifeCycle          InstanceGroupType       `json:"lifecycle,omitempty"`
	Properties         InstanceGroupProperties `json:"properties,omitempty"`
	Env                AgentEnv                `json:"env,omitempty"`
}

InstanceGroup from BOSH deployment manifest.

func (*InstanceGroup) IndexedServiceName

func (ig *InstanceGroup) IndexedServiceName(index int, azIndex int) string

IndexedServiceName constructs an indexed service name. It's used to construct the service names other than the headless service.

func (*InstanceGroup) IsErrand

func (ig *InstanceGroup) IsErrand() bool

IsErrand returns true if the instance group is any kind of BOSH errand

func (*InstanceGroup) NameSanitized

func (ig *InstanceGroup) NameSanitized() string

NameSanitized returns the sanitized instance group name.

func (*InstanceGroup) ServicePorts

func (ig *InstanceGroup) ServicePorts() []corev1.ServicePort

ServicePorts returns the service ports used by this instance group

type InstanceGroupProperties

type InstanceGroupProperties struct {
	Properties map[string]interface{}
	Quarks     InstanceGroupQuarks
}

InstanceGroupProperties represents the properties map of a InstanceGroup

func (*InstanceGroupProperties) MarshalJSON

func (p *InstanceGroupProperties) MarshalJSON() ([]byte, error)

MarshalJSON is implemented to support inlining Properties

func (*InstanceGroupProperties) UnmarshalJSON

func (p *InstanceGroupProperties) UnmarshalJSON(b []byte) error

UnmarshalJSON is implemented to support inlining properties

type InstanceGroupQuarks

type InstanceGroupQuarks struct {
	RequiredService *string `json:"required_service,omitempty" mapstructure:"required_service"`
}

InstanceGroupQuarks represents the quark property of a InstanceGroup

type InstanceGroupResolver

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

InstanceGroupResolver gathers data for jobs in the manifest, it handles links and returns a deployment manifest that only has information pertinent to an instance group.

func NewInstanceGroupResolver

func NewInstanceGroupResolver(fs afero.Fs, basedir string, deploymentName string, manifest Manifest, instanceGroupName string) (*InstanceGroupResolver, error)

NewInstanceGroupResolver returns a data gatherer with logging for a given input manifest and instance group

func (*InstanceGroupResolver) BPMInfo

func (igr *InstanceGroupResolver) BPMInfo() (BPMInfo, error)

BPMInfo returns an instance of BPMInfo which consists info about instances, azs, env, variables and a map of all BOSH jobs in the instance group. The output will be persisted by QuarksJob as 'bpm.yaml' in the `<deployment-name>.bpm.<instance-group>-v<version>` secret.

func (igr *InstanceGroupResolver) CollectQuarksLinks(linksPath string) error

CollectQuarksLinks collects all links from a directory specified by path

func (*InstanceGroupResolver) Manifest

func (igr *InstanceGroupResolver) Manifest() (Manifest, error)

Manifest returns a manifest for a specific instance group only. That manifest includes the gathered data from BPM and links. The output will be persisted by QuarksJob as 'properties.yaml' in the `<deployment-name>.ig-resolved.<instance-group>-v<version>` secret.

func (*InstanceGroupResolver) Resolve

func (igr *InstanceGroupResolver) Resolve(initialRollout bool) error

Resolve collects bpm and link information and enriches the manifest accordingly

Data gathered: * job spec information * job properties * bosh links * bpm yaml file data

func (igr *InstanceGroupResolver) SaveLinks(path string) error

SaveLinks writes provides.json with all links for this instance group

type InstanceGroupType

type InstanceGroupType string

InstanceGroupType represents instance groups types

type InstanceGroups

type InstanceGroups []*InstanceGroup

InstanceGroups represents a slice of pointers of InstanceGroup.

func (InstanceGroups) InstanceGroupByName

func (instanceGroups InstanceGroups) InstanceGroupByName(name string) (*InstanceGroup, bool)

InstanceGroupByName returns the instance group identified by the given name. The second return parameter indicates if the instance group was found.

type Job

type Job struct {
	Name       string                 `json:"name"`
	Release    string                 `json:"release"`
	Consumes   map[string]interface{} `json:"consumes,omitempty"`
	Provides   map[string]interface{} `json:"provides,omitempty"`
	Properties JobProperties          `json:"properties,omitempty"`
}

Job from BOSH deployment manifest

func (*Job) DataDirs

func (j *Job) DataDirs() []string

DataDirs returns all data dirs a BOSH job expects

func (Job) Property

func (job Job) Property(propertyName string) (interface{}, bool)

Property search for property value in the job properties

func (*Job) SysDirs

func (j *Job) SysDirs() []string

SysDirs returns all sys dirs a BOSH job expects

type JobDir

type JobDir struct {
	Tmpfs     *bool  `json:"tmpfs,omitempty"`
	TmpfsSize string `json:"tmpfs_size,omitempty"`
}

JobDir from BOSH deployment manifest.

type JobInstance

type JobInstance struct {
	Address   string                 `json:"address"`
	AZ        string                 `json:"az"`
	Index     int                    `json:"index"`
	Instance  int                    `json:"instance"`
	Name      string                 `json:"name"`
	Bootstrap bool                   `json:"bootstrap"`
	ID        string                 `json:"id"`
	Network   map[string]interface{} `json:"networks"`
}

JobInstance for data gathering.

type JobLink struct {
	Address    string            `json:"address"`
	Instances  []JobInstance     `json:"instances"`
	Properties JobLinkProperties `json:"properties"`
}

JobLink describes links inside a job properties quarks.

type JobLinkProperties

type JobLinkProperties map[string]interface{}

JobLinkProperties are the properties from the provides section in a job spec manifest

type JobProperties

type JobProperties struct {
	Quarks     Quarks                 `json:"quarks"`
	Properties map[string]interface{} `json:"-"`
}

JobProperties represents the properties map of a Job

func (*JobProperties) FromMap

func (p *JobProperties) FromMap(properties map[string]interface{}) error

FromMap populates a JobProperties based on a map

func (*JobProperties) MarshalJSON

func (p *JobProperties) MarshalJSON() ([]byte, error)

MarshalJSON is implemented to support inlining Properties

func (*JobProperties) ToMap

func (p *JobProperties) ToMap() map[string]interface{}

ToMap returns a complete map with all properties, including the quarks key

func (*JobProperties) UnmarshalJSON

func (p *JobProperties) UnmarshalJSON(b []byte) error

UnmarshalJSON is implemented to support inlining properties

type JobSpec

type JobSpec struct {
	Name        string
	Description string
	Packages    []string
	Templates   map[string]string
	Properties  map[string]struct {
		Description string
		Default     interface{}
		Example     interface{}
	}
	Consumes []JobSpecProvider
	Provides []JobSpecLink
}

JobSpec describes the contents of "job.MF" files

func (JobSpec) RetrieveNestedProperty

func (js JobSpec) RetrieveNestedProperty(properties map[string]interface{}, propertyName string)

RetrieveNestedProperty will generate a nested struct based on a string of the type foo.bar in the provided map It overrides existing property paths that are not of the correct type.

func (JobSpec) RetrievePropertyDefault

func (js JobSpec) RetrievePropertyDefault(propertyName string) interface{}

RetrievePropertyDefault return the default value of the spec property

type JobSpecLink struct {
	Name       string
	Type       string
	Properties []string
}

JobSpecLink represents a link in the job spec Provides field.

type JobSpecProvider

type JobSpecProvider struct {
	Name     string
	Type     string
	Optional bool
}

JobSpecProvider represents a provider in the job spec Consumes field.

type Manifest

type Manifest struct {
	DirectorUUID   string                 `json:"director_uuid"`
	InstanceGroups InstanceGroups         `json:"instance_groups,omitempty"`
	Features       *Feature               `json:"features,omitempty"`
	Tags           map[string]string      `json:"tags,omitempty"`
	Releases       []*Release             `json:"releases,omitempty"`
	Stemcells      []*Stemcell            `json:"stemcells,omitempty"`
	AddOns         []*AddOn               `json:"addons,omitempty"`
	Properties     map[string]interface{} `json:"properties,omitempty"`
	Variables      []Variable             `json:"variables,omitempty"`
	Update         *Update                `json:"update,omitempty"`
	AddOnsApplied  bool                   `json:"addons_applied,omitempty"`
}

Manifest is a BOSH deployment manifest

func LoadYAML

func LoadYAML(data []byte) (*Manifest, error)

LoadYAML returns a new BOSH deployment manifest from a yaml representation

func (*Manifest) ApplyAddons

func (m *Manifest) ApplyAddons(log *zap.SugaredLogger) error

ApplyAddons goes through all defined addons and adds jobs to matched instance groups

func (*Manifest) ApplyUpdateBlock

func (m *Manifest) ApplyUpdateBlock()

ApplyUpdateBlock interprets and propagates information of the 'update'-blocks

func (*Manifest) GetJobOS

func (m *Manifest) GetJobOS(instanceGroupName, jobName string) (string, error)

GetJobOS returns the stemcell layer OS used for a Job This is used for matching addon placement rules

func (*Manifest) GetReleaseImage

func (m *Manifest) GetReleaseImage(instanceGroupName, jobName string) (string, error)

GetReleaseImage returns the release image location for a given instance group/job

func (*Manifest) ImplicitVariables

func (m *Manifest) ImplicitVariables() ([]string, error)

ImplicitVariables returns a list of all implicit variables in a manifest

func (*Manifest) ListMissingProviders

func (m *Manifest) ListMissingProviders() map[string]bool

ListMissingProviders returns a list of missing providers from the manifest

func (*Manifest) Marshal

func (m *Manifest) Marshal() ([]byte, error)

Marshal serializes a BOSH manifest into yaml

func (*Manifest) PropagateGlobalUpdateBlockToIGs

func (m *Manifest) PropagateGlobalUpdateBlockToIGs()

PropagateGlobalUpdateBlockToIGs copies the update block to all instance groups

func (*Manifest) SHA1

func (m *Manifest) SHA1() (string, error)

SHA1 calculates the SHA1 of the manifest

type MigratedFrom

type MigratedFrom struct {
	Name string `json:"name"`
	Az   string `json:"az,omitempty"`
}

MigratedFrom from BOSH deployment manifest.

type Network

type Network struct {
	Name      string   `json:"name"`
	StaticIps []string `json:"static_ips,omitempty"`
	Default   []string `json:"default,omitempty"`
}

Network from BOSH deployment manifest.

type OpsPatch

type OpsPatch struct {
	Type  string      `json:"type,omitempty"`
	Path  string      `json:"path,omitempty"`
	Value interface{} `json:"value,omitempty"`
}

OpsPatch represents a Json patch that can be performed on an Instance Group or BPM properties yaml file

type OpsPatches

type OpsPatches []OpsPatch

OpsPatches is a list of ops files

func (*OpsPatches) Bytes

func (o *OpsPatches) Bytes() ([]byte, error)

Bytes returns the yaml equivalent of the ops patch

type Port

type Port struct {
	Name     string `json:"name"`
	Protocol string `json:"protocol"`
	Internal int    `json:"internal"`
}

Port represents the port to be opened up for this job.

type PostStartCondition

type PostStartCondition struct {
	Exec *corev1.ExecAction `json:"exec,omitempty"`
}

PostStartCondition represents the condition that should succeed in order to execute the post-start script. It's often set to be the same as the readiness probe of a job.

type PreRenderOps

type PreRenderOps struct {
	BPM           OpsPatches `json:"bpm,omitempty"`
	InstanceGroup OpsPatches `json:"instanceGroup,omitempty"`
}

PreRenderOps contains ops files for BPM and Instance Groups yaml files

type PreRenderScripts

type PreRenderScripts struct {
	BPM        []string `json:"bpm" yaml:"bpm"`
	IgResolver []string `json:"ig_resolver" yaml:"ig_resolver"`
	Jobs       []string `json:"jobs" yaml:"jobs"`
}

PreRenderScripts describes the different types of scripts that can be run inside a job.

type Quarks

type Quarks struct {
	Consumes            map[string]JobLink      `json:"consumes"`
	Instances           []JobInstance           `json:"instances"`
	Release             string                  `json:"release"`
	BPM                 *bpm.Config             `json:"bpm,omitempty" yaml:"bpm,omitempty"`
	Ports               []Port                  `json:"ports"`
	Run                 bpm.RunConfig           `json:"run"`
	PreRenderScripts    PreRenderScripts        `json:"pre_render_scripts" yaml:"pre_render_scripts"`
	PostStart           bpm.PostStart           `json:"post_start"`
	Debug               bool                    `json:"debug" yaml:"debug"`
	IsAddon             bool                    `json:"is_addon" yaml:"is_addon"`
	Envs                []corev1.EnvVar         `json:"envs" yaml:"envs"`
	ActivePassiveProbes map[string]corev1.Probe `json:"activePassiveProbes,omitempty"`
}

Quarks represents the special 'quarks' property key. It contains all kubernetes structures we need to add to the BOSH manifest.

type QuarksLink struct {
	Type      string        `json:"type,omitempty"`
	Address   string        `json:"address,omitempty"`
	Instances []JobInstance `json:"instances,omitempty"`
}

QuarksLink represents the links to share/discover information between BOSH and Kube Native components

type Release

type Release struct {
	Name     string           `json:"name"`
	Version  string           `json:"version"`
	URL      string           `json:"url,omitempty"`
	SHA1     string           `json:"sha1,omitempty"`
	Stemcell *ReleaseStemcell `json:"stemcell,omitempty"`
}

Release from BOSH deployment manifest

type ReleaseImageProvider

type ReleaseImageProvider interface {
	// GetReleaseImage returns the release image for an job in an instance group
	GetReleaseImage(instanceGroupName, jobName string) (string, error)
}

ReleaseImageProvider interface to provide the docker release image for a BOSH job This lookup is currently implemented by the manifest model.

type ReleaseStemcell

type ReleaseStemcell struct {
	OS      string `json:"os"`
	Version string `json:"version"`
}

ReleaseStemcell from BOSH deployment manifest

type Stemcell

type Stemcell struct {
	Alias   string `json:"alias"`
	OS      string `json:"os,omitempty"`
	Version string `json:"version"`
	Name    string `json:"name,omitempty"`
}

Stemcell from BOSH deployment manifest

type Update

type Update struct {
	Canaries        int     `json:"canaries"`
	MaxInFlight     string  `json:"max_in_flight"`
	CanaryWatchTime string  `json:"canary_watch_time"`
	UpdateWatchTime string  `json:"update_watch_time"`
	Serial          *bool   `json:"serial,omitempty"` // must be pointer, because otherwise default is false
	VMStrategy      *string `json:"vm_strategy,omitempty"`
}

Update from BOSH deployment manifest.

type VMResource

type VMResource struct {
	CPU               int `json:"cpu"`
	RAM               int `json:"ram"`
	EphemeralDiskSize int `json:"ephemeral_disk_size"`
}

VMResource from BOSH deployment manifest.

type Variable

type Variable struct {
	Name    string           `json:"name"`
	Type    string           `json:"type"`
	Options *VariableOptions `json:"options,omitempty"`
}

Variable from BOSH deployment manifest

type VariableOptions

type VariableOptions struct {
	CommonName                  string                    `json:"common_name"`
	AlternativeNames            []string                  `json:"alternative_names,omitempty"`
	IsCA                        bool                      `json:"is_ca"`
	CA                          string                    `json:"ca,omitempty"`
	ExtendedKeyUsage            []AuthType                `json:"extended_key_usage,omitempty"`
	SignerType                  string                    `json:"signer_type,omitempty"`
	ServiceRef                  []qsv1a1.ServiceReference `json:"serviceRef,omitempty"`
	Copies                      []qsv1a1.Copy             `json:"copies,omitempty"`
	ActivateEKSWorkaroundForSAN bool                      `json:"activateEKSWorkaroundForSAN,omitempty"`
}

VariableOptions from BOSH deployment manifest

Jump to

Keyboard shortcuts

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