|
|
@@ -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
|
|
|
}
|