Skip to content

Commit 067d8af

Browse files
authored
CLOUDP-141796: Remake cleaner (#743)
1 parent 1854ce0 commit 067d8af

File tree

14 files changed

+470
-286
lines changed

14 files changed

+470
-286
lines changed

.github/actions/cleanup/Dockerfile

Lines changed: 0 additions & 16 deletions
This file was deleted.

.github/actions/cleanup/action.yml

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package atlasclient
2+
3+
import (
4+
"fmt"
5+
"net/http"
6+
"runtime"
7+
8+
"go.mongodb.org/atlas/mongodbatlas"
9+
10+
"github.com/mongodb/mongodb-atlas-kubernetes/pkg/util/httputil"
11+
)
12+
13+
func SetupClient(publicKey, privateKey, managerUrl string) (mongodbatlas.Client, error) {
14+
withDigest := httputil.Digest(publicKey, privateKey)
15+
16+
httpClient, err := httputil.DecorateClient(&http.Client{Transport: http.DefaultTransport}, withDigest)
17+
if err != nil {
18+
return mongodbatlas.Client{}, err
19+
}
20+
client, err := mongodbatlas.New(httpClient, mongodbatlas.SetBaseURL(managerUrl))
21+
if err != nil {
22+
return mongodbatlas.Client{}, err
23+
}
24+
client.UserAgent = fmt.Sprintf("%s/%s (%s;%s)", "MongoDBAtlasKubernetesOperator", "unknown", runtime.GOOS, runtime.GOARCH)
25+
return *client, nil
26+
}

.github/actions/cleanup/config.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"strconv"
7+
)
8+
9+
type Config struct {
10+
DeleteAll bool
11+
Lifetime int // lifetime in hours
12+
PublicKey string
13+
PrivateKey string
14+
ManagerUrl string
15+
}
16+
17+
const DefaultManagerURL = "https://cloud-qa.mongodb.com/"
18+
19+
func NewConfig() (*Config, error) {
20+
deleteAllStr := os.Getenv("CLEAN_ALL")
21+
deleteAll := deleteAllStr != "false"
22+
23+
var lifetime int
24+
if !deleteAll {
25+
lifetimeStr := os.Getenv("MAX_PROJECT_LIFETIME")
26+
if lifetimeStr == "" {
27+
return nil, fmt.Errorf("MAX_PROJECT_LIFETIME is not set")
28+
}
29+
var err error
30+
lifetime, err = strconv.Atoi(lifetimeStr)
31+
if err != nil {
32+
return nil, fmt.Errorf("MAX_PROJECT_LIFETIME must be an integer")
33+
}
34+
}
35+
36+
publicKey := os.Getenv("MCLI_PUBLIC_API_KEY")
37+
if publicKey == "" {
38+
return nil, fmt.Errorf("MCLI_PUBLIC_API_KEY must be set")
39+
}
40+
privateKey := os.Getenv("MCLI_PRIVATE_API_KEY")
41+
if privateKey == "" {
42+
return nil, fmt.Errorf("MCLI_PRIVATE_API_KEY must be set")
43+
}
44+
managerUrl := os.Getenv("MCLI_OPS_MANAGER_URL")
45+
if managerUrl == "" {
46+
managerUrl = DefaultManagerURL
47+
}
48+
49+
return &Config{
50+
DeleteAll: deleteAll,
51+
Lifetime: lifetime,
52+
PublicKey: publicKey,
53+
PrivateKey: privateKey,
54+
ManagerUrl: managerUrl,
55+
}, nil
56+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package deployment
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
"go.mongodb.org/atlas/mongodbatlas"
8+
)
9+
10+
func DeleteAllDeployments(ctx context.Context, client mongodbatlas.ClustersService, projectID string) error {
11+
deployments, err := GetAllDeployments(ctx, client, projectID)
12+
if err != nil {
13+
return fmt.Errorf("error getting deployments: %s", err)
14+
}
15+
for _, deployment := range deployments {
16+
if _, err = client.Delete(ctx, projectID, deployment.Name); err != nil {
17+
return fmt.Errorf("error deleting deployment: %s", err)
18+
}
19+
}
20+
return nil
21+
}
22+
23+
func GetAllDeployments(ctx context.Context, client mongodbatlas.ClustersService, projectID string) ([]mongodbatlas.Cluster, error) {
24+
deployments, _, err := client.List(ctx, projectID, nil)
25+
if err != nil {
26+
return nil, fmt.Errorf("error getting deployments: %s", err)
27+
}
28+
return deployments, nil
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package deployment
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
"go.mongodb.org/atlas/mongodbatlas"
8+
)
9+
10+
func DeleteAllServerless(ctx context.Context, client mongodbatlas.ServerlessInstancesService, projectID string) error {
11+
serverless, err := GetAllServerless(ctx, client, projectID)
12+
if err != nil {
13+
return fmt.Errorf("error getting serverless: %s", err)
14+
}
15+
for _, s := range serverless {
16+
if _, err = client.Delete(ctx, projectID, s.Name); err != nil {
17+
return fmt.Errorf("error deleting serverless: %s", err)
18+
}
19+
}
20+
return nil
21+
}
22+
23+
func GetAllServerless(ctx context.Context, client mongodbatlas.ServerlessInstancesService, projectID string) ([]*mongodbatlas.Cluster, error) {
24+
serverless, _, err := client.List(ctx, projectID, nil)
25+
if err != nil {
26+
return nil, fmt.Errorf("error getting serverless: %s", err)
27+
}
28+
return serverless.Results, nil
29+
}

0 commit comments

Comments
 (0)