Skip to content

Commit 5ee60d2

Browse files
authored
Fix GCP SPE (#822)
1 parent e107958 commit 5ee60d2

File tree

2 files changed

+21
-28
lines changed

2 files changed

+21
-28
lines changed

pkg/api/v1/provider/provider.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ package provider
33
type ProviderName string
44

55
const (
6-
ProviderAWS ProviderName = "AWS"
7-
ProviderGCP ProviderName = "GCP"
8-
ProviderAzure ProviderName = "AZURE"
9-
ProviderTenant ProviderName = "TENANT"
6+
ProviderAWS ProviderName = "AWS"
7+
ProviderGCP ProviderName = "GCP"
8+
ProviderAzure ProviderName = "AZURE"
9+
ProviderTenant ProviderName = "TENANT"
10+
ProviderServerless ProviderName = "SERVERLESS"
1011
)

pkg/controller/atlasdeployment/serverless_private_endpoint.go

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -32,44 +32,36 @@ func ensureServerlessPrivateEndpoints(service *workflow.Context, groupID string,
3232
if deploymentSpec == nil {
3333
return workflow.Terminate(workflow.ServerlessPrivateEndpointReady, "deployment spec is empty")
3434
}
35-
providerName, result := IsClusterSupportServerlessPE(deploymentSpec)
35+
providerName := GetServerlessProvider(deploymentSpec)
36+
if providerName == provider.ProviderGCP {
37+
if len(deploymentSpec.PrivateEndpoints) == 0 {
38+
service.UnsetCondition(status.ServerlessPrivateEndpointReadyType)
39+
return workflow.OK()
40+
} else {
41+
return workflow.Terminate(workflow.ServerlessPrivateEndpointReady, "private endpoints are not supported for GCP")
42+
}
43+
}
44+
45+
result := syncServerlessPrivateEndpoints(context.Background(), service, groupID, deploymentName, providerName, deploymentSpec.PrivateEndpoints)
3646
if !result.IsOk() {
47+
service.SetConditionFromResult(status.ServerlessPrivateEndpointReadyType, result)
3748
return result
3849
}
3950

4051
if deploymentSpec.PrivateEndpoints == nil {
4152
service.UnsetCondition(status.ServerlessPrivateEndpointReadyType)
42-
service.EnsureStatusOption(status.AtlasDeploymentSPEOption(nil))
4353
return workflow.OK()
4454
}
4555

46-
result = syncServerlessPrivateEndpoints(context.Background(), service, groupID, deploymentName, providerName, deploymentSpec.PrivateEndpoints)
47-
if !result.IsOk() {
48-
service.SetConditionFromResult(status.ServerlessPrivateEndpointReadyType, result)
49-
return result
50-
}
5156
service.SetConditionTrue(status.ServerlessPrivateEndpointReadyType)
5257
return result
5358
}
5459

55-
func IsClusterSupportServerlessPE(deploymentSpec *mdbv1.ServerlessSpec) (provider.ProviderName, workflow.Result) {
56-
if deploymentSpec.ProviderSettings.BackingProviderName == string(provider.ProviderAWS) {
57-
return provider.ProviderAWS, workflow.OK()
58-
}
59-
60-
if deploymentSpec.ProviderSettings.BackingProviderName == string(provider.ProviderAzure) {
61-
return provider.ProviderAzure, workflow.OK()
62-
}
63-
64-
if deploymentSpec.ProviderSettings.ProviderName == provider.ProviderAWS {
65-
return provider.ProviderAWS, workflow.OK()
66-
}
67-
68-
if deploymentSpec.ProviderSettings.ProviderName == provider.ProviderAzure {
69-
return provider.ProviderAzure, workflow.OK()
60+
func GetServerlessProvider(deploymentSpec *mdbv1.ServerlessSpec) provider.ProviderName {
61+
if deploymentSpec.ProviderSettings.ProviderName != provider.ProviderServerless {
62+
return deploymentSpec.ProviderSettings.ProviderName
7063
}
71-
72-
return "", workflow.Terminate(workflow.Internal, "serverless private endpoints are only supported for AWS and Azure")
64+
return provider.ProviderName(deploymentSpec.ProviderSettings.BackingProviderName)
7365
}
7466

7567
func syncServerlessPrivateEndpoints(ctx context.Context, service *workflow.Context, groupID, deploymentName string, providerName provider.ProviderName, desiredPE []mdbv1.ServerlessPrivateEndpoint) workflow.Result {

0 commit comments

Comments
 (0)