Documentation
¶
Index ¶
- Constants
- Variables
- func Kind(kind string) schema.GroupKind
- func Resource(resource string) schema.GroupResource
- type AutoScalingConfig
- type CliqueStartupType
- type ErrorCode
- type HeadlessServiceConfig
- type LastError
- type LastOperation
- type LastOperationState
- type LastOperationType
- type NetworkPackGroupConfig
- type PodClique
- type PodCliqueList
- type PodCliqueRollingUpdateProgress
- type PodCliqueScalingGroup
- type PodCliqueScalingGroupConfig
- type PodCliqueScalingGroupList
- type PodCliqueScalingGroupReplicaRollingUpdateProgress
- type PodCliqueScalingGroupRollingUpdateProgress
- type PodCliqueScalingGroupSpec
- type PodCliqueScalingGroupStatus
- type PodCliqueSet
- type PodCliqueSetList
- type PodCliqueSetReplicaRollingUpdateProgress
- type PodCliqueSetRollingUpdateProgress
- type PodCliqueSetSpec
- type PodCliqueSetStatus
- type PodCliqueSetTemplateSpec
- type PodCliqueSpec
- type PodCliqueStatus
- type PodCliqueTemplateSpec
- type PodGangPhase
- type PodGangStatus
- type PodsSelectedToUpdate
- type SchedulingPolicyConfig
Constants ¶
const (
// GroupName is the name of the group for all resources defined in this package.
GroupName = "grove.io"
)
Variables ¶
var ( // SchemeGroupVersion is group version used to register these objects SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme is a reference to the Scheme Builder's AddToScheme function. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
Types ¶
type AutoScalingConfig ¶
type AutoScalingConfig struct { // MinReplicas is the lower limit for the number of replicas for the target resource. // It will be used by the horizontal pod autoscaler to determine the minimum number of replicas to scale-in to. // +optional MinReplicas *int32 `json:"minReplicas,omitempty"` // maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. // It cannot be less that minReplicas. MaxReplicas int32 `json:"maxReplicas"` // Metrics contains the specifications for which to use to calculate the // desired replica count (the maximum replica count across all metrics will // be used). The desired replica count is calculated multiplying the // ratio between the target value and the current value by the current // number of pods. Ergo, metrics used must decrease as the pod count is // increased, and vice versa. See the individual metric source types for // more information about how each type of metric must respond. // If not set, the default metric will be set to 80% average CPU utilization. // +listType=atomic // +optional Metrics []autoscalingv2.MetricSpec `json:"metrics,omitempty" protobuf:"bytes,4,rep,name=metrics"` }
AutoScalingConfig defines the configuration for the horizontal pod autoscaler.
func (*AutoScalingConfig) DeepCopy ¶
func (in *AutoScalingConfig) DeepCopy() *AutoScalingConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoScalingConfig.
func (*AutoScalingConfig) DeepCopyInto ¶
func (in *AutoScalingConfig) DeepCopyInto(out *AutoScalingConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CliqueStartupType ¶
type CliqueStartupType string
CliqueStartupType defines the order in which each PodClique is started. +kubebuilder:validation:Enum={CliqueStartupTypeAnyOrder,CliqueStartupTypeInOrder,CliqueStartupTypeExplicit}
const ( // CliqueStartupTypeAnyOrder defines that the cliques can be started in any order. This allows for concurrent starts of cliques. // This is the default CliqueStartupType. CliqueStartupTypeAnyOrder CliqueStartupType = "CliqueStartupTypeAnyOrder" // CliqueStartupTypeInOrder defines that the cliques should be started in the order they are defined in the PodGang Cliques slice. CliqueStartupTypeInOrder CliqueStartupType = "CliqueStartupTypeInOrder" // CliqueStartupTypeExplicit defines that the cliques should be started after the cliques defined in PodClique.StartsAfter have started. CliqueStartupTypeExplicit CliqueStartupType = "CliqueStartupTypeExplicit" )
type ErrorCode ¶
type ErrorCode string
ErrorCode is a custom error code that uniquely identifies an error.
type HeadlessServiceConfig ¶
type HeadlessServiceConfig struct { // PublishNotReadyAddresses if set to true will publish the DNS records of pods even if the pods are not ready. // if not set, it defaults to true. // +kubebuilder:default=true PublishNotReadyAddresses bool `json:"publishNotReadyAddresses"` }
HeadlessServiceConfig defines the config options for the headless service.
func (*HeadlessServiceConfig) DeepCopy ¶
func (in *HeadlessServiceConfig) DeepCopy() *HeadlessServiceConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HeadlessServiceConfig.
func (*HeadlessServiceConfig) DeepCopyInto ¶
func (in *HeadlessServiceConfig) DeepCopyInto(out *HeadlessServiceConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LastError ¶
type LastError struct { // Code is the error code that uniquely identifies the error. Code ErrorCode `json:"code"` // Description is a human-readable description of the error. Description string `json:"description"` // ObservedAt is the time at which the error was observed. ObservedAt metav1.Time `json:"observedAt"` }
LastError captures the last error observed by the controller when reconciling an object.
func (*LastError) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LastError.
func (*LastError) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LastOperation ¶
type LastOperation struct { // Type is the type of the last operation. Type LastOperationType `json:"type"` // State is the state of the last operation. State LastOperationState `json:"state"` // Description is a human-readable description of the last operation. Description string `json:"description"` // LastUpdateTime is the time at which the last operation was updated. LastUpdateTime metav1.Time `json:"lastUpdateTime"` }
LastOperation captures the last operation done by the respective reconciler on the PodCliqueSet.
func (*LastOperation) DeepCopy ¶
func (in *LastOperation) DeepCopy() *LastOperation
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LastOperation.
func (*LastOperation) DeepCopyInto ¶
func (in *LastOperation) DeepCopyInto(out *LastOperation)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LastOperationState ¶
type LastOperationState string
LastOperationState is a string alias for the state of the last operation.
const ( // LastOperationStateProcessing indicates that the last operation is in progress. LastOperationStateProcessing LastOperationState = "Processing" // LastOperationStateSucceeded indicates that the last operation succeeded. LastOperationStateSucceeded LastOperationState = "Succeeded" // LastOperationStateError indicates that the last operation completed with errors and will be retried. LastOperationStateError LastOperationState = "Error" )
type LastOperationType ¶
type LastOperationType string
LastOperationType is a string alias for the type of the last operation.
const ( // LastOperationTypeReconcile indicates that the last operation was a reconcile operation. LastOperationTypeReconcile LastOperationType = "Reconcile" // LastOperationTypeDelete indicates that the last operation was a delete operation. LastOperationTypeDelete LastOperationType = "Delete" )
type NetworkPackGroupConfig ¶
type NetworkPackGroupConfig struct { // CliqueNames is the list of PodClique names that are part of the network pack group. CliqueNames []string `json:"cliqueNames"` }
NetworkPackGroupConfig indicates that all the Pods belonging to the constituent PodCliques should be optimally placed w.r.t cluster's network topology. If a constituent PodClique belongs to a PodCliqueScalingGroup then ensure that all constituent PodCliques of that PodCliqueScalingGroup are also part of the NetworkPackGroupConfig.
func (*NetworkPackGroupConfig) DeepCopy ¶
func (in *NetworkPackGroupConfig) DeepCopy() *NetworkPackGroupConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPackGroupConfig.
func (*NetworkPackGroupConfig) DeepCopyInto ¶
func (in *NetworkPackGroupConfig) DeepCopyInto(out *NetworkPackGroupConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodClique ¶
type PodClique struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` // Spec defines the specification of a PodClique. Spec PodCliqueSpec `json:"spec"` // Status defines the status of a PodClique. Status PodCliqueStatus `json:"status,omitempty"` }
PodClique is a set of pods running the same image. TODO: @renormalize expand on this.
func (*PodClique) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodClique.
func (*PodClique) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodClique) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*PodClique) SetLastErrors ¶
SetLastErrors sets the last errors observed by the controller when reconciling the PodClique.
type PodCliqueList ¶
type PodCliqueList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` // Items is a slice of PodClique. Items []PodClique `json:"items"` }
PodCliqueList is a list of PodClique's.
func (*PodCliqueList) DeepCopy ¶
func (in *PodCliqueList) DeepCopy() *PodCliqueList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueList.
func (*PodCliqueList) DeepCopyInto ¶
func (in *PodCliqueList) DeepCopyInto(out *PodCliqueList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCliqueList) DeepCopyObject ¶
func (in *PodCliqueList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PodCliqueRollingUpdateProgress ¶
type PodCliqueRollingUpdateProgress struct { // UpdateStartedAt is the time at which the rolling update started. UpdateStartedAt metav1.Time `json:"updateStartedAt,omitempty"` // UpdateEndedAt is the time at which the rolling update ended. // It will be set to nil if the rolling update is still in progress. UpdateEndedAt *metav1.Time `json:"updateEndedAt,omitempty"` // PodCliqueSetGenerationHash is the PodCliqueSet generation hash corresponding to the PodCliqueSet spec that is being rolled out. // While the update is in progress PodCliqueStatus.CurrentPodCliqueSetGenerationHash will not match this hash. Once the update is complete the // value of this field will be copied to PodCliqueStatus.CurrentPodCliqueSetGenerationHash. PodCliqueSetGenerationHash string `json:"podCliqueSetGenerationHash"` // PodTemplateHash is the PodClique template hash corresponding to the PodClique spec that is being rolled out. // While the update is in progress PodCliqueStatus.CurrentPodTemplateHash will not match this hash. Once the update is complete the // value of this field will be copied to PodCliqueStatus.CurrentPodTemplateHash. PodTemplateHash string `json:"podTemplateHash"` // ReadyPodsSelectedToUpdate captures the pod names of ready Pods that are either currently being updated or have been previously updated. ReadyPodsSelectedToUpdate *PodsSelectedToUpdate `json:"readyPodsSelectedToUpdate,omitempty"` }
PodCliqueRollingUpdateProgress provides details about the ongoing rolling update of the PodClique.
func (*PodCliqueRollingUpdateProgress) DeepCopy ¶
func (in *PodCliqueRollingUpdateProgress) DeepCopy() *PodCliqueRollingUpdateProgress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueRollingUpdateProgress.
func (*PodCliqueRollingUpdateProgress) DeepCopyInto ¶
func (in *PodCliqueRollingUpdateProgress) DeepCopyInto(out *PodCliqueRollingUpdateProgress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueScalingGroup ¶
type PodCliqueScalingGroup struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` // Spec is the specification of the PodCliqueScalingGroup. Spec PodCliqueScalingGroupSpec `json:"spec"` // Status is the status of the PodCliqueScalingGroup. Status PodCliqueScalingGroupStatus `json:"status,omitempty"` }
PodCliqueScalingGroup is the schema to define scaling groups that is used to scale a group of PodClique's. An instance of this custom resource will be created for every pod clique scaling group defined as part of PodCliqueSet.
func (*PodCliqueScalingGroup) DeepCopy ¶
func (in *PodCliqueScalingGroup) DeepCopy() *PodCliqueScalingGroup
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroup.
func (*PodCliqueScalingGroup) DeepCopyInto ¶
func (in *PodCliqueScalingGroup) DeepCopyInto(out *PodCliqueScalingGroup)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCliqueScalingGroup) DeepCopyObject ¶
func (in *PodCliqueScalingGroup) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*PodCliqueScalingGroup) SetLastErrors ¶
func (pcsg *PodCliqueScalingGroup) SetLastErrors(lastErrs ...LastError)
SetLastErrors sets the last errors observed by the controller when reconciling the PodCliqueScalingGroup.
type PodCliqueScalingGroupConfig ¶
type PodCliqueScalingGroupConfig struct { // Name is the name of the PodCliqueScalingGroupConfig. This should be unique within the PodCliqueSet. // It allows consumers to give a semantic name to a group of PodCliques that needs to be scaled together. Name string `json:"name"` // CliqueNames is the list of names of the PodClique's that are part of the scaling group. CliqueNames []string `json:"cliqueNames"` // Replicas is the desired number of replicas for the scaling group at template level. // This allows one to control the replicas of the scaling group at startup. // If not specified, it defaults to 1. // +optional // +kubebuilder:default=1 Replicas *int32 `json:"replicas,omitempty"` // MinAvailable specifies the minimum number of ready replicas required for a PodCliqueScalingGroup to be considered operational. // A PodCliqueScalingGroup replica is considered "ready" when its associated PodCliques have sufficient ready or starting pods. // If MinAvailable is breached, it will be used to signal that the PodCliqueScalingGroup is no longer operating with the desired availability. // MinAvailable cannot be greater than Replicas. If ScaleConfig is defined then its MinAvailable should not be less than ScaleConfig.MinReplicas. // If not specified, it defaults to 1. // +optional // +kubebuilder:default=1 MinAvailable *int32 `json:"minAvailable,omitempty"` // ScaleConfig is the horizontal pod autoscaler configuration for the pod clique scaling group. // +optional ScaleConfig *AutoScalingConfig `json:"scaleConfig,omitempty"` }
PodCliqueScalingGroupConfig is a group of PodClique's that are scaled together. Each member PodClique.Replicas will be computed as a product of PodCliqueScalingGroupConfig.Replicas and PodCliqueTemplateSpec.Spec.Replicas. NOTE: If a PodCliqueScalingGroupConfig is defined, then for the member PodClique's, individual AutoScalingConfig cannot be defined.
func (*PodCliqueScalingGroupConfig) DeepCopy ¶
func (in *PodCliqueScalingGroupConfig) DeepCopy() *PodCliqueScalingGroupConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupConfig.
func (*PodCliqueScalingGroupConfig) DeepCopyInto ¶
func (in *PodCliqueScalingGroupConfig) DeepCopyInto(out *PodCliqueScalingGroupConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueScalingGroupList ¶
type PodCliqueScalingGroupList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` // Items is a slice of PodCliqueScalingGroup. Items []PodCliqueScalingGroup `json:"items"` }
PodCliqueScalingGroupList is a slice of PodCliqueScalingGroup's.
func (*PodCliqueScalingGroupList) DeepCopy ¶
func (in *PodCliqueScalingGroupList) DeepCopy() *PodCliqueScalingGroupList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupList.
func (*PodCliqueScalingGroupList) DeepCopyInto ¶
func (in *PodCliqueScalingGroupList) DeepCopyInto(out *PodCliqueScalingGroupList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCliqueScalingGroupList) DeepCopyObject ¶
func (in *PodCliqueScalingGroupList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PodCliqueScalingGroupReplicaRollingUpdateProgress ¶
type PodCliqueScalingGroupReplicaRollingUpdateProgress struct { // Current is the index of the PodCliqueScalingGroup replica that is currently being updated. Current int32 `json:"current"` // Completed is the list of indices of PodCliqueScalingGroup replicas that have been updated to the latest PodCliqueSet spec. Completed []int32 `json:"completed,omitempty"` }
PodCliqueScalingGroupReplicaRollingUpdateProgress provides details about the rolling update progress of ready replicas of PodCliqueScalingGroup that have been selected for update.
func (*PodCliqueScalingGroupReplicaRollingUpdateProgress) DeepCopy ¶
func (in *PodCliqueScalingGroupReplicaRollingUpdateProgress) DeepCopy() *PodCliqueScalingGroupReplicaRollingUpdateProgress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupReplicaRollingUpdateProgress.
func (*PodCliqueScalingGroupReplicaRollingUpdateProgress) DeepCopyInto ¶
func (in *PodCliqueScalingGroupReplicaRollingUpdateProgress) DeepCopyInto(out *PodCliqueScalingGroupReplicaRollingUpdateProgress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueScalingGroupRollingUpdateProgress ¶
type PodCliqueScalingGroupRollingUpdateProgress struct { //UpdateStartedAt is the time at which the rolling update started. UpdateStartedAt metav1.Time `json:"updateStartedAt"` // UpdateEndedAt is the time at which the rolling update ended. UpdateEndedAt *metav1.Time `json:"updateEndedAt,omitempty"` // PodCliqueSetGenerationHash is the PodCliqueSet generation hash corresponding to the PodCliqueSet spec that is being rolled out. // While the update is in progress PodCliqueScalingGroupStatus.CurrentPodCliqueSetGenerationHash will not match this hash. Once the update is complete the // value of this field will be copied to PodCliqueScalingGroupStatus.CurrentPodCliqueSetGenerationHash. PodCliqueSetGenerationHash string `json:"podCliqueSetGenerationHash"` // UpdatedPodCliques is the list of PodClique names that have been updated to the latest PodCliqueSet spec. UpdatedPodCliques []string `json:"updatedPodCliques,omitempty"` // ReadyReplicaIndicesSelectedToUpdate provides the rolling update progress of ready replicas of PodCliqueScalingGroup that have been selected for update. // PodCliqueScalingGroup replicas that are either pending or unhealthy will be force updated and the update will not wait for these replicas to become ready. // For all ready replicas, one replica is chosen at a time to update, once it is updated and becomes ready, the next ready replica is chosen for update. ReadyReplicaIndicesSelectedToUpdate *PodCliqueScalingGroupReplicaRollingUpdateProgress `json:"readyReplicaIndicesSelectedToUpdate,omitempty"` }
PodCliqueScalingGroupRollingUpdateProgress provides details about the ongoing rolling update of the PodCliqueScalingGroup.
func (*PodCliqueScalingGroupRollingUpdateProgress) DeepCopy ¶
func (in *PodCliqueScalingGroupRollingUpdateProgress) DeepCopy() *PodCliqueScalingGroupRollingUpdateProgress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupRollingUpdateProgress.
func (*PodCliqueScalingGroupRollingUpdateProgress) DeepCopyInto ¶
func (in *PodCliqueScalingGroupRollingUpdateProgress) DeepCopyInto(out *PodCliqueScalingGroupRollingUpdateProgress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueScalingGroupSpec ¶
type PodCliqueScalingGroupSpec struct { // Replicas is the desired number of replicas for the PodCliqueScalingGroup. // If not specified, it defaults to 1. // +kubebuilder:default=1 Replicas int32 `json:"replicas"` // MinAvailable specifies the minimum number of ready replicas required for a PodCliqueScalingGroup to be considered operational. // A PodCliqueScalingGroup replica is considered "ready" when its associated PodCliques have sufficient ready or starting pods. // If MinAvailable is breached, it will be used to signal that the PodCliqueScalingGroup is no longer operating with the desired availability. // MinAvailable cannot be greater than Replicas. If ScaleConfig is defined then its MinAvailable should not be less than ScaleConfig.MinReplicas. // // It serves two main purposes: // 1. Gang Scheduling: MinAvailable defines the minimum number of replicas that are guaranteed to be gang scheduled. // 2. Gang Termination: MinAvailable is used as a lower bound below which a PodGang becomes a candidate for Gang termination. // If not specified, it defaults to 1. // +optional // +kubebuilder:default=1 MinAvailable *int32 `json:"minAvailable,omitempty"` // CliqueNames is the list of PodClique names that are configured in the // matching PodCliqueScalingGroup in PodCliqueSet.Spec.Template.PodCliqueScalingGroupConfigs. CliqueNames []string `json:"cliqueNames"` }
PodCliqueScalingGroupSpec is the specification of the PodCliqueScalingGroup.
func (*PodCliqueScalingGroupSpec) DeepCopy ¶
func (in *PodCliqueScalingGroupSpec) DeepCopy() *PodCliqueScalingGroupSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupSpec.
func (*PodCliqueScalingGroupSpec) DeepCopyInto ¶
func (in *PodCliqueScalingGroupSpec) DeepCopyInto(out *PodCliqueScalingGroupSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueScalingGroupStatus ¶
type PodCliqueScalingGroupStatus struct { // Replicas is the observed number of replicas for the PodCliqueScalingGroup. Replicas int32 `json:"replicas,omitempty"` // ScheduledReplicas is the number of replicas that are scheduled for the PodCliqueScalingGroup. // A replica of PodCliqueScalingGroup is considered "scheduled" when at least MinAvailable number // of pods in each constituent PodClique has been scheduled. // +kubebuilder:default=0 ScheduledReplicas int32 `json:"scheduledReplicas"` // AvailableReplicas is the number of PodCliqueScalingGroup replicas that are available. // A PodCliqueScalingGroup replica is considered available when all constituent PodClique's have // PodClique.Status.ReadyReplicas greater than or equal to PodClique.Spec.MinAvailable // +kubebuilder:default=0 AvailableReplicas int32 `json:"availableReplicas"` // UpdatedReplicas is the number of PodCliqueScalingGroup replicas that correspond with the latest PodCliqueSetGenerationHash. // +kubebuilder:default=0 UpdatedReplicas int32 `json:"updatedReplicas"` // Selector is the selector used to identify the pods that belong to this scaling group. Selector *string `json:"selector,omitempty"` // ObservedGeneration is the most recent generation observed by the controller. ObservedGeneration *int64 `json:"observedGeneration,omitempty"` // LastErrors captures the last errors observed by the controller when reconciling the PodClique. LastErrors []LastError `json:"lastErrors,omitempty"` // Conditions represents the latest available observations of the PodCliqueScalingGroup by its controller. Conditions []metav1.Condition `json:"conditions,omitempty"` // CurrentPodCliqueSetGenerationHash establishes a correlation to PodCliqueSet generation hash indicating // that the spec of the PodCliqueSet at this generation is fully realized in the PodCliqueScalingGroup. CurrentPodCliqueSetGenerationHash *string `json:"currentPodCliqueSetGenerationHash,omitempty"` // RollingUpdateProgress provides details about the ongoing rolling update of the PodCliqueScalingGroup. RollingUpdateProgress *PodCliqueScalingGroupRollingUpdateProgress `json:"rollingUpdateProgress,omitempty"` }
PodCliqueScalingGroupStatus is the status of the PodCliqueScalingGroup.
func (*PodCliqueScalingGroupStatus) DeepCopy ¶
func (in *PodCliqueScalingGroupStatus) DeepCopy() *PodCliqueScalingGroupStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueScalingGroupStatus.
func (*PodCliqueScalingGroupStatus) DeepCopyInto ¶
func (in *PodCliqueScalingGroupStatus) DeepCopyInto(out *PodCliqueScalingGroupStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSet ¶
type PodCliqueSet struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` // Spec defines the specification of the PodCliqueSet. Spec PodCliqueSetSpec `json:"spec"` // Status defines the status of the PodCliqueSet. Status PodCliqueSetStatus `json:"status,omitempty"` }
PodCliqueSet is a set of PodGangs defining specification on how to spread and manage a gang of pods and monitoring their status.
func (*PodCliqueSet) DeepCopy ¶
func (in *PodCliqueSet) DeepCopy() *PodCliqueSet
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSet.
func (*PodCliqueSet) DeepCopyInto ¶
func (in *PodCliqueSet) DeepCopyInto(out *PodCliqueSet)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCliqueSet) DeepCopyObject ¶
func (in *PodCliqueSet) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*PodCliqueSet) SetLastErrors ¶
func (pcs *PodCliqueSet) SetLastErrors(lastErrs ...LastError)
SetLastErrors sets the last errors observed by the controller when reconciling the PodCliqueSet.
type PodCliqueSetList ¶
type PodCliqueSetList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` // Items is a slice of PodCliqueSets. Items []PodCliqueSet `json:"items"` }
PodCliqueSetList is a list of PodCliqueSet's.
func (*PodCliqueSetList) DeepCopy ¶
func (in *PodCliqueSetList) DeepCopy() *PodCliqueSetList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetList.
func (*PodCliqueSetList) DeepCopyInto ¶
func (in *PodCliqueSetList) DeepCopyInto(out *PodCliqueSetList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PodCliqueSetList) DeepCopyObject ¶
func (in *PodCliqueSetList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PodCliqueSetReplicaRollingUpdateProgress ¶
type PodCliqueSetReplicaRollingUpdateProgress struct { // ReplicaIndex is the replica index of the PodCliqueSet that is being updated. ReplicaIndex int32 `json:"replicaIndex"` // UpdateStartedAt is the time at which the rolling update started for this PodCliqueSet replica index. UpdateStartedAt metav1.Time `json:"updateStartedAt,omitempty"` }
PodCliqueSetReplicaRollingUpdateProgress captures the progress of a rolling update for a specific PodCliqueSet replica.
func (*PodCliqueSetReplicaRollingUpdateProgress) DeepCopy ¶
func (in *PodCliqueSetReplicaRollingUpdateProgress) DeepCopy() *PodCliqueSetReplicaRollingUpdateProgress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetReplicaRollingUpdateProgress.
func (*PodCliqueSetReplicaRollingUpdateProgress) DeepCopyInto ¶
func (in *PodCliqueSetReplicaRollingUpdateProgress) DeepCopyInto(out *PodCliqueSetReplicaRollingUpdateProgress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSetRollingUpdateProgress ¶
type PodCliqueSetRollingUpdateProgress struct { // UpdateStartedAt is the time at which the rolling update started for the PodCliqueSet. UpdateStartedAt metav1.Time `json:"updateStartedAt,omitempty"` // UpdateEndedAt is the time at which the rolling update ended for the PodCliqueSet. // +optional UpdateEndedAt *metav1.Time `json:"updateEndedAt,omitempty"` // UpdatedPodCliqueScalingGroups is a list of PodCliqueScalingGroup names that have been updated to the desired PodCliqueSet generation hash. UpdatedPodCliqueScalingGroups []string `json:"updatedPodCliqueScalingGroups,omitempty"` // UpdatedPodCliques is a list of PodClique names that have been updated to the desired PodCliqueSet generation hash. UpdatedPodCliques []string `json:"updatedPodCliques,omitempty"` // CurrentlyUpdating captures the progress of the PodCliqueSet replica that is currently being updated. // +optional CurrentlyUpdating *PodCliqueSetReplicaRollingUpdateProgress `json:"currentlyUpdating,omitempty"` }
PodCliqueSetRollingUpdateProgress captures the progress of a rolling update of the PodCliqueSet.
func (*PodCliqueSetRollingUpdateProgress) DeepCopy ¶
func (in *PodCliqueSetRollingUpdateProgress) DeepCopy() *PodCliqueSetRollingUpdateProgress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetRollingUpdateProgress.
func (*PodCliqueSetRollingUpdateProgress) DeepCopyInto ¶
func (in *PodCliqueSetRollingUpdateProgress) DeepCopyInto(out *PodCliqueSetRollingUpdateProgress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSetSpec ¶
type PodCliqueSetSpec struct { // Replicas is the number of desired replicas of the PodGang. // +kubebuilder:default=0 Replicas int32 `json:"replicas,omitempty"` // Template describes the template spec for PodGangs that will be created in the PodCliqueSet. Template PodCliqueSetTemplateSpec `json:"template"` // ReplicaSpreadConstraints defines the constraints for spreading each replica of PodCliqueSet across domains identified by a topology key. // +optional ReplicaSpreadConstraints []corev1.TopologySpreadConstraint `json:"replicaSpreadConstraints,omitempty"` }
PodCliqueSetSpec defines the specification of a PodCliqueSet.
func (*PodCliqueSetSpec) DeepCopy ¶
func (in *PodCliqueSetSpec) DeepCopy() *PodCliqueSetSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetSpec.
func (*PodCliqueSetSpec) DeepCopyInto ¶
func (in *PodCliqueSetSpec) DeepCopyInto(out *PodCliqueSetSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSetStatus ¶
type PodCliqueSetStatus struct { // ObservedGeneration is the most recent generation observed by the controller. ObservedGeneration *int64 `json:"observedGeneration,omitempty"` // LastErrors captures the last errors observed by the controller when reconciling the PodCliqueSet. LastErrors []LastError `json:"lastErrors,omitempty"` // Replicas is the total number of PodCliqueSet replicas created. Replicas int32 `json:"replicas,omitempty"` // UpdatedReplicas is the number of replicas that have been updated to the desired revision of the PodCliqueSet. // +kubebuilder:default=0 UpdatedReplicas int32 `json:"updatedReplicas"` // AvailableReplicas is the number of PodCliqueSet replicas that are available. // A PodCliqueSet replica is considered available when all standalone PodCliques within that replica // have MinAvailableBreached condition = False AND all PodCliqueScalingGroups (PCSG) within that replica // have MinAvailableBreached condition = False. // +kubebuilder:default=0 AvailableReplicas int32 `json:"availableReplicas"` // Selector is the label selector that determines which pods are part of the PodGang. // PodGang is a unit of scale and this selector is used by HPA to scale the PodGang based on metrics captured for the pods that match this selector. Selector *string `json:"hpaPodSelector,omitempty"` // PodGangStatuses captures the status for all the PodGang's that are part of the PodCliqueSet. PodGangStatutes []PodGangStatus `json:"podGangStatuses,omitempty"` // CurrentGenerationHash is a hash value generated out of a collection of fields in a PodCliqueSet. // Since only a subset of fields is taken into account when generating the hash, not every change in the PodCliqueSetSpec will // be accounted for when generating this hash value. A field in PodCliqueSetSpec is included if a change to it triggers // a rolling update of PodCliques and/or PodCliqueScalingGroups. // Only if this value is not nil and the newly computed hash value is different from the persisted CurrentGenerationHash value // then a rolling update needs to be triggerred. CurrentGenerationHash *string `json:"currentGenerationHash,omitempty"` // RollingUpdateProgress represents the progress of a rolling update. RollingUpdateProgress *PodCliqueSetRollingUpdateProgress `json:"rollingUpdateProgress,omitempty"` }
PodCliqueSetStatus defines the status of a PodCliqueSet.
func (*PodCliqueSetStatus) DeepCopy ¶
func (in *PodCliqueSetStatus) DeepCopy() *PodCliqueSetStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetStatus.
func (*PodCliqueSetStatus) DeepCopyInto ¶
func (in *PodCliqueSetStatus) DeepCopyInto(out *PodCliqueSetStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSetTemplateSpec ¶
type PodCliqueSetTemplateSpec struct { // Cliques is a slice of cliques that make up the PodGang. There should be at least one PodClique. Cliques []*PodCliqueTemplateSpec `json:"cliques"` // StartupType defines the type of startup dependency amongst the cliques within a PodGang. // If it is not defined then default of CliqueStartupTypeAnyOrder is used. // +kubebuilder:default=CliqueStartupTypeAnyOrder // +optional StartupType *CliqueStartupType `json:"cliqueStartupType,omitempty"` // PriorityClassName is the name of the PriorityClass to be used for the PodCliqueSet. // If specified, indicates the priority of the PodCliqueSet. "system-node-critical" and // "system-cluster-critical" are two special keywords which indicate the // highest priorities with the former being the highest priority. Any other // name must be defined by creating a PriorityClass object with that name. // If not specified, the pod priority will be default or zero if there is no default. // +optional PriorityClassName string `json:"priorityClassName,omitempty"` // HeadlessServiceConfig defines the config options for the headless service. // If present, create headless service for each PodGang. // +optional HeadlessServiceConfig *HeadlessServiceConfig `json:"headlessServiceConfig,omitempty"` // SchedulingPolicyConfig defines the scheduling policy configuration for the PodGang. // Defaulting only works for optional fields. // See https://github.com/kubernetes-sigs/controller-tools/issues/893#issuecomment-1991256368 // +optional SchedulingPolicyConfig *SchedulingPolicyConfig `json:"schedulingPolicyConfig,omitempty"` // TerminationDelay is the delay after which the gang termination will be triggered. // A gang is a candidate for termination if number of running pods fall below a threshold for any PodClique. // If a PodGang remains a candidate past TerminationDelay then it will be terminated. This allows additional time // to the kube-scheduler to re-schedule sufficient pods in the PodGang that will result in having the total number of // running pods go above the threshold. // Defaults to 4 hours. // +optional TerminationDelay *metav1.Duration `json:"terminationDelay,omitempty"` // PodCliqueScalingGroupConfigs is a list of scaling groups for the PodCliqueSet. PodCliqueScalingGroupConfigs []PodCliqueScalingGroupConfig `json:"podCliqueScalingGroups,omitempty"` }
PodCliqueSetTemplateSpec defines a template spec for a PodGang. A PodGang does not have a RestartPolicy field because the restart policy is predefined: If the number of pods in any of the cliques falls below the threshold, the entire PodGang will be restarted. The threshold is determined by either: - The value of "MinReplicas", if specified in the ScaleConfig of that clique, or - The "Replicas" value of that clique
func (*PodCliqueSetTemplateSpec) DeepCopy ¶
func (in *PodCliqueSetTemplateSpec) DeepCopy() *PodCliqueSetTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSetTemplateSpec.
func (*PodCliqueSetTemplateSpec) DeepCopyInto ¶
func (in *PodCliqueSetTemplateSpec) DeepCopyInto(out *PodCliqueSetTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueSpec ¶
type PodCliqueSpec struct { // RoleName is the name of the role that this PodClique will assume. RoleName string `json:"roleName"` // Spec is the spec of the pods in the clique. PodSpec corev1.PodSpec `json:"podSpec"` // Replicas is the number of replicas of the pods in the clique. It cannot be less than 1. Replicas int32 `json:"replicas"` // MinAvailable serves two purposes: // 1. It defines the minimum number of pods that are guaranteed to be gang scheduled. // 2. It defines the minimum requirement of available pods in a PodClique. Violation of this threshold will result in termination of the PodGang that it belongs to. // If MinAvailable is not set, then it will default to the template Replicas. // +optional MinAvailable *int32 `json:"minAvailable,omitempty"` // StartsAfter provides you a way to explicitly define the startup dependencies amongst cliques. // If CliqueStartupType in PodGang has been set to 'CliqueStartupTypeExplicit', then to create an ordered start amongst PodClique's StartsAfter can be used. // A forest of DAG's can be defined to model any start order dependencies. If there are more than one PodClique's defined and StartsAfter is not set for any of them, // then their startup order is random at best and must not be relied upon. // Validations: // 1. If a StartsAfter has been defined and one or more cycles are detected in DAG's then it will be flagged as validation error. // 2. If StartsAfter is defined and does not identify any PodClique then it will be flagged as a validation error. // +optional StartsAfter []string `json:"startsAfter,omitempty"` // ScaleConfig is the horizontal pod autoscaler configuration for a PodClique. // +optional ScaleConfig *AutoScalingConfig `json:"autoScalingConfig,omitempty"` }
PodCliqueSpec defines the specification of a PodClique.
func (*PodCliqueSpec) DeepCopy ¶
func (in *PodCliqueSpec) DeepCopy() *PodCliqueSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueSpec.
func (*PodCliqueSpec) DeepCopyInto ¶
func (in *PodCliqueSpec) DeepCopyInto(out *PodCliqueSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueStatus ¶
type PodCliqueStatus struct { // ObservedGeneration is the most recent generation observed by the controller. ObservedGeneration *int64 `json:"observedGeneration,omitempty"` // LastErrors captures the last errors observed by the controller when reconciling the PodClique. LastErrors []LastError `json:"lastErrors,omitempty"` // Replicas is the total number of non-terminated Pods targeted by this PodClique. Replicas int32 `json:"replicas,omitempty"` // ReadyReplicas is the number of ready Pods targeted by this PodClique. // +kubebuilder:default=0 ReadyReplicas int32 `json:"readyReplicas"` // UpdatedReplicas is the number of Pods that have been updated and are at the desired revision of the PodClique. // +kubebuilder:default=0 UpdatedReplicas int32 `json:"updatedReplicas"` // ScheduleGatedReplicas is the number of Pods that have been created with one or more scheduling gate(s) set. // Sum of ReadyReplicas and ScheduleGatedReplicas will always be <= Replicas. // +kubebuilder:default=0 ScheduleGatedReplicas int32 `json:"scheduleGatedReplicas"` // ScheduledReplicas is the number of Pods that have been scheduled by the kube-scheduler. // +kubebuilder:default=0 ScheduledReplicas int32 `json:"scheduledReplicas"` // Selector is the label selector that determines which pods are part of the PodClique. // PodClique is a unit of scale and this selector is used by HPA to scale the PodClique based on metrics captured for the pods that match this selector. Selector *string `json:"hpaPodSelector,omitempty"` // Conditions represents the latest available observations of the clique by its controller. Conditions []metav1.Condition `json:"conditions,omitempty"` // CurrentPodCliqueSetGenerationHash establishes a correlation to PodCliqueSet generation hash indicating // that the spec of the PodCliqueSet at this generation is fully realized in the PodClique. CurrentPodCliqueSetGenerationHash *string `json:"currentPodCliqueSetGenerationHash,omitempty"` // CurrentPodTemplateHash establishes a correlation to PodClique template hash indicating // that the spec of the PodClique at this template hash is fully realized in the PodClique. CurrentPodTemplateHash *string `json:"currentPodTemplateHash,omitempty"` // RollingUpdateProgress provides details about the ongoing rolling update of the PodClique. RollingUpdateProgress *PodCliqueRollingUpdateProgress `json:"rollingUpdateProgress,omitempty"` }
PodCliqueStatus defines the status of a PodClique.
func (*PodCliqueStatus) DeepCopy ¶
func (in *PodCliqueStatus) DeepCopy() *PodCliqueStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueStatus.
func (*PodCliqueStatus) DeepCopyInto ¶
func (in *PodCliqueStatus) DeepCopyInto(out *PodCliqueStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodCliqueTemplateSpec ¶
type PodCliqueTemplateSpec struct { // Name must be unique within a PodCliqueSet and is used to denote a role. // Once set it cannot be updated. // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names Name string `json:"name"` // Labels is a map of string keys and values that can be used to organize and categorize // (scope and select) objects. May match selectors of replication controllers // and services. // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels // +optional Labels map[string]string `json:"labels,omitempty"` // Annotations is an unstructured key value map stored with a resource that may be // set by external tools to store and retrieve arbitrary metadata. They are not // queryable and should be preserved when modifying objects. // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations // +optional Annotations map[string]string `json:"annotations,omitempty"` // Specification of the desired behavior of a PodClique. // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status Spec PodCliqueSpec `json:"spec"` }
PodCliqueTemplateSpec defines a template spec for a PodClique.
func (*PodCliqueTemplateSpec) DeepCopy ¶
func (in *PodCliqueTemplateSpec) DeepCopy() *PodCliqueTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodCliqueTemplateSpec.
func (*PodCliqueTemplateSpec) DeepCopyInto ¶
func (in *PodCliqueTemplateSpec) DeepCopyInto(out *PodCliqueTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodGangPhase ¶
type PodGangPhase string
PodGangPhase represents the phase of a PodGang. +kubebuilder:validation:Enum={Pending,Starting,Running,Failed,Succeeded}
const ( // PodGangPending indicates that the pods in a PodGang have not yet been taken up for scheduling. PodGangPending PodGangPhase = "Pending" // PodGangStarting indicates that the pods are bound to nodes by the scheduler and are starting. PodGangStarting PodGangPhase = "Starting" // PodGangRunning indicates that the all the pods in a PodGang are running. PodGangRunning PodGangPhase = "Running" // PodGangFailed indicates that one or more pods in a PodGang have failed. // This is a terminal state and is typically used for batch jobs. PodGangFailed PodGangPhase = "Failed" // PodGangSucceeded indicates that all the pods in a PodGang have succeeded. // This is a terminal state and is typically used for batch jobs. PodGangSucceeded PodGangPhase = "Succeeded" )
type PodGangStatus ¶
type PodGangStatus struct { // Name is the name of the PodGang. Name string `json:"name"` // Phase is the current phase of the PodGang. Phase PodGangPhase `json:"phase"` // Conditions represents the latest available observations of the PodGang by its controller. Conditions []metav1.Condition `json:"conditions,omitempty"` }
PodGangStatus defines the status of a PodGang.
func (*PodGangStatus) DeepCopy ¶
func (in *PodGangStatus) DeepCopy() *PodGangStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodGangStatus.
func (*PodGangStatus) DeepCopyInto ¶
func (in *PodGangStatus) DeepCopyInto(out *PodGangStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PodsSelectedToUpdate ¶
type PodsSelectedToUpdate struct { // Current captures the current pod name that is a target for update. Current string `json:"current"` // Completed captures the pod names that have already been updated. Completed []string `json:"completed,omitempty"` }
PodsSelectedToUpdate captures the current and previous set of pod names that have been selected for update in a rolling update.
func (*PodsSelectedToUpdate) DeepCopy ¶
func (in *PodsSelectedToUpdate) DeepCopy() *PodsSelectedToUpdate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodsSelectedToUpdate.
func (*PodsSelectedToUpdate) DeepCopyInto ¶
func (in *PodsSelectedToUpdate) DeepCopyInto(out *PodsSelectedToUpdate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SchedulingPolicyConfig ¶
type SchedulingPolicyConfig struct { // NetworkPackGroupConfigs is a list of NetworkPackGroupConfig's that define how the pods in the PodCliqueSet are optimally packaged w.r.t cluster's network topology. // PodCliques that are not part of any NetworkPackGroupConfig are scheduled with best-effort network packing strategy. // Exercise caution when defining NetworkPackGroupConfig. Some of the downsides include: // 1. Scheduling may be delayed until optimal placement is available. // 2. Pods created due to scale-out or rolling upgrades is not guaranteed optimal placement. NetworkPackGroupConfigs []NetworkPackGroupConfig `json:"networkPackGroupConfigs,omitempty"` }
SchedulingPolicyConfig defines the scheduling policy configuration for the PodGang.
func (*SchedulingPolicyConfig) DeepCopy ¶
func (in *SchedulingPolicyConfig) DeepCopy() *SchedulingPolicyConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulingPolicyConfig.
func (*SchedulingPolicyConfig) DeepCopyInto ¶
func (in *SchedulingPolicyConfig) DeepCopyInto(out *SchedulingPolicyConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.