@@ -30,10 +30,13 @@ func NewLayeredNodeState(n *corev1.Node) *LayeredNodeState {
30
30
// determined by the pool. If in layered mode, the image annotations are also checked
31
31
// checked against the OCL objects.
32
32
func (l * LayeredNodeState ) IsDone (mcp * mcfgv1.MachineConfigPool , layered bool , mosc * mcfgv1.MachineOSConfig , mosb * mcfgv1.MachineOSBuild ) bool {
33
- if layered {
34
- return l .IsNodeDone () && l .IsDesiredMachineConfigEqualToPool (mcp ) && l .IsDesiredEqualToBuild (mosc , mosb )
35
- }
36
- return l .IsNodeDone () && l .IsDesiredMachineConfigEqualToPool (mcp )
33
+ // if layered {
34
+ // klog.Errorf("in IsDone and layered")
35
+ // return l.IsNodeDone() && l.IsDesiredMachineConfigEqualToPool(mcp) && l.IsDesiredEqualToBuild(mosc, mosb)
36
+ // }
37
+ // klog.Errorf("in IsDone and NOT layered")
38
+ // return l.IsNodeDone() && l.IsDesiredMachineConfigEqualToPool(mcp)
39
+ return l .IsNodeDone () && l .IsDesiredMachineConfigEqualToPool (mcp ) && l .IsDesiredEqualToBuild (mosc , mosb )
37
40
}
38
41
39
42
// The original behavior of getUnavailableMachines is: getUnavailableMachines
@@ -67,19 +70,28 @@ func (l *LayeredNodeState) IsUnavailableForUpdate() bool {
67
70
// node's desired image annotation and compares the MachineConfig specified by the
68
71
// MachineOSBuild to the one specified by the node's desired MachineConfig annotation.
69
72
func (l * LayeredNodeState ) IsDesiredEqualToBuild (mosc * mcfgv1.MachineOSConfig , mosb * mcfgv1.MachineOSBuild ) bool {
70
- return (mosc != nil && l .isDesiredImageEqualToMachineOSConfig (mosc )) && (mosb != nil && l .isDesiredMachineConfigEqualToBuild (mosb ))
73
+ klog .Errorf ("in IsDesiredEqualToBuild" )
74
+ return l .isDesiredImageEqualToMachineOSConfig (mosc ) && l .isDesiredMachineConfigEqualToBuild (mosb )
71
75
}
72
76
73
77
// Compares the desired image annotation on the node against the CurrentImagePullSpec
74
78
// specified by the MachineOSConfig object.
75
79
func (l * LayeredNodeState ) isDesiredImageEqualToMachineOSConfig (mosc * mcfgv1.MachineOSConfig ) bool {
80
+ klog .Errorf ("in isDesiredImageEqualToMachineOSConfig" )
76
81
return l .isImageAnnotationEqualToMachineOSConfig (daemonconsts .DesiredImageAnnotationKey , mosc )
77
82
}
78
83
79
84
// Compares the MachineConfig specified by the MachineConfigPool to the MachineConfig
80
85
// specified by the node's desired MachineConfig annotation.
81
86
func (l * LayeredNodeState ) isDesiredMachineConfigEqualToBuild (mosb * mcfgv1.MachineOSBuild ) bool {
82
- return l .node .Annotations [daemonconsts .DesiredMachineConfigAnnotationKey ] == mosb .Spec .MachineConfig .Name
87
+ mosbName := ""
88
+ // Handle case when MOSB is nil (image mode is being disabled)
89
+ if mosb != nil {
90
+ // TODO: check if this comes back as nil or empty string
91
+ mosbName = mosb .Spec .MachineConfig .Name
92
+ }
93
+
94
+ return l .node .Annotations [daemonconsts .DesiredMachineConfigAnnotationKey ] == mosbName
83
95
84
96
}
85
97
@@ -92,7 +104,9 @@ func (l *LayeredNodeState) IsCurrentMachineConfigEqualToPool(mcp *mcfgv1.Machine
92
104
// Compares the MachineConfig specified by the MachineConfigPool to the one
93
105
// specified by the node's desired MachineConfig annotation.
94
106
func (l * LayeredNodeState ) IsDesiredMachineConfigEqualToPool (mcp * mcfgv1.MachineConfigPool ) bool {
95
- return l .node .Annotations [daemonconsts .DesiredMachineConfigAnnotationKey ] == mcp .Spec .Configuration .Name
107
+ ret := l .node .Annotations [daemonconsts .DesiredMachineConfigAnnotationKey ] == mcp .Spec .Configuration .Name
108
+ klog .Errorf ("in IsDesiredMachineConfigEqualToPool, returning %v" , ret )
109
+ return ret
96
110
}
97
111
98
112
// Checks if both the current and desired image annotation are present on the node.
@@ -113,23 +127,42 @@ func (l *LayeredNodeState) IsCurrentImageAnnotationPresentOnNode() bool {
113
127
// Compares the CurrentImagePullSpec specified by the MachineOSConfig object against the
114
128
// image specified by the annotation passed in.
115
129
func (l * LayeredNodeState ) isImageAnnotationEqualToMachineOSConfig (anno string , mosc * mcfgv1.MachineOSConfig ) bool {
116
- moscs := NewMachineOSConfigState ( mosc )
130
+ moscImage := ""
117
131
132
+ // // Handle case when MOSC is nil (image mode is being disabled)
133
+ // if mosc != nil {
134
+ // // TOOD: check if this comes back as nil or empty string
135
+ // return moscName =
136
+ // }
137
+
138
+ // Get the image annotation from the node
118
139
val , ok := l .node .Annotations [anno ]
140
+ klog .Errorf ("in isImageAnnotationEqualToMachineOSConfig, val: %v, ok: %v" , val , ok )
141
+
142
+ // // Handle case when MOSC is nil (image mode is being disabled)
143
+ // if mosc == nil {
144
+ // // TOOD: check if this comes back as nil or empty string
145
+ // return val == ""
146
+ // }
119
147
120
148
// If a layered node does not have an image annotation and has a valid MOSC, then the image is being built
121
149
if val == "" || ! ok {
150
+ klog .Errorf ("in isImageAnnotationEqualToMachineOSConfig returning false cause val == '' or !ok" )
122
151
return false
123
152
}
124
153
154
+ // Get the MachineOSConfigState
155
+ moscs := NewMachineOSConfigState (mosc )
156
+ klog .Errorf ("in isImageAnnotationEqualToMachineOSConfig with moscs" )
157
+
125
158
if moscs .HasOSImage () {
126
159
// If the MOSC image has an image, the image annotation on the node can be directly compared.
127
- return moscs .GetOSImage () == val
160
+ moscImage = moscs .GetOSImage ()
128
161
}
129
162
130
163
// If the MOSC does not have an image, but the node has an older image annotation, the image is still likely
131
164
// being built.
132
- return false
165
+ return moscImage == val
133
166
}
134
167
135
168
// Sets the desired MachineConfig annotations from the MachineConfigPool.
@@ -175,21 +208,26 @@ func (l *LayeredNodeState) Node() *corev1.Node {
175
208
// isNodeDone returns true if the current == desired and the MCD has marked done.
176
209
func (l * LayeredNodeState ) IsNodeDone () bool {
177
210
if l .node .Annotations == nil {
211
+ klog .Error ("in IsNodeDone, returning false, 1" )
178
212
return false
179
213
}
180
214
181
215
if ! l .isNodeConfigDone () {
216
+ klog .Error ("in IsNodeDone, returning false, 2" )
182
217
return false
183
218
}
184
219
185
220
if ! l .isNodeImageDone () {
221
+ klog .Error ("in IsNodeDone, returning false, 3" )
186
222
return false
187
223
}
188
224
189
225
if ! l .isNodeMCDState (daemonconsts .MachineConfigDaemonStateDone ) {
226
+ klog .Error ("in IsNodeDone, returning false, 4" )
190
227
return false
191
228
}
192
229
230
+ klog .Error ("in IsNodeDone, returning true" )
193
231
return true
194
232
}
195
233
0 commit comments