Prechádzať zdrojové kódy

add telemetry to create project (#4453)

Feroze Mohideen 2 rokov pred
rodič
commit
cc8d3052ba
1 zmenil súbory, kde vykonal 19 pridanie a 8 odobranie
  1. 19 8
      api/server/handlers/project/create.go

+ 19 - 8
api/server/handlers/project/create.go

@@ -11,6 +11,7 @@ import (
 	"github.com/porter-dev/porter/internal/analytics"
 	"github.com/porter-dev/porter/internal/models"
 	"github.com/porter-dev/porter/internal/repository"
+	"github.com/porter-dev/porter/internal/telemetry"
 )
 
 type ProjectCreateHandler struct {
@@ -28,11 +29,14 @@ func NewProjectCreateHandler(
 }
 
 func (p *ProjectCreateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
-	request := &types.CreateProjectRequest{}
+	ctx, span := telemetry.NewSpan(r.Context(), "serve-create-project")
+	defer span.End()
 
-	ok := p.DecodeAndValidate(w, r, request)
+	request := &types.CreateProjectRequest{}
 
-	if !ok {
+	if ok := p.DecodeAndValidate(w, r, request); !ok {
+		err := telemetry.Error(ctx, span, nil, "error decoding create project request")
+		p.HandleAPIError(w, r, apierrors.NewErrPassThroughToClient(err, http.StatusBadRequest))
 		return
 	}
 
@@ -51,15 +55,20 @@ func (p *ProjectCreateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
 
 	var err error
 
-	// Create billing customer for project and set the billing ID
-	billingID, err := p.Config().BillingManager.CreateCustomer(user.Email, proj)
-	if err != nil {
-		p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
+	if p.Config().ServerConf.StripeSecretKey != "" && p.Config().ServerConf.StripePublishableKey != "" {
+		// Create billing customer for project and set the billing ID
+		billingID, err := p.Config().BillingManager.CreateCustomer(user.Email, proj)
+		if err != nil {
+			err = telemetry.Error(ctx, span, err, "error creating billing customer")
+			p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
+			return
+		}
+		proj.BillingID = billingID
 	}
-	proj.BillingID = billingID
 
 	proj, _, err = CreateProjectWithUser(p.Repo().Project(), proj, user)
 	if err != nil {
+		err = telemetry.Error(ctx, span, err, "error creating project with user")
 		p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
 		return
 	}
@@ -76,6 +85,7 @@ func (p *ProjectCreateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
 		CurrentStep: step,
 	})
 	if err != nil {
+		err = telemetry.Error(ctx, span, err, "error creating project onboarding")
 		p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
 		return
 	}
@@ -89,6 +99,7 @@ func (p *ProjectCreateHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
 		Users:          types.BasicPlan.Users,
 	})
 	if err != nil {
+		err = telemetry.Error(ctx, span, err, "error creating project usage")
 		p.HandleAPIError(w, r, apierrors.NewErrInternal(err))
 		return
 	}