Skip to content

Commit 27ade61

Browse files
SqiSchlwolf
authored andcommitted
Fix gcp minor version (#16)
* #15 fixing a bug in gcp where minor version number returns 9+ instead of 9
1 parent cc1a584 commit 27ade61

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

pkg/controller/controller.go

+25-14
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,20 @@ package controller
22

33
import (
44
"encoding/json"
5+
"log"
6+
"reflect"
7+
"regexp"
8+
"strconv"
9+
"sync"
10+
"time"
11+
512
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
613
"k8s.io/apimachinery/pkg/runtime"
14+
"k8s.io/apimachinery/pkg/version"
715
"k8s.io/apimachinery/pkg/watch"
816
"k8s.io/client-go/kubernetes"
917
"k8s.io/client-go/pkg/api/v1"
1018
"k8s.io/client-go/tools/cache"
11-
"k8s.io/apimachinery/pkg/version"
12-
"log"
13-
"reflect"
14-
"strconv"
15-
"sync"
16-
"time"
1719
)
1820

1921
// PodController watches the kubernetes api for changes to Pods and
@@ -46,7 +48,7 @@ func NewPodController(kclient *kubernetes.Clientset, opts map[string]string) *Po
4648
dryRun, _ := strconv.ParseBool(opts["dryRun"])
4749
version, err := kclient.ServerVersion()
4850

49-
if err != nil{
51+
if err != nil {
5052
log.Fatalf("Failed to retrieve server version %v", err)
5153
}
5254

@@ -103,7 +105,7 @@ func (c *PodController) doTheMagic(cur interface{}, keepSuccessHours int, keepFa
103105
podObj := cur.(*v1.Pod)
104106
parentJobName := c.getParentJobName(podObj, version)
105107
// if we couldn't find a prent job name, ignore this pod
106-
if parentJobName == ""{
108+
if parentJobName == "" {
107109
log.Printf("Pod %s was not created by a job, ignoring.", podObj.Name)
108110
return
109111
}
@@ -165,14 +167,23 @@ func (c *PodController) deleteObjects(podObj *v1.Pod, parentJobName string, dryR
165167
return
166168
}
167169

168-
169170
func (c *PodController) getParentJobName(podObj *v1.Pod, version version.Info) (parentJobName string) {
170171

171172
oldVersion := false
172173

173-
major,_ := strconv.Atoi(version.Major)
174-
minor,_ := strconv.Atoi(version.Minor)
175-
if major < 2 && minor < 8{
174+
major, _ := strconv.Atoi(version.Major)
175+
176+
var minor int
177+
re := regexp.MustCompile("[0-9]+")
178+
m := re.FindAllString(version.Minor, 1)
179+
if len(m) != 0 {
180+
minor, _ = strconv.Atoi(m[0])
181+
} else {
182+
log.Printf("failed to parse minor version %s", version.Minor)
183+
minor = 0
184+
}
185+
186+
if major < 2 && minor < 8 {
176187
oldVersion = true
177188
}
178189

@@ -182,7 +193,7 @@ func (c *PodController) getParentJobName(podObj *v1.Pod, version version.Info) (
182193
if createdMeta.Reference.Kind == "Job" {
183194
parentJobName = createdMeta.Reference.Name
184195
}
185-
}else {
196+
} else {
186197
// Going all over the owners, looking for a job, usually there is only one owner
187198
for _, ow := range podObj.OwnerReferences {
188199
if ow.Kind == "Job" {
@@ -191,4 +202,4 @@ func (c *PodController) getParentJobName(podObj *v1.Pod, version version.Info) (
191202
}
192203
}
193204
return
194-
}
205+
}

0 commit comments

Comments
 (0)