Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Delete duplicate resource.Quantity.Copy() #81627

Merged
merged 1 commit into from
Aug 22, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 4 additions & 4 deletions pkg/api/v1/resource/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import (
func addResourceList(list, new v1.ResourceList) {
for name, quantity := range new {
if value, ok := list[name]; !ok {
list[name] = *quantity.Copy()
list[name] = quantity.DeepCopy()
} else {
value.Add(quantity)
list[name] = value
Expand All @@ -42,11 +42,11 @@ func addResourceList(list, new v1.ResourceList) {
func maxResourceList(list, new v1.ResourceList) {
for name, quantity := range new {
if value, ok := list[name]; !ok {
list[name] = *quantity.Copy()
list[name] = quantity.DeepCopy()
continue
} else {
if quantity.Cmp(value) > 0 {
list[name] = *quantity.Copy()
list[name] = quantity.DeepCopy()
}
}
}
Expand Down Expand Up @@ -197,7 +197,7 @@ func MergeContainerResourceLimits(container *v1.Container,
for _, resource := range []v1.ResourceName{v1.ResourceCPU, v1.ResourceMemory, v1.ResourceEphemeralStorage} {
if quantity, exists := container.Resources.Limits[resource]; !exists || quantity.IsZero() {
if cap, exists := allocatable[resource]; exists {
container.Resources.Limits[resource] = *cap.Copy()
container.Resources.Limits[resource] = cap.DeepCopy()
}
}
}
Expand Down
20 changes: 10 additions & 10 deletions pkg/apis/core/fuzzer/fuzzer.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,31 +133,31 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
q.Limits = make(core.ResourceList)
q.Requests = make(core.ResourceList)
cpuLimit := randomQuantity()
q.Limits[core.ResourceCPU] = *cpuLimit.Copy()
q.Requests[core.ResourceCPU] = *cpuLimit.Copy()
q.Limits[core.ResourceCPU] = cpuLimit.DeepCopy()
q.Requests[core.ResourceCPU] = cpuLimit.DeepCopy()
memoryLimit := randomQuantity()
q.Limits[core.ResourceMemory] = *memoryLimit.Copy()
q.Requests[core.ResourceMemory] = *memoryLimit.Copy()
q.Limits[core.ResourceMemory] = memoryLimit.DeepCopy()
q.Requests[core.ResourceMemory] = memoryLimit.DeepCopy()
storageLimit := randomQuantity()
q.Limits[core.ResourceStorage] = *storageLimit.Copy()
q.Requests[core.ResourceStorage] = *storageLimit.Copy()
q.Limits[core.ResourceStorage] = storageLimit.DeepCopy()
q.Requests[core.ResourceStorage] = storageLimit.DeepCopy()
},
func(q *core.LimitRangeItem, c fuzz.Continue) {
var cpuLimit resource.Quantity
c.Fuzz(&cpuLimit)

q.Type = core.LimitTypeContainer
q.Default = make(core.ResourceList)
q.Default[core.ResourceCPU] = *(cpuLimit.Copy())
q.Default[core.ResourceCPU] = cpuLimit.DeepCopy()

q.DefaultRequest = make(core.ResourceList)
q.DefaultRequest[core.ResourceCPU] = *(cpuLimit.Copy())
q.DefaultRequest[core.ResourceCPU] = cpuLimit.DeepCopy()

q.Max = make(core.ResourceList)
q.Max[core.ResourceCPU] = *(cpuLimit.Copy())
q.Max[core.ResourceCPU] = cpuLimit.DeepCopy()

q.Min = make(core.ResourceList)
q.Min[core.ResourceCPU] = *(cpuLimit.Copy())
q.Min[core.ResourceCPU] = cpuLimit.DeepCopy()

q.MaxLimitRequestRatio = make(core.ResourceList)
q.MaxLimitRequestRatio[core.ResourceCPU] = resource.MustParse("10")
Expand Down
12 changes: 6 additions & 6 deletions pkg/apis/core/helper/qos/qos.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,12 @@ func GetPodQOS(pod *core.Pod) core.PodQOSClass {
continue
}
if quantity.Cmp(zeroQuantity) == 1 {
delta := quantity.Copy()
delta := quantity.DeepCopy()
if _, exists := requests[name]; !exists {
requests[name] = *delta
requests[name] = delta
} else {
delta.Add(requests[name])
requests[name] = *delta
requests[name] = delta
}
}
}
Expand All @@ -66,12 +66,12 @@ func GetPodQOS(pod *core.Pod) core.PodQOSClass {
}
if quantity.Cmp(zeroQuantity) == 1 {
qosLimitsFound.Insert(string(name))
delta := quantity.Copy()
delta := quantity.DeepCopy()
if _, exists := limits[name]; !exists {
limits[name] = *delta
limits[name] = delta
} else {
delta.Add(limits[name])
limits[name] = *delta
limits[name] = delta
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions pkg/apis/core/v1/conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,12 +208,12 @@ func TestResourceListConversion(t *testing.T) {
},
{ // Large values should still be accurate.
input: v1.ResourceList{
v1.ResourceCPU: *bigMilliQuantity.Copy(),
v1.ResourceStorage: *bigMilliQuantity.Copy(),
v1.ResourceCPU: bigMilliQuantity.DeepCopy(),
v1.ResourceStorage: bigMilliQuantity.DeepCopy(),
},
expected: core.ResourceList{
core.ResourceCPU: *bigMilliQuantity.Copy(),
core.ResourceStorage: *bigMilliQuantity.Copy(),
core.ResourceCPU: bigMilliQuantity.DeepCopy(),
core.ResourceStorage: bigMilliQuantity.DeepCopy(),
},
},
}
Expand Down
12 changes: 6 additions & 6 deletions pkg/apis/core/v1/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ func SetDefaults_Pod(obj *v1.Pod) {
}
for key, value := range obj.Spec.Containers[i].Resources.Limits {
if _, exists := obj.Spec.Containers[i].Resources.Requests[key]; !exists {
obj.Spec.Containers[i].Resources.Requests[key] = *(value.Copy())
obj.Spec.Containers[i].Resources.Requests[key] = value.DeepCopy()
}
}
}
Expand All @@ -153,7 +153,7 @@ func SetDefaults_Pod(obj *v1.Pod) {
}
for key, value := range obj.Spec.InitContainers[i].Resources.Limits {
if _, exists := obj.Spec.InitContainers[i].Resources.Requests[key]; !exists {
obj.Spec.InitContainers[i].Resources.Requests[key] = *(value.Copy())
obj.Spec.InitContainers[i].Resources.Requests[key] = value.DeepCopy()
}
}
}
Expand Down Expand Up @@ -315,7 +315,7 @@ func SetDefaults_NodeStatus(obj *v1.NodeStatus) {
if obj.Allocatable == nil && obj.Capacity != nil {
obj.Allocatable = make(v1.ResourceList, len(obj.Capacity))
for key, value := range obj.Capacity {
obj.Allocatable[key] = *(value.Copy())
obj.Allocatable[key] = value.DeepCopy()
}
obj.Allocatable = obj.Capacity
}
Expand All @@ -339,19 +339,19 @@ func SetDefaults_LimitRangeItem(obj *v1.LimitRangeItem) {
// If a default limit is unspecified, but the max is specified, default the limit to the max
for key, value := range obj.Max {
if _, exists := obj.Default[key]; !exists {
obj.Default[key] = *(value.Copy())
obj.Default[key] = value.DeepCopy()
}
}
// If a default limit is specified, but the default request is not, default request to limit
for key, value := range obj.Default {
if _, exists := obj.DefaultRequest[key]; !exists {
obj.DefaultRequest[key] = *(value.Copy())
obj.DefaultRequest[key] = value.DeepCopy()
}
}
// If a default request is not specified, but the min is provided, default request to the min
for key, value := range obj.Min {
if _, exists := obj.DefaultRequest[key]; !exists {
obj.DefaultRequest[key] = *(value.Copy())
obj.DefaultRequest[key] = value.DeepCopy()
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/apis/core/v1/defaults_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1394,7 +1394,7 @@ func TestSetDefaultNodeStatusAllocatable(t *testing.T) {
}
copy := make(v1.ResourceList, len(rl))
for k, v := range rl {
copy[k] = *v.Copy()
copy[k] = v.DeepCopy()
}
return copy
}
Expand Down
12 changes: 6 additions & 6 deletions pkg/apis/core/v1/helper/qos/qos.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,12 @@ func GetPodQOS(pod *v1.Pod) v1.PodQOSClass {
continue
}
if quantity.Cmp(zeroQuantity) == 1 {
delta := quantity.Copy()
delta := quantity.DeepCopy()
if _, exists := requests[name]; !exists {
requests[name] = *delta
requests[name] = delta
} else {
delta.Add(requests[name])
requests[name] = *delta
requests[name] = delta
}
}
}
Expand All @@ -68,12 +68,12 @@ func GetPodQOS(pod *v1.Pod) v1.PodQOSClass {
}
if quantity.Cmp(zeroQuantity) == 1 {
qosLimitsFound.Insert(string(name))
delta := quantity.Copy()
delta := quantity.DeepCopy()
if _, exists := limits[name]; !exists {
limits[name] = *delta
limits[name] = delta
} else {
delta.Add(limits[name])
limits[name] = *delta
limits[name] = delta
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/kubelet/cm/node_container_manager_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ func (cm *containerManagerImpl) getNodeAllocatableAbsolute() v1.ResourceList {
func (cm *containerManagerImpl) getNodeAllocatableAbsoluteImpl(capacity v1.ResourceList) v1.ResourceList {
result := make(v1.ResourceList)
for k, v := range capacity {
value := *(v.Copy())
value := v.DeepCopy()
if cm.NodeConfig.SystemReserved != nil {
value.Sub(cm.NodeConfig.SystemReserved[k])
}
Expand Down
3 changes: 2 additions & 1 deletion pkg/kubelet/eviction/api/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@ type Threshold struct {
// GetThresholdQuantity returns the expected quantity value for a thresholdValue
func GetThresholdQuantity(value ThresholdValue, capacity *resource.Quantity) *resource.Quantity {
if value.Quantity != nil {
return value.Quantity.Copy()
res := value.Quantity.DeepCopy()
return &res
}
return resource.NewQuantity(int64(float64(capacity.Value())*float64(value.Percentage)), resource.BinarySI)
}
4 changes: 2 additions & 2 deletions pkg/kubelet/nodestatus/setters.go
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ func MachineInfo(nodeName string,
}
allocatableReservation := nodeAllocatableReservationFunc()
for k, v := range node.Status.Capacity {
value := *(v.Copy())
value := v.DeepCopy()
if res, exists := allocatableReservation[k]; exists {
value.Sub(res)
}
Expand All @@ -343,7 +343,7 @@ func MachineInfo(nodeName string,
for k, v := range node.Status.Capacity {
if v1helper.IsHugePageResourceName(k) {
allocatableMemory := node.Status.Allocatable[v1.ResourceMemory]
value := *(v.Copy())
value := v.DeepCopy()
allocatableMemory.Sub(value)
if allocatableMemory.Sign() < 0 {
// Negative Allocatable resources don't make sense.
Expand Down
19 changes: 9 additions & 10 deletions pkg/quota/v1/resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,15 +86,15 @@ func Max(a corev1.ResourceList, b corev1.ResourceList) corev1.ResourceList {
for key, value := range a {
if other, found := b[key]; found {
if value.Cmp(other) <= 0 {
result[key] = *other.Copy()
result[key] = other.DeepCopy()
continue
}
}
result[key] = *value.Copy()
result[key] = value.DeepCopy()
}
for key, value := range b {
if _, found := result[key]; !found {
result[key] = *value.Copy()
result[key] = value.DeepCopy()
}
}
return result
Expand All @@ -104,16 +104,15 @@ func Max(a corev1.ResourceList, b corev1.ResourceList) corev1.ResourceList {
func Add(a corev1.ResourceList, b corev1.ResourceList) corev1.ResourceList {
result := corev1.ResourceList{}
for key, value := range a {
quantity := *value.Copy()
quantity := value.DeepCopy()
if other, found := b[key]; found {
quantity.Add(other)
}
result[key] = quantity
}
for key, value := range b {
if _, found := result[key]; !found {
quantity := *value.Copy()
result[key] = quantity
result[key] = value.DeepCopy()
}
}
return result
Expand All @@ -126,7 +125,7 @@ func SubtractWithNonNegativeResult(a corev1.ResourceList, b corev1.ResourceList)

result := corev1.ResourceList{}
for key, value := range a {
quantity := *value.Copy()
quantity := value.DeepCopy()
if other, found := b[key]; found {
quantity.Sub(other)
}
Expand All @@ -149,15 +148,15 @@ func SubtractWithNonNegativeResult(a corev1.ResourceList, b corev1.ResourceList)
func Subtract(a corev1.ResourceList, b corev1.ResourceList) corev1.ResourceList {
result := corev1.ResourceList{}
for key, value := range a {
quantity := *value.Copy()
quantity := value.DeepCopy()
if other, found := b[key]; found {
quantity.Sub(other)
}
result[key] = quantity
}
for key, value := range b {
if _, found := result[key]; !found {
quantity := *value.Copy()
quantity := value.DeepCopy()
quantity.Neg()
result[key] = quantity
}
Expand All @@ -171,7 +170,7 @@ func Mask(resources corev1.ResourceList, names []corev1.ResourceName) corev1.Res
result := corev1.ResourceList{}
for key, value := range resources {
if nameSet.Has(string(key)) {
result[key] = *value.Copy()
result[key] = value.DeepCopy()
}
}
return result
Expand Down
10 changes: 4 additions & 6 deletions plugin/pkg/admission/limitranger/admission.go
Original file line number Diff line number Diff line change
Expand Up @@ -219,12 +219,10 @@ func defaultContainerResourceRequirements(limitRange *corev1.LimitRange) api.Res
limit := limitRange.Spec.Limits[i]
if limit.Type == corev1.LimitTypeContainer {
for k, v := range limit.DefaultRequest {
value := v.Copy()
requirements.Requests[api.ResourceName(k)] = *value
requirements.Requests[api.ResourceName(k)] = v.DeepCopy()
}
for k, v := range limit.Default {
value := v.Copy()
requirements.Limits[api.ResourceName(k)] = *value
requirements.Limits[api.ResourceName(k)] = v.DeepCopy()
}
}
}
Expand All @@ -244,14 +242,14 @@ func mergeContainerResources(container *api.Container, defaultRequirements *api.
for k, v := range defaultRequirements.Limits {
_, found := container.Resources.Limits[k]
if !found {
container.Resources.Limits[k] = *v.Copy()
container.Resources.Limits[k] = v.DeepCopy()
setLimits = append(setLimits, string(k))
}
}
for k, v := range defaultRequirements.Requests {
_, found := container.Resources.Requests[k]
if !found {
container.Resources.Requests[k] = *v.Copy()
container.Resources.Requests[k] = v.DeepCopy()
setRequests = append(setRequests, string(k))
}
}
Expand Down
18 changes: 0 additions & 18 deletions staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
Original file line number Diff line number Diff line change
Expand Up @@ -726,21 +726,3 @@ func (q *Quantity) SetScaled(value int64, scale Scale) {
q.d.Dec = nil
q.i = int64Amount{value: value, scale: scale}
}

// Copy is a convenience function that makes a deep copy for you. Non-deep
// copies of quantities share pointers and you will regret that.
func (q *Quantity) Copy() *Quantity {
if q.d.Dec == nil {
return &Quantity{
s: q.s,
i: q.i,
Format: q.Format,
}
}
tmp := &inf.Dec{}
return &Quantity{
s: q.s,
d: infDecAmount{tmp.Set(q.d.Dec)},
Format: q.Format,
}
}