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  }