Skip to content

Commit ab0899c

Browse files
leo-rifabritsius
authored andcommitted
CLOUDP-20220: GCP test (#538)
1 parent 1fc9982 commit ab0899c

File tree

14 files changed

+340
-50
lines changed

14 files changed

+340
-50
lines changed

.github/workflows/test-forked.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ jobs:
265265
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
266266
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
267267
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
268+
GCP_SA_CRED: ${{ secrets.GCP_SA_CRED }}
268269
DATADOG_KEY: ${{ secrets.DATADOG_KEY }}
269270
run: |
270271
helm version

.github/workflows/test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ jobs:
263263
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
264264
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
265265
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
266+
GCP_SA_CRED: ${{ secrets.GCP_SA_CRED }}
266267
DATADOG_KEY: ${{ secrets.DATADOG_KEY }}
267268
run: |
268269
helm version

go.mod

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/Azure/go-autorest/autorest v0.11.24
88
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11
99
github.com/Azure/go-autorest/autorest/to v0.4.0
10-
github.com/aws/aws-sdk-go v1.44.15
10+
github.com/aws/aws-sdk-go v1.44.16
1111
github.com/fatih/structtag v1.2.0
1212
github.com/go-logr/zapr v1.2.3
1313
github.com/google/go-cmp v0.5.7
@@ -22,6 +22,7 @@ require (
2222
go.mongodb.org/atlas v0.16.0
2323
go.mongodb.org/mongo-driver v1.8.3
2424
go.uber.org/zap v1.21.0
25+
google.golang.org/api v0.70.0
2526
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
2627
k8s.io/api v0.23.4
2728
k8s.io/apimachinery v0.23.4
@@ -55,6 +56,7 @@ require (
5556
github.com/google/go-querystring v1.1.0 // indirect
5657
github.com/google/gofuzz v1.2.0 // indirect
5758
github.com/google/uuid v1.3.0 // indirect
59+
github.com/googleapis/gax-go/v2 v2.1.1 // indirect
5860
github.com/googleapis/gnostic v0.5.5 // indirect
5961
github.com/gorilla/websocket v1.5.0 // indirect
6062
github.com/hashicorp/errwrap v1.0.0 // indirect
@@ -78,6 +80,7 @@ require (
7880
github.com/xdg-go/scram v1.1.0 // indirect
7981
github.com/xdg-go/stringprep v1.0.2 // indirect
8082
github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect
83+
go.opencensus.io v0.23.0 // indirect
8184
go.uber.org/atomic v1.9.0 // indirect
8285
go.uber.org/multierr v1.7.0 // indirect
8386
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect
@@ -91,6 +94,8 @@ require (
9194
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
9295
gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect
9396
google.golang.org/appengine v1.6.7 // indirect
97+
google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf // indirect
98+
google.golang.org/grpc v1.44.0 // indirect
9499
google.golang.org/protobuf v1.27.1 // indirect
95100
gopkg.in/inf.v0 v0.9.1 // indirect
96101
gopkg.in/square/go-jose.v2 v2.6.0 // indirect

go.sum

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,8 @@ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC
9797
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
9898
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
9999
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
100-
github.com/aws/aws-sdk-go v1.44.15 h1:z02BVeV6k7hZMfWEQmKh3X23s3F9PBHFCcIVfNlut7A=
101-
github.com/aws/aws-sdk-go v1.44.15/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
102-
github.com/aws/aws-sdk-go v1.43.23 h1:/YmZzPMK6Xzi0B/W9O/Pq7nyIXpBv6mTiJdDDFC7u94=
103-
github.com/aws/aws-sdk-go v1.43.23/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
100+
github.com/aws/aws-sdk-go v1.44.16 h1:6voHuNZZNWo71MdNlym4eRlcogTeTSk9Ipo6qDJWzoU=
101+
github.com/aws/aws-sdk-go v1.44.16/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
104102
github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
105103
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
106104
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -315,6 +313,7 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
315313
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
316314
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
317315
github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
316+
github.com/googleapis/gax-go/v2 v2.1.1 h1:dp3bWCh+PPO1zjRRiCSczJav13sBvG4UhNyVTa1KqdU=
318317
github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=
319318
github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
320319
github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw=
@@ -589,6 +588,7 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
589588
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
590589
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
591590
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
591+
go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M=
592592
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
593593
go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc=
594594
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E=
@@ -960,6 +960,7 @@ google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdr
960960
google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=
961961
google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo=
962962
google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g=
963+
google.golang.org/api v0.70.0 h1:67zQnAE0T2rB0A3CwLSas0K+SbVzSxP+zTLkQLexeiw=
963964
google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA=
964965
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
965966
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -1035,6 +1036,7 @@ google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ6
10351036
google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
10361037
google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
10371038
google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
1039+
google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf h1:SVYXkUz2yZS9FWb2Gm8ivSlbNQzL2Z/NpPKE3RG2jWk=
10381040
google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
10391041
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
10401042
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
@@ -1062,6 +1064,7 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD
10621064
google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
10631065
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
10641066
google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
1067+
google.golang.org/grpc v1.44.0 h1:weqSxi/TMs1SqFRMHCtBgXRs8k3X39QIDEZ0pRcttUg=
10651068
google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
10661069
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
10671070
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=

test/e2e/actions/cloud/aws.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,37 @@ import (
44
"errors"
55
"fmt"
66

7+
v1 "github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1"
8+
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/provider"
79
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/status"
810
aws "github.com/mongodb/mongodb-atlas-kubernetes/test/e2e/api/aws"
911
)
1012

1113
type awsAction struct{}
1214

13-
func (awsAction *awsAction) createPrivateEndpoint(pe status.ProjectPrivateEndpoint, privatelinkName string) (string, string, error) {
15+
func (awsAction *awsAction) createPrivateEndpoint(pe status.ProjectPrivateEndpoint, privatelinkName string) (v1.PrivateEndpoint, error) {
1416
fmt.Print("create AWS LINK")
1517
session := aws.SessionAWS(pe.Region)
1618
vpcID, err := session.GetVPCID()
1719
if err != nil {
18-
return "", "", err
20+
return v1.PrivateEndpoint{}, err
1921
}
2022
subnetID, err := session.GetSubnetID()
2123
if err != nil {
22-
return "", "", err
24+
return v1.PrivateEndpoint{}, err
2325
}
2426

2527
privateEndpointID, err := session.CreatePrivateEndpoint(vpcID, subnetID, pe.ServiceName, privatelinkName)
2628
if err != nil {
27-
return "", "", err
29+
return v1.PrivateEndpoint{}, err
2830
}
29-
30-
return privateEndpointID, "", nil
31+
cResponse := v1.PrivateEndpoint{
32+
ID: privateEndpointID,
33+
IP: "",
34+
Provider: provider.ProviderAWS,
35+
Region: pe.Region,
36+
}
37+
return cResponse, nil
3138
}
3239

3340
func (awsAction *awsAction) deletePrivateEndpoint(pe status.ProjectPrivateEndpoint, privatelinkID string) error {

test/e2e/actions/cloud/azure.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"os"
66
"path"
77

8+
v1 "github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1"
9+
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/provider"
810
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/status"
911
"github.com/mongodb/mongodb-atlas-kubernetes/test/e2e/api/azure"
1012
"github.com/mongodb/mongodb-atlas-kubernetes/test/e2e/config"
@@ -19,20 +21,26 @@ var (
1921
subnetName = "default"
2022
)
2123

22-
func (azureAction *azureAction) createPrivateEndpoint(pe status.ProjectPrivateEndpoint, privatelinkName string) (string, string, error) {
24+
func (azureAction *azureAction) createPrivateEndpoint(pe status.ProjectPrivateEndpoint, privatelinkName string) (v1.PrivateEndpoint, error) {
2325
session, err := azure.SessionAzure(os.Getenv("AZURE_SUBSCRIPTION_ID"), config.TagName)
2426
if err != nil {
25-
return "", "", err
27+
return v1.PrivateEndpoint{}, err
2628
}
2729
err = session.DisableNetworkPolicies(resourceGroup, vpc, subnetName)
2830
if err != nil {
29-
return "", "", err
31+
return v1.PrivateEndpoint{}, err
3032
}
3133
id, ip, err := session.CreatePrivateEndpoint(pe.Region, resourceGroup, privatelinkName, pe.ServiceResourceID)
3234
if err != nil {
33-
return "", "", err
35+
return v1.PrivateEndpoint{}, err
3436
}
35-
return id, ip, nil
37+
cResponse := v1.PrivateEndpoint{
38+
ID: id,
39+
IP: ip,
40+
Provider: provider.ProviderAzure,
41+
Region: pe.Region,
42+
}
43+
return cResponse, nil
3644
}
3745

3846
func (azureAction *azureAction) deletePrivateEndpoint(pe status.ProjectPrivateEndpoint, privatelinkName string) error {

test/e2e/actions/cloud/cloud.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ package cloud
33
import (
44
"errors"
55

6+
v1 "github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1"
67
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/provider"
78
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/status"
89
)
910

1011
type CloudActions interface {
11-
createPrivateEndpoint(pe status.ProjectPrivateEndpoint, name string) (string, string, error)
12+
createPrivateEndpoint(pe status.ProjectPrivateEndpoint, name string) (v1.PrivateEndpoint, error)
1213
deletePrivateEndpoint(pe status.ProjectPrivateEndpoint, name string) error
1314
statusPrivateEndpointPending(region, privateID string) bool
1415
statusPrivateEndpointAvailable(region, privateID string) bool
@@ -19,6 +20,11 @@ type PEActions struct {
1920
PrivateEndpoint status.ProjectPrivateEndpoint
2021
}
2122

23+
type Endpoints struct {
24+
IP string
25+
Name string
26+
}
27+
2228
func CreatePEActions(pe status.ProjectPrivateEndpoint) (PEActions, error) {
2329
peActions := PEActions{PrivateEndpoint: pe}
2430
switch pe.Provider {
@@ -48,16 +54,18 @@ func (peActions *PEActions) validation() error {
4854
return errors.New("Azure. PrivateEndpoint.ServiceResourceID is empty")
4955
}
5056
case provider.ProviderGCP:
51-
return errors.New("work with GCP is not implemented")
57+
if len(peActions.PrivateEndpoint.ServiceAttachmentNames) < 1 {
58+
return errors.New("GCP. PrivateEndpoint.ServiceAttachmentNames should not be empty")
59+
}
5260
default:
5361
return errors.New("Check Provider")
5462
}
5563
return nil
5664
}
5765

58-
func (peActions *PEActions) CreatePrivateEndpoint(name string) (string, string, error) {
66+
func (peActions *PEActions) CreatePrivateEndpoint(name string) (v1.PrivateEndpoint, error) {
5967
if err := peActions.validation(); err != nil {
60-
return "", "", err
68+
return v1.PrivateEndpoint{}, err
6169
}
6270
return peActions.CloudActions.createPrivateEndpoint(peActions.PrivateEndpoint, name)
6371
}
@@ -71,6 +79,7 @@ func (peActions *PEActions) DeletePrivateEndpoint(name string) error {
7179

7280
// privateID is different for different clouds: privateID for AWS or PEname for AZURE
7381
// AWS = PrivateID, AZURE = privateEndpoint Name
82+
// GCP = prefix
7483
func (peActions *PEActions) IsStatusPrivateEndpointPending(privateID string) bool {
7584
return peActions.CloudActions.statusPrivateEndpointPending(peActions.PrivateEndpoint.Region, privateID)
7685
}

test/e2e/actions/cloud/gcp.go

Lines changed: 77 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,97 @@ package cloud
22

33
import (
44
"fmt"
5+
"time"
56

7+
v1 "github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1"
68
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/api/v1/status"
9+
"github.com/mongodb/mongodb-atlas-kubernetes/test/e2e/api/gcp"
710
)
811

912
type gcpAction struct{}
1013

11-
func (gcpAction *gcpAction) createPrivateEndpoint(pe status.ProjectPrivateEndpoint, privatelinkName string) (string, string, error) {
12-
fmt.Print("NOT IMPLEMENTED create GCP LINK")
13-
return "some test", "IP if req", nil
14+
var (
15+
// TODO get from GCP
16+
googleProjectID = "atlasoperator" // Google Cloud Project ID
17+
googleVPC = "atlas-operator-test" // VPC Name
18+
googleSubnetName = "atlas-operator-subnet-leo" // Subnet Name
19+
googleConnectPrefix = "ao" // Private Service Connect Endpoint Prefix
20+
)
21+
22+
func (gcpAction *gcpAction) createPrivateEndpoint(pe status.ProjectPrivateEndpoint, privatelinkName string) (v1.PrivateEndpoint, error) {
23+
session, err := gcp.SessionGCP(googleProjectID)
24+
if err != nil {
25+
return v1.PrivateEndpoint{}, err
26+
}
27+
var cResponse v1.PrivateEndpoint
28+
for i, target := range pe.ServiceAttachmentNames {
29+
addressName := formAddressName(privatelinkName, i)
30+
ruleName := formRuleName(privatelinkName, i)
31+
ip, err := session.AddIPAdress(pe.Region, addressName, googleSubnetName)
32+
if err != nil {
33+
return v1.PrivateEndpoint{}, err
34+
}
35+
36+
cResponse.Endpoints = append(cResponse.Endpoints, v1.GCPEndpoint{
37+
EndpointName: ruleName,
38+
IPAddress: ip,
39+
})
40+
cResponse.EndpointGroupName = googleVPC
41+
cResponse.Region = pe.Region
42+
cResponse.Provider = pe.Provider
43+
cResponse.GCPProjectID = googleProjectID
44+
45+
session.AddForwardRule(pe.Region, ruleName, addressName, googleVPC, googleSubnetName, target)
46+
}
47+
return cResponse, nil
1448
}
1549

1650
func (gcpAction *gcpAction) deletePrivateEndpoint(pe status.ProjectPrivateEndpoint, privatelinkName string) error {
17-
fmt.Print("NOT IMPLEMENTED delete GCP LINK")
51+
session, err := gcp.SessionGCP(googleProjectID)
52+
if err != nil {
53+
return err
54+
}
55+
for i := range pe.Endpoints {
56+
session.DeleteForwardRule(pe.Region, formRuleName(privatelinkName, i), 10, 20*time.Second)
57+
session.DeleteIPAdress(pe.Region, formAddressName(privatelinkName, i))
58+
}
1859
return nil
1960
}
2061

2162
func (gcpAction *gcpAction) statusPrivateEndpointPending(region, privateID string) bool {
22-
fmt.Print("NOT IMPLEMENTED delete GCP LINK")
23-
return true
63+
session, err := gcp.SessionGCP(googleProjectID)
64+
if err != nil {
65+
fmt.Print(err)
66+
return false
67+
}
68+
ruleName := formRuleName(privateID, 1)
69+
result, err := session.DescribePrivateLinkStatus(region, ruleName)
70+
if err != nil {
71+
fmt.Print(err)
72+
return false
73+
}
74+
return (result == "PENDING")
2475
}
2576

2677
func (gcpAction *gcpAction) statusPrivateEndpointAvailable(region, privateID string) bool {
27-
fmt.Print("NOT IMPLEMENTED delete GCP LINK")
28-
return true
78+
session, err := gcp.SessionGCP(googleProjectID)
79+
if err != nil {
80+
fmt.Print(err)
81+
return false
82+
}
83+
ruleName := formRuleName(privateID, 1)
84+
result, err := session.DescribePrivateLinkStatus(region, ruleName)
85+
if err != nil {
86+
fmt.Print(err)
87+
return false
88+
}
89+
return (result == "ACCEPTED")
90+
}
91+
92+
func formAddressName(name string, i int) string {
93+
return fmt.Sprintf("%s%s-ip-%d", googleConnectPrefix, name, i)
94+
}
95+
96+
func formRuleName(name string, i int) string {
97+
return fmt.Sprintf("%s%s-%d", googleConnectPrefix, name, i)
2998
}

test/e2e/actions/steps.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func WaitCluster(input model.UserInputs, generation string) {
6464
}
6565

6666
func WaitProject(data *model.TestDataProvider, generation string) {
67-
EventuallyWithOffset(1, kube.GetReadyProjectStatus(data), "5m", "10s").Should(Equal("True"), "Kubernetes resource: Project status `Ready` should be 'True'")
67+
EventuallyWithOffset(1, kube.GetReadyProjectStatus(data), "15m", "10s").Should(Equal("True"), "Kubernetes resource: Project status `Ready` should be 'True'")
6868
ExpectWithOffset(1, kubecli.GetGeneration(data.Resources.Namespace, data.Resources.GetAtlasProjectFullKubeName())).Should(Equal(generation), "Kubernetes resource: Generation should be upgraded")
6969
atlasProject, err := kube.GetProjectResource(data)
7070
Expect(err).ShouldNot(HaveOccurred())

0 commit comments

Comments
 (0)