github.com/gocrane/crane@v0.11.0/pkg/utils/resource.go (about) 1 package utils 2 3 import corev1 "k8s.io/api/core/v1" 4 5 func IsCPUResourceEqual(oldResource, desiredResource corev1.ResourceList) bool { 6 oldCpuResource, ok1 := oldResource[corev1.ResourceCPU] 7 desiredCpuResource, ok2 := desiredResource[corev1.ResourceCPU] 8 if ok1 != ok2 { 9 return false 10 } 11 if ok1 == ok2 && ok1 { 12 return oldCpuResource.Equal(desiredCpuResource) 13 } 14 return true 15 } 16 17 func IsMemoryResourceEqual(oldResource, desiredResource corev1.ResourceList) bool { 18 oldMemoryResource, ok1 := oldResource[corev1.ResourceMemory] 19 desiredMemoryResource, ok2 := desiredResource[corev1.ResourceMemory] 20 if ok1 != ok2 { 21 return false 22 } 23 if ok1 == ok2 && ok1 { 24 return oldMemoryResource.Equal(desiredMemoryResource) 25 } 26 return true 27 } 28 29 func IsResourceEqual(oldResource, desiredResource corev1.ResourceList) bool { 30 // Compare CPU Resource 31 if !IsCPUResourceEqual(oldResource, desiredResource) { 32 return false 33 } 34 // Compare Memory Resource 35 if !IsMemoryResourceEqual(oldResource, desiredResource) { 36 return false 37 } 38 return true 39 } 40 41 func IsEqual(oldResource, desiredResource *corev1.ResourceRequirements) bool { 42 // Compare Request Resource 43 if !IsResourceEqual(oldResource.Requests, desiredResource.Requests) { 44 return false 45 } 46 // Compare Limit Resource 47 if !IsResourceEqual(oldResource.Limits, desiredResource.Limits) { 48 return false 49 } 50 return true 51 } 52 53 func GetResourceByPodTemplate(podTemplate *corev1.PodTemplateSpec, containerName string) (*corev1.ResourceRequirements, bool) { 54 for _, containerSpec := range podTemplate.Spec.Containers { 55 if containerSpec.Name == containerName { 56 return &containerSpec.Resources, true 57 } 58 } 59 60 return nil, false 61 }