 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package v1beta2 contains API Schema definitions for the optimize.stormforge.io v1beta2 API group +kubebuilder:object:generate=true +groupName=optimize.stormforge.io
Index ¶
- Constants
- Variables
- type Assignment
- type ConfigMapHelmValuesFromSource
- type Constraint
- type Experiment
- type ExperimentCondition
- type ExperimentConditionType
- type ExperimentList
- type ExperimentSpec
- type ExperimentStatus
- type HelmValue
- type HelmValueSource
- type HelmValuesFromSource
- type Metric
- type MetricType
- type NamespaceTemplateSpec
- type Optimization
- type OrderConstraint
- type Parameter
- type ParameterSelector
- type PatchOperation
- type PatchReadinessGate
- type PatchTemplate
- type PatchType
- type ReadinessCheck
- type ResourceTarget
- func (in *ResourceTarget) DeepCopy() *ResourceTarget
- func (in *ResourceTarget) DeepCopyInto(out *ResourceTarget)
- func (r *ResourceTarget) GroupVersionKind() schema.GroupVersionKind
- func (r *ResourceTarget) NamespacedName() types.NamespacedName
- func (r *ResourceTarget) SetGroupVersionKind(gvk schema.GroupVersionKind)
 
- type SetupTask
- type SumConstraint
- type SumConstraintParameter
- type Trial
- func (in *Trial) DeepCopy() *Trial
- func (in *Trial) DeepCopyInto(out *Trial)
- func (in *Trial) DeepCopyObject() runtime.Object
- func (in *Trial) ExperimentNamespacedName() types.NamespacedName
- func (in *Trial) GetAssignment(name string) (intstr.IntOrString, bool)
- func (in *Trial) GetJobSelector() *metav1.LabelSelector
- func (in *Trial) HasInitializer() bool
 
- type TrialCondition
- type TrialConditionType
- type TrialList
- type TrialReadinessGate
- type TrialSpec
- type TrialStatus
- type TrialTemplateSpec
- type Value
Constants ¶
const ( // AnnotationExperimentURL is the URL of the experiment on the remote server AnnotationExperimentURL = "stormforge.io/experiment-url" // AnnotationNextTrialURL is the URL used to obtain the next trial suggestion AnnotationNextTrialURL = "stormforge.io/next-trial-url" // AnnotationReportTrialURL is the URL used to report trial observations AnnotationReportTrialURL = "stormforge.io/report-trial-url" // AnnotationServerSync controls additional behavior around synchronizing the experiment remotely AnnotationServerSync = "stormforge.io/server-sync" // LabelExperiment is the name of the experiment associated with an object LabelExperiment = "stormforge.io/experiment" )
const ( // AnnotationInitializer is a comma-delimited list of initializing processes. Similar to a "finalizer", the trial // will not start executing until the initializer is empty. AnnotationInitializer = "stormforge.io/initializer" // LabelTrial contains the name of the trial associated with an object LabelTrial = "stormforge.io/trial" // LabelTrialRole contains the role in trial execution LabelTrialRole = "stormforge.io/trial-role" )
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: "optimize.stormforge.io", Version: "v1beta2"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
This section is empty.
Types ¶
type Assignment ¶
type Assignment struct {
	// Name of the parameter being assigned
	Name string `json:"name"`
	// Value of the assignment
	Value intstr.IntOrString `json:"value"`
}
    Assignment represents an individual name/value pair. Assignment names must correspond to parameter names on the associated experiment.
func (*Assignment) DeepCopy ¶
func (in *Assignment) DeepCopy() *Assignment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Assignment.
func (*Assignment) DeepCopyInto ¶
func (in *Assignment) DeepCopyInto(out *Assignment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ConfigMapHelmValuesFromSource ¶
type ConfigMapHelmValuesFromSource struct {
	corev1.LocalObjectReference `json:",inline"`
}
    ConfigMapHelmValuesFromSource is a reference to a ConfigMap that contains "*values.yaml" keys TODO How do document the side effect of things like patches in the ConfigMap also being applied?
func (*ConfigMapHelmValuesFromSource) DeepCopy ¶
func (in *ConfigMapHelmValuesFromSource) DeepCopy() *ConfigMapHelmValuesFromSource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapHelmValuesFromSource.
func (*ConfigMapHelmValuesFromSource) DeepCopyInto ¶
func (in *ConfigMapHelmValuesFromSource) DeepCopyInto(out *ConfigMapHelmValuesFromSource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Constraint ¶
type Constraint struct {
	// The optional name of the constraint
	Name string `json:"name,omitempty"`
	// The ordering constraint to impose
	Order *OrderConstraint `json:"order,omitempty"`
	// The sum constraint to impose
	Sum *SumConstraint `json:"sum,omitempty"`
}
    Constraint represents a constraint to the domain of the parameters
func (*Constraint) DeepCopy ¶
func (in *Constraint) DeepCopy() *Constraint
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Constraint.
func (*Constraint) DeepCopyInto ¶
func (in *Constraint) DeepCopyInto(out *Constraint)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Experiment ¶
type Experiment struct {
	metav1.TypeMeta `json:",inline"`
	// Standard object metadata
	metav1.ObjectMeta `json:"metadata,omitempty"`
	// Specification of the desired behavior for an experiment
	Spec ExperimentSpec `json:"spec,omitempty"`
	// Current status of an experiment
	Status ExperimentStatus `json:"status,omitempty"`
}
    Experiment is the Schema for the experiments API +kubebuilder:resource:shortName=exp +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.phase",description="Experiment status"
func (*Experiment) DeepCopy ¶
func (in *Experiment) DeepCopy() *Experiment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Experiment.
func (*Experiment) DeepCopyInto ¶
func (in *Experiment) DeepCopyInto(out *Experiment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Experiment) DeepCopyObject ¶
func (in *Experiment) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*Experiment) Replicas ¶
func (in *Experiment) Replicas() int32
Replicas returns the effective replica (trial) count for the experiment
func (*Experiment) SetReplicas ¶
func (in *Experiment) SetReplicas(r int)
SetReplicas establishes a new replica (trial) count for the experiment
func (*Experiment) TrialSelector ¶
func (in *Experiment) TrialSelector() *metav1.LabelSelector
TrialSelector returns a label selector for matching trials associated with the experiment
type ExperimentCondition ¶
type ExperimentCondition struct {
	// The condition type
	Type ExperimentConditionType `json:"type"`
	// The status of the condition, one of "True", "False", or "Unknown
	Status corev1.ConditionStatus `json:"status"`
	// The last known time the condition was checked
	LastProbeTime metav1.Time `json:"lastProbeTime"`
	// The time at which the condition last changed status
	LastTransitionTime metav1.Time `json:"lastTransitionTime"`
	// A reason code describing the why the condition occurred
	Reason string `json:"reason,omitempty"`
	// A human readable message describing the transition
	Message string `json:"message,omitempty"`
}
    ExperimentCondition represents an observed condition of an experiment
func (*ExperimentCondition) DeepCopy ¶
func (in *ExperimentCondition) DeepCopy() *ExperimentCondition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExperimentCondition.
func (*ExperimentCondition) DeepCopyInto ¶
func (in *ExperimentCondition) DeepCopyInto(out *ExperimentCondition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ExperimentConditionType ¶
type ExperimentConditionType string
ExperimentConditionType represents the possible observable conditions for an experiment
const ( // ExperimentComplete is a condition that indicates the experiment completed successfully ExperimentComplete ExperimentConditionType = "stormforge.io/experiment-complete" // ExperimentFailed is a condition that indicates an experiment failed ExperimentFailed ExperimentConditionType = "stormforge.io/experiment-failed" )
type ExperimentList ¶
type ExperimentList struct {
	metav1.TypeMeta `json:",inline"`
	// Standard list metadata
	metav1.ListMeta `json:"metadata,omitempty"`
	// The list of experiments
	Items []Experiment `json:"items"`
}
    ExperimentList contains a list of Experiment
func (*ExperimentList) DeepCopy ¶
func (in *ExperimentList) DeepCopy() *ExperimentList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExperimentList.
func (*ExperimentList) DeepCopyInto ¶
func (in *ExperimentList) DeepCopyInto(out *ExperimentList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ExperimentList) DeepCopyObject ¶
func (in *ExperimentList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ExperimentSpec ¶
type ExperimentSpec struct {
	// Replicas is the number of trials to execute concurrently, defaults to 1
	Replicas *int32 `json:"replicas,omitempty"`
	// Optimization defines additional configuration for the optimization
	Optimization []Optimization `json:"optimization,omitempty"`
	// Parameters defines the search space for the experiment
	Parameters []Parameter `json:"parameters"`
	// Constraints defines restrictions on the parameter domain for the experiment
	Constraints []Constraint `json:"constraints,omitempty"`
	// Metrics defines the outcomes for the experiment
	Metrics []Metric `json:"metrics"`
	// Patches is a sequence of templates written against the experiment parameters that will be used to put the
	// cluster into the desired state
	Patches []PatchTemplate `json:"patches,omitempty"`
	// NamespaceSelector is used to locate existing namespaces for trials
	NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty"`
	// NamespaceTemplate can be specified to create new namespaces for trials; if specified created namespaces must be
	// matched by the namespace selector
	NamespaceTemplate *NamespaceTemplateSpec `json:"namespaceTemplate,omitempty"`
	// Selector locates trial resources that are part of this experiment
	Selector *metav1.LabelSelector `json:"selector,omitempty"`
	// TrialTemplate for creating a new trial. The resulting trial must be matched by Selector. The template can provide an
	// initial namespace, however other namespaces (matched by NamespaceSelector) will be used if the effective
	// replica count is more then one
	TrialTemplate TrialTemplateSpec `json:"trialTemplate,omitempty"`
}
    ExperimentSpec defines the desired state of Experiment
func (*ExperimentSpec) DeepCopy ¶
func (in *ExperimentSpec) DeepCopy() *ExperimentSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExperimentSpec.
func (*ExperimentSpec) DeepCopyInto ¶
func (in *ExperimentSpec) DeepCopyInto(out *ExperimentSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ExperimentStatus ¶
type ExperimentStatus struct {
	// Phase is a brief human readable description of the experiment status
	Phase string `json:"phase"`
	// ActiveTrials is the observed number of running trials
	ActiveTrials int32 `json:"activeTrials"`
	// Conditions is the current state of the experiment
	Conditions []ExperimentCondition `json:"conditions,omitempty"`
}
    ExperimentStatus defines the observed state of Experiment
func (*ExperimentStatus) DeepCopy ¶
func (in *ExperimentStatus) DeepCopy() *ExperimentStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExperimentStatus.
func (*ExperimentStatus) DeepCopyInto ¶
func (in *ExperimentStatus) DeepCopyInto(out *ExperimentStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type HelmValue ¶
type HelmValue struct {
	// The name of Helm value as passed to one of the set options
	Name string `json:"name"`
	// Force the value to be treated as a string
	ForceString bool `json:"forceString,omitempty"`
	// Set a Helm value using the evaluated template. Templates are evaluated using the same rules as patches
	Value intstr.IntOrString `json:"value,omitempty"`
	// Source for a Helm value
	ValueFrom *HelmValueSource `json:"valueFrom,omitempty"`
}
    HelmValue represents a value in a Helm template
func (*HelmValue) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmValue.
func (*HelmValue) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type HelmValueSource ¶
type HelmValueSource struct {
	// Selects a trial parameter assignment as a Helm value
	ParameterRef *ParameterSelector `json:"parameterRef,omitempty"`
}
    HelmValueSource represents a source for a Helm value
func (*HelmValueSource) DeepCopy ¶
func (in *HelmValueSource) DeepCopy() *HelmValueSource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmValueSource.
func (*HelmValueSource) DeepCopyInto ¶
func (in *HelmValueSource) DeepCopyInto(out *HelmValueSource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type HelmValuesFromSource ¶
type HelmValuesFromSource struct {
	// The ConfigMap to select from
	ConfigMap *ConfigMapHelmValuesFromSource `json:"configMap,omitempty"`
}
    HelmValuesFromSource represents a source of a values mapping
func (*HelmValuesFromSource) DeepCopy ¶
func (in *HelmValuesFromSource) DeepCopy() *HelmValuesFromSource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelmValuesFromSource.
func (*HelmValuesFromSource) DeepCopyInto ¶
func (in *HelmValuesFromSource) DeepCopyInto(out *HelmValuesFromSource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Metric ¶
type Metric struct {
	// The name of the metric
	Name string `json:"name"`
	// Indicator that the goal of the experiment is to minimize the value of this metric
	Minimize bool `json:"minimize,omitempty"`
	// The inclusive minimum allowed value for the metric
	Min *resource.Quantity `json:"min,omitempty"`
	// The inclusive maximum allowed value for the metric
	Max *resource.Quantity `json:"max,omitempty"`
	// Indicator that this metric should be optimized (default: true)
	Optimize *bool `json:"optimize,omitempty"`
	// The metric collection type, one of: kubernetes|prometheus|datadog|jsonpath, default: kubernetes
	Type MetricType `json:"type,omitempty"`
	// Collection type specific query, e.g. Go template for "kubernetes", PromQL for "prometheus" or a JSON pointer expression (with curly braces) for "jsonpath"
	Query string `json:"query"`
	// Collection type specific query for the error associated with collected metric value
	ErrorQuery string `json:"errorQuery,omitempty"`
	// URL to use when querying remote metric sources.
	URL string `json:"url,omitempty"`
	// Target reference of the Kubernetes object to query for metric information.
	Target *ResourceTarget `json:"target,omitempty"`
}
    Metric represents an observable outcome from a trial run
func (*Metric) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metric.
func (*Metric) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetricType ¶
type MetricType string
MetricType represents the allowable types of metrics
const ( // MetricKubernetes metrics issue Kubernetes API requests using the target reference and selector (if no // reference is supplied, the trial itself is assumed). Queries are Go Templates evaluated against the // the result of the API call. MetricKubernetes MetricType = "kubernetes" // MetricPrometheus metrics issue PromQL queries to a matched service. Queries MUST evaluate to a scalar value. MetricPrometheus MetricType = "prometheus" // MetricDatadog metrics issue queries to the Datadog service. Requires API and application key configuration. MetricDatadog MetricType = "datadog" // MetricJSONPath metrics fetch a JSON resource from the matched service. Queries are JSON path expression evaluated against the resource. MetricJSONPath MetricType = "jsonpath" // MetricNewRelic metrics issue queries to the New Relic service. Requires API and application key configuration. MetricNewRelic MetricType = "newrelic" )
type NamespaceTemplateSpec ¶
type NamespaceTemplateSpec struct {
	// Standard object metadata
	metav1.ObjectMeta `json:"metadata,omitempty"`
	// Specification of the namespace
	Spec corev1.NamespaceSpec `json:"spec,omitempty"`
}
    NamespaceTemplateSpec is used as a template for creating new namespaces
func (*NamespaceTemplateSpec) DeepCopy ¶
func (in *NamespaceTemplateSpec) DeepCopy() *NamespaceTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespaceTemplateSpec.
func (*NamespaceTemplateSpec) DeepCopyInto ¶
func (in *NamespaceTemplateSpec) DeepCopyInto(out *NamespaceTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Optimization ¶
type Optimization struct {
	// Name is the name of the optimization configuration to set
	Name string `json:"name"`
	// Value is string representation of the optimization configuration
	Value string `json:"value"`
}
    Optimization is a configuration setting for the optimizer
func (*Optimization) DeepCopy ¶
func (in *Optimization) DeepCopy() *Optimization
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Optimization.
func (*Optimization) DeepCopyInto ¶
func (in *Optimization) DeepCopyInto(out *Optimization)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OrderConstraint ¶
type OrderConstraint struct {
	// LowerParameter is the name of the parameter that must be the smaller of two parameters
	LowerParameter string `json:"lowerParameter"`
	// UpperParameter is the name of the parameter that must be the larger of two parameters
	UpperParameter string `json:"upperParameter"`
}
    OrderConstraint defines a constraint between the ordering of two parameters in the experiment
func (*OrderConstraint) DeepCopy ¶
func (in *OrderConstraint) DeepCopy() *OrderConstraint
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrderConstraint.
func (*OrderConstraint) DeepCopyInto ¶
func (in *OrderConstraint) DeepCopyInto(out *OrderConstraint)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Parameter ¶
type Parameter struct {
	// The name of the parameter
	Name string `json:"name"`
	// The baseline value for this parameter.
	Baseline *intstr.IntOrString `json:"baseline,omitempty"`
	// The inclusive minimum value of the parameter
	Min int32 `json:"min,omitempty"`
	// The inclusive maximum value of the parameter
	Max int32 `json:"max,omitempty"`
	// The discrete allowed values of the parameter
	Values []string `json:"values,omitempty"`
}
    Parameter represents the domain of a single component of the experiment search space
func (*Parameter) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Parameter.
func (*Parameter) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ParameterSelector ¶
type ParameterSelector struct {
	// The name of the trial parameter to use
	Name string `json:"name"`
}
    ParameterSelector selects a trial parameter assignment. Note that parameters values are used as is (i.e. in numeric form), for more control over the formatting of a parameter assignment use the template option on HelmValue.
func (*ParameterSelector) DeepCopy ¶
func (in *ParameterSelector) DeepCopy() *ParameterSelector
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParameterSelector.
func (*ParameterSelector) DeepCopyInto ¶
func (in *ParameterSelector) DeepCopyInto(out *ParameterSelector)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PatchOperation ¶
type PatchOperation struct {
	// The reference to the object that the patched should be applied to
	TargetRef corev1.ObjectReference `json:"targetRef"`
	// The patch content type, must be a type supported by the Kubernetes API server
	PatchType types.PatchType `json:"patchType"`
	// The raw data representing the patch to be applied
	Data []byte `json:"data"`
	// The number of remaining attempts to apply the patch, will be automatically set
	// to zero if the patch is successfully applied
	AttemptsRemaining int `json:"attemptsRemaining,omitempty"`
}
    PatchOperation represents a patch used to prepare the cluster for a trial run, includes the evaluated parameter assignments as necessary
func (*PatchOperation) DeepCopy ¶
func (in *PatchOperation) DeepCopy() *PatchOperation
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchOperation.
func (*PatchOperation) DeepCopyInto ¶
func (in *PatchOperation) DeepCopyInto(out *PatchOperation)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PatchReadinessGate ¶
type PatchReadinessGate struct {
	// ConditionType refers to a condition in the patched target's condition list
	ConditionType string `json:"conditionType"`
}
    PatchReadinessGate contains a reference to a condition
func (*PatchReadinessGate) DeepCopy ¶
func (in *PatchReadinessGate) DeepCopy() *PatchReadinessGate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchReadinessGate.
func (*PatchReadinessGate) DeepCopyInto ¶
func (in *PatchReadinessGate) DeepCopyInto(out *PatchReadinessGate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PatchTemplate ¶
type PatchTemplate struct {
	// The patch type, one of: strategic|merge|json, default: strategic
	Type PatchType `json:"type,omitempty"`
	// Direct reference to the object the patch should be applied to
	TargetRef *corev1.ObjectReference `json:"targetRef,omitempty"`
	// A Go Template that evaluates to valid patch
	Patch string `json:"patch"`
	// ReadinessGates will be evaluated for patch target readiness. A patch target is ready if all conditions specified
	// in the readiness gates have a status equal to "True". If no readiness gates are specified, some target types may
	// have default gates assigned to them. Some condition checks may result in errors, e.g. a condition type of "Ready"
	// is not allowed for a ConfigMap. Condition types starting with "stormforge.io/" may not appear in the patched
	// target's condition list, but are still evaluated against the resource's state.
	ReadinessGates []PatchReadinessGate `json:"readinessGates,omitempty"`
}
    PatchTemplate defines a target resource and a patch template to apply
func (*PatchTemplate) DeepCopy ¶
func (in *PatchTemplate) DeepCopy() *PatchTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PatchTemplate.
func (*PatchTemplate) DeepCopyInto ¶
func (in *PatchTemplate) DeepCopyInto(out *PatchTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ReadinessCheck ¶
type ReadinessCheck struct {
	// TargetRef is the reference to the object to test the readiness of
	TargetRef corev1.ObjectReference `json:"targetRef"`
	// Selector may be used to trigger a search for multiple related objects to search; this may have RBAC implications,
	// in particular "list" permissions are required
	Selector *metav1.LabelSelector `json:"selector,omitempty"`
	// ConditionTypes are the status conditions that must be "True"; in addition to conditions that appear in the
	// status of the target object, additional special conditions starting with "stormforge.io/" can be tested
	ConditionTypes []string `json:"conditionTypes,omitempty"`
	// InitialDelaySeconds is the approximate number of seconds after all of the patches have been applied to start
	// evaluating this check
	InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty"`
	// PeriodSeconds is the approximate amount of time in between evaluation attempts of this check
	PeriodSeconds int32 `json:"periodSeconds,omitempty"`
	// AttemptsRemaining is the number of failed attempts to allow before marking the entire trial as failed, will be
	// automatically set to zero if the check has been successfully evaluated
	AttemptsRemaining int32 `json:"attemptsRemaining,omitempty"`
	// LastCheckTime is the timestamp of the last evaluation attempt
	LastCheckTime *metav1.Time `json:"lastCheckTime,omitempty"`
}
    ReadinessCheck represents a check to determine when the patched application is "ready" and it is safe to start the trial run job
func (*ReadinessCheck) DeepCopy ¶
func (in *ReadinessCheck) DeepCopy() *ReadinessCheck
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReadinessCheck.
func (*ReadinessCheck) DeepCopyInto ¶
func (in *ReadinessCheck) DeepCopyInto(out *ReadinessCheck)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceTarget ¶
type ResourceTarget struct {
	// API version of the referent.
	APIVersion string `json:"apiVersion,omitempty"`
	// Kind of the referent.
	Kind string `json:"kind,omitempty"`
	// Namespace of the referent.
	Namespace string `json:"namespace,omitempty"`
	// Name of the referent, if blank then the selector is used to match a list of resources.
	Name string `json:"name,omitempty"`
	// LabelSelector matches labels when the name is left unspecified.
	*metav1.LabelSelector `json:",inline"`
}
    ResourceTarget contains enough information to reference either a single target resource by name, or a group of target resources by label.
func (*ResourceTarget) DeepCopy ¶
func (in *ResourceTarget) DeepCopy() *ResourceTarget
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceTarget.
func (*ResourceTarget) DeepCopyInto ¶
func (in *ResourceTarget) DeepCopyInto(out *ResourceTarget)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ResourceTarget) GroupVersionKind ¶
func (r *ResourceTarget) GroupVersionKind() schema.GroupVersionKind
GroupVersionKind returns the GVK for the target reference.
func (*ResourceTarget) NamespacedName ¶
func (r *ResourceTarget) NamespacedName() types.NamespacedName
NamespacedName returns the namespaced name for the target reference.
func (*ResourceTarget) SetGroupVersionKind ¶
func (r *ResourceTarget) SetGroupVersionKind(gvk schema.GroupVersionKind)
SetGroupVersionKind overwrites the GVK for the target reference.
type SetupTask ¶
type SetupTask struct {
	// The name that uniquely identifies the setup task
	Name string `json:"name"`
	// Override the default image used for performing setup tasks
	Image string `json:"image,omitempty"`
	// Override the default command for the container
	Command []string `json:"command,omitempty"`
	// Override the default args for the container
	Args []string `json:"args,omitempty"`
	// Flag to indicate the creation part of the task can be skipped
	SkipCreate bool `json:"skipCreate,omitempty"`
	// Flag to indicate the deletion part of the task can be skipped
	SkipDelete bool `json:"skipDelete,omitempty"`
	// Volume mounts for the setup task
	VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"`
	// Environment variables to expose to the container
	Env []corev1.EnvVar `json:"env,omitempty"`
	// Labels to associate with the setup task
	Labels map[string]string `json:"labels,omitempty"`
	// The Helm chart reference to release as part of this task
	HelmChart string `json:"helmChart,omitempty"`
	// The Helm chart version, empty means use the latest
	HelmChartVersion string `json:"helmChartVersion,omitempty"`
	// The Helm values to set, ignored unless helmChart is also set
	HelmValues []HelmValue `json:"helmValues,omitempty"`
	// The Helm values, ignored unless helmChart is also set
	HelmValuesFrom []HelmValuesFromSource `json:"helmValuesFrom,omitempty"`
	// The Helm repository to fetch the chart from
	HelmRepository string `json:"helmRepository,omitempty"`
}
    SetupTask represents the configuration necessary to apply application state to the cluster prior to each trial run and remove that state after the run concludes
func (*SetupTask) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SetupTask.
func (*SetupTask) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SumConstraint ¶
type SumConstraint struct {
	// Bound for the sum of the listed parameters
	Bound resource.Quantity `json:"bound"`
	// IsUpperBound determines if the bound values is an upper or lower bound on the sum
	IsUpperBound bool `json:"isUpperBound,omitempty"`
	// Parameters that should be summed
	Parameters []SumConstraintParameter `json:"parameters"`
}
    SumConstraint defines a constraint between the sum of a collection of parameters
func (*SumConstraint) DeepCopy ¶
func (in *SumConstraint) DeepCopy() *SumConstraint
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SumConstraint.
func (*SumConstraint) DeepCopyInto ¶
func (in *SumConstraint) DeepCopyInto(out *SumConstraint)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SumConstraintParameter ¶
type SumConstraintParameter struct {
	// Name of the parameter
	Name string `json:"name"`
	// Weight of the parameter
	Weight resource.Quantity `json:"weight"`
}
    SumConstraintParameter is a weighted parameter specification in a sum constraint
func (*SumConstraintParameter) DeepCopy ¶
func (in *SumConstraintParameter) DeepCopy() *SumConstraintParameter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SumConstraintParameter.
func (*SumConstraintParameter) DeepCopyInto ¶
func (in *SumConstraintParameter) DeepCopyInto(out *SumConstraintParameter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Trial ¶
type Trial struct {
	metav1.TypeMeta `json:",inline"`
	// Standard object metadata
	metav1.ObjectMeta `json:"metadata,omitempty"`
	// Specification of the desired behavior for a trial
	Spec TrialSpec `json:"spec,omitempty"`
	// Current status of a trial
	Status TrialStatus `json:"status,omitempty"`
}
    Trial is the Schema for the trials API +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.phase",description="Trial status" +kubebuilder:printcolumn:name="Assignments",type="string",JSONPath=".status.assignments",description="Current assignments" +kubebuilder:printcolumn:name="Values",type="string",JSONPath=".status.values",description="Current values"
func (*Trial) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Trial.
func (*Trial) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Trial) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*Trial) ExperimentNamespacedName ¶
func (in *Trial) ExperimentNamespacedName() types.NamespacedName
ExperimentNamespacedName returns the namespaced name of the experiment for this trial
func (*Trial) GetAssignment ¶
func (in *Trial) GetAssignment(name string) (intstr.IntOrString, bool)
GetAssignment returns an assignment value by name
func (*Trial) GetJobSelector ¶
func (in *Trial) GetJobSelector() *metav1.LabelSelector
GetJobSelector returns the job selector
func (*Trial) HasInitializer ¶
HasInitializer checks to see if the trial has an initializer
type TrialCondition ¶
type TrialCondition struct {
	// The condition type, e.g. "stormforge.io/trial-complete"
	Type TrialConditionType `json:"type"`
	// The status of the condition, one of "True", "False", or "Unknown
	Status corev1.ConditionStatus `json:"status"`
	// The last known time the condition was checked
	LastProbeTime metav1.Time `json:"lastProbeTime"`
	// The time at which the condition last changed status
	LastTransitionTime metav1.Time `json:"lastTransitionTime"`
	// A reason code describing the why the condition occurred
	Reason string `json:"reason,omitempty"`
	// A human readable message describing the transition
	Message string `json:"message,omitempty"`
}
    TrialCondition represents an observed condition of a trial
func (*TrialCondition) DeepCopy ¶
func (in *TrialCondition) DeepCopy() *TrialCondition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrialCondition.
func (*TrialCondition) DeepCopyInto ¶
func (in *TrialCondition) DeepCopyInto(out *TrialCondition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TrialConditionType ¶
type TrialConditionType string
TrialConditionType represents the possible observable conditions for a trial
const ( // TrialComplete is a condition that indicates a successful trial run TrialComplete TrialConditionType = "stormforge.io/trial-complete" // TrialFailed is a condition that indicates a failed trial run TrialFailed TrialConditionType = "stormforge.io/trial-failed" // TrialSetupCreated is a condition that indicates all "create" setup tasks have finished TrialSetupCreated TrialConditionType = "stormforge.io/trial-setup-created" // TrialSetupDeleted is a condition that indicates all "delete" setup tasks have finished TrialSetupDeleted TrialConditionType = "stormforge.io/trial-setup-deleted" // TrialPatched is a condition that indicates patches have been applied for a trial TrialPatched TrialConditionType = "stormforge.io/trial-patched" // TrialReady is a condition that indicates the application is ready after patches were applied TrialReady TrialConditionType = "stormforge.io/trial-ready" // TrialObserved is a condition that indicates a trial has had metrics collected TrialObserved TrialConditionType = "stormforge.io/trial-observed" )
type TrialList ¶
type TrialList struct {
	metav1.TypeMeta `json:",inline"`
	// Standard list metadata
	metav1.ListMeta `json:"metadata,omitempty"`
	// The list of trials
	Items []Trial `json:"items"`
}
    TrialList contains a list of Trial
func (*TrialList) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrialList.
func (*TrialList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*TrialList) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type TrialReadinessGate ¶
type TrialReadinessGate struct {
	// Kind of the readiness target
	Kind string `json:"kind,omitempty"`
	// Name of the readiness target, mutually exclusive with "Selector"
	Name string `json:"name,omitempty"`
	// APIVersion of the readiness target
	APIVersion string `json:"apiVersion,omitempty"`
	// Selector matches the resources whose condition must be checked, mutually exclusive with "Name"
	Selector *metav1.LabelSelector `json:"selector,omitempty"`
	// ConditionTypes are the status conditions that must be "True"
	ConditionTypes []string `json:"conditionTypes,omitempty"`
	// InitialDelaySeconds is the approximate number of seconds after all of the patches have been applied to start
	// evaluating this check
	InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty"`
	// PeriodSeconds is the approximate amount of time in between evaluation attempts of this check;
	// defaults to 10 seconds, minimum value is 1 second
	PeriodSeconds int32 `json:"periodSeconds,omitempty"`
	// FailureThreshold is number of times that any of the specified ready conditions may be "False";
	// defaults to 3, minimum value is 1
	FailureThreshold int32 `json:"failureThreshold,omitempty"`
}
    TrialReadinessGate represents a readiness check on one or more objects that must pass after patches have been applied, but before the trial run job can start
func (*TrialReadinessGate) DeepCopy ¶
func (in *TrialReadinessGate) DeepCopy() *TrialReadinessGate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrialReadinessGate.
func (*TrialReadinessGate) DeepCopyInto ¶
func (in *TrialReadinessGate) DeepCopyInto(out *TrialReadinessGate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TrialSpec ¶
type TrialSpec struct {
	// ExperimentRef is the reference to the experiment that contains the definitions to use for this trial,
	// defaults to an experiment in the same namespace with the same name
	ExperimentRef *corev1.ObjectReference `json:"experimentRef,omitempty"`
	// Assignments are used to patch the cluster state prior to the trial run
	Assignments []Assignment `json:"assignments,omitempty"`
	// Selector matches the job representing the trial run
	Selector *metav1.LabelSelector `json:"selector,omitempty"`
	// JobTemplate is the job template used to create trial run jobs
	JobTemplate *batchv1beta1.JobTemplateSpec `json:"jobTemplate,omitempty"`
	// InitialDelaySeconds is number of seconds to wait after a trial becomes ready before starting the trial run job
	InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty"`
	// The offset used to adjust the start time to account for spin up of the trial run
	StartTimeOffset *metav1.Duration `json:"startTimeOffset,omitempty"`
	// The approximate amount of time the trial run should execute (not inclusive of the start time offset)
	ApproximateRuntime *metav1.Duration `json:"approximateRuntime,omitempty"`
	// The minimum number of seconds before an attempt should be made to clean up the trial, if unset or negative no attempt is made to clean up the trial
	TTLSecondsAfterFinished *int32 `json:"ttlSecondsAfterFinished,omitempty"`
	// The minimum number of seconds before an attempt should be made to clean up a failed trial, defaults to TTLSecondsAfterFinished
	TTLSecondsAfterFailure *int32 `json:"ttlSecondsAfterFailure,omitempty"`
	// The readiness gates to check before running the trial job
	ReadinessGates []TrialReadinessGate `json:"readinessGates,omitempty"`
	// Values are the collected metrics at the end of the trial run
	Values []Value `json:"values,omitempty"`
	// Setup tasks that must run before the trial starts (and possibly after it ends)
	SetupTasks []SetupTask `json:"setupTasks,omitempty"`
	// Volumes to make available to setup tasks, typically ConfigMap backed volumes
	SetupVolumes []corev1.Volume `json:"setupVolumes,omitempty"`
	// Service account name for running setup tasks, needs enough permissions to add and remove software
	SetupServiceAccountName string `json:"setupServiceAccountName,omitempty"`
	// Cluster role name to be assigned to the setup service account when creating namespaces
	SetupDefaultClusterRole string `json:"setupDefaultClusterRole,omitempty"`
	// Policy rules to be assigned to the setup service account when creating namespaces
	SetupDefaultRules []rbacv1.PolicyRule `json:"setupDefaultRules,omitempty"`
}
    TrialSpec defines the desired state of Trial
func (*TrialSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrialSpec.
func (*TrialSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TrialStatus ¶
type TrialStatus struct {
	// Phase is a brief human readable description of the trial status
	Phase string `json:"phase"`
	// Assignments is a string representation of the trial assignments for reporting purposes
	Assignments string `json:"assignments"`
	// Values is a string representation of the trial values for reporting purposes
	Values string `json:"values"`
	// StartTime is the effective (possibly adjusted) time the trial run job started
	StartTime *metav1.Time `json:"startTime,omitempty"`
	// CompletionTime is the effective (possibly adjusted) time the trial run job completed
	CompletionTime *metav1.Time `json:"completionTime,omitempty"`
	// Conditions is the current state of the trial
	Conditions []TrialCondition `json:"conditions,omitempty"`
	// PatchOperations are the patches from the experiment evaluated in the context of this trial
	PatchOperations []PatchOperation `json:"patchOperations,omitempty"`
	// ReadinessChecks are the all of the objects whose conditions need to be inspected for this trial
	ReadinessChecks []ReadinessCheck `json:"readinessChecks,omitempty"`
}
    TrialStatus defines the observed state of Trial
func (*TrialStatus) DeepCopy ¶
func (in *TrialStatus) DeepCopy() *TrialStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrialStatus.
func (*TrialStatus) DeepCopyInto ¶
func (in *TrialStatus) DeepCopyInto(out *TrialStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TrialTemplateSpec ¶
type TrialTemplateSpec struct {
	// Standard object metadata
	metav1.ObjectMeta `json:"metadata,omitempty"`
	// Specification of the desired behavior for the trial
	Spec TrialSpec `json:"spec,omitempty"`
}
    TrialTemplateSpec is used as a template for creating new trials
func (*TrialTemplateSpec) DeepCopy ¶
func (in *TrialTemplateSpec) DeepCopy() *TrialTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrialTemplateSpec.
func (*TrialTemplateSpec) DeepCopyInto ¶
func (in *TrialTemplateSpec) DeepCopyInto(out *TrialTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Value ¶
type Value struct {
	// The metric name the value corresponds to
	Name string `json:"name"`
	// The observed float64 value, formatted as a string
	Value string `json:"value"`
	// The observed float64 error (standard deviation), formatted as a string
	Error string `json:"error,omitempty"`
	// The number of remaining attempts to observer the value, will be automatically set
	// to zero if the metric is successfully collected
	AttemptsRemaining int `json:"attemptsRemaining,omitempty"`
}
    Value represents an observed metric value after a trial run has completed successfully. Value names must correspond to metric names on the associated experiment.
func (*Value) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Value.
func (*Value) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.