Documentation ¶
Index ¶
- Constants
- Variables
- func GetOperatorDockerImage() string
- func InterpolateVariables(log *zap.SugaredLogger, boshManifestBytes []byte, variablesDir string) error
- func RenderJobTemplates(boshManifestPath string, jobsDir string, jobsOutputDir string, ...) error
- type AddOn
- type AddOnJob
- type AddOnPlacementJob
- type AddOnPlacementRules
- type AddOnStemcell
- type Agent
- type AgentEnv
- type AgentEnvBoshConfig
- type AuthType
- type BOSHContainerization
- type DataGatherer
- func (dg *DataGatherer) CollectReleaseSpecsAndProviderLinks(baseDir string) (map[string]map[string]JobSpec, JobProviderLinks, error)
- func (dg *DataGatherer) GenerateManifest(baseDir string, instanceGroupName string) ([]byte, error)
- func (dg *DataGatherer) ProcessConsumersAndRenderBPM(baseDir string, jobReleaseSpecs map[string]map[string]JobSpec, ...) ([]byte, error)
- type Feature
- type IPv6
- type InstanceGroup
- type Interpolator
- type InterpolatorImpl
- type Job
- type JobDir
- type JobInstance
- type JobLink
- type JobProperties
- type JobProviderLinks
- type JobSpec
- type KubeConfig
- type Link
- type Manifest
- func (m *Manifest) ApplyBPMInfo(kubeConfig *KubeConfig, allResolvedProperties map[string]Manifest) error
- func (m *Manifest) ConvertToKube(namespace string) (KubeConfig, error)
- func (m *Manifest) GetReleaseImage(instanceGroupName, jobName string) (string, error)
- func (m *Manifest) JobSpecCopierContainer(releaseName string, releaseImage string, volumeMountName string) corev1.Container
- func (m *Manifest) SHA1() (string, error)
- type MigratedFrom
- type Network
- type NewInterpolatorFunc
- type Port
- type Release
- type ReleaseStemcell
- type Resolver
- type ResolverImpl
- type Stemcell
- type Update
- type VMResource
- type Variable
- type VariableOptions
Constants ¶
const ( // VarInterpolationContainerName is the name of the container that performs // variable interpolation for a manifest VarInterpolationContainerName = "interpolation" // DesiredManifestKeyName is the name of the key in desired manifest secret DesiredManifestKeyName = "manifest.yaml" )
Variables ¶
var ( // DockerImageOrganization is the organization which provides the operator image DockerImageOrganization = "" // DockerImageRepository is the repository which provides the operator image DockerImageRepository = "" // DockerImageTag is the tag of the operator image DockerImageTag = "" // LabelDeploymentName is the name of a label for the deployment name LabelDeploymentName = fmt.Sprintf("%s/deployment-name", apis.GroupName) // LabelInstanceGroupName is the name of a label for an instance group name LabelInstanceGroupName = fmt.Sprintf("%s/instance-group-name", apis.GroupName) )
Functions ¶
func GetOperatorDockerImage ¶
func GetOperatorDockerImage() string
GetOperatorDockerImage returns the image name of the operator docker image
Types ¶
type AddOn ¶
type AddOn struct { Name string `yaml:"name"` Jobs []AddOnJob `yaml:"jobs"` Include *AddOnPlacementRules `yaml:"include,omitempty"` Exclude *AddOnPlacementRules `yaml:"exclude,omitempty"` }
AddOn from BOSH deployment manifest
type AddOnJob ¶
type AddOnJob struct { Name string `yaml:"name"` Release string `yaml:"release"` Properties map[string]interface{} `yaml:"properties,omitempty"` }
AddOnJob from BOSH deployment manifest
type AddOnPlacementJob ¶
AddOnPlacementJob from BOSH deployment manifest
type AddOnPlacementRules ¶
type AddOnPlacementRules struct { Stemcell []*AddOnStemcell `yaml:"stemcell,omitempty"` Deployments []string `yaml:"deployments,omitempty"` Jobs []*AddOnPlacementJob `yaml:"release,omitempty"` InstanceGroup []string `yaml:"instance_groups,omitempty"` Networks []string `yaml:"networks,omitempty"` Teams []string `yaml:"teams,omitempty"` }
AddOnPlacementRules from BOSH deployment manifest
type AddOnStemcell ¶
type AddOnStemcell struct {
OS string `yaml:"os"`
}
AddOnStemcell from BOSH deployment manifest
type Agent ¶
type Agent struct { Settings string `yaml:"settings,omitempty"` Tmpfs *bool `yaml:"tmpfs,omitempty"` }
Agent from BOSH deployment manifest
type AgentEnv ¶
type AgentEnv struct { PersistentDiskFS string `yaml:"persistent_disk_fs,omitempty"` PersistentDiskMountOptions []string `yaml:"persistent_disk_mount_options,omitempty"` AgentEnvBoshConfig *AgentEnvBoshConfig `yaml:"bosh,omitempty"` }
AgentEnv from BOSH deployment manifest
type AgentEnvBoshConfig ¶
type AgentEnvBoshConfig struct { Password string `yaml:"password,omitempty"` KeepRootPassword string `yaml:"keep_root_password,omitempty"` RemoveDevTools *bool `yaml:"remove_dev_tools,omitempty"` RemoveStaticLibraries *bool `yaml:"remove_static_libraries,omitempty"` SwapSize *int `yaml:"swap_size,omitempty"` IPv6 IPv6 `yaml:"ipv6,omitempty"` JobDir *JobDir `yaml:"job_dir,omitempty"` Agent *Agent `yaml:"agent,omitempty"` }
AgentEnvBoshConfig from BOSH deployment manifest
type BOSHContainerization ¶
type BOSHContainerization struct { Consumes map[string]JobLink `yaml:"consumes"` Instances []JobInstance `yaml:"instances"` Release string `yaml:"release"` BPM bpm.Config `yaml:"bpm"` Ports []Port `yaml:"ports"` }
BOSHContainerization represents the special 'bosh_containerization' property key
type DataGatherer ¶ added in v0.2.0
type DataGatherer struct {
// contains filtered or unexported fields
}
DataGatherer 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 NewDataGatherer ¶ added in v0.2.0
func NewDataGatherer(log *zap.SugaredLogger, namespace string, manifest *Manifest) *DataGatherer
NewDataGatherer returns a data gatherer with logging for a given input manifest
func (*DataGatherer) CollectReleaseSpecsAndProviderLinks ¶ added in v0.2.0
func (dg *DataGatherer) CollectReleaseSpecsAndProviderLinks(baseDir string) (map[string]map[string]JobSpec, JobProviderLinks, error)
CollectReleaseSpecsAndProviderLinks will collect all release specs and generate bosh links for provider jobs
func (*DataGatherer) GenerateManifest ¶ added in v0.2.0
func (dg *DataGatherer) GenerateManifest(baseDir string, instanceGroupName string) ([]byte, error)
GenerateManifest will collect different data and return a deployment manifest for an instance group. See docs/rendering_templates.md#calculation-of-required-properties-for-an-instance-group-and-render-bpm
Data gathered: * job spec information * job properties * bosh links * bpm yaml file data
func (*DataGatherer) ProcessConsumersAndRenderBPM ¶ added in v0.2.0
func (dg *DataGatherer) ProcessConsumersAndRenderBPM(baseDir string, jobReleaseSpecs map[string]map[string]JobSpec, jobProviderLinks map[string]map[string]JobLink, instanceGroupName string) ([]byte, error)
ProcessConsumersAndRenderBPM will generate a proper context for links and render the required ERB files
type Feature ¶
type Feature struct { ConvergeVariables bool `yaml:"converge_variables"` RandomizeAzPlacement *bool `yaml:"randomize_az_placement,omitempty"` UseDNSAddresses *bool `yaml:"use_dns_addresses,omitempty"` UseTmpfsJobConfig *bool `yaml:"use_tmpfs_job_config,omitempty"` }
Feature from BOSH deployment manifest
type InstanceGroup ¶
type InstanceGroup struct { Name string `yaml:"name"` Instances int `yaml:"instances"` AZs []string `yaml:"azs"` Jobs []Job `yaml:"jobs"` VMType string `yaml:"vm_type,omitempty"` VMExtensions []string `yaml:"vm_extensions,omitempty"` VMResources *VMResource `yaml:"vm_resources"` Stemcell string `yaml:"stemcell"` PersistentDisk *int `yaml:"persistent_disk,omitempty"` PersistentDiskType string `yaml:"persistent_disk_type,omitempty"` Networks []*Network `yaml:"networks,omitempty"` Update *Update `yaml:"update,omitempty"` MigratedFrom *MigratedFrom `yaml:"migrated_from,omitempty"` LifeCycle string `yaml:"lifecycle,omitempty"` Properties map[string]interface{} `yaml:"properties,omitempty"` Env *AgentEnv `yaml:"env,omitempty"` }
InstanceGroup from BOSH deployment manifest
type Interpolator ¶
type Interpolator interface { BuildOps(opsBytes []byte) error Interpolate(manifestBytes []byte) ([]byte, error) }
Interpolator renders BOSH manifests by operations files go:generate counterfeiter -o fakes/fake_interpolator.go . Interpolator
type InterpolatorImpl ¶
type InterpolatorImpl struct {
// contains filtered or unexported fields
}
InterpolatorImpl applies desired changes from BOSH operations files to to BOSH manifest
func NewInterpolator ¶
func NewInterpolator() *InterpolatorImpl
NewInterpolator constructs an interpolator
func (*InterpolatorImpl) BuildOps ¶
func (i *InterpolatorImpl) BuildOps(opsBytes []byte) error
BuildOps unmarshals ops definitions, processes them and holds them in memory
func (*InterpolatorImpl) Interpolate ¶
func (i *InterpolatorImpl) Interpolate(manifestBytes []byte) ([]byte, error)
Interpolate returns manifest which is rendered by operations files
type Job ¶
type Job struct { Name string `yaml:"name"` Release string `yaml:"release"` Consumes map[string]interface{} `yaml:"consumes,omitempty"` Provides map[string]interface{} `yaml:"provides,omitempty"` Properties JobProperties `yaml:"properties,omitempty"` }
Job from BOSH deployment manifest
type JobDir ¶
type JobDir struct { Tmpfs *bool `yaml:"tmpfs,omitempty"` TmpfsSize string `yaml:"tmpfs_size,omitempty"` }
JobDir from BOSH deployment manifest
type JobInstance ¶
type JobInstance struct { Address string `yaml:"address"` AZ string `yaml:"az"` ID string `yaml:"id"` Index int `yaml:"index"` Instance int `yaml:"instance"` Name string `yaml:"name"` Network map[string]interface{} `yaml:"networks"` IP string `yaml:"ip"` }
JobInstance for data gathering
type JobLink ¶
type JobLink struct { Instances []JobInstance `yaml:"instances"` Properties map[string]interface{} `yaml:"properties"` }
JobLink describes links inside a job properties bosh_containerization.
type JobProperties ¶
type JobProperties struct { BOSHContainerization `yaml:"bosh_containerization"` Properties map[string]interface{} `yaml:",inline"` }
JobProperties represents the properties map of a Job
func (*JobProperties) ToMap ¶
func (p *JobProperties) ToMap() map[string]interface{}
ToMap returns a complete map with all properties, including the bosh_containerization key
type JobProviderLinks ¶ added in v0.2.0
func (JobProviderLinks) Add ¶ added in v0.2.0
func (jpl JobProviderLinks) Add(job Job, spec JobSpec, jobsInstances []JobInstance) error
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 []struct { Name string Type string Optional bool } Provides []struct { Name string Type string Properties []string } }
JobSpec describes the contents of "job.MF" files
func (JobSpec) RetrieveNestedProperty ¶ added in v0.2.0
RetrieveNestedProperty will generate an nested struct based on a string of the type foo.bar
type KubeConfig ¶
type KubeConfig struct { Variables []esv1.ExtendedSecret InstanceGroups []essv1.ExtendedStatefulSet Errands []ejv1.ExtendedJob Services []corev1.Service Namespace string VariableInterpolationJob *ejv1.ExtendedJob DataGatheringJob *ejv1.ExtendedJob }
KubeConfig represents a Manifest in kube resources
type Link ¶
type Link struct { Name string `yaml:"name"` Instances []JobInstance `yaml:"instances"` Properties interface{} `yaml:"properties"` }
Link with name for rendering
type Manifest ¶
type Manifest struct { Name string `yaml:"name"` DirectorUUID string `yaml:"director_uuid"` InstanceGroups []*InstanceGroup `yaml:"instance_groups,omitempty"` Features *Feature `yaml:"features,omitempty"` Tags map[string]string `yaml:"tags,omitempty"` Releases []*Release `yaml:"releases,omitempty"` Stemcells []*Stemcell `yaml:"stemcells,omitempty"` AddOns []*AddOn `yaml:"addons,omitempty"` Properties []map[string]interface{} `yaml:"properties,omitempty"` Variables []Variable `yaml:"variables,omitempty"` Update *Update `yaml:"update,omitempty"` }
Manifest is a BOSH deployment manifest
func (*Manifest) ApplyBPMInfo ¶
func (m *Manifest) ApplyBPMInfo(kubeConfig *KubeConfig, allResolvedProperties map[string]Manifest) error
ApplyBPMInfo uses BOSH Process Manager information to update container information like entrypoint, env vars, etc.
func (*Manifest) ConvertToKube ¶
func (m *Manifest) ConvertToKube(namespace string) (KubeConfig, error)
ConvertToKube converts a Manifest into kube resources
func (*Manifest) GetReleaseImage ¶
GetReleaseImage returns the release image location for a given instance group/job
type MigratedFrom ¶
MigratedFrom from BOSH deployment manifest
type Network ¶
type Network struct { Name string `yaml:"name"` StaticIps []string `yaml:"static_ips,omitempty"` Default []string `yaml:"default,omitempty"` }
Network from BOSH deployment manifest
type NewInterpolatorFunc ¶ added in v0.2.0
type NewInterpolatorFunc func() Interpolator
NewInterpolatorFunc returns a fresh Interpolator
type Port ¶ added in v0.2.0
type Port struct { Name string `yaml:"name"` Protocol string `yaml:"protocol"` Internal int `yaml:"internal"` }
Port represents the port to be opened up for this job
type Release ¶
type Release struct { Name string `yaml:"name"` Version string `yaml:"version"` URL string `yaml:"url,omitempty"` SHA1 string `yaml:"sha1,omitempty"` Stemcell *ReleaseStemcell `yaml:"stemcell,omitempty"` }
Release from BOSH deployment manifest
type ReleaseStemcell ¶
ReleaseStemcell from BOSH deployment manifest
type Resolver ¶
type Resolver interface {
ResolveManifest(instance *bdc.BOSHDeployment, namespace string) (*Manifest, error)
}
Resolver resolves references from CRD to a BOSH manifest
type ResolverImpl ¶
type ResolverImpl struct {
// contains filtered or unexported fields
}
ResolverImpl implements Resolver interface
func NewResolver ¶
func NewResolver(client client.Client, f NewInterpolatorFunc) *ResolverImpl
NewResolver constructs a resolver
func (*ResolverImpl) ImplicitVariables ¶ added in v0.2.0
func (r *ResolverImpl) ImplicitVariables(m *Manifest, rawManifest string) ([]string, error)
ImplicitVariables returns a list of all implicit variables in a manifest
func (*ResolverImpl) ResolveManifest ¶
func (r *ResolverImpl) ResolveManifest(instance *bdc.BOSHDeployment, namespace string) (*Manifest, error)
ResolveManifest returns manifest referenced by our CRD
type Stemcell ¶
type Stemcell struct { Alias string `yaml:"alias"` OS string `yaml:"os,omitempty"` Version string `yaml:"version"` Name string `yaml:"name,omitempty"` }
Stemcell from BOSH deployment manifest
type Update ¶
type Update struct { Canaries int `yaml:"canaries"` MaxInFlight string `yaml:"max_in_flight"` CanaryWatchTime string `yaml:"canary_watch_time"` UpdateWatchTime string `yaml:"update_watch_time"` Serial bool `yaml:"serial,omitempty"` VMStrategy *string `yaml:"vm_strategy,omitempty"` }
Update from BOSH deployment manifest
type VMResource ¶
type VMResource struct { CPU int `yaml:"cpu"` RAM int `yaml:"ram"` EphemeralDiskSize int `yaml:"ephemeral_disk_size"` }
VMResource from BOSH deployment manifest
type Variable ¶
type Variable struct { Name string `yaml:"name"` Type string `yaml:"type"` Options *VariableOptions `yaml:"options,omitempty"` }
Variable from BOSH deployment manifest
type VariableOptions ¶
type VariableOptions struct { CommonName string `yaml:"common_name"` AlternativeNames []string `yaml:"alternative_names,omitempty"` IsCA bool `yaml:"is_ca"` CA string `yaml:"ca,omitempty"` ExtendedKeyUsage []AuthType `yaml:"extended_key_usage,omitempty"` }
VariableOptions from BOSH deployment manifest