Skip to content

Commit e96b911

Browse files
committed
Generating a CR will receieve the nodeName.
This severs two purpuses: - It will be set on NodeName annotation instead of previouslly set machine Name for MHC use case. - Indication that for MHC remediation, in which case the normal (non generated) Machine name is set as the CR name Signed-off-by: Michael Shitrit <mshitrit@redhat.com>
1 parent 297d0ec commit e96b911

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

controllers/machinehealthcheck_controller.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -403,19 +403,23 @@ func (r *MachineHealthCheckReconciler) remediate(target resources.Target, rm res
403403
if err != nil {
404404
return errors.Wrapf(err, "failed to get remediation template")
405405
}
406-
remediationCR, err := rm.GenerateRemediationCRForMachine(target.Machine, target.MHC, template)
407-
if err != nil {
408-
return errors.Wrapf(err, "failed to generate remediation CR")
409-
}
410406

411407
// TODO add control plane label
412408

413409
// create remediation CR
414-
var nodeName *string
410+
var nodeNamePtr *string
411+
nodeName := ""
415412
if target.Node != nil && target.Node.ResourceVersion != "" {
416-
nodeName = &target.Node.Name
413+
nodeNamePtr = &target.Node.Name
414+
nodeName = target.Node.Name
415+
}
416+
417+
remediationCR, err := rm.GenerateRemediationCRForMachine(target.Machine, target.MHC, template, nodeName)
418+
if err != nil {
419+
return errors.Wrapf(err, "failed to generate remediation CR")
417420
}
418-
created, _, _, err := rm.CreateRemediationCR(remediationCR, target.MHC, nodeName, utils.DefaultRemediationDuration, 0)
421+
422+
created, _, _, err := rm.CreateRemediationCR(remediationCR, target.MHC, nodeNamePtr, utils.DefaultRemediationDuration, 0)
419423
if err != nil {
420424
if _, ok := err.(resources.RemediationCRNotOwned); ok {
421425
// CR exists but not owned by us, nothing to do

controllers/resources/manager.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ type Manager interface {
3535
GenerateRemediationCRBase(gvk schema.GroupVersionKind) *unstructured.Unstructured
3636
GenerateRemediationCRBaseNamed(gvk schema.GroupVersionKind, namespace string, name string) *unstructured.Unstructured
3737
GenerateRemediationCRForNode(node *corev1.Node, owner client.Object, template *unstructured.Unstructured) (*unstructured.Unstructured, error)
38-
GenerateRemediationCRForMachine(machine *machinev1beta1.Machine, owner client.Object, template *unstructured.Unstructured) (*unstructured.Unstructured, error)
38+
GenerateRemediationCRForMachine(machine *machinev1beta1.Machine, owner client.Object, template *unstructured.Unstructured, nodeName string) (*unstructured.Unstructured, error)
3939
CreateRemediationCR(remediationCR *unstructured.Unstructured, owner client.Object, nodeName *string, currentRemediationDuration, previousRemediationsDuration time.Duration) (bool, *time.Duration, *unstructured.Unstructured, error)
4040
DeleteRemediationCR(remediationCR *unstructured.Unstructured, owner client.Object) (bool, error)
4141
UpdateRemediationCR(remediationCR *unstructured.Unstructured) error
@@ -98,10 +98,10 @@ func (m *manager) GenerateRemediationCRForNode(node *corev1.Node, owner client.O
9898
}
9999
}
100100

101-
return m.generateRemediationCR(node.GetName(), nhcOwnerRef, machineOwnerRef, template)
101+
return m.generateRemediationCR(node.GetName(), node.GetName(), nhcOwnerRef, machineOwnerRef, template)
102102
}
103103

104-
func (m *manager) GenerateRemediationCRForMachine(machine *machinev1beta1.Machine, owner client.Object, template *unstructured.Unstructured) (*unstructured.Unstructured, error) {
104+
func (m *manager) GenerateRemediationCRForMachine(machine *machinev1beta1.Machine, owner client.Object, template *unstructured.Unstructured, nodeName string) (*unstructured.Unstructured, error) {
105105

106106
mhcOwnerRef := createOwnerRef(owner)
107107

@@ -116,23 +116,24 @@ func (m *manager) GenerateRemediationCRForMachine(machine *machinev1beta1.Machin
116116
// So it can be ignored here.
117117
}
118118

119-
return m.generateRemediationCR(machine.GetName(), mhcOwnerRef, machineOwnerRef, template)
119+
return m.generateRemediationCR(machine.GetName(), nodeName, mhcOwnerRef, machineOwnerRef, template)
120120
}
121121

122-
func (m *manager) generateRemediationCR(name string, healthCheckOwnerRef *metav1.OwnerReference, machineOwnerRef *metav1.OwnerReference, template *unstructured.Unstructured) (*unstructured.Unstructured, error) {
122+
func (m *manager) generateRemediationCR(name string, nodeName string, healthCheckOwnerRef *metav1.OwnerReference, machineOwnerRef *metav1.OwnerReference, template *unstructured.Unstructured) (*unstructured.Unstructured, error) {
123123

124124
remediationCR := m.GenerateRemediationCRBase(template.GroupVersionKind())
125125

126126
// can't go wrong, we already checked for correct spec
127127
templateSpec, _, _ := unstructured.NestedMap(template.Object, "spec", "template", "spec")
128128
unstructured.SetNestedField(remediationCR.Object, templateSpec, "spec")
129129

130-
if annotations.HasMultipleTemplatesAnnotation(template) {
130+
isMHCRemediation := name != nodeName
131+
if annotations.HasMultipleTemplatesAnnotation(template) && !isMHCRemediation {
131132
remediationCR.SetGenerateName(fmt.Sprintf("%s-", name))
132133
} else {
133134
remediationCR.SetName(name)
134135
}
135-
remediationCR.SetAnnotations(map[string]string{commonannotations.NodeNameAnnotation: name, annotations.TemplateNameAnnotation: template.GetName()})
136+
remediationCR.SetAnnotations(map[string]string{commonannotations.NodeNameAnnotation: nodeName, annotations.TemplateNameAnnotation: template.GetName()})
136137

137138
remediationCR.SetNamespace(template.GetNamespace())
138139
remediationCR.SetResourceVersion("")

0 commit comments

Comments
 (0)