Skip to content

Commit ae2098f

Browse files
Artyom Lukianovopenshift-cherrypick-robot
authored andcommitted
Avoid unneeded object initialization during profile conversion
It possible the situation when the source conversion object has nil for some field, but we initialize this field under the destination object. Signed-off-by: Artyom Lukianov <[email protected]>
1 parent 097c980 commit ae2098f

File tree

2 files changed

+168
-98
lines changed

2 files changed

+168
-98
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)