Documentation ¶
Index ¶
- Constants
- func AggregateSignatures(signatures []string) string
- func FlattenOpinions(opinions map[string]interface{}, total bool) map[string]string
- func ParseTemplate(template string) ([]string, error)
- type AuthAccount
- type AuthRole
- type AuthRule
- type CVMap
- type CVOptions
- type CVType
- type Configuration
- type ConfigurationAuthorization
- type ConfigurationTemplate
- type FlightStage
- type HealthCheck
- type HealthProbe
- type InstanceGroup
- func (g *InstanceGroup) CalculateRoleConfigurationTemplates()
- func (g *InstanceGroup) CalculateRoleRun() validation.ErrorList
- func (g *InstanceGroup) CollectPropertyDefaults() PropertyDefaults
- func (g *InstanceGroup) ColocatedContainers() []string
- func (g *InstanceGroup) GetColocatedRoles() InstanceGroups
- func (g *InstanceGroup) GetLongDescription() string
- func (g *InstanceGroup) GetRoleDevVersion(opinions *Opinions, tagExtra, fissileVersion string, grapher util.ModelGrapher) (string, error)
- func (g *InstanceGroup) GetScriptPaths() map[string]string
- func (g *InstanceGroup) GetScriptSignatures() (string, error)
- func (g *InstanceGroup) GetTemplateSignatures() (string, error)
- func (g *InstanceGroup) GetVariablesForRole() (Variables, error)
- func (g *InstanceGroup) HasTag(tag RoleTag) bool
- func (g *InstanceGroup) IsColocated() bool
- func (g *InstanceGroup) LookupJob(name string) *JobReference
- func (g *InstanceGroup) Manifest() *RoleManifest
- func (g *InstanceGroup) SetRoleManifest(m *RoleManifest)
- type InstanceGroups
- type Job
- type JobBoshContainerization
- type JobConsumesInfo
- type JobContainerProperties
- type JobExposedPort
- type JobLinkInfo
- type JobProperty
- type JobProvidesInfo
- type JobReference
- type JobReferences
- type JobTemplate
- type Jobs
- type LoadRoleManifestOptions
- type Opinions
- type Package
- func (p *Package) Extract(destination string) (string, error)
- func (p *Package) GetPackageCompiledDir(workDir string) string
- func (p *Package) GetPackageCompiledTempDir(workDir string) string
- func (p *Package) GetTargetPackageSourcesDir(workDir string) string
- func (p *Package) Marshal() (interface{}, error)
- func (p *Package) ValidateSHA1() error
- type Packages
- type PodSecurityPolicy
- type PropertyDefaults
- type PropertyInfo
- type Release
- func (r *Release) GetUniqueConfigs() map[string]*ReleaseConfig
- func (r *Release) LookupJob(jobName string) (*Job, error)
- func (r *Release) LookupPackage(packageName string) (*Package, error)
- func (r *Release) ManifestFilePath() string
- func (r *Release) Marshal() (interface{}, error)
- func (r *Release) ReleaseType() string
- type ReleaseConfig
- type ReleaseLicense
- type ReleaseOptions
- type ReleaseRef
- type ReleaseResolver
- type Releases
- type RoleManifest
- func (m *RoleManifest) AddFeature(name string, enabledByDefault bool)
- func (m *RoleManifest) LoadManifestFromFile(manifestFilePath string) (err error)
- func (m *RoleManifest) LookupInstanceGroup(name string) *InstanceGroup
- func (m *RoleManifest) SelectInstanceGroups(roleNames []string) (InstanceGroups, error)
- type RoleManifestValidationOptions
- type RoleRun
- type RoleRunAffinity
- type RoleRunCPU
- type RoleRunMemory
- type RoleRunScaling
- type RoleRunVolume
- type RoleTag
- type RoleType
- type VariableDefinition
- type Variables
- type VolumeType
Constants ¶
const ( RoleTypeBoshTask = RoleType("bosh-task") // A role that is a BOSH task RoleTypeBosh = RoleType("bosh") // A role that is a BOSH job RoleTypeColocatedContainer = RoleType("colocated-container") // A role that is supposed to be used by other roles to specify a colocated container )
These are the types of roles available
const ( RoleTagStopOnFailure = RoleTag("stop-on-failure") RoleTagSequentialStartup = RoleTag("sequential-startup") RoleTagActivePassive = RoleTag("active-passive") RoleTagIstioManaged = RoleTag("istio-managed") )
The list of acceptable tags
const ( // PodSecurityPolicyNonPrivileged is a backwards compatibility marker to // indicate an instance group does not require a privileged PSP PodSecurityPolicyNonPrivileged = "nonprivileged" // PodSecurityPolicyPrivileged marks an instance group as requiring a // privileged PSP PodSecurityPolicyPrivileged = "privileged" )
const ( VolumeTypePersistent = VolumeType("persistent") // A volume that is only used for this instance of the role VolumeTypeHost = VolumeType("host") // A volume that is a mount of a host directory VolumeTypeNone = VolumeType("none") // A volume that isn't mounted to anything VolumeTypeEmptyDir = VolumeType("emptyDir") // A volume that is shared between containers )
These are the volume type available
const ( FlightStagePreFlight = FlightStage("pre-flight") // A role that runs before the main jobs start FlightStageFlight = FlightStage("flight") // A role that is a main job FlightStagePostFlight = FlightStage("post-flight") // A role that runs after the main jobs are up FlightStageManual = FlightStage("manual") // A role that only runs via user intervention )
These are the flight stages available
const ( // CVTypeUser is for user-specified variables (default) CVTypeUser = CVType("user") // CVTypeEnv is for script-specified variables CVTypeEnv = CVType("environment") )
Variables ¶
This section is empty.
Functions ¶
func AggregateSignatures ¶
AggregateSignatures returns the SHA1 for a slice of strings
func FlattenOpinions ¶
FlattenOpinions converts the incoming nested map of opinions into a flat map of properties to values (strings). When 'total' is set (to true) array values are recursed into and flattened as well.
func ParseTemplate ¶
ParseTemplate parses a mustache template and returns the template variables
Types ¶
type AuthAccount ¶
type AuthAccount struct { Roles []string `yaml:"roles"` ClusterRoles []string `yaml:"cluster-roles"` UsedBy map[string]struct{} `yaml:"-"` // Instance groups which use this account }
An AuthAccount is a service account for RBAC authorization The NumGroups field records the number of instance groups referencing the account in question.
type AuthRule ¶
type AuthRule struct { APIGroups []string `yaml:"apiGroups"` Resources []string `yaml:"resources"` ResourceNames []string `yaml:"resourceNames"` Verbs []string `yaml:"verbs"` }
An AuthRule is a single rule for a RBAC authorization role
func (*AuthRule) IsPodSecurityPolicyRule ¶
IsPodSecurityPolicyRule checks if the rule is a pod security policy rule
type CVMap ¶
type CVMap map[string]*VariableDefinition
CVMap is a map from variable name to ConfigurationVariable, for various places which require quick access/search/existence check.
func MakeMapOfVariables ¶
func MakeMapOfVariables(roleManifest *RoleManifest) CVMap
MakeMapOfVariables converts the sequence of configuration variables into a map we can manipulate more directly by name.
type CVOptions ¶
type CVOptions struct { PreviousNames []string `yaml:"previous_names"` Default interface{} `yaml:"default"` Description string `yaml:"description"` Example string `yaml:"example"` Type CVType `yaml:"type"` Internal bool `yaml:"internal,omitempty"` Secret bool `yaml:"secret,omitempty"` Required bool `yaml:"required,omitempty"` Immutable bool `yaml:"immutable,omitempty"` ImageName bool `yaml:"imagename,omitempty"` IsCA bool `yaml:"is_ca,omitempty"` RoleName string `yaml:"role_name,omitempty"` AltNames []string `yaml:"alternative_names,omitempty"` }
CVOptions is a configuration to be exposed to the IaaS
Notes on the fields Type and Internal.
Type's legal values are `user` and `environment`. `user` is default.
A `user` CV is rendered into k8s yml config files, etc. to make it available to roles who need it. - An internal CV is rendered to all roles. - A public CV is rendered only to the roles whose templates refer to the CV.
An `environment` CV comes from a script, not the user. Being internal this way it is not rendered to any configuration files.
- Internal's legal values are all YAML boolean values. A public CV is used in templates An internal CV is not, consumed in a script instead.
type CVType ¶
type CVType string
CVType is the type of the configuration variable; see the constants below
type Configuration ¶
type Configuration struct { Authorization ConfigurationAuthorization `yaml:"auth,omitempty"` RawTemplates yaml.MapSlice `yaml:"templates"` Templates map[string]ConfigurationTemplate `yaml:"-"` }
Configuration contains information about how to configure the resulting images
type ConfigurationAuthorization ¶
type ConfigurationAuthorization struct { RoleUsedBy map[string]map[string]struct{} `yaml:"-"` Roles map[string]AuthRole `yaml:"roles,omitempty"` ClusterRoles map[string]AuthRole `yaml:"cluster-roles,omitempty"` ClusterRoleUsedBy map[string]map[string]struct{} `yaml:"-"` PodSecurityPolicies map[string]*PodSecurityPolicy `yaml:"pod-security-policies,omitempty"` Accounts map[string]AuthAccount `yaml:"accounts,omitempty"` }
ConfigurationAuthorization defines Configuration.Authorization
type ConfigurationTemplate ¶
ConfigurationTemplate contains one entry in a configuration template; this is the parsed value, as opposed to the raw value from YAML deserialization.
func (ConfigurationTemplate) MarshalYAML ¶
func (t ConfigurationTemplate) MarshalYAML() (interface{}, error)
MarshalYAML implements the yaml.Marshaler interface
type HealthCheck ¶
type HealthCheck struct { Liveness *HealthProbe `yaml:"liveness,omitempty"` // Details of liveness probe configuration Readiness *HealthProbe `yaml:"readiness,omitempty"` // Ditto for readiness probe }
HealthCheck describes a non-standard health check endpoint
type HealthProbe ¶
type HealthProbe struct { URL string `yaml:"url"` // URL for a HTTP GET to return 200~399. Cannot be used with other checks. Headers map[string]string `yaml:"headers"` // Custom headers; only used for URL. Command []string `yaml:"command,omitempty"` // Individual commands to run inside the container; each is interpreted as a shell command. Cannot be used with other checks. Port int `yaml:"port"` // Port for a TCP probe. Cannot be used with other checks. InitialDelay int `yaml:"initial_delay,omitempty"` // Initial Delay in seconds, default 3, minimum 1 Period int `yaml:"period,omitempty"` // Period in seconds, default 10, minimum 1 Timeout int `yaml:"timeout,omitempty"` // Timeout in seconds, default 3, minimum 1 SuccessThreshold int `yaml:"success_threshold,omitempty"` // Success threshold in seconds, default 1, minimum 1 FailureThreshold int `yaml:"failure_threshold,omitempty"` // Failure threshold in seconds, default 3, minimum 1 }
HealthProbe holds the configuration for liveness and readiness probes based on the HealthCheck containing them.
type InstanceGroup ¶
type InstanceGroup struct { Name string `yaml:"name"` DefaultFeature string `yaml:"default_feature"` IfFeature string `yaml:"if_feature"` UnlessFeature string `yaml:"unless_feature"` Description string `yaml:"description"` EnvironScripts []string `yaml:"environment_scripts"` Scripts []string `yaml:"scripts"` PostConfigScripts []string `yaml:"post_config_scripts"` Type RoleType `yaml:"type,omitempty"` JobReferences JobReferences `yaml:"jobs"` Configuration *Configuration `yaml:"configuration"` Tags []RoleTag `yaml:"tags"` Run *RoleRun `yaml:"-"` // contains filtered or unexported fields }
InstanceGroup represents a collection of jobs that are colocated on a container
func (*InstanceGroup) CalculateRoleConfigurationTemplates ¶
func (g *InstanceGroup) CalculateRoleConfigurationTemplates()
CalculateRoleConfigurationTemplates applies configuration variables to all templates
func (*InstanceGroup) CalculateRoleRun ¶
func (g *InstanceGroup) CalculateRoleRun() validation.ErrorList
CalculateRoleRun collects properties from the jobs run properties and puts them on the instance group It also validates where necessary and is run *before* validateRoleRun
func (*InstanceGroup) CollectPropertyDefaults ¶
func (g *InstanceGroup) CollectPropertyDefaults() PropertyDefaults
CollectPropertyDefaults looks through all used jobs and returns all properties defined in them, along with their default values and whether a hash may be used for that property.
func (*InstanceGroup) ColocatedContainers ¶
func (g *InstanceGroup) ColocatedContainers() []string
ColocatedContainers returns colocated_container entries from all jobs
func (*InstanceGroup) GetColocatedRoles ¶
func (g *InstanceGroup) GetColocatedRoles() InstanceGroups
GetColocatedRoles lists all colocation roles references by this instance group
func (*InstanceGroup) GetLongDescription ¶
func (g *InstanceGroup) GetLongDescription() string
GetLongDescription returns the description of the instance group plus a list of all included jobs
func (*InstanceGroup) GetRoleDevVersion ¶
func (g *InstanceGroup) GetRoleDevVersion(opinions *Opinions, tagExtra, fissileVersion string, grapher util.ModelGrapher) (string, error)
GetRoleDevVersion determines the version hash for the role, using the basic role dev version, and the aggregated spec and opinion information. In this manner opinion changes cause a rebuild of the associated role images.
func (*InstanceGroup) GetScriptPaths ¶
func (g *InstanceGroup) GetScriptPaths() map[string]string
GetScriptPaths returns the paths to the startup / post configgin scripts for a instance group
func (*InstanceGroup) GetScriptSignatures ¶
func (g *InstanceGroup) GetScriptSignatures() (string, error)
GetScriptSignatures returns the SHA1 of all of the script file names and contents
func (*InstanceGroup) GetTemplateSignatures ¶
func (g *InstanceGroup) GetTemplateSignatures() (string, error)
GetTemplateSignatures returns the SHA1 of all of the templates and contents
func (*InstanceGroup) GetVariablesForRole ¶
func (g *InstanceGroup) GetVariablesForRole() (Variables, error)
GetVariablesForRole returns all the environment variables required for calculating all the templates for the role
func (*InstanceGroup) HasTag ¶
func (g *InstanceGroup) HasTag(tag RoleTag) bool
HasTag returns true if the role has a specific tag
func (*InstanceGroup) IsColocated ¶
func (g *InstanceGroup) IsColocated() bool
IsColocated tests if the role is of type ColocatedContainer, or not. It returns true if this role is of that type, or false otherwise.
func (*InstanceGroup) LookupJob ¶
func (g *InstanceGroup) LookupJob(name string) *JobReference
LookupJob will find the given job in this role, or nil if not found
func (*InstanceGroup) Manifest ¶
func (g *InstanceGroup) Manifest() *RoleManifest
Manifest returns a reference to the instance groups role manifest
func (*InstanceGroup) SetRoleManifest ¶
func (g *InstanceGroup) SetRoleManifest(m *RoleManifest)
SetRoleManifest adds a reference to the instance groups role manifest
type InstanceGroups ¶
type InstanceGroups []*InstanceGroup
InstanceGroups is an array of Role*
func (InstanceGroups) Len ¶
func (igs InstanceGroups) Len() int
Len is the number of instance groups in the slice
func (InstanceGroups) Less ¶
func (igs InstanceGroups) Less(i, j int) bool
Less reports whether role at index i sort before role at index j
func (InstanceGroups) Swap ¶
func (igs InstanceGroups) Swap(i, j int)
Swap exchanges roles at index i and index j
type Job ¶
type Job struct { Name string Description string Templates []*JobTemplate Packages Packages Path string Fingerprint string SHA1 string Properties []*JobProperty Version string Release *Release AvailableProviders map[string]JobProvidesInfo DesiredConsumers []JobConsumesInfo // contains filtered or unexported fields }
Job represents a BOSH job
func (*Job) Extract ¶
Extract will extract the contents of the job archive to destination It creates a directory with the name of the job Returns the full path of the extracted archive
func (*Job) GetPropertiesForJob ¶
GetPropertiesForJob returns the parameters for the given job, using its specs and opinions
func (*Job) MergeSpec ¶
MergeSpec is used to merge temporary spec patches into each job. otherJob should only be the fissile-compat/patch-properties job. The code assumes package and property objects are immutable, as they're now being shared across jobs. Also, when specified packages or properties are specified in the "other" job, that one takes precedence.
func (*Job) ValidateSHA1 ¶
ValidateSHA1 validates that the SHA1 of the actual job archive is the same as the one from the release manifest
type JobBoshContainerization ¶
type JobBoshContainerization struct { Ports []JobExposedPort `yaml:"ports"` Run *RoleRun `yaml:"run"` ColocatedContainers []string `yaml:"colocated_containers,omitempty"` ServiceName string `yaml:"service_name,omitempty"` }
JobBoshContainerization describes settings specific to containerization
type JobConsumesInfo ¶
type JobConsumesInfo struct { JobLinkInfo Alias string `yaml:"from"` Ignore bool `yaml:"ignore"` Optional bool }
JobConsumesInfo describes the BOSH links a job consumes
type JobContainerProperties ¶
type JobContainerProperties struct {
BoshContainerization JobBoshContainerization `yaml:"bosh_containerization"`
}
JobContainerProperties describes job configuration
type JobExposedPort ¶
type JobExposedPort struct { Name string `yaml:"name"` Protocol string `yaml:"protocol"` External string `yaml:"external"` Internal string `yaml:"internal"` Public bool `yaml:"public"` Count int `yaml:"count"` Max int `yaml:"max"` PortIsConfigurable bool `yaml:"port-configurable"` CountIsConfigurable bool `yaml:"count-configurable"` InternalPort int ExternalPort int }
JobExposedPort describes a port to be available to other jobs, or the outside world
type JobLinkInfo ¶
type JobLinkInfo struct { Name string `json:"-" yaml:"-"` Type string `json:"-" yaml:"-"` RoleName string `json:"role" yaml:"-"` JobName string `json:"job" yaml:"-"` ServiceName string `json:"service_name" yaml:"-"` }
JobLinkInfo describes a BOSH link provider or consumer
type JobProperty ¶
JobProperty is a generic key-value property referenced by a job
func (*JobProperty) MarshalJSON ¶
func (p *JobProperty) MarshalJSON() ([]byte, error)
MarshalJSON implements the encoding/json.Marshaler interface
func (*JobProperty) MarshalYAML ¶
func (p *JobProperty) MarshalYAML() (interface{}, error)
MarshalYAML implements the yaml.Marshaler interface
type JobProvidesInfo ¶
type JobProvidesInfo struct { JobLinkInfo Alias string `yaml:"as"` Properties []string }
JobProvidesInfo describes a BOSH link provider
type JobReference ¶
type JobReference struct { *Job `yaml:"-"` // The resolved job Name string `yaml:"name"` // The name of the job ReleaseName string `yaml:"release"` // The release the job comes from ExportedProvides map[string]JobProvidesInfo `yaml:"provides"` ResolvedConsumes map[string]JobConsumesInfo `yaml:"consumes"` // Instance groups that this job links to & requires ResolvedConsumedBy map[string][]JobLinkInfo `yaml:"consumed_by"` // Instance groups that consume a link ContainerProperties JobContainerProperties `yaml:"properties"` }
JobReference from the deployment manifest, references a job spec from a release by ReleaseName
func (*JobReference) WriteConfigs ¶
func (j *JobReference) WriteConfigs(instanceGroup *InstanceGroup, lightOpinionsPath, darkOpinionsPath string) ([]byte, error)
WriteConfigs merges the job's spec with the opinions and returns the result as JSON.
type JobReferences ¶
type JobReferences []*JobReference
JobReferences is a collection of pointers to job references
func (JobReferences) WithRunProperty ¶
func (jobs JobReferences) WithRunProperty() JobReferences
WithRunProperty returns all jobs with a BOSH containerization run property could cache this on InstanceGroup if it turns out to be expensive
type JobTemplate ¶
JobTemplate represents a BOSH job template
func (*JobTemplate) Marshal ¶
func (t *JobTemplate) Marshal() (interface{}, error)
Marshal implements the util.Marshaler interface
type Jobs ¶
type Jobs []*Job
Jobs is an array of Job*
type LoadRoleManifestOptions ¶
type LoadRoleManifestOptions struct { ReleaseOptions Grapher util.ModelGrapher ValidationOptions RoleManifestValidationOptions }
LoadRoleManifestOptions provides the input to LoadRoleManifest()
type Opinions ¶
Opinions holds the light and dark opinions given to fissile
func NewEmptyOpinions ¶
func NewEmptyOpinions() *Opinions
NewEmptyOpinions returns an empty opinions object, used for testing and generating the version of the package layer, that doesn't change if opinions change
func NewOpinions ¶
NewOpinions returns the json opinions for the light and dark opinion files
func (*Opinions) GetOpinionForKey ¶
func (o *Opinions) GetOpinionForKey(opinions map[string]interface{}, keyPieces []string) (result interface{})
GetOpinionForKey pulls an opinion out of the holding container.
type Package ¶
type Package struct { Name string Version string Fingerprint string SHA1 string Release *Release Path string Dependencies Packages // contains filtered or unexported fields }
Package represents a BOSH package
func (*Package) Extract ¶
Extract will extract the contents of the package archive to destination It creates a directory with the name of the package Returns the full path of the extracted archive
func (*Package) GetPackageCompiledDir ¶
GetPackageCompiledDir returns the path to the build result directory of the package, underneath the main cache directory
func (*Package) GetPackageCompiledTempDir ¶
GetPackageCompiledTempDir returns the path to the build temp directory for the package, underneath the main cache directory
func (*Package) GetTargetPackageSourcesDir ¶
GetTargetPackageSourcesDir returns the path to the sources of the package, underneath the main cache directory
func (*Package) ValidateSHA1 ¶
ValidateSHA1 validates that the SHA1 of the actual package archive is the same as the one from the release manifest
type Packages ¶
type Packages []*Package
Packages is an array of *Package
type PodSecurityPolicy ¶
type PodSecurityPolicy struct {
Definition interface{}
}
PodSecurityPolicy defines a pod security policy
func (*PodSecurityPolicy) UnmarshalYAML ¶
func (policy *PodSecurityPolicy) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML implements the yaml.v2/Unmarshaler interface. We don't want to describe the whole PodSecurityPolicySpec, so just hold all of it in an interface{} instead
type PropertyDefaults ¶
type PropertyDefaults map[string]*PropertyInfo
PropertyDefaults is a map from property names to information about it needed for validation.
type PropertyInfo ¶
PropertyInfo is a structure listing the (stringified) defaults and the associated jobs for a property, plus other aggregated information (whether it is a hash, or not).
func NewPropertyInfo ¶
func NewPropertyInfo() *PropertyInfo
NewPropertyInfo creates a new PropertyInfo structure instance
type Release ¶
type Release struct { Jobs Jobs Packages Packages License ReleaseLicense Name string UncommittedChanges bool CommitHash string Version string Path string DevBOSHCacheDir string FinalRelease bool // contains filtered or unexported fields }
Release represents a BOSH release
func NewDevRelease ¶
NewDevRelease will create an instance of a BOSH development release
func NewFinalRelease ¶
NewFinalRelease will create an instance of a BOSH final release
func (*Release) GetUniqueConfigs ¶
func (r *Release) GetUniqueConfigs() map[string]*ReleaseConfig
GetUniqueConfigs returns all unique configs available in a release
func (*Release) LookupPackage ¶
LookupPackage will find a package within a BOSH release
func (*Release) ManifestFilePath ¶
ManifestFilePath returns the path to the releases manifest
func (*Release) ReleaseType ¶
ReleaseType returns a string identifying the type of the release: Dev or Final.
type ReleaseConfig ¶
ReleaseConfig is a global deployment configuration key
type ReleaseLicense ¶
type ReleaseLicense struct { // Files is a mapping of license file names to contents Files map[string][]byte // Release this license belongs to Release *Release }
ReleaseLicense represents the license of a BOSH release
type ReleaseOptions ¶
type ReleaseOptions struct { ReleasePaths []string ReleaseNames []string ReleaseVersions []string BOSHCacheDir string FinalReleasesDir string }
ReleaseOptions for releases
type ReleaseRef ¶
type ReleaseRef struct { Name string `yaml:"name"` URL string `yaml:"url"` SHA1 string `yaml:"sha1"` Version string `yaml:"version"` }
ReleaseRef represents a reference to a BOSH release from a manifest
type ReleaseResolver ¶
type ReleaseResolver interface { Load(ReleaseOptions, []*ReleaseRef) (Releases, error) CanValidate() bool MapReleases(Releases) error FindRelease(string) (*Release, bool) }
ReleaseResolver loads job specs from releases and acts as a registry for release structs containing those job specs
type RoleManifest ¶
type RoleManifest struct { InstanceGroups InstanceGroups `yaml:"instance_groups"` Configuration *Configuration `yaml:"configuration"` Variables Variables Releases []*ReleaseRef `yaml:"releases"` LoadedReleases Releases Features map[string]bool ManifestFilePath string ManifestContent []byte `yaml:"-"` }
RoleManifest represents a collection of roles
func NewRoleManifest ¶
func NewRoleManifest() *RoleManifest
NewRoleManifest returns a new role manifest struct
func (*RoleManifest) AddFeature ¶
func (m *RoleManifest) AddFeature(name string, enabledByDefault bool)
AddFeature will add a feature name to the manifest. A feature needs to be enabled only once to be enabled globally.
func (*RoleManifest) LoadManifestFromFile ¶
func (m *RoleManifest) LoadManifestFromFile(manifestFilePath string) (err error)
LoadManifestFromFile loads the manifest content from a file
func (*RoleManifest) LookupInstanceGroup ¶
func (m *RoleManifest) LookupInstanceGroup(name string) *InstanceGroup
LookupInstanceGroup will find the given instance group in the role manifest
func (*RoleManifest) SelectInstanceGroups ¶
func (m *RoleManifest) SelectInstanceGroups(roleNames []string) (InstanceGroups, error)
SelectInstanceGroups will find only the given instance groups in the role manifest
type RoleManifestValidationOptions ¶
type RoleManifestValidationOptions struct {
AllowMissingScripts bool
}
RoleManifestValidationOptions allows tests to skip some parts of validation
type RoleRun ¶
type RoleRun struct { Scaling *RoleRunScaling `yaml:"scaling"` Capabilities []string `yaml:"capabilities"` Privileged bool `yaml:"privileged"` PersistentVolumes []*RoleRunVolume `yaml:"persistent-volumes"` // Backwards compat only Volumes []*RoleRunVolume `yaml:"volumes"` MemRequest *int64 `yaml:"memory"` Memory *RoleRunMemory `yaml:"mem"` VirtualCPUs *float64 `yaml:"virtual-cpus"` CPU *RoleRunCPU `yaml:"cpu"` FlightStage FlightStage `yaml:"flight-stage"` HealthCheck *HealthCheck `yaml:"healthcheck,omitempty"` ActivePassiveProbe string `yaml:"active-passive-probe,omitempty"` ServiceAccount string `yaml:"service-account,omitempty"` Affinity *RoleRunAffinity `yaml:"affinity,omitempty"` }
RoleRun describes how a role should behave at runtime
type RoleRunAffinity ¶
type RoleRunAffinity struct { PodAntiAffinity interface{} `yaml:"podAntiAffinity,omitempty"` PodAffinity interface{} `yaml:"podAffinity,omitempty"` NodeAffinity interface{} `yaml:"nodeAffinity,omitempty"` }
RoleRunAffinity describes how a role should behave with regard to node / pod selection
type RoleRunCPU ¶
RoleRunCPU describes how a role should behave with regard to cpu usage.
type RoleRunMemory ¶
RoleRunMemory describes how a role should behave with regard to memory usage.
type RoleRunScaling ¶
type RoleRunScaling struct { Min int `yaml:"min"` Max int `yaml:"max"` HA int `yaml:"ha,omitempty"` MustBeOdd bool `yaml:"must_be_odd,omitempty"` }
RoleRunScaling describes how a role should scale out at runtime
type RoleRunVolume ¶
type RoleRunVolume struct { Type VolumeType `yaml:"type"` Path string `yaml:"path"` Tag string `yaml:"tag"` Size int `yaml:"size"` Annotations map[string]string `yaml:"annotations"` }
RoleRunVolume describes a volume to be attached at runtime
type VariableDefinition ¶
VariableDefinition from the BOSH deployment manifest Type is used to decide on a generator
func (*VariableDefinition) Value ¶
func (config *VariableDefinition) Value() (bool, string)
Value fetches the value of config variable