فهرست منبع

add azure_enabled feature flag (#3190)

* add azure_enabled feature flag

* small fix

---------

Co-authored-by: David Townley <davidtownley@Davids-MacBook-Air.local>
d-g-town 2 سال پیش
والد
کامیت
d21618437b

+ 2 - 0
api/types/project.go

@@ -11,6 +11,7 @@ type Project struct {
 	StacksEnabled          bool    `json:"stacks_enabled"`
 	CapiProvisionerEnabled bool    `json:"capi_provisioner_enabled"`
 	SimplifiedViewEnabled  bool    `json:"simplified_view_enabled"`
+	AzureEnabled           bool    `json:"azure_enabled"`
 }
 
 type FeatureFlags struct {
@@ -20,6 +21,7 @@ type FeatureFlags struct {
 	ManagedDatabasesEnabled    string `json:"managed_databases_enabled,omitempty"`
 	CapiProvisionerEnabled     string `json:"capi_provisioner_enabled,omitempty"`
 	SimplifiedViewEnabled      string `json:"simplified_view_enabled,omitempty"`
+	AzureEnabled               bool   `json:"azure_enabled,omitempty"`
 }
 
 type CreateProjectRequest struct {

+ 4 - 3
dashboard/src/components/ProvisionerFlow.tsx

@@ -65,14 +65,14 @@ const ProvisionerFlow: React.FC<Props> = ({}) => {
                   key={i}
                   disabled={
                     isUsageExceeded ||
-                    (provider === "azure" && !featurePreview) ||
+                    (provider === "azure" && !currentProject?.azure_enabled) ||
                     provider === "gcp"
                   }
                   onClick={() => {
                     if (
                       !(
                         isUsageExceeded ||
-                        (provider === "azure" && !featurePreview) ||
+                        (provider === "azure" && !currentProject?.azure_enabled) ||
                         provider === "gcp"
                       )
                     ) {
@@ -83,7 +83,8 @@ const ProvisionerFlow: React.FC<Props> = ({}) => {
                   <Icon src={providerInfo.icon} />
                   <BlockTitle>{providerInfo.label}</BlockTitle>
                   <BlockDescription>
-                    {providerInfo.tagline || "Hosted in your own cloud"}
+                      {(provider === "azure" && !currentProject?.azure_enabled) ||
+                      provider === "gcp" ? providerInfo.tagline : "Hosted in your own cloud"}
                   </BlockDescription>
                 </Block>
               );

+ 1 - 0
dashboard/src/shared/types.tsx

@@ -269,6 +269,7 @@ export interface ProjectType {
   api_tokens_enabled: boolean;
   stacks_enabled: boolean;
   simplified_view_enabled: boolean;
+  azure_enabled: boolean;
   roles: {
     id: number;
     kind: string;

+ 1 - 0
ee/billing/client.go

@@ -279,5 +279,6 @@ func (c *Client) ParseProjectUsageFromWebhook(payload []byte) (*cemodels.Project
 			ManagedDatabasesEnabled:    usageData.ManagedDatabasesEnabled,
 			CapiProvisionerEnabled:     usageData.CapiProvisionerEnabled,
 			SimplifiedViewEnabled:      usageData.SimplifiedViewEnabled,
+			AzureEnabled:               usageData.AzureEnabled,
 		}, nil
 }

+ 1 - 0
ee/billing/types.go

@@ -29,6 +29,7 @@ type APIWebhookRequest struct {
 	ManagedDatabasesEnabled    string `json:"managed_databases_enabled,omitempty"`
 	CapiProvisionerEnabled     string `json:"capi_provisioner_enabled,omitempty"`
 	SimplifiedViewEnabled      string `json:"simplified_view_enabled,omitempty"`
+	AzureEnabled               bool   `json:"azure_enabled,omitempty"`
 }
 
 type CreateBillingCookieRequest struct {

+ 2 - 0
internal/models/project.go

@@ -65,6 +65,7 @@ type Project struct {
 	APITokensEnabled       bool
 	CapiProvisionerEnabled bool
 	SimplifiedViewEnabled  bool
+	AzureEnabled           bool
 }
 
 // ToProjectType generates an external types.Project to be shared over REST
@@ -86,5 +87,6 @@ func (p *Project) ToProjectType() *types.Project {
 		APITokensEnabled:       p.APITokensEnabled,
 		CapiProvisionerEnabled: p.CapiProvisionerEnabled,
 		SimplifiedViewEnabled:  p.SimplifiedViewEnabled,
+		AzureEnabled:           p.AzureEnabled,
 	}
 }