Skip to content

Commit

Permalink
unit tests: Refactor to avoid callback
Browse files Browse the repository at this point in the history
Return whether the Secret has been updated directly.
  • Loading branch information
zaneb committed Mar 25, 2024
1 parent 5477884 commit f590569
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 20 deletions.
18 changes: 6 additions & 12 deletions provisioning/baremetal_secrets.go
Expand Up @@ -120,15 +120,15 @@ password = %s

// createRegistryPullSecret creates a copy of the pull-secret in the
// openshift-config namespace for use with LocalObjectReference
func createRegistryPullSecret(info *ProvisioningInfo) error {
func createRegistryPullSecret(info *ProvisioningInfo) (bool, error) {
client := info.Client.CoreV1()
openshiftConfigSecret, err := client.Secrets(OpenshiftConfigNamespace).Get(context.TODO(), PullSecretName, metav1.GetOptions{})
if err != nil {
return fmt.Errorf("could not get secret %s/%s, err: %w", OpenshiftConfigNamespace, PullSecretName, err)
return false, fmt.Errorf("could not get secret %s/%s, err: %w", OpenshiftConfigNamespace, PullSecretName, err)
}
openshiftConfigSecretKeyData, ok := openshiftConfigSecret.Data[openshiftConfigSecretKey]
if !ok {
return fmt.Errorf("could not find key %q in secret %s/%s", openshiftConfigSecretKey, OpenshiftConfigNamespace, PullSecretName)
return false, fmt.Errorf("could not find key %q in secret %s/%s", openshiftConfigSecretKey, OpenshiftConfigNamespace, PullSecretName)
}

machineAPINamespace := info.Namespace
Expand All @@ -146,18 +146,12 @@ func createRegistryPullSecret(info *ProvisioningInfo) error {
}

if err := controllerutil.SetControllerReference(info.ProvConfig, secret, info.Scheme); err != nil {
return err
return false, err
}
_, changed, err := resourceapply.ApplySecret(context.TODO(), client, info.EventRecorder, secret)
if changed {
reportRegistryPullSecretReconcile()
}
return err
return changed, err
}

// reportRegistryPullSecretReconcile is used for unit testing, to report that the reconciler was triggered.
var reportRegistryPullSecretReconcile = func() {}

func EnsureAllSecrets(info *ProvisioningInfo) (bool, error) {
// Create a Secret for the Ironic Password
if err := createIronicSecret(info, ironicSecretName, ironicUsername, "ironic"); err != nil {
Expand All @@ -172,7 +166,7 @@ func EnsureAllSecrets(info *ProvisioningInfo) (bool, error) {
return false, errors.Wrap(err, "failed to create TLS certificate")
}
// Create a Secret for the Registry Pull Secret
if err := createRegistryPullSecret(info); err != nil {
if _, err := createRegistryPullSecret(info); err != nil {
return false, errors.Wrap(err, "failed to create Registry pull secret")
}
return false, nil // ApplySecret does not use Generation, so just return false for updated
Expand Down
10 changes: 2 additions & 8 deletions provisioning/baremetal_secrets_test.go
Expand Up @@ -342,15 +342,9 @@ func TestRegistryPullSecret(t *testing.T) {
EventRecorder: events.NewLoggingEventRecorder("tests"),
}

// Overwrite the reportRegistryPullSecretReconcile callback. This allows us to track if applySecret deems
// that an update to the secret is necessary.
reconcilerTriggered := false
reportRegistryPullSecretReconcile = func() {
reconcilerTriggered = true
}

// Run the method under test.
if err := createRegistryPullSecret(info); err != nil {
reconcilerTriggered, err := createRegistryPullSecret(info)
if err != nil {
t.Fatalf("createRegistryPullSecret returned an error, err: %q", err)
}

Expand Down

0 comments on commit f590569

Please sign in to comment.