Skip to content

Commit

Permalink
add cloudtasks support (GoogleCloudPlatform#1157)
Browse files Browse the repository at this point in the history
* add cloudtasks support

* goimports the imports

* goimports lints
  • Loading branch information
CubicFeat authored Nov 24, 2021
1 parent b40ff96 commit 909fd7a
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 0 deletions.
76 changes: 76 additions & 0 deletions providers/gcp/cloudtasks.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package gcp

import (
"context"
"fmt"
"strings"

"github.com/GoogleCloudPlatform/terraformer/terraformutils"
"google.golang.org/api/iterator"

cloudtasks "cloud.google.com/go/cloudtasks/apiv2"
"google.golang.org/api/compute/v1"
taskspb "google.golang.org/genproto/googleapis/cloud/tasks/v2"
)

var cloudTasksAllowEmptyValues = []string{}

var cloudTasksAdditionalFields = map[string]interface{}{}

type CloudTaskGenerator struct {
GCPService
}

func (g *CloudTaskGenerator) loadCloudTaskQueues(ctx context.Context, client *cloudtasks.Client) error {
project := g.GetArgs()["project"].(string)
region := g.GetArgs()["region"].(compute.Region).Name

req := &taskspb.ListQueuesRequest{
Parent: fmt.Sprintf("projects/%s/locations/%s", project, region),
}

queueIterator := client.ListQueues(ctx, req)
for {
resp, err := queueIterator.Next()
if err == iterator.Done {
break
}
if err != nil {
return err
}
splitName := strings.Split(resp.Name, "/")
queueName := splitName[len(splitName)-1]

g.Resources = append(g.Resources, terraformutils.NewResource(
resp.Name,
queueName,
"google_cloud_tasks_queue",
g.ProviderName,
map[string]string{
"id": fmt.Sprintf("projects/%s/locations/%s/queues/%s", project, region, queueName),
"name": queueName,
"project": project,
"location": region,
},
cloudTasksAllowEmptyValues,
cloudTasksAdditionalFields,
))
}
return nil
}

// Generate TerraformResources from GCP API,
// from each cloud task queue create 1 TerraformResource
func (g *CloudTaskGenerator) InitResources() error {
ctx := context.Background()
client, err := cloudtasks.NewClient(ctx)
if err != nil {
return err
}

if err := g.loadCloudTaskQueues(ctx, client); err != nil {
return err
}

return client.Close()
}
1 change: 1 addition & 0 deletions providers/gcp/gcp_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ func (p *GCPProvider) GetSupportedService() map[string]terraformutils.ServiceGen
services["bigQuery"] = &GCPFacade{service: &BigQueryGenerator{}}
services["cloudFunctions"] = &GCPFacade{service: &CloudFunctionsGenerator{}}
services["cloudsql"] = &GCPFacade{service: &CloudSQLGenerator{}}
services["cloudtasks"] = &GCPFacade{service: &CloudTaskGenerator{}}
services["dataProc"] = &GCPFacade{service: &DataprocGenerator{}}
services["dns"] = &GCPFacade{service: &CloudDNSGenerator{}}
services["gcs"] = &GCPFacade{service: &GcsGenerator{}}
Expand Down

0 comments on commit 909fd7a

Please sign in to comment.