func (JobV1) Generate(genericParams map[string]interface{}) (runtime.Object, error) { args, err := getArgs(genericParams) if err != nil { return nil, err } envs, err := getV1Envs(genericParams) if err != nil { return nil, err } params, err := getParams(genericParams) if err != nil { return nil, err } name, err := getName(params) if err != nil { return nil, err } labels, err := getLabels(params, true, name) if err != nil { return nil, err } podSpec, err := makeV1PodSpec(params, name) if err != nil { return nil, err } if err = updateV1PodContainers(params, args, envs, podSpec); err != nil { return nil, err } leaveStdinOpen, err := GetBool(params, "leave-stdin-open", false) if err != nil { return nil, err } podSpec.Containers[0].StdinOnce = !leaveStdinOpen && podSpec.Containers[0].Stdin if err := updateV1PodPorts(params, podSpec); err != nil { return nil, err } restartPolicy := v1.RestartPolicy(params["restart"]) if len(restartPolicy) == 0 { restartPolicy = v1.RestartPolicyNever } podSpec.RestartPolicy = restartPolicy job := batchv1.Job{ ObjectMeta: v1.ObjectMeta{ Name: name, Labels: labels, }, Spec: batchv1.JobSpec{ Template: v1.PodTemplateSpec{ ObjectMeta: v1.ObjectMeta{ Labels: labels, }, Spec: *podSpec, }, }, } return &job, nil }
// The following two PodSpec conversions functions where copied from pkg/api/conversion.go // for the generated functions to work properly. // This should be fixed: https://github.com/kubernetes/kubernetes/issues/12977 func Convert_api_PodSpec_To_v1_PodSpec(in *api.PodSpec, out *v1.PodSpec, s conversion.Scope) error { if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { defaulting.(func(*api.PodSpec))(in) } if in.Volumes != nil { out.Volumes = make([]v1.Volume, len(in.Volumes)) for i := range in.Volumes { if err := Convert_api_Volume_To_v1_Volume(&in.Volumes[i], &out.Volumes[i], s); err != nil { return err } } } else { out.Volumes = nil } if in.Containers != nil { out.Containers = make([]v1.Container, len(in.Containers)) for i := range in.Containers { if err := Convert_api_Container_To_v1_Container(&in.Containers[i], &out.Containers[i], s); err != nil { return err } } } else { out.Containers = nil } out.RestartPolicy = v1.RestartPolicy(in.RestartPolicy) if in.TerminationGracePeriodSeconds != nil { out.TerminationGracePeriodSeconds = new(int64) *out.TerminationGracePeriodSeconds = *in.TerminationGracePeriodSeconds } else { out.TerminationGracePeriodSeconds = nil } if in.ActiveDeadlineSeconds != nil { out.ActiveDeadlineSeconds = new(int64) *out.ActiveDeadlineSeconds = *in.ActiveDeadlineSeconds } else { out.ActiveDeadlineSeconds = nil } out.DNSPolicy = v1.DNSPolicy(in.DNSPolicy) if in.NodeSelector != nil { out.NodeSelector = make(map[string]string) for key, val := range in.NodeSelector { out.NodeSelector[key] = val } } else { out.NodeSelector = nil } out.ServiceAccountName = in.ServiceAccountName // DeprecatedServiceAccount is an alias for ServiceAccountName. out.DeprecatedServiceAccount = in.ServiceAccountName out.NodeName = in.NodeName if in.SecurityContext != nil { out.SecurityContext = new(v1.PodSecurityContext) if err := Convert_api_PodSecurityContext_To_v1_PodSecurityContext(in.SecurityContext, out.SecurityContext, s); err != nil { return err } out.HostNetwork = in.SecurityContext.HostNetwork out.HostPID = in.SecurityContext.HostPID out.HostIPC = in.SecurityContext.HostIPC } if in.ImagePullSecrets != nil { out.ImagePullSecrets = make([]v1.LocalObjectReference, len(in.ImagePullSecrets)) for i := range in.ImagePullSecrets { if err := Convert_api_LocalObjectReference_To_v1_LocalObjectReference(&in.ImagePullSecrets[i], &out.ImagePullSecrets[i], s); err != nil { return err } } } else { out.ImagePullSecrets = nil } return nil }
func (CronJobV2Alpha1) Generate(genericParams map[string]interface{}) (runtime.Object, error) { args, err := getArgs(genericParams) if err != nil { return nil, err } envs, err := getV1Envs(genericParams) if err != nil { return nil, err } params, err := getParams(genericParams) if err != nil { return nil, err } name, err := getName(params) if err != nil { return nil, err } labels, err := getLabels(params, true, name) if err != nil { return nil, err } podSpec, err := makeV1PodSpec(params, name) if err != nil { return nil, err } imagePullPolicy := v1.PullPolicy(params["image-pull-policy"]) if err = updateV1PodContainers(params, args, envs, imagePullPolicy, podSpec); err != nil { return nil, err } leaveStdinOpen, err := GetBool(params, "leave-stdin-open", false) if err != nil { return nil, err } podSpec.Containers[0].StdinOnce = !leaveStdinOpen && podSpec.Containers[0].Stdin if err := updateV1PodPorts(params, podSpec); err != nil { return nil, err } restartPolicy := v1.RestartPolicy(params["restart"]) if len(restartPolicy) == 0 { restartPolicy = v1.RestartPolicyNever } podSpec.RestartPolicy = restartPolicy cronJob := batchv2alpha1.CronJob{ ObjectMeta: v1.ObjectMeta{ Name: name, Labels: labels, }, Spec: batchv2alpha1.CronJobSpec{ Schedule: params["schedule"], ConcurrencyPolicy: batchv2alpha1.AllowConcurrent, JobTemplate: batchv2alpha1.JobTemplateSpec{ Spec: batchv2alpha1.JobSpec{ Template: v1.PodTemplateSpec{ ObjectMeta: v1.ObjectMeta{ Labels: labels, }, Spec: *podSpec, }, }, }, }, } return &cronJob, nil }