[cluster-api] Handle ignored errors

This commit is contained in:
Matt Boersma 2023-02-28 13:56:29 -07:00
parent edf8779bda
commit 6040d29252
No known key found for this signature in database
GPG Key ID: D7421A27A5BAFDFA
4 changed files with 54 additions and 27 deletions

View File

@ -270,7 +270,7 @@ func (c *machineController) findMachineByProviderID(providerID normalizedProvide
return nil, nil
}
machineID, _ := node.Annotations[machineAnnotationKey]
machineID := node.Annotations[machineAnnotationKey]
return c.findMachine(machineID)
}
@ -380,7 +380,9 @@ func newMachineController(
Resource: resourceNameMachineDeployment,
}
machineDeploymentInformer = managementInformerFactory.ForResource(gvrMachineDeployment)
machineDeploymentInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{})
if _, err := machineDeploymentInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{}); err != nil {
return nil, fmt.Errorf("failed to add event handler for resource %q: %v", resourceNameMachineDeployment, err)
}
}
gvrMachineSet := schema.GroupVersionResource{
@ -389,7 +391,9 @@ func newMachineController(
Resource: resourceNameMachineSet,
}
machineSetInformer := managementInformerFactory.ForResource(gvrMachineSet)
machineSetInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{})
if _, err := machineSetInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{}); err != nil {
return nil, fmt.Errorf("failed to add event handler for resource %q: %v", resourceNameMachineSet, err)
}
gvrMachine := schema.GroupVersionResource{
Group: CAPIGroup,
@ -397,10 +401,14 @@ func newMachineController(
Resource: resourceNameMachine,
}
machineInformer := managementInformerFactory.ForResource(gvrMachine)
machineInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{})
if _, err := machineInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{}); err != nil {
return nil, fmt.Errorf("failed to add event handler for resource %q: %v", resourceNameMachine, err)
}
nodeInformer := workloadInformerFactory.Core().V1().Nodes().Informer()
nodeInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{})
if _, err := nodeInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{}); err != nil {
return nil, fmt.Errorf("failed to add event handler for resource %q: %v", "nodes", err)
}
if err := machineInformer.Informer().GetIndexer().AddIndexers(cache.Indexers{
machineProviderIDIndex: indexMachineByProviderID,
@ -750,7 +758,7 @@ func (c *machineController) getInfrastructureResource(resource schema.GroupVersi
infra, ok := obj.(*unstructured.Unstructured)
if !ok {
err := fmt.Errorf("Unable to convert infrastructure reference for %s/%s", namespace, name)
err := fmt.Errorf("unable to convert infrastructure reference for %s/%s", namespace, name)
klog.V(4).Infof("%v", err)
return nil, err
}

View File

@ -171,9 +171,7 @@ func mustCreateTestController(t *testing.T, testConfigs ...*testConfig) (*machin
if subresource != "scale" {
// Handle a bug in the client-go fakeNamespaceScaleClient, where the action namespace and subresource are
// switched for update actions
if action.GetVerb() == "update" && action.GetNamespace() == "scale" {
subresource = "scale"
} else {
if action.GetVerb() != "update" || action.GetNamespace() != "scale" {
// Do not attempt to respond to anything but scale subresource requests
return false, nil, nil
}
@ -385,7 +383,9 @@ func createTestConfigs(specs ...testSpec) []*testConfig {
}
config.machineDeployment.SetAnnotations(spec.annotations)
config.machineDeployment.SetLabels(machineDeploymentLabels)
unstructured.SetNestedStringMap(config.machineDeployment.Object, machineDeploymentLabels, "spec", "selector", "matchLabels")
if err := unstructured.SetNestedStringMap(config.machineDeployment.Object, machineDeploymentLabels, "spec", "selector", "matchLabels"); err != nil {
panic(err)
}
ownerRefs := []metav1.OwnerReference{
{
@ -397,7 +397,9 @@ func createTestConfigs(specs ...testSpec) []*testConfig {
config.machineSet.SetOwnerReferences(ownerRefs)
}
config.machineSet.SetLabels(machineSetLabels)
unstructured.SetNestedStringMap(config.machineSet.Object, machineSetLabels, "spec", "selector", "matchLabels")
if err := unstructured.SetNestedStringMap(config.machineSet.Object, machineSetLabels, "spec", "selector", "matchLabels"); err != nil {
panic(err)
}
machineOwner := metav1.OwnerReference{
Name: config.machineSet.GetName(),
@ -418,7 +420,9 @@ func createTestConfigs(specs ...testSpec) []*testConfig {
},
},
}
unstructured.SetNestedStringMap(config.machineTemplate.Object, spec.capacity, "status", "capacity")
if err := unstructured.SetNestedStringMap(config.machineTemplate.Object, spec.capacity, "status", "capacity"); err != nil {
panic(err)
}
} else {
klog.V(4).Infof("not adding capacity")
}
@ -1899,11 +1903,6 @@ func Test_machineController_nodeGroupForNode(t *testing.T) {
}, nil)
mdTestConfigs = append(mdTestConfigs, uniqueMDConfig)
allMachineDeployments := make([]*unstructured.Unstructured, 0, len(mdTestConfigs))
for i := range mdTestConfigs {
allMachineDeployments = append(allMachineDeployments, mdTestConfigs[i].machineDeployment)
}
uniqueMSConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
nodeGroupMinSizeAnnotationKey: "1",
nodeGroupMaxSizeAnnotationKey: "10",
@ -1915,11 +1914,6 @@ func Test_machineController_nodeGroupForNode(t *testing.T) {
}, nil)
msTestConfigs = append(msTestConfigs, uniqueMSConfig)
allMachineSets := make([]*unstructured.Unstructured, 0, len(msTestConfigs))
for i := range msTestConfigs {
allMachineSets = append(allMachineSets, msTestConfigs[i].machineSet)
}
allTestConfigs := append(mdTestConfigs, msTestConfigs...)
for _, tc := range []struct {

View File

@ -281,6 +281,9 @@ func TestNodeGroupIncreaseSizeErrors(t *testing.T) {
scalableResource, err := ng.machineController.managementScaleClient.Scales(testConfig.spec.namespace).
Get(context.TODO(), gvr.GroupResource(), ng.scalableResource.Name(), metav1.GetOptions{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if scalableResource.Spec.Replicas != tc.initial {
t.Errorf("expected %v, got %v", tc.initial, scalableResource.Spec.Replicas)
@ -354,6 +357,9 @@ func TestNodeGroupIncreaseSize(t *testing.T) {
scalableResource, err := ng.machineController.managementScaleClient.Scales(ng.scalableResource.Namespace()).
Get(context.TODO(), gvr.GroupResource(), ng.scalableResource.Name(), metav1.GetOptions{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if scalableResource.Spec.Replicas != tc.expected {
t.Errorf("expected %v, got %v", tc.expected, scalableResource.Spec.Replicas)
@ -478,8 +484,12 @@ func TestNodeGroupDecreaseTargetSize(t *testing.T) {
}
},
}
controller.machineSetInformer.Informer().AddEventHandler(handler)
controller.machineDeploymentInformer.Informer().AddEventHandler(handler)
if _, err := controller.machineSetInformer.Informer().AddEventHandler(handler); err != nil {
t.Fatalf("unexpected error adding event handler for machineSetInformer: %v", err)
}
if _, err := controller.machineDeploymentInformer.Informer().AddEventHandler(handler); err != nil {
t.Fatalf("unexpected error adding event handler for machineDeploymentInformer: %v", err)
}
scalableResource.Spec.Replicas += tc.targetSizeIncrement
@ -606,6 +616,9 @@ func TestNodeGroupDecreaseSizeErrors(t *testing.T) {
scalableResource, err := ng.machineController.managementScaleClient.Scales(testConfig.spec.namespace).
Get(context.TODO(), gvr.GroupResource(), ng.scalableResource.Name(), metav1.GetOptions{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if scalableResource.Spec.Replicas != tc.initial {
t.Errorf("expected %v, got %v", tc.initial, scalableResource.Spec.Replicas)
@ -1126,6 +1139,9 @@ func TestNodeGroupDeleteNodesSequential(t *testing.T) {
scalableResource, err := ng.machineController.managementScaleClient.Scales(testConfig.spec.namespace).
Get(context.TODO(), gvr.GroupResource(), ng.scalableResource.Name(), metav1.GetOptions{})
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if scalableResource.Spec.Replicas != int32(expectedSize) {
t.Errorf("expected %v, got %v", expectedSize, scalableResource.Spec.Replicas)
@ -1181,7 +1197,9 @@ func TestNodeGroupWithFailedMachine(t *testing.T) {
machine := testConfig.machines[3].DeepCopy()
unstructured.RemoveNestedField(machine.Object, "spec", "providerID")
unstructured.SetNestedField(machine.Object, "FailureMessage", "status", "failureMessage")
if err := unstructured.SetNestedField(machine.Object, "FailureMessage", "status", "failureMessage"); err != nil {
t.Fatalf("unexpected error setting nested field: %v", err)
}
if err := updateResource(controller.managementClient, controller.machineInformer, controller.machineResource, machine); err != nil {
t.Fatalf("unexpected error updating machine, got %v", err)

View File

@ -66,6 +66,9 @@ func TestSetSize(t *testing.T) {
s, err := sr.controller.managementScaleClient.Scales(testResource.GetNamespace()).
Get(context.TODO(), gvr.GroupResource(), testResource.GetName(), metav1.GetOptions{})
if err != nil {
t.Fatalf("error getting scale subresource: %v", err)
}
if s.Spec.Replicas != int32(updatedReplicas) {
t.Errorf("expected %v, got: %v", updatedReplicas, s.Spec.Replicas)
@ -185,8 +188,12 @@ func TestReplicas(t *testing.T) {
},
}
controller.machineSetInformer.Informer().AddEventHandler(handler)
controller.machineDeploymentInformer.Informer().AddEventHandler(handler)
if _, err := controller.machineSetInformer.Informer().AddEventHandler(handler); err != nil {
t.Fatal(err)
}
if _, err := controller.machineDeploymentInformer.Informer().AddEventHandler(handler); err != nil {
t.Fatal(err)
}
_, err = sr.controller.managementScaleClient.Scales(testResource.GetNamespace()).
Update(context.TODO(), gvr.GroupResource(), s, metav1.UpdateOptions{})