Skip to content

Commit 7ad493b

Browse files
committed
use errors package of Go stdlib
Signed-off-by: sivchari <shibuuuu5@gmail.com>
1 parent 2568aa2 commit 7ad493b

File tree

11 files changed

+40
-19
lines changed

11 files changed

+40
-19
lines changed

bootstrap/kubeadm/internal/controllers/kubeadmconfig_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ func (r *KubeadmConfigReconciler) Reconcile(ctx context.Context, req ctrl.Reques
183183
// Lookup the cluster the config owner is associated with
184184
cluster, err := util.GetClusterByName(ctx, r.Client, configOwner.GetNamespace(), configOwner.ClusterName())
185185
if err != nil {
186-
if errors.Cause(err) == util.ErrNoCluster {
186+
if errors.Is(errors.Cause(err), util.ErrNoCluster) {
187187
log.Info(fmt.Sprintf("%s does not belong to a cluster yet, waiting until it's part of a cluster", configOwner.GetKind()))
188188
return ctrl.Result{}, nil
189189
}

cmd/clusterctl/client/cluster/template.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,8 @@ func getGitHubClient(ctx context.Context, configVariablesClient config.Variables
305305

306306
// handleGithubErr wraps error messages.
307307
func handleGithubErr(err error, message string, args ...interface{}) error {
308-
if _, ok := err.(*github.RateLimitError); ok {
308+
var rateLimitErr *github.RateLimitError
309+
if errors.As(err, &rateLimitErr) {
309310
return errors.New("rate limit for github api has been reached. Please wait one hour or get a personal API token and assign it to the GITHUB_TOKEN environment variable")
310311
}
311312
return errors.Wrapf(err, message, args...)

cmd/clusterctl/client/repository/repository_github.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ var (
6161
retryableOperationTimeout = 1 * time.Minute
6262
)
6363

64+
var rateLimitError github.RateLimitError
65+
6466
// gitHubRepository provides support for providers hosted on GitHub.
6567
//
6668
// We support GitHub repositories that use the release feature to publish artifacts and versions.
@@ -319,7 +321,7 @@ func (g *gitHubRepository) getVersions(ctx context.Context) ([]string, error) {
319321
if listReleasesErr != nil {
320322
retryError = g.handleGithubErr(listReleasesErr, "failed to get the list of releases")
321323
// Return immediately if we are rate limited.
322-
if _, ok := listReleasesErr.(*github.RateLimitError); ok {
324+
if errors.As(listReleasesErr, &rateLimitError) {
323325
return false, retryError
324326
}
325327
return false, nil
@@ -334,7 +336,7 @@ func (g *gitHubRepository) getVersions(ctx context.Context) ([]string, error) {
334336
if listReleasesErr != nil {
335337
retryError = g.handleGithubErr(listReleasesErr, "failed to get the list of releases")
336338
// Return immediately if we are rate limited.
337-
if _, ok := listReleasesErr.(*github.RateLimitError); ok {
339+
if errors.As(listReleasesErr, &rateLimitError) {
338340
return false, retryError
339341
}
340342
return false, nil
@@ -385,7 +387,7 @@ func (g *gitHubRepository) getReleaseByTag(ctx context.Context, tag string) (*gi
385387
return false, retryError
386388
}
387389
// Return immediately if we are rate limited.
388-
if _, ok := getReleasesErr.(*github.RateLimitError); ok {
390+
if errors.As(getReleasesErr, &rateLimitError) {
389391
return false, retryError
390392
}
391393
return false, nil
@@ -467,7 +469,7 @@ func (g *gitHubRepository) downloadFilesFromRelease(ctx context.Context, release
467469
if downloadReleaseError != nil {
468470
retryError = g.handleGithubErr(downloadReleaseError, "failed to download file %q from %q release", *release.TagName, fileName)
469471
// Return immediately if we are rate limited.
470-
if _, ok := downloadReleaseError.(*github.RateLimitError); ok {
472+
if errors.As(downloadReleaseError, &rateLimitError) {
471473
return false, retryError
472474
}
473475
return false, nil
@@ -500,10 +502,13 @@ func (g *gitHubRepository) downloadFilesFromRelease(ctx context.Context, release
500502

501503
// handleGithubErr wraps error messages.
502504
func (g *gitHubRepository) handleGithubErr(err error, message string, args ...interface{}) error {
503-
if _, ok := err.(*github.RateLimitError); ok {
505+
if errors.As(err, &rateLimitError) {
504506
return errors.New("rate limit for github api has been reached. Please wait one hour or get a personal API token and assign it to the GITHUB_TOKEN environment variable")
505507
}
506-
if ghErr, ok := err.(*github.ErrorResponse); ok {
508+
509+
var errorResponse github.ErrorResponse
510+
if errors.As(err, &errorResponse) {
511+
ghErr := err.(*github.ErrorResponse)
507512
if ghErr.Response.StatusCode == http.StatusNotFound {
508513
return errNotFound
509514
}

exp/addons/internal/controllers/clusterresourceset_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ func (r *ClusterResourceSetReconciler) ApplyClusterResourceSet(ctx context.Conte
307307
for _, resource := range clusterResourceSet.Spec.Resources {
308308
unstructuredObj, err := r.getResource(ctx, resource, cluster.GetNamespace())
309309
if err != nil {
310-
if err == ErrSecretTypeNotSupported {
310+
if errors.Is(err, ErrSecretTypeNotSupported) {
311311
conditions.MarkFalse(clusterResourceSet, addonsv1.ResourcesAppliedCondition, addonsv1.WrongSecretTypeReason, clusterv1.ConditionSeverityWarning, err.Error())
312312
} else {
313313
conditions.MarkFalse(clusterResourceSet, addonsv1.ResourcesAppliedCondition, addonsv1.RetrievingResourceFailedReason, clusterv1.ConditionSeverityWarning, err.Error())

exp/internal/controllers/machinepool_controller_noderef.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func (r *MachinePoolReconciler) reconcileNodeRefs(ctx context.Context, cluster *
8484
// Get the Node references.
8585
nodeRefsResult, err := r.getNodeReferences(ctx, clusterClient, mp.Spec.ProviderIDList)
8686
if err != nil {
87-
if err == errNoAvailableNodes {
87+
if errors.Is(err, errNoAvailableNodes) {
8888
log.Info("Cannot assign NodeRefs to MachinePool, no matching Nodes")
8989
// No need to requeue here. Nodes emit an event that triggers reconciliation.
9090
return ctrl.Result{}, nil

exp/internal/controllers/machinepool_controller_phases.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ func (r *MachinePoolReconciler) reconcileInfrastructure(ctx context.Context, clu
301301
// Get and set Status.Replicas from the infrastructure provider.
302302
err = util.UnstructuredUnmarshalField(infraConfig, &mp.Status.Replicas, "status", "replicas")
303303
if err != nil {
304-
if err != util.ErrUnstructuredFieldNotFound {
304+
if !errors.Is(err, util.ErrUnstructuredFieldNotFound) {
305305
return ctrl.Result{}, errors.Wrapf(err, "failed to retrieve replicas from infrastructure provider for MachinePool %q in namespace %q", mp.Name, mp.Namespace)
306306
}
307307
}

internal/controllers/cluster/cluster_controller_phases.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ func (r *Reconciler) reconcileInfrastructure(ctx context.Context, cluster *clust
207207

208208
// Get and parse Status.FailureDomains from the infrastructure provider.
209209
failureDomains := clusterv1.FailureDomains{}
210-
if err := util.UnstructuredUnmarshalField(infraConfig, &failureDomains, "status", "failureDomains"); err != nil && err != util.ErrUnstructuredFieldNotFound {
210+
if err := util.UnstructuredUnmarshalField(infraConfig, &failureDomains, "status", "failureDomains"); err != nil && !errors.Is(err, util.ErrUnstructuredFieldNotFound) {
211211
return ctrl.Result{}, errors.Wrapf(err, "failed to retrieve Status.FailureDomains from infrastructure provider for Cluster %q in namespace %q",
212212
cluster.Name, cluster.Namespace)
213213
}
@@ -295,7 +295,7 @@ func (r *Reconciler) reconcileKubeconfig(ctx context.Context, cluster *clusterv1
295295
switch {
296296
case apierrors.IsNotFound(err):
297297
if err := kubeconfig.CreateSecret(ctx, r.Client, cluster); err != nil {
298-
if err == kubeconfig.ErrDependentCertificateNotFound {
298+
if errors.Is(err, kubeconfig.ErrDependentCertificateNotFound) {
299299
log.Info("Could not find secret for cluster, requeuing", "Secret", secret.ClusterCA)
300300
return ctrl.Result{RequeueAfter: 30 * time.Second}, nil
301301
}

internal/controllers/machine/machine_controller.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,14 +341,28 @@ type scope struct {
341341
bootstrapConfig *unstructured.Unstructured
342342
}
343343

344+
func is(err error) bool {
345+
errs := []error{
346+
errNoControlPlaneNodes, errLastControlPlaneNode,
347+
errNilNodeRef, errClusterIsBeingDeleted,
348+
errControlPlaneIsBeingDeleted,
349+
}
350+
for _, e := range errs {
351+
if errors.Is(err, e) {
352+
return true
353+
}
354+
}
355+
return false
356+
}
357+
344358
func (r *Reconciler) reconcileDelete(ctx context.Context, cluster *clusterv1.Cluster, m *clusterv1.Machine) (ctrl.Result, error) { //nolint:gocyclo
345359
log := ctrl.LoggerFrom(ctx)
346360

347361
err := r.isDeleteNodeAllowed(ctx, cluster, m)
348362
isDeleteNodeAllowed := err == nil
349363
if err != nil {
350-
switch err {
351-
case errNoControlPlaneNodes, errLastControlPlaneNode, errNilNodeRef, errClusterIsBeingDeleted, errControlPlaneIsBeingDeleted:
364+
switch {
365+
case is(err):
352366
nodeName := ""
353367
if m.Status.NodeRef != nil {
354368
nodeName = m.Status.NodeRef.Name

internal/controllers/machine/machine_controller_noderef.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func (r *Reconciler) reconcileNode(ctx context.Context, s *scope) (ctrl.Result,
7070
// Even if Status.NodeRef exists, continue to do the following checks to make sure Node is healthy
7171
node, err := r.getNode(ctx, remoteClient, *machine.Spec.ProviderID)
7272
if err != nil {
73-
if err == ErrNodeNotFound {
73+
if errors.Is(err, ErrNodeNotFound) {
7474
// While a NodeRef is set in the status, failing to get that node means the node is deleted.
7575
// If Status.NodeRef is not set before, node still can be in the provisioning state.
7676
if machine.Status.NodeRef != nil {

internal/controllers/machine/machine_controller_phases.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,15 +317,15 @@ func (r *Reconciler) reconcileInfrastructure(ctx context.Context, s *scope) (ctr
317317

318318
// Get and set Status.Addresses from the infrastructure provider.
319319
err = util.UnstructuredUnmarshalField(infraConfig, &m.Status.Addresses, "status", "addresses")
320-
if err != nil && err != util.ErrUnstructuredFieldNotFound {
320+
if err != nil && !errors.Is(err, util.ErrUnstructuredFieldNotFound) {
321321
return ctrl.Result{}, errors.Wrapf(err, "failed to retrieve addresses from infrastructure provider for Machine %q in namespace %q", m.Name, m.Namespace)
322322
}
323323

324324
// Get and set the failure domain from the infrastructure provider.
325325
var failureDomain string
326326
err = util.UnstructuredUnmarshalField(infraConfig, &failureDomain, "spec", "failureDomain")
327327
switch {
328-
case err == util.ErrUnstructuredFieldNotFound: // no-op
328+
case errors.Is(err, util.ErrUnstructuredFieldNotFound): // no-op
329329
case err != nil:
330330
return ctrl.Result{}, errors.Wrapf(err, "failed to retrieve failure domain from infrastructure provider for Machine %q in namespace %q", m.Name, m.Namespace)
331331
default:

0 commit comments

Comments
 (0)