Просмотр исходного кода

delete cluster telemetry + hide modal on failure (#4327)

Feroze Mohideen 2 лет назад
Родитель
Сommit
f7ec35229b

+ 12 - 9
api/server/handlers/cluster/delete.go

@@ -1,7 +1,6 @@
 package cluster
 
 import (
-	"fmt"
 	"net/http"
 
 	"connectrpc.com/connect"
@@ -14,6 +13,7 @@ import (
 	"github.com/porter-dev/porter/api/types"
 	"github.com/porter-dev/porter/internal/models"
 	"github.com/porter-dev/porter/internal/repository"
+	"github.com/porter-dev/porter/internal/telemetry"
 )
 
 type ClusterDeleteHandler struct {
@@ -32,20 +32,22 @@ func NewClusterDeleteHandler(
 }
 
 func (c *ClusterDeleteHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
-	ctx := r.Context()
+	ctx, span := telemetry.NewSpan(r.Context(), "serve-delete-cluster")
+	defer span.End()
+
 	cluster, _ := ctx.Value(types.ClusterScope).(*models.Cluster)
 
 	if cluster.ProvisionedBy == "CAPI" {
 		if c.Config().EnableCAPIProvisioner {
 			revisions, err := c.Config().Repo.APIContractRevisioner().List(ctx, cluster.ProjectID, repository.WithClusterID(cluster.ID))
 			if err != nil {
-				e := fmt.Errorf("error listing revisions for cluster %d: %w", cluster.ID, err)
-				c.HandleAPIError(w, r, apierrors.NewErrInternal(e))
+				err = telemetry.Error(ctx, span, err, "error listing revisions for cluster")
+				c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(err, http.StatusInternalServerError))
 				return
 			}
 			if cluster.Status == types.UpdatingUnavailable || cluster.Status == types.Updating {
-				e := fmt.Errorf("unable to delete cluster %d that is updating", cluster.ID)
-				c.HandleAPIError(w, r, apierrors.NewErrInternal(e))
+				err = telemetry.Error(ctx, span, nil, "unable to delete cluster that is updating")
+				c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(err, http.StatusInternalServerError))
 				return
 			}
 			var revisionID string
@@ -64,8 +66,8 @@ func (c *ClusterDeleteHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
 			})
 			_, err = c.Config().ClusterControlPlaneClient.DeleteCluster(ctx, cl)
 			if err != nil {
-				e := fmt.Errorf("error deleting cluster %d: %w", cluster.ID, err)
-				c.HandleAPIError(w, r, apierrors.NewErrInternal(e))
+				err = telemetry.Error(ctx, span, err, "error deleting cluster")
+				c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(err, http.StatusInternalServerError))
 				return
 			}
 		}
@@ -73,7 +75,8 @@ func (c *ClusterDeleteHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
 
 	err := c.Repo().Cluster().DeleteCluster(cluster)
 	if err != nil {
-		c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
+		err = telemetry.Error(ctx, span, err, "error deleting cluster")
+		c.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(err, http.StatusInternalServerError))
 		return
 	}
 

+ 1 - 1
dashboard/src/main/home/infrastructure-dashboard/tabs/Settings.tsx

@@ -44,7 +44,6 @@ const Settings: React.FC = () => {
     try {
       setIsSubmitting(true);
       await deleteCluster();
-      setCurrentOverlay(null);
       history.push("/infrastructure");
     } catch (err) {
       showIntercomWithMessage({
@@ -65,6 +64,7 @@ const Settings: React.FC = () => {
       setErrorMessage(message);
     } finally {
       setIsSubmitting(false);
+      setCurrentOverlay(null);
     }
   };