Enhance HorizontalRunnerAutoscaler API for ScheduledOverrides (#514)
This adds types and CRD changes related to HorizontalRunnerAutoscaler for the upcoming ScheduledOverrides feature. Ref #484
This commit is contained in:
parent
469b117a09
commit
b3cae25741
|
|
@ -142,6 +142,46 @@ type MetricSpec struct {
|
||||||
// You can only specify either ScaleDownFactor or ScaleDownAdjustment.
|
// You can only specify either ScaleDownFactor or ScaleDownAdjustment.
|
||||||
// +optional
|
// +optional
|
||||||
ScaleDownAdjustment int `json:"scaleDownAdjustment,omitempty"`
|
ScaleDownAdjustment int `json:"scaleDownAdjustment,omitempty"`
|
||||||
|
|
||||||
|
// ScheduledOverrides is the list of ScheduledOverride.
|
||||||
|
// It can be used to override a few fields of HorizontalRunnerAutoscalerSpec on schedule.
|
||||||
|
// The earlier a scheduled override is, the higher it is prioritized.
|
||||||
|
// +optional
|
||||||
|
ScheduledOverrides []ScheduledOverride `json:"scheduledOverrides,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ScheduledOverride can be used to override a few fields of HorizontalRunnerAutoscalerSpec on schedule.
|
||||||
|
// A schedule can optionally be recurring, so that the correspoding override happens every day, week, month, or year.
|
||||||
|
type ScheduledOverride struct {
|
||||||
|
// StartTime is the time at which the first override starts.
|
||||||
|
StartTime metav1.Time `json:"startTime"`
|
||||||
|
|
||||||
|
// EndTime is the time at which the first override ends.
|
||||||
|
EndTime metav1.Time `json:"endTime"`
|
||||||
|
|
||||||
|
// MinReplicas is the number of runners while overriding.
|
||||||
|
// If omitted, it doesn't override minReplicas.
|
||||||
|
// +optional
|
||||||
|
// +nullable
|
||||||
|
// +kubebuilder:validation:Minimum=0
|
||||||
|
MinReplicas *int `json:"minReplicas,omitempty"`
|
||||||
|
|
||||||
|
// +optional
|
||||||
|
RecurrenceRule RecurrenceRule `json:"recurrenceRule,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type RecurrenceRule struct {
|
||||||
|
// Frequency is the name of a predefined interval of each recurrence.
|
||||||
|
// The valid values are "Daily", "Weekly", "Monthly", and "Yearly".
|
||||||
|
// If empty, the corresponding override happens only once.
|
||||||
|
// +optional
|
||||||
|
// +kubebuilder:validation:Enum=Daily;Weekly;Monthly;Yearly
|
||||||
|
Frequency string `json:"frequency,omitempty"`
|
||||||
|
|
||||||
|
// UntilTime is the time of the final recurrence.
|
||||||
|
// If empty, the schedule recurs forever.
|
||||||
|
// +optional
|
||||||
|
UntilTime metav1.Time `json:"untilTime,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type HorizontalRunnerAutoscalerStatus struct {
|
type HorizontalRunnerAutoscalerStatus struct {
|
||||||
|
|
|
||||||
|
|
@ -263,6 +263,13 @@ func (in *MetricSpec) DeepCopyInto(out *MetricSpec) {
|
||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
|
if in.ScheduledOverrides != nil {
|
||||||
|
in, out := &in.ScheduledOverrides, &out.ScheduledOverrides
|
||||||
|
*out = make([]ScheduledOverride, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricSpec.
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricSpec.
|
||||||
|
|
@ -315,6 +322,22 @@ func (in *PushSpec) DeepCopy() *PushSpec {
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *RecurrenceRule) DeepCopyInto(out *RecurrenceRule) {
|
||||||
|
*out = *in
|
||||||
|
in.UntilTime.DeepCopyInto(&out.UntilTime)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RecurrenceRule.
|
||||||
|
func (in *RecurrenceRule) DeepCopy() *RecurrenceRule {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(RecurrenceRule)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *Runner) DeepCopyInto(out *Runner) {
|
func (in *Runner) DeepCopyInto(out *Runner) {
|
||||||
*out = *in
|
*out = *in
|
||||||
|
|
@ -833,3 +856,26 @@ func (in *ScaleUpTrigger) DeepCopy() *ScaleUpTrigger {
|
||||||
in.DeepCopyInto(out)
|
in.DeepCopyInto(out)
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ScheduledOverride) DeepCopyInto(out *ScheduledOverride) {
|
||||||
|
*out = *in
|
||||||
|
in.StartTime.DeepCopyInto(&out.StartTime)
|
||||||
|
in.EndTime.DeepCopyInto(&out.EndTime)
|
||||||
|
if in.MinReplicas != nil {
|
||||||
|
in, out := &in.MinReplicas, &out.MinReplicas
|
||||||
|
*out = new(int)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
in.RecurrenceRule.DeepCopyInto(&out.RecurrenceRule)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScheduledOverride.
|
||||||
|
func (in *ScheduledOverride) DeepCopy() *ScheduledOverride {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ScheduledOverride)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,57 @@ spec:
|
||||||
description: ScaleUpThreshold is the percentage of busy runners
|
description: ScaleUpThreshold is the percentage of busy runners
|
||||||
greater than which will trigger the hpa to scale runners up.
|
greater than which will trigger the hpa to scale runners up.
|
||||||
type: string
|
type: string
|
||||||
|
scheduledOverrides:
|
||||||
|
description: ScheduledOverrides is the list of ScheduledOverride.
|
||||||
|
It can be used to override a few fields of HorizontalRunnerAutoscalerSpec
|
||||||
|
on schedule. The earlier a scheduled override is, the higher
|
||||||
|
it is prioritized.
|
||||||
|
items:
|
||||||
|
description: ScheduledOverride can be used to override a few
|
||||||
|
fields of HorizontalRunnerAutoscalerSpec on schedule. A schedule
|
||||||
|
can optionally be recurring, so that the correspoding override
|
||||||
|
happens every day, week, month, or year.
|
||||||
|
properties:
|
||||||
|
endTime:
|
||||||
|
description: EndTime is the time at which the first override
|
||||||
|
ends.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
minReplicas:
|
||||||
|
description: MinReplicas is the number of runners while
|
||||||
|
overriding. If omitted, it doesn't override minReplicas.
|
||||||
|
minimum: 0
|
||||||
|
nullable: true
|
||||||
|
type: integer
|
||||||
|
recurrenceRule:
|
||||||
|
properties:
|
||||||
|
frequency:
|
||||||
|
description: Frequency is the name of a predefined interval
|
||||||
|
of each recurrence. The valid values are "Daily",
|
||||||
|
"Weekly", "Monthly", and "Yearly". If empty, the corresponding
|
||||||
|
override happens only once.
|
||||||
|
enum:
|
||||||
|
- Daily
|
||||||
|
- Weekly
|
||||||
|
- Monthly
|
||||||
|
- Yearly
|
||||||
|
type: string
|
||||||
|
untilTime:
|
||||||
|
description: UntilTime is the time of the final recurrence.
|
||||||
|
If empty, the schedule recurs forever.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
startTime:
|
||||||
|
description: StartTime is the time at which the first override
|
||||||
|
starts.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- endTime
|
||||||
|
- startTime
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
type:
|
type:
|
||||||
description: Type is the type of metric to be used for autoscaling.
|
description: Type is the type of metric to be used for autoscaling.
|
||||||
The only supported Type is TotalNumberOfQueuedAndInProgressWorkflowRuns
|
The only supported Type is TotalNumberOfQueuedAndInProgressWorkflowRuns
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,57 @@ spec:
|
||||||
description: ScaleUpThreshold is the percentage of busy runners
|
description: ScaleUpThreshold is the percentage of busy runners
|
||||||
greater than which will trigger the hpa to scale runners up.
|
greater than which will trigger the hpa to scale runners up.
|
||||||
type: string
|
type: string
|
||||||
|
scheduledOverrides:
|
||||||
|
description: ScheduledOverrides is the list of ScheduledOverride.
|
||||||
|
It can be used to override a few fields of HorizontalRunnerAutoscalerSpec
|
||||||
|
on schedule. The earlier a scheduled override is, the higher
|
||||||
|
it is prioritized.
|
||||||
|
items:
|
||||||
|
description: ScheduledOverride can be used to override a few
|
||||||
|
fields of HorizontalRunnerAutoscalerSpec on schedule. A schedule
|
||||||
|
can optionally be recurring, so that the correspoding override
|
||||||
|
happens every day, week, month, or year.
|
||||||
|
properties:
|
||||||
|
endTime:
|
||||||
|
description: EndTime is the time at which the first override
|
||||||
|
ends.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
minReplicas:
|
||||||
|
description: MinReplicas is the number of runners while
|
||||||
|
overriding. If omitted, it doesn't override minReplicas.
|
||||||
|
minimum: 0
|
||||||
|
nullable: true
|
||||||
|
type: integer
|
||||||
|
recurrenceRule:
|
||||||
|
properties:
|
||||||
|
frequency:
|
||||||
|
description: Frequency is the name of a predefined interval
|
||||||
|
of each recurrence. The valid values are "Daily",
|
||||||
|
"Weekly", "Monthly", and "Yearly". If empty, the corresponding
|
||||||
|
override happens only once.
|
||||||
|
enum:
|
||||||
|
- Daily
|
||||||
|
- Weekly
|
||||||
|
- Monthly
|
||||||
|
- Yearly
|
||||||
|
type: string
|
||||||
|
untilTime:
|
||||||
|
description: UntilTime is the time of the final recurrence.
|
||||||
|
If empty, the schedule recurs forever.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
startTime:
|
||||||
|
description: StartTime is the time at which the first override
|
||||||
|
starts.
|
||||||
|
format: date-time
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- endTime
|
||||||
|
- startTime
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
type:
|
type:
|
||||||
description: Type is the type of metric to be used for autoscaling.
|
description: Type is the type of metric to be used for autoscaling.
|
||||||
The only supported Type is TotalNumberOfQueuedAndInProgressWorkflowRuns
|
The only supported Type is TotalNumberOfQueuedAndInProgressWorkflowRuns
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue