github.com/jenkins-x/jx/v2@v2.1.155/pkg/kube/metadata.go (about) 1 package kube 2 3 import ( 4 "strconv" 5 6 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 7 ) 8 9 // ObjectReference represents a reference to a k8s resource 10 type ObjectReference struct { 11 APIVersion string `json:"apiVersion" protobuf:"bytes,5,opt,name=apiVersion"` 12 // Kind of the referent. 13 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds 14 Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"` 15 // Name of the referent. 16 // More info: http://kubernetes.io/docs/user-guide/identifiers#names 17 Name string `json:"name" protobuf:"bytes,3,opt,name=name"` 18 } 19 20 // IsResourceVersionNewer returns true if the first resource version is newer than the second 21 func IsResourceVersionNewer(v1 string, v2 string) bool { 22 if v1 == v2 || v1 == "" { 23 return false 24 } 25 if v2 == "" { 26 return true 27 } 28 i1, e1 := strconv.Atoi(v1) 29 i2, e2 := strconv.Atoi(v2) 30 31 if e1 == nil && e2 != nil { 32 return true 33 } 34 if e1 != nil { 35 return false 36 } 37 return i1 > i2 38 } 39 40 // CreateObjectReference create an ObjectReference from the typed and object meta stuff 41 func CreateObjectReference(t metav1.TypeMeta, o metav1.ObjectMeta) ObjectReference { 42 return ObjectReference{ 43 APIVersion: t.APIVersion, 44 Kind: t.Kind, 45 Name: o.Name, 46 } 47 }