Skip to content

Commit ca598b4

Browse files
Merge pull request #531 from openshift-cherrypick-robot/cherry-pick-512-to-release-4.7
[release-4.7] Avoid unneeded object initialization during profile conversion
2 parents 097c980 + 5a2ea2e commit ca598b4

File tree

3 files changed

+243
-132
lines changed

3 files changed

+243
-132
lines changed

api/v1alpha1/performanceprofile_conversion.go

Lines changed: 84 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package v1alpha1
33
import (
44
"k8s.io/utils/pointer"
55

6-
"github.com/openshift-kni/performance-addon-operators/api/v1"
6+
v1 "github.com/openshift-kni/performance-addon-operators/api/v1"
77
conditionsv1 "github.com/openshift/custom-resource-status/conditions/v1"
88

99
"sigs.k8s.io/controller-runtime/pkg/conversion"
@@ -17,8 +17,9 @@ func (curr *PerformanceProfile) ConvertTo(dstRaw conversion.Hub) error {
1717
dst.ObjectMeta = curr.ObjectMeta
1818

1919
// Spec
20-
dst.Spec.CPU = new(v1.CPU)
2120
if curr.Spec.CPU != nil {
21+
dst.Spec.CPU = new(v1.CPU)
22+
2223
if curr.Spec.CPU.Reserved != nil {
2324
reserved := v1.CPUSet(*curr.Spec.CPU.Reserved)
2425
dst.Spec.CPU.Reserved = &reserved
@@ -32,58 +33,75 @@ func (curr *PerformanceProfile) ConvertTo(dstRaw conversion.Hub) error {
3233
}
3334
}
3435

35-
dst.Spec.HugePages = new(v1.HugePages)
3636
if curr.Spec.HugePages != nil {
37+
dst.Spec.HugePages = new(v1.HugePages)
38+
3739
if curr.Spec.HugePages.DefaultHugePagesSize != nil {
3840
defaultHugePagesSize := v1.HugePageSize(*curr.Spec.HugePages.DefaultHugePagesSize)
3941
dst.Spec.HugePages.DefaultHugePagesSize = &defaultHugePagesSize
4042
}
41-
dst.Spec.HugePages.Pages = make([]v1.HugePage, len(curr.Spec.HugePages.Pages))
42-
for i, p := range curr.Spec.HugePages.Pages {
43-
dst.Spec.HugePages.Pages[i] = v1.HugePage{
44-
Size: v1.HugePageSize(p.Size), Count: p.Count,
45-
}
46-
if p.Node != nil {
47-
dst.Spec.HugePages.Pages[i].Node = pointer.Int32Ptr(*p.Node)
43+
44+
if curr.Spec.HugePages.Pages != nil {
45+
dst.Spec.HugePages.Pages = make([]v1.HugePage, len(curr.Spec.HugePages.Pages))
46+
47+
for i, p := range curr.Spec.HugePages.Pages {
48+
dst.Spec.HugePages.Pages[i] = v1.HugePage{
49+
Size: v1.HugePageSize(p.Size), Count: p.Count,
50+
}
51+
if p.Node != nil {
52+
dst.Spec.HugePages.Pages[i].Node = pointer.Int32Ptr(*p.Node)
53+
}
4854
}
4955
}
5056
}
5157

52-
dst.Spec.MachineConfigLabel = make(map[string]string)
53-
for k, v := range curr.Spec.MachineConfigLabel {
54-
dst.Spec.MachineConfigLabel[k] = v
58+
if curr.Spec.MachineConfigLabel != nil {
59+
dst.Spec.MachineConfigLabel = make(map[string]string)
60+
for k, v := range curr.Spec.MachineConfigLabel {
61+
dst.Spec.MachineConfigLabel[k] = v
62+
}
5563
}
5664

57-
dst.Spec.MachineConfigPoolSelector = make(map[string]string)
58-
for k, v := range curr.Spec.MachineConfigPoolSelector {
59-
dst.Spec.MachineConfigPoolSelector[k] = v
65+
if curr.Spec.MachineConfigPoolSelector != nil {
66+
dst.Spec.MachineConfigPoolSelector = make(map[string]string)
67+
for k, v := range curr.Spec.MachineConfigPoolSelector {
68+
dst.Spec.MachineConfigPoolSelector[k] = v
69+
}
6070
}
6171

62-
dst.Spec.NodeSelector = make(map[string]string)
63-
for k, v := range curr.Spec.NodeSelector {
64-
dst.Spec.NodeSelector[k] = v
72+
if curr.Spec.NodeSelector != nil {
73+
dst.Spec.NodeSelector = make(map[string]string)
74+
for k, v := range curr.Spec.NodeSelector {
75+
dst.Spec.NodeSelector[k] = v
76+
}
6577
}
6678

67-
dst.Spec.RealTimeKernel = new(v1.RealTimeKernel)
6879
if curr.Spec.RealTimeKernel != nil {
80+
dst.Spec.RealTimeKernel = new(v1.RealTimeKernel)
81+
6982
if curr.Spec.RealTimeKernel.Enabled != nil {
7083
dst.Spec.RealTimeKernel.Enabled = pointer.BoolPtr(*curr.Spec.RealTimeKernel.Enabled)
7184
}
7285
}
7386

74-
dst.Spec.AdditionalKernelArgs = make([]string, len(curr.Spec.AdditionalKernelArgs))
75-
copy(dst.Spec.AdditionalKernelArgs, curr.Spec.AdditionalKernelArgs)
87+
if curr.Spec.AdditionalKernelArgs != nil {
88+
dst.Spec.AdditionalKernelArgs = make([]string, len(curr.Spec.AdditionalKernelArgs))
89+
copy(dst.Spec.AdditionalKernelArgs, curr.Spec.AdditionalKernelArgs)
90+
}
7691

77-
dst.Spec.NUMA = new(v1.NUMA)
7892
if curr.Spec.NUMA != nil {
93+
dst.Spec.NUMA = new(v1.NUMA)
94+
7995
if curr.Spec.NUMA.TopologyPolicy != nil {
8096
dst.Spec.NUMA.TopologyPolicy = pointer.StringPtr(*curr.Spec.NUMA.TopologyPolicy)
8197
}
8298
}
8399

84100
// Status
85-
dst.Status.Conditions = make([]conditionsv1.Condition, len(curr.Status.Conditions))
86-
copy(dst.Status.Conditions, curr.Status.Conditions)
101+
if curr.Status.Conditions != nil {
102+
dst.Status.Conditions = make([]conditionsv1.Condition, len(curr.Status.Conditions))
103+
copy(dst.Status.Conditions, curr.Status.Conditions)
104+
}
87105

88106
if curr.Status.Tuned != nil {
89107
dst.Status.Tuned = pointer.StringPtr(*curr.Status.Tuned)
@@ -105,8 +123,9 @@ func (curr *PerformanceProfile) ConvertFrom(srcRaw conversion.Hub) error {
105123
curr.ObjectMeta = src.ObjectMeta
106124

107125
// Spec
108-
curr.Spec.CPU = new(CPU)
109126
if src.Spec.CPU != nil {
127+
curr.Spec.CPU = new(CPU)
128+
110129
if src.Spec.CPU.Reserved != nil {
111130
reserved := CPUSet(*src.Spec.CPU.Reserved)
112131
curr.Spec.CPU.Reserved = &reserved
@@ -120,58 +139,74 @@ func (curr *PerformanceProfile) ConvertFrom(srcRaw conversion.Hub) error {
120139
}
121140
}
122141

123-
curr.Spec.HugePages = new(HugePages)
124142
if src.Spec.HugePages != nil {
143+
curr.Spec.HugePages = new(HugePages)
144+
125145
if src.Spec.HugePages.DefaultHugePagesSize != nil {
126146
defaultHugePagesSize := HugePageSize(*src.Spec.HugePages.DefaultHugePagesSize)
127147
curr.Spec.HugePages.DefaultHugePagesSize = &defaultHugePagesSize
128148
}
129-
curr.Spec.HugePages.Pages = make([]HugePage, len(src.Spec.HugePages.Pages))
130-
for i, p := range src.Spec.HugePages.Pages {
131-
curr.Spec.HugePages.Pages[i] = HugePage{
132-
Size: HugePageSize(p.Size), Count: p.Count,
133-
}
134-
if p.Node != nil {
135-
curr.Spec.HugePages.Pages[i].Node = pointer.Int32Ptr(*p.Node)
149+
150+
if src.Spec.HugePages.Pages != nil {
151+
curr.Spec.HugePages.Pages = make([]HugePage, len(src.Spec.HugePages.Pages))
152+
for i, p := range src.Spec.HugePages.Pages {
153+
curr.Spec.HugePages.Pages[i] = HugePage{
154+
Size: HugePageSize(p.Size), Count: p.Count,
155+
}
156+
if p.Node != nil {
157+
curr.Spec.HugePages.Pages[i].Node = pointer.Int32Ptr(*p.Node)
158+
}
136159
}
137160
}
138161
}
139162

140-
curr.Spec.MachineConfigLabel = make(map[string]string)
141-
for k, v := range src.Spec.MachineConfigLabel {
142-
curr.Spec.MachineConfigLabel[k] = v
163+
if src.Spec.MachineConfigLabel != nil {
164+
curr.Spec.MachineConfigLabel = make(map[string]string)
165+
for k, v := range src.Spec.MachineConfigLabel {
166+
curr.Spec.MachineConfigLabel[k] = v
167+
}
143168
}
144169

145-
curr.Spec.MachineConfigPoolSelector = make(map[string]string)
146-
for k, v := range src.Spec.MachineConfigPoolSelector {
147-
curr.Spec.MachineConfigPoolSelector[k] = v
170+
if src.Spec.MachineConfigPoolSelector != nil {
171+
curr.Spec.MachineConfigPoolSelector = make(map[string]string)
172+
for k, v := range src.Spec.MachineConfigPoolSelector {
173+
curr.Spec.MachineConfigPoolSelector[k] = v
174+
}
148175
}
149176

150-
curr.Spec.NodeSelector = make(map[string]string)
151-
for k, v := range src.Spec.NodeSelector {
152-
curr.Spec.NodeSelector[k] = v
177+
if src.Spec.NodeSelector != nil {
178+
curr.Spec.NodeSelector = make(map[string]string)
179+
for k, v := range src.Spec.NodeSelector {
180+
curr.Spec.NodeSelector[k] = v
181+
}
153182
}
154183

155-
curr.Spec.RealTimeKernel = new(RealTimeKernel)
156184
if src.Spec.RealTimeKernel != nil {
185+
curr.Spec.RealTimeKernel = new(RealTimeKernel)
186+
157187
if src.Spec.RealTimeKernel.Enabled != nil {
158188
curr.Spec.RealTimeKernel.Enabled = pointer.BoolPtr(*src.Spec.RealTimeKernel.Enabled)
159189
}
160190
}
161191

162-
curr.Spec.AdditionalKernelArgs = make([]string, len(src.Spec.AdditionalKernelArgs))
163-
copy(curr.Spec.AdditionalKernelArgs, src.Spec.AdditionalKernelArgs)
192+
if src.Spec.AdditionalKernelArgs != nil {
193+
curr.Spec.AdditionalKernelArgs = make([]string, len(src.Spec.AdditionalKernelArgs))
194+
copy(curr.Spec.AdditionalKernelArgs, src.Spec.AdditionalKernelArgs)
195+
}
164196

165-
curr.Spec.NUMA = new(NUMA)
166197
if src.Spec.NUMA != nil {
198+
curr.Spec.NUMA = new(NUMA)
199+
167200
if src.Spec.NUMA.TopologyPolicy != nil {
168201
curr.Spec.NUMA.TopologyPolicy = pointer.StringPtr(*src.Spec.NUMA.TopologyPolicy)
169202
}
170203
}
171204

172205
// Status
173-
curr.Status.Conditions = make([]conditionsv1.Condition, len(src.Status.Conditions))
174-
copy(curr.Status.Conditions, src.Status.Conditions)
206+
if src.Status.Conditions != nil {
207+
curr.Status.Conditions = make([]conditionsv1.Condition, len(src.Status.Conditions))
208+
copy(curr.Status.Conditions, src.Status.Conditions)
209+
}
175210

176211
if src.Status.Tuned != nil {
177212
curr.Status.Tuned = pointer.StringPtr(*src.Status.Tuned)

0 commit comments

Comments
 (0)