mirror of
https://github.com/lukaszraczylo/jobs-manager-operator.git
synced 2026-06-05 22:33:44 +00:00
2b36071647
* Multiple fixes - add goreleaser to the build / release process - add kubectl plugin for job graphs visualization - add installation scripts - update dependencies * Update the release & CRD content. * Next set of improvements. Code Quality - Label constants: Added LabelWorkflowName, LabelGroupName, LabelJobName, LabelJobID in controllers/definitions.go - Removed commented debug code: Cleaned up dead code from multiple files - Removed unused dependencyTree field: Cleaned connPackage struct - Fixed snake_case variables: Changed to camelCase (runGroup, groupDep, runJob, jobDep, k8sJob) Kubernetes Best Practices - Finalizers: Implemented handleDeletion() and deleteChildJobs() for proper cleanup - Status enum validation: Added +kubebuilder:validation:Enum=pending;running;succeeded;failed;aborted - ImagePullPolicy default: Created getImagePullPolicy() helper that defaults to IfNotPresent - Resource limits support: Added Resources *corev1.ResourceRequirements to ManagedJobParameters Observability - Prometheus metrics: Created controllers/metrics.go with counters (jobs created/succeeded/failed), histogram (reconciliation duration), and gauge (active jobs) - Structured logging: Added logger field to connPackage, used context-based logging throughout Configuration - Leader election ID: Made configurable via --leader-election-id flag - Development mode: Made configurable via --dev-mode flag and LOG_LEVEL env var Performance - Dependency lookup optimization: Changed from O(n*m) to O(1) using lookup maps (jobDepMap, groupDepMap) - Reconciliation backoff: Added RequeueAfter: 30*time.Second when workflow is running Documentation & Testing - Godoc documentation: Added comprehensive comments to API types and controller - Unit tests: Added helpers_test.go with tests for all helper functions - Integration tests: Added managedjob_controller_test.go with Ginkgo/Gomega tests * Add the helm chart release. * Add reasonable test coverage.
265 lines
7.3 KiB
Go
265 lines
7.3 KiB
Go
//go:build !ignore_autogenerated
|
|
|
|
/*
|
|
Copyright 2023.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
// Code generated by controller-gen. DO NOT EDIT.
|
|
|
|
package v1beta1
|
|
|
|
import (
|
|
"k8s.io/api/core/v1"
|
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
|
)
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *ManagedJob) DeepCopyInto(out *ManagedJob) {
|
|
*out = *in
|
|
out.TypeMeta = in.TypeMeta
|
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
|
in.Spec.DeepCopyInto(&out.Spec)
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedJob.
|
|
func (in *ManagedJob) DeepCopy() *ManagedJob {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(ManagedJob)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
|
func (in *ManagedJob) DeepCopyObject() runtime.Object {
|
|
if c := in.DeepCopy(); c != nil {
|
|
return c
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *ManagedJobDefinition) DeepCopyInto(out *ManagedJobDefinition) {
|
|
*out = *in
|
|
if in.Args != nil {
|
|
in, out := &in.Args, &out.Args
|
|
*out = make([]string, len(*in))
|
|
copy(*out, *in)
|
|
}
|
|
in.Params.DeepCopyInto(&out.Params)
|
|
if in.Dependencies != nil {
|
|
in, out := &in.Dependencies, &out.Dependencies
|
|
*out = make([]*ManagedJobDependencies, len(*in))
|
|
for i := range *in {
|
|
if (*in)[i] != nil {
|
|
in, out := &(*in)[i], &(*out)[i]
|
|
*out = new(ManagedJobDependencies)
|
|
**out = **in
|
|
}
|
|
}
|
|
}
|
|
in.CompiledParams.DeepCopyInto(&out.CompiledParams)
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedJobDefinition.
|
|
func (in *ManagedJobDefinition) DeepCopy() *ManagedJobDefinition {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(ManagedJobDefinition)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *ManagedJobDependencies) DeepCopyInto(out *ManagedJobDependencies) {
|
|
*out = *in
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedJobDependencies.
|
|
func (in *ManagedJobDependencies) DeepCopy() *ManagedJobDependencies {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(ManagedJobDependencies)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *ManagedJobGroup) DeepCopyInto(out *ManagedJobGroup) {
|
|
*out = *in
|
|
if in.Jobs != nil {
|
|
in, out := &in.Jobs, &out.Jobs
|
|
*out = make([]*ManagedJobDefinition, len(*in))
|
|
for i := range *in {
|
|
if (*in)[i] != nil {
|
|
in, out := &(*in)[i], &(*out)[i]
|
|
*out = new(ManagedJobDefinition)
|
|
(*in).DeepCopyInto(*out)
|
|
}
|
|
}
|
|
}
|
|
in.Params.DeepCopyInto(&out.Params)
|
|
if in.Dependencies != nil {
|
|
in, out := &in.Dependencies, &out.Dependencies
|
|
*out = make([]*ManagedJobDependencies, len(*in))
|
|
for i := range *in {
|
|
if (*in)[i] != nil {
|
|
in, out := &(*in)[i], &(*out)[i]
|
|
*out = new(ManagedJobDependencies)
|
|
**out = **in
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedJobGroup.
|
|
func (in *ManagedJobGroup) DeepCopy() *ManagedJobGroup {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(ManagedJobGroup)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *ManagedJobList) DeepCopyInto(out *ManagedJobList) {
|
|
*out = *in
|
|
out.TypeMeta = in.TypeMeta
|
|
in.ListMeta.DeepCopyInto(&out.ListMeta)
|
|
if in.Items != nil {
|
|
in, out := &in.Items, &out.Items
|
|
*out = make([]ManagedJob, len(*in))
|
|
for i := range *in {
|
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedJobList.
|
|
func (in *ManagedJobList) DeepCopy() *ManagedJobList {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(ManagedJobList)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
|
func (in *ManagedJobList) DeepCopyObject() runtime.Object {
|
|
if c := in.DeepCopy(); c != nil {
|
|
return c
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *ManagedJobParameters) DeepCopyInto(out *ManagedJobParameters) {
|
|
*out = *in
|
|
if in.FromEnv != nil {
|
|
in, out := &in.FromEnv, &out.FromEnv
|
|
*out = make([]v1.EnvFromSource, len(*in))
|
|
for i := range *in {
|
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
|
}
|
|
}
|
|
if in.Env != nil {
|
|
in, out := &in.Env, &out.Env
|
|
*out = make([]v1.EnvVar, len(*in))
|
|
for i := range *in {
|
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
|
}
|
|
}
|
|
if in.Volumes != nil {
|
|
in, out := &in.Volumes, &out.Volumes
|
|
*out = make([]v1.Volume, len(*in))
|
|
for i := range *in {
|
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
|
}
|
|
}
|
|
if in.VolumeMounts != nil {
|
|
in, out := &in.VolumeMounts, &out.VolumeMounts
|
|
*out = make([]v1.VolumeMount, len(*in))
|
|
for i := range *in {
|
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
|
}
|
|
}
|
|
if in.ImagePullSecrets != nil {
|
|
in, out := &in.ImagePullSecrets, &out.ImagePullSecrets
|
|
*out = make([]v1.LocalObjectReference, len(*in))
|
|
copy(*out, *in)
|
|
}
|
|
if in.Labels != nil {
|
|
in, out := &in.Labels, &out.Labels
|
|
*out = make(map[string]string, len(*in))
|
|
for key, val := range *in {
|
|
(*out)[key] = val
|
|
}
|
|
}
|
|
if in.Annotations != nil {
|
|
in, out := &in.Annotations, &out.Annotations
|
|
*out = make(map[string]string, len(*in))
|
|
for key, val := range *in {
|
|
(*out)[key] = val
|
|
}
|
|
}
|
|
if in.Resources != nil {
|
|
in, out := &in.Resources, &out.Resources
|
|
*out = new(v1.ResourceRequirements)
|
|
(*in).DeepCopyInto(*out)
|
|
}
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedJobParameters.
|
|
func (in *ManagedJobParameters) DeepCopy() *ManagedJobParameters {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(ManagedJobParameters)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|
|
|
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
|
func (in *ManagedJobSpec) DeepCopyInto(out *ManagedJobSpec) {
|
|
*out = *in
|
|
if in.Groups != nil {
|
|
in, out := &in.Groups, &out.Groups
|
|
*out = make([]*ManagedJobGroup, len(*in))
|
|
for i := range *in {
|
|
if (*in)[i] != nil {
|
|
in, out := &(*in)[i], &(*out)[i]
|
|
*out = new(ManagedJobGroup)
|
|
(*in).DeepCopyInto(*out)
|
|
}
|
|
}
|
|
}
|
|
in.Params.DeepCopyInto(&out.Params)
|
|
}
|
|
|
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagedJobSpec.
|
|
func (in *ManagedJobSpec) DeepCopy() *ManagedJobSpec {
|
|
if in == nil {
|
|
return nil
|
|
}
|
|
out := new(ManagedJobSpec)
|
|
in.DeepCopyInto(out)
|
|
return out
|
|
}
|