Skip to content

Commit 81c8075

Browse files
authored
fix(gcp): Fix context to work when syncing (#5512)
Seems `ctx` never worked given that `ctx` is passed on creation and not on call. Also, this takes some learning from azure and makes code generation easier. For context there is no need for `services` anymore and we can create and close the server in the `testing.go` helper function instead of doing this in every single mock function
1 parent 0861727 commit 81c8075

104 files changed

Lines changed: 698 additions & 1588 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

plugins/source/gcp/client/client.go

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"encoding/json"
66
"fmt"
77

8-
resourcemanagerv3 "cloud.google.com/go/resourcemanager/apiv3"
8+
resourcemanager "cloud.google.com/go/resourcemanager/apiv3"
99
"cloud.google.com/go/resourcemanager/apiv3/resourcemanagerpb"
1010
"github.com/cloudquery/plugin-sdk/schema"
1111
"github.com/cloudquery/plugin-sdk/specs"
@@ -18,10 +18,8 @@ import (
1818
const maxProjectIdsToLog int = 100
1919

2020
type Client struct {
21-
// plugin *plugins.SourcePlugin
22-
projects []string
23-
// All gcp services initialized by client
24-
Services *Services
21+
projects []string
22+
ClientOptions []option.ClientOption
2523
// this is set by table client multiplexer
2624
ProjectId string
2725
// Logger
@@ -83,15 +81,19 @@ func New(ctx context.Context, logger zerolog.Logger, s specs.Source) (schema.Cli
8381
options = append(options, option.WithCredentialsJSON(serviceAccountKeyJSON))
8482
}
8583

86-
c.Services, err = initServices(context.Background(), options)
87-
if err != nil {
88-
return nil, err
89-
}
90-
9184
if len(gcpSpec.ProjectFilter) > 0 && len(gcpSpec.FolderIDs) > 0 {
9285
return nil, fmt.Errorf("project_filter and folder_ids are mutually exclusive")
9386
}
9487

88+
projectsClient, err := resourcemanager.NewProjectsClient(ctx, options...)
89+
if err != nil {
90+
return nil, fmt.Errorf("failed to create projects client: %w", err)
91+
}
92+
foldersClient, err := resourcemanager.NewFoldersClient(ctx, options...)
93+
if err != nil {
94+
return nil, fmt.Errorf("failed to create folders client: %w", err)
95+
}
96+
9597
switch {
9698
case len(projects) == 0 && len(gcpSpec.FolderIDs) == 0 && len(gcpSpec.ProjectFilter) == 0:
9799
c.logger.Info().Msg("No project_ids, folder_ids, or project_filter specified - assuming all active projects")
@@ -105,7 +107,7 @@ func New(ctx context.Context, logger zerolog.Logger, s specs.Source) (schema.Cli
105107

106108
for _, parentFolder := range gcpSpec.FolderIDs {
107109
c.logger.Info().Msg("Listing folders...")
108-
childFolders, err := listFolders(ctx, c.Services.ResourcemanagerFoldersClient, parentFolder, *gcpSpec.FolderRecursionDepth)
110+
childFolders, err := listFolders(ctx, foldersClient, parentFolder, *gcpSpec.FolderRecursionDepth)
109111
if err != nil {
110112
return nil, fmt.Errorf("failed to list folders: %w", err)
111113
}
@@ -115,7 +117,7 @@ func New(ctx context.Context, logger zerolog.Logger, s specs.Source) (schema.Cli
115117
logFolderIds(&c.logger, folderIds)
116118

117119
c.logger.Info().Msg("listing folder projects...")
118-
folderProjects, err := listProjectsInFolders(ctx, c.Services.ResourcemanagerProjectsClient, folderIds)
120+
folderProjects, err := listProjectsInFolders(ctx, projectsClient, folderIds)
119121
projects = setUnion(projects, folderProjects)
120122
if err != nil {
121123
return nil, fmt.Errorf("failed to list projects: %w", err)
@@ -228,7 +230,7 @@ func getProjectsV1WithFilter(ctx context.Context, filter string, options ...opti
228230

229231
// listFolders recursively lists the folders in the 'parent' folder. Includes the 'parent' folder itself.
230232
// recursionDepth is the depth of folders to recurse - where 0 means not to recurse any folders.
231-
func listFolders(ctx context.Context, folderClient *resourcemanagerv3.FoldersClient, parent string, recursionDepth int) ([]string, error) {
233+
func listFolders(ctx context.Context, folderClient *resourcemanager.FoldersClient, parent string, recursionDepth int) ([]string, error) {
232234
folders := []string{
233235
parent,
234236
}
@@ -262,7 +264,7 @@ func listFolders(ctx context.Context, folderClient *resourcemanagerv3.FoldersCli
262264
return folders, nil
263265
}
264266

265-
func listProjectsInFolders(ctx context.Context, projectClient *resourcemanagerv3.ProjectsClient, folders []string) ([]string, error) {
267+
func listProjectsInFolders(ctx context.Context, projectClient *resourcemanager.ProjectsClient, folders []string) ([]string, error) {
266268
var projects []string
267269
for _, folder := range folders {
268270
it := projectClient.ListProjects(ctx, &resourcemanagerpb.ListProjectsRequest{

plugins/source/gcp/client/services.go

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

0 commit comments

Comments
 (0)