From e5130af9a45a755a0593524af301beb7ad66ce9a Mon Sep 17 00:00:00 2001 From: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com> Date: Fri, 16 Dec 2022 12:17:33 -0500 Subject: [PATCH 1/2] chore: better error messages Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com> --- controller/appcontroller.go | 18 +++++++++++------- util/db/cluster.go | 10 +++++----- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/controller/appcontroller.go b/controller/appcontroller.go index 89353d755076b..9608387581767 100644 --- a/controller/appcontroller.go +++ b/controller/appcontroller.go @@ -418,14 +418,14 @@ func (ctrl *ApplicationController) getResourceTree(a *appv1.Application, managed proj, err := ctrl.getAppProj(a) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to get project: %w", err) } orphanedNodesMap := make(map[kube.ResourceKey]appv1.ResourceNode) warnOrphaned := true if proj.Spec.OrphanedResources != nil { orphanedNodesMap, err = ctrl.stateCache.GetNamespaceTopLevelResources(a.Spec.Destination.Server, a.Spec.Destination.Namespace) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to get namespace top-level resources: %w", err) } warnOrphaned = proj.Spec.OrphanedResources.IsWarn() } @@ -436,12 +436,12 @@ func (ctrl *ApplicationController) getResourceTree(a *appv1.Application, managed var live = &unstructured.Unstructured{} err := json.Unmarshal([]byte(managedResource.LiveState), &live) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to unmarshal live state of managed resources: %w", err) } var target = &unstructured.Unstructured{} err = json.Unmarshal([]byte(managedResource.TargetState), &target) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to unmarshal target state of managed resources: %w", err) } if live == nil { @@ -457,7 +457,11 @@ func (ctrl *ApplicationController) getResourceTree(a *appv1.Application, managed } else { err := ctrl.stateCache.IterateHierarchy(a.Spec.Destination.Server, kube.GetResourceKey(live), func(child appv1.ResourceNode, appName string) bool { permitted, _ := proj.IsResourcePermitted(schema.GroupKind{Group: child.ResourceRef.Group, Kind: child.ResourceRef.Kind}, child.Namespace, a.Spec.Destination, func(project string) ([]*appv1.Cluster, error) { - return ctrl.db.GetProjectClusters(context.TODO(), project) + clusters, err := ctrl.db.GetProjectClusters(context.TODO(), project) + if err != nil { + return nil, fmt.Errorf("failed to get project clusters: %w", err) + } + return clusters, nil }) if !permitted { return false @@ -466,7 +470,7 @@ func (ctrl *ApplicationController) getResourceTree(a *appv1.Application, managed return true }) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to iterate resource hierarchy: %w", err) } } } @@ -515,7 +519,7 @@ func (ctrl *ApplicationController) getResourceTree(a *appv1.Application, managed hosts, err := ctrl.getAppHosts(a, nodes) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to get app hosts: %w", err) } return &appv1.ApplicationTree{Nodes: nodes, OrphanedNodes: orphanedNodes, Hosts: hosts}, nil } diff --git a/util/db/cluster.go b/util/db/cluster.go index c3d104d89239a..24c84c49fe9cc 100644 --- a/util/db/cluster.go +++ b/util/db/cluster.go @@ -1,6 +1,7 @@ package db import ( + "context" "encoding/json" "fmt" "strconv" @@ -8,7 +9,6 @@ import ( "sync" "time" - "context" log "github.com/sirupsen/logrus" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -233,17 +233,17 @@ func (db *db) GetCluster(_ context.Context, server string) (*appv1.Cluster, erro func (db *db) GetProjectClusters(ctx context.Context, project string) ([]*appv1.Cluster, error) { informer, err := db.settingsMgr.GetSecretsInformer() if err != nil { - return nil, err + return nil, fmt.Errorf("failed to get secrets informer: %w", err) } secrets, err := informer.GetIndexer().ByIndex(settings.ByProjectClusterIndexer, project) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to get index by project cluster indexer: %w", err) } var res []*appv1.Cluster for i := range secrets { cluster, err := secretToCluster(secrets[i].(*apiv1.Secret)) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to convert secret to cluster: %w", err) } res = append(res, cluster) } @@ -368,7 +368,7 @@ func secretToCluster(s *apiv1.Secret) (*appv1.Cluster, error) { if len(s.Data["config"]) > 0 { err := json.Unmarshal(s.Data["config"], &config) if err != nil { - return nil, err + return nil, fmt.Errorf("failed to unmarshal cluster config: %w", err) } } From ffbaba2c854cb2740bfae00b96f99150ed630cdf Mon Sep 17 00:00:00 2001 From: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com> Date: Tue, 20 Dec 2022 08:53:42 -0500 Subject: [PATCH 2/2] Update util/db/cluster.go Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com> --- util/db/cluster.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/db/cluster.go b/util/db/cluster.go index 24c84c49fe9cc..b505c693ee0fe 100644 --- a/util/db/cluster.go +++ b/util/db/cluster.go @@ -237,7 +237,7 @@ func (db *db) GetProjectClusters(ctx context.Context, project string) ([]*appv1. } secrets, err := informer.GetIndexer().ByIndex(settings.ByProjectClusterIndexer, project) if err != nil { - return nil, fmt.Errorf("failed to get index by project cluster indexer: %w", err) + return nil, fmt.Errorf("failed to get index by project cluster indexer for project %q: %w", project, err) } var res []*appv1.Cluster for i := range secrets {