|
@@ -5,6 +5,7 @@ import (
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"io/ioutil"
|
|
"io/ioutil"
|
|
|
"net/http"
|
|
"net/http"
|
|
|
|
|
+ "strconv"
|
|
|
|
|
|
|
|
"github.com/porter-dev/porter/api/server/authz"
|
|
"github.com/porter-dev/porter/api/server/authz"
|
|
|
"github.com/porter-dev/porter/api/server/handlers"
|
|
"github.com/porter-dev/porter/api/server/handlers"
|
|
@@ -48,7 +49,7 @@ func (c *BillingWebhookHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// parse usage and update project
|
|
// parse usage and update project
|
|
|
- newUsage, err := c.Config().BillingManager.ParseProjectUsageFromWebhook(payload)
|
|
|
|
|
|
|
+ newUsage, features, err := c.Config().BillingManager.ParseProjectUsageFromWebhook(payload)
|
|
|
|
|
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
@@ -81,4 +82,35 @@ func (c *BillingWebhookHandler) ServeHTTP(w http.ResponseWriter, r *http.Request
|
|
|
c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // update the feature flags
|
|
|
|
|
+ project, err := c.Repo().Project().ReadProject(newUsage.ProjectID)
|
|
|
|
|
+
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if managedDatabasesEnabled, err := strconv.ParseBool(features.ManagedDatabasesEnabled); err == nil {
|
|
|
|
|
+ project.RDSDatabasesEnabled = managedDatabasesEnabled
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if managedInfraEnabled, err := strconv.ParseBool(features.ManagedInfraEnabled); err == nil {
|
|
|
|
|
+ project.ManagedInfraEnabled = managedInfraEnabled
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if stacksEnabled, err := strconv.ParseBool(features.StacksEnabled); err == nil {
|
|
|
|
|
+ project.StacksEnabled = stacksEnabled
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if previewEnvsEnabled, err := strconv.ParseBool(features.PreviewEnvironmentsEnabled); err == nil {
|
|
|
|
|
+ project.PreviewEnvsEnabled = previewEnvsEnabled
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ _, err = c.Repo().Project().UpdateProject(project)
|
|
|
|
|
+
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|