job rerun with resourceVersion

Signed-off-by: runzexia <runzexia@yunify.com>
This commit is contained in:
runzexia
2019-11-06 21:22:01 +08:00
parent 0c11778e01
commit e72b0be0c9
4 changed files with 22 additions and 5 deletions

View File

@@ -19,23 +19,32 @@ package workloads
import (
"fmt"
"k8s.io/api/batch/v1"
k8serr "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/klog"
"kubesphere.io/kubesphere/pkg/simple/client"
"strings"
"time"
"k8s.io/api/batch/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
const retryTimes = 3
func JobReRun(namespace, jobName string) error {
func JobReRun(namespace, jobName, resourceVersion string) error {
k8sClient := client.ClientSets().K8s().Kubernetes()
job, err := k8sClient.BatchV1().Jobs(namespace).Get(jobName, metav1.GetOptions{})
if err != nil {
return err
}
// do not rerun job if resourceVersion not match
if job.GetObjectMeta().GetResourceVersion() != resourceVersion {
err := k8serr.NewConflict(schema.GroupResource{
Group: job.GetObjectKind().GroupVersionKind().Group, Resource: "job",
}, jobName, fmt.Errorf("please apply your changes to the latest version and try again"))
klog.Warning(err)
return err
}
newJob := *job
newJob.ResourceVersion = ""