blob: 9b14263acaaab1ac653bbb6f103843a201530c0e [file] [log] [blame]
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
// ----------------------------------------------------------------------------
//
// *** AUTO GENERATED CODE *** Type: MMv1 ***
//
// ----------------------------------------------------------------------------
//
// This file is automatically generated by Magic Modules and manual
// changes will be clobbered when the file is regenerated.
//
// Please read more about how to change this file in
// .github/CONTRIBUTING.md.
//
// ----------------------------------------------------------------------------
package cloudtasks
import (
"fmt"
"log"
"net/http"
"reflect"
"strings"
"time"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
"github.com/hashicorp/terraform-provider-google-beta/google-beta/verify"
)
func suppressOmittedMaxDuration(k, old, new string, d *schema.ResourceData) bool {
if old == "" && new == "0s" {
log.Printf("[INFO] max retry is 0s and api omitted field, suppressing diff")
return true
}
return tpgresource.DurationDiffSuppress(k, old, new, d)
}
func ResourceCloudTasksQueue() *schema.Resource {
return &schema.Resource{
Create: resourceCloudTasksQueueCreate,
Read: resourceCloudTasksQueueRead,
Update: resourceCloudTasksQueueUpdate,
Delete: resourceCloudTasksQueueDelete,
Importer: &schema.ResourceImporter{
State: resourceCloudTasksQueueImport,
},
Timeouts: &schema.ResourceTimeout{
Create: schema.DefaultTimeout(20 * time.Minute),
Update: schema.DefaultTimeout(20 * time.Minute),
Delete: schema.DefaultTimeout(20 * time.Minute),
},
CustomizeDiff: customdiff.All(
tpgresource.DefaultProviderProject,
),
Schema: map[string]*schema.Schema{
"location": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: `The location of the queue`,
},
"app_engine_routing_override": {
Type: schema.TypeList,
Optional: true,
Description: `Overrides for task-level appEngineRouting. These settings apply only
to App Engine tasks in this queue`,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"instance": {
Type: schema.TypeString,
Optional: true,
Description: `App instance.
By default, the task is sent to an instance which is available when the task is attempted.`,
},
"service": {
Type: schema.TypeString,
Optional: true,
Description: `App service.
By default, the task is sent to the service which is the default service when the task is attempted.`,
},
"version": {
Type: schema.TypeString,
Optional: true,
Description: `App version.
By default, the task is sent to the version which is the default version when the task is attempted.`,
},
"host": {
Type: schema.TypeString,
Computed: true,
Description: `The host that the task is sent to.`,
},
},
},
},
"http_target": {
Type: schema.TypeList,
Optional: true,
Description: `Modifies HTTP target for HTTP tasks.`,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"header_overrides": {
Type: schema.TypeList,
Optional: true,
Description: `HTTP target headers.
This map contains the header field names and values.
Headers will be set when running the CreateTask and/or BufferTask.
These headers represent a subset of the headers that will be configured for the task's HTTP request.
Some HTTP request headers will be ignored or replaced.
Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values.
The size of the headers must be less than 80KB. Queue-level headers to override headers of all the tasks in the queue.`,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"header": {
Type: schema.TypeList,
Required: true,
Description: `Header embodying a key and a value.`,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"key": {
Type: schema.TypeString,
Required: true,
Description: `The Key of the header.`,
},
"value": {
Type: schema.TypeString,
Required: true,
Description: `The Value of the header.`,
},
},
},
},
},
},
},
"http_method": {
Type: schema.TypeString,
Computed: true,
Optional: true,
ValidateFunc: verify.ValidateEnum([]string{"HTTP_METHOD_UNSPECIFIED", "POST", "GET", "HEAD", "PUT", "DELETE", "PATCH", "OPTIONS", ""}),
Description: `The HTTP method to use for the request.
When specified, it overrides HttpRequest for the task.
Note that if the value is set to GET the body of the task will be ignored at execution time. Possible values: ["HTTP_METHOD_UNSPECIFIED", "POST", "GET", "HEAD", "PUT", "DELETE", "PATCH", "OPTIONS"]`,
},
"oauth_token": {
Type: schema.TypeList,
Optional: true,
Description: `If specified, an OAuth token is generated and attached as the Authorization header in the HTTP request.
This type of authorization should generally be used only when calling Google APIs hosted on *.googleapis.com.
Note that both the service account email and the scope MUST be specified when using the queue-level authorization override.`,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"service_account_email": {
Type: schema.TypeString,
Required: true,
Description: `Service account email to be used for generating OAuth token.
The service account must be within the same project as the queue.
The caller must have iam.serviceAccounts.actAs permission for the service account.`,
},
"scope": {
Type: schema.TypeString,
Computed: true,
Optional: true,
Description: `OAuth scope to be used for generating OAuth access token.
If not specified, "https://www.googleapis.com/auth/cloud-platform" will be used.`,
},
},
},
ConflictsWith: []string{},
},
"oidc_token": {
Type: schema.TypeList,
Optional: true,
Description: `If specified, an OIDC token is generated and attached as an Authorization header in the HTTP request.
This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.
Note that both the service account email and the audience MUST be specified when using the queue-level authorization override.`,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"service_account_email": {
Type: schema.TypeString,
Required: true,
Description: `Service account email to be used for generating OIDC token.
The service account must be within the same project as the queue.
The caller must have iam.serviceAccounts.actAs permission for the service account.`,
},
"audience": {
Type: schema.TypeString,
Computed: true,
Optional: true,
Description: `Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used.`,
},
},
},
ConflictsWith: []string{},
},
"uri_override": {
Type: schema.TypeList,
Optional: true,
Description: `URI override.
When specified, overrides the execution URI for all the tasks in the queue.`,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"host": {
Type: schema.TypeString,
Optional: true,
Description: `Host override.
When specified, replaces the host part of the task URL.
For example, if the task URL is "https://www.google.com", and host value
is set to "example.net", the overridden URI will be changed to "https://example.net".
Host value cannot be an empty string (INVALID_ARGUMENT).`,
},
"path_override": {
Type: schema.TypeList,
Optional: true,
Description: `URI path.
When specified, replaces the existing path of the task URL.
Setting the path value to an empty string clears the URI path segment.`,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"path": {
Type: schema.TypeString,
Computed: true,
Optional: true,
Description: `The URI path (e.g., /users/1234). Default is an empty string.`,
},
},
},
},
"port": {
Type: schema.TypeString,
Optional: true,
Description: `Port override.
When specified, replaces the port part of the task URI.
For instance, for a URI http://www.google.com/foo and port=123, the overridden URI becomes http://www.google.com:123/foo.
Note that the port value must be a positive integer.
Setting the port to 0 (Zero) clears the URI port.`,
},
"query_override": {
Type: schema.TypeList,
Optional: true,
Description: `URI query.
When specified, replaces the query part of the task URI. Setting the query value to an empty string clears the URI query segment.`,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"query_params": {
Type: schema.TypeString,
Computed: true,
Optional: true,
Description: `The query parameters (e.g., qparam1=123&qparam2=456). Default is an empty string.`,
},
},
},
},
"scheme": {
Type: schema.TypeString,
Computed: true,
Optional: true,
ValidateFunc: verify.ValidateEnum([]string{"HTTP", "HTTPS", ""}),
Description: `Scheme override.
When specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS). Possible values: ["HTTP", "HTTPS"]`,
},
"uri_override_enforce_mode": {
Type: schema.TypeString,
Computed: true,
Optional: true,
ValidateFunc: verify.ValidateEnum([]string{"ALWAYS", "IF_NOT_EXISTS", ""}),
Description: `URI Override Enforce Mode
When specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS. Possible values: ["ALWAYS", "IF_NOT_EXISTS"]`,
},
},
},
},
},
},
},
"name": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Description: `The queue name.`,
},
"rate_limits": {
Type: schema.TypeList,
Computed: true,
Optional: true,
Description: `Rate limits for task dispatches.
The queue's actual dispatch rate is the result of:
* Number of tasks in the queue
* User-specified throttling: rateLimits, retryConfig, and the queue's state.
* System throttling due to 429 (Too Many Requests) or 503 (Service
Unavailable) responses from the worker, high error rates, or to
smooth sudden large traffic spikes.`,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"max_concurrent_dispatches": {
Type: schema.TypeInt,
Computed: true,
Optional: true,
Description: `The maximum number of concurrent tasks that Cloud Tasks allows to
be dispatched for this queue. After this threshold has been
reached, Cloud Tasks stops dispatching tasks until the number of
concurrent requests decreases.`,
},
"max_dispatches_per_second": {
Type: schema.TypeFloat,
Computed: true,
Optional: true,
Description: `The maximum rate at which tasks are dispatched from this queue.
If unspecified when the queue is created, Cloud Tasks will pick the default.`,
},
"max_burst_size": {
Type: schema.TypeInt,
Computed: true,
Description: `The max burst size.
Max burst size limits how fast tasks in queue are processed when many tasks are
in the queue and the rate is high. This field allows the queue to have a high
rate so processing starts shortly after a task is enqueued, but still limits
resource usage when many tasks are enqueued in a short period of time.`,
},
},
},
},
"retry_config": {
Type: schema.TypeList,
Computed: true,
Optional: true,
Description: `Settings that determine the retry behavior.`,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"max_attempts": {
Type: schema.TypeInt,
Computed: true,
Optional: true,
Description: `Number of attempts per task.
Cloud Tasks will attempt the task maxAttempts times (that is, if
the first attempt fails, then there will be maxAttempts - 1
retries). Must be >= -1.
If unspecified when the queue is created, Cloud Tasks will pick
the default.
-1 indicates unlimited attempts.`,
},
"max_backoff": {
Type: schema.TypeString,
Computed: true,
Optional: true,
DiffSuppressFunc: tpgresource.DurationDiffSuppress,
Description: `A task will be scheduled for retry between minBackoff and
maxBackoff duration after it fails, if the queue's RetryConfig
specifies that the task should be retried.`,
},
"max_doublings": {
Type: schema.TypeInt,
Computed: true,
Optional: true,
Description: `The time between retries will double maxDoublings times.
A task's retry interval starts at minBackoff, then doubles maxDoublings times,
then increases linearly, and finally retries retries at intervals of maxBackoff
up to maxAttempts times.`,
},
"max_retry_duration": {
Type: schema.TypeString,
Computed: true,
Optional: true,
DiffSuppressFunc: suppressOmittedMaxDuration,
Description: `If positive, maxRetryDuration specifies the time limit for
retrying a failed task, measured from when the task was first
attempted. Once maxRetryDuration time has passed and the task has
been attempted maxAttempts times, no further attempts will be
made and the task will be deleted.
If zero, then the task age is unlimited.`,
},
"min_backoff": {
Type: schema.TypeString,
Computed: true,
Optional: true,
DiffSuppressFunc: tpgresource.DurationDiffSuppress,
Description: `A task will be scheduled for retry between minBackoff and
maxBackoff duration after it fails, if the queue's RetryConfig
specifies that the task should be retried.`,
},
},
},
},
"stackdriver_logging_config": {
Type: schema.TypeList,
Optional: true,
Description: `Configuration options for writing logs to Stackdriver Logging.`,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"sampling_ratio": {
Type: schema.TypeFloat,
Required: true,
Description: `Specifies the fraction of operations to write to Stackdriver Logging.
This field may contain any value between 0.0 and 1.0, inclusive. 0.0 is the
default and means that no operations are logged.`,
},
},
},
},
"project": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
},
},
UseJSONNumber: true,
}
}
func resourceCloudTasksQueueCreate(d *schema.ResourceData, meta interface{}) error {
config := meta.(*transport_tpg.Config)
userAgent, err := tpgresource.GenerateUserAgentString(d, config.UserAgent)
if err != nil {
return err
}
obj := make(map[string]interface{})
nameProp, err := expandCloudTasksQueueName(d.Get("name"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("name"); !tpgresource.IsEmptyValue(reflect.ValueOf(nameProp)) && (ok || !reflect.DeepEqual(v, nameProp)) {
obj["name"] = nameProp
}
appEngineRoutingOverrideProp, err := expandCloudTasksQueueAppEngineRoutingOverride(d.Get("app_engine_routing_override"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("app_engine_routing_override"); !tpgresource.IsEmptyValue(reflect.ValueOf(appEngineRoutingOverrideProp)) && (ok || !reflect.DeepEqual(v, appEngineRoutingOverrideProp)) {
obj["appEngineRoutingOverride"] = appEngineRoutingOverrideProp
}
rateLimitsProp, err := expandCloudTasksQueueRateLimits(d.Get("rate_limits"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("rate_limits"); !tpgresource.IsEmptyValue(reflect.ValueOf(rateLimitsProp)) && (ok || !reflect.DeepEqual(v, rateLimitsProp)) {
obj["rateLimits"] = rateLimitsProp
}
retryConfigProp, err := expandCloudTasksQueueRetryConfig(d.Get("retry_config"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("retry_config"); !tpgresource.IsEmptyValue(reflect.ValueOf(retryConfigProp)) && (ok || !reflect.DeepEqual(v, retryConfigProp)) {
obj["retryConfig"] = retryConfigProp
}
stackdriverLoggingConfigProp, err := expandCloudTasksQueueStackdriverLoggingConfig(d.Get("stackdriver_logging_config"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("stackdriver_logging_config"); !tpgresource.IsEmptyValue(reflect.ValueOf(stackdriverLoggingConfigProp)) && (ok || !reflect.DeepEqual(v, stackdriverLoggingConfigProp)) {
obj["stackdriverLoggingConfig"] = stackdriverLoggingConfigProp
}
httpTargetProp, err := expandCloudTasksQueueHttpTarget(d.Get("http_target"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("http_target"); !tpgresource.IsEmptyValue(reflect.ValueOf(httpTargetProp)) && (ok || !reflect.DeepEqual(v, httpTargetProp)) {
obj["httpTarget"] = httpTargetProp
}
url, err := tpgresource.ReplaceVars(d, config, "{{CloudTasksBasePath}}projects/{{project}}/locations/{{location}}/queues")
if err != nil {
return err
}
log.Printf("[DEBUG] Creating new Queue: %#v", obj)
billingProject := ""
project, err := tpgresource.GetProject(d, config)
if err != nil {
return fmt.Errorf("Error fetching project for Queue: %s", err)
}
billingProject = project
// err == nil indicates that the billing_project value was found
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
billingProject = bp
}
headers := make(http.Header)
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
Config: config,
Method: "POST",
Project: billingProject,
RawURL: url,
UserAgent: userAgent,
Body: obj,
Timeout: d.Timeout(schema.TimeoutCreate),
Headers: headers,
})
if err != nil {
return fmt.Errorf("Error creating Queue: %s", err)
}
// Store the ID now
id, err := tpgresource.ReplaceVars(d, config, "projects/{{project}}/locations/{{location}}/queues/{{name}}")
if err != nil {
return fmt.Errorf("Error constructing id: %s", err)
}
d.SetId(id)
log.Printf("[DEBUG] Finished creating Queue %q: %#v", d.Id(), res)
return resourceCloudTasksQueueRead(d, meta)
}
func resourceCloudTasksQueueRead(d *schema.ResourceData, meta interface{}) error {
config := meta.(*transport_tpg.Config)
userAgent, err := tpgresource.GenerateUserAgentString(d, config.UserAgent)
if err != nil {
return err
}
url, err := tpgresource.ReplaceVars(d, config, "{{CloudTasksBasePath}}projects/{{project}}/locations/{{location}}/queues/{{name}}")
if err != nil {
return err
}
billingProject := ""
project, err := tpgresource.GetProject(d, config)
if err != nil {
return fmt.Errorf("Error fetching project for Queue: %s", err)
}
billingProject = project
// err == nil indicates that the billing_project value was found
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
billingProject = bp
}
headers := make(http.Header)
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
Config: config,
Method: "GET",
Project: billingProject,
RawURL: url,
UserAgent: userAgent,
Headers: headers,
})
if err != nil {
return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("CloudTasksQueue %q", d.Id()))
}
if err := d.Set("project", project); err != nil {
return fmt.Errorf("Error reading Queue: %s", err)
}
if err := d.Set("name", flattenCloudTasksQueueName(res["name"], d, config)); err != nil {
return fmt.Errorf("Error reading Queue: %s", err)
}
if err := d.Set("app_engine_routing_override", flattenCloudTasksQueueAppEngineRoutingOverride(res["appEngineRoutingOverride"], d, config)); err != nil {
return fmt.Errorf("Error reading Queue: %s", err)
}
if err := d.Set("rate_limits", flattenCloudTasksQueueRateLimits(res["rateLimits"], d, config)); err != nil {
return fmt.Errorf("Error reading Queue: %s", err)
}
if err := d.Set("retry_config", flattenCloudTasksQueueRetryConfig(res["retryConfig"], d, config)); err != nil {
return fmt.Errorf("Error reading Queue: %s", err)
}
if err := d.Set("stackdriver_logging_config", flattenCloudTasksQueueStackdriverLoggingConfig(res["stackdriverLoggingConfig"], d, config)); err != nil {
return fmt.Errorf("Error reading Queue: %s", err)
}
if err := d.Set("http_target", flattenCloudTasksQueueHttpTarget(res["httpTarget"], d, config)); err != nil {
return fmt.Errorf("Error reading Queue: %s", err)
}
return nil
}
func resourceCloudTasksQueueUpdate(d *schema.ResourceData, meta interface{}) error {
config := meta.(*transport_tpg.Config)
userAgent, err := tpgresource.GenerateUserAgentString(d, config.UserAgent)
if err != nil {
return err
}
billingProject := ""
project, err := tpgresource.GetProject(d, config)
if err != nil {
return fmt.Errorf("Error fetching project for Queue: %s", err)
}
billingProject = project
obj := make(map[string]interface{})
appEngineRoutingOverrideProp, err := expandCloudTasksQueueAppEngineRoutingOverride(d.Get("app_engine_routing_override"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("app_engine_routing_override"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, appEngineRoutingOverrideProp)) {
obj["appEngineRoutingOverride"] = appEngineRoutingOverrideProp
}
rateLimitsProp, err := expandCloudTasksQueueRateLimits(d.Get("rate_limits"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("rate_limits"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, rateLimitsProp)) {
obj["rateLimits"] = rateLimitsProp
}
retryConfigProp, err := expandCloudTasksQueueRetryConfig(d.Get("retry_config"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("retry_config"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, retryConfigProp)) {
obj["retryConfig"] = retryConfigProp
}
stackdriverLoggingConfigProp, err := expandCloudTasksQueueStackdriverLoggingConfig(d.Get("stackdriver_logging_config"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("stackdriver_logging_config"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, stackdriverLoggingConfigProp)) {
obj["stackdriverLoggingConfig"] = stackdriverLoggingConfigProp
}
httpTargetProp, err := expandCloudTasksQueueHttpTarget(d.Get("http_target"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("http_target"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, httpTargetProp)) {
obj["httpTarget"] = httpTargetProp
}
url, err := tpgresource.ReplaceVars(d, config, "{{CloudTasksBasePath}}projects/{{project}}/locations/{{location}}/queues/{{name}}")
if err != nil {
return err
}
log.Printf("[DEBUG] Updating Queue %q: %#v", d.Id(), obj)
headers := make(http.Header)
updateMask := []string{}
if d.HasChange("app_engine_routing_override") {
updateMask = append(updateMask, "appEngineRoutingOverride")
}
if d.HasChange("rate_limits") {
updateMask = append(updateMask, "rateLimits")
}
if d.HasChange("retry_config") {
updateMask = append(updateMask, "retryConfig")
}
if d.HasChange("stackdriver_logging_config") {
updateMask = append(updateMask, "stackdriverLoggingConfig")
}
if d.HasChange("http_target") {
updateMask = append(updateMask, "httpTarget")
}
// updateMask is a URL parameter but not present in the schema, so ReplaceVars
// won't set it
url, err = transport_tpg.AddQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")})
if err != nil {
return err
}
// err == nil indicates that the billing_project value was found
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
billingProject = bp
}
// if updateMask is empty we are not updating anything so skip the post
if len(updateMask) > 0 {
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
Config: config,
Method: "PATCH",
Project: billingProject,
RawURL: url,
UserAgent: userAgent,
Body: obj,
Timeout: d.Timeout(schema.TimeoutUpdate),
Headers: headers,
})
if err != nil {
return fmt.Errorf("Error updating Queue %q: %s", d.Id(), err)
} else {
log.Printf("[DEBUG] Finished updating Queue %q: %#v", d.Id(), res)
}
}
return resourceCloudTasksQueueRead(d, meta)
}
func resourceCloudTasksQueueDelete(d *schema.ResourceData, meta interface{}) error {
config := meta.(*transport_tpg.Config)
userAgent, err := tpgresource.GenerateUserAgentString(d, config.UserAgent)
if err != nil {
return err
}
billingProject := ""
project, err := tpgresource.GetProject(d, config)
if err != nil {
return fmt.Errorf("Error fetching project for Queue: %s", err)
}
billingProject = project
url, err := tpgresource.ReplaceVars(d, config, "{{CloudTasksBasePath}}projects/{{project}}/locations/{{location}}/queues/{{name}}")
if err != nil {
return err
}
var obj map[string]interface{}
// err == nil indicates that the billing_project value was found
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
billingProject = bp
}
headers := make(http.Header)
log.Printf("[DEBUG] Deleting Queue %q", d.Id())
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
Config: config,
Method: "DELETE",
Project: billingProject,
RawURL: url,
UserAgent: userAgent,
Body: obj,
Timeout: d.Timeout(schema.TimeoutDelete),
Headers: headers,
})
if err != nil {
return transport_tpg.HandleNotFoundError(err, d, "Queue")
}
log.Printf("[DEBUG] Finished deleting Queue %q: %#v", d.Id(), res)
return nil
}
func resourceCloudTasksQueueImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
config := meta.(*transport_tpg.Config)
if err := tpgresource.ParseImportId([]string{
"^projects/(?P<project>[^/]+)/locations/(?P<location>[^/]+)/queues/(?P<name>[^/]+)$",
"^(?P<project>[^/]+)/(?P<location>[^/]+)/(?P<name>[^/]+)$",
"^(?P<location>[^/]+)/(?P<name>[^/]+)$",
}, d, config); err != nil {
return nil, err
}
// Replace import id for the resource id
id, err := tpgresource.ReplaceVars(d, config, "projects/{{project}}/locations/{{location}}/queues/{{name}}")
if err != nil {
return nil, fmt.Errorf("Error constructing id: %s", err)
}
d.SetId(id)
return []*schema.ResourceData{d}, nil
}
func flattenCloudTasksQueueName(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return v
}
return tpgresource.NameFromSelfLinkStateFunc(v)
}
// service, version, and instance are input-only. host is output-only.
func flattenCloudTasksQueueAppEngineRoutingOverride(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
}
original := v.(map[string]interface{})
if len(original) == 0 {
return nil
}
transformed := make(map[string]interface{})
transformed["host"] = original["host"]
if override, ok := d.GetOk("app_engine_routing_override"); ok && len(override.([]interface{})) > 0 {
transformed["service"] = d.Get("app_engine_routing_override.0.service")
transformed["version"] = d.Get("app_engine_routing_override.0.version")
transformed["instance"] = d.Get("app_engine_routing_override.0.instance")
}
return []interface{}{transformed}
}
func flattenCloudTasksQueueRateLimits(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
}
original := v.(map[string]interface{})
if len(original) == 0 {
return nil
}
transformed := make(map[string]interface{})
transformed["max_dispatches_per_second"] =
flattenCloudTasksQueueRateLimitsMaxDispatchesPerSecond(original["maxDispatchesPerSecond"], d, config)
transformed["max_concurrent_dispatches"] =
flattenCloudTasksQueueRateLimitsMaxConcurrentDispatches(original["maxConcurrentDispatches"], d, config)
transformed["max_burst_size"] =
flattenCloudTasksQueueRateLimitsMaxBurstSize(original["maxBurstSize"], d, config)
return []interface{}{transformed}
}
func flattenCloudTasksQueueRateLimitsMaxDispatchesPerSecond(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueRateLimitsMaxConcurrentDispatches(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
// Handles the string fixed64 format
if strVal, ok := v.(string); ok {
if intVal, err := tpgresource.StringToFixed64(strVal); err == nil {
return intVal
}
}
// number values are represented as float64
if floatVal, ok := v.(float64); ok {
intVal := int(floatVal)
return intVal
}
return v // let terraform core handle it otherwise
}
func flattenCloudTasksQueueRateLimitsMaxBurstSize(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
// Handles the string fixed64 format
if strVal, ok := v.(string); ok {
if intVal, err := tpgresource.StringToFixed64(strVal); err == nil {
return intVal
}
}
// number values are represented as float64
if floatVal, ok := v.(float64); ok {
intVal := int(floatVal)
return intVal
}
return v // let terraform core handle it otherwise
}
func flattenCloudTasksQueueRetryConfig(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
}
original := v.(map[string]interface{})
if len(original) == 0 {
return nil
}
transformed := make(map[string]interface{})
transformed["max_attempts"] =
flattenCloudTasksQueueRetryConfigMaxAttempts(original["maxAttempts"], d, config)
transformed["max_retry_duration"] =
flattenCloudTasksQueueRetryConfigMaxRetryDuration(original["maxRetryDuration"], d, config)
transformed["min_backoff"] =
flattenCloudTasksQueueRetryConfigMinBackoff(original["minBackoff"], d, config)
transformed["max_backoff"] =
flattenCloudTasksQueueRetryConfigMaxBackoff(original["maxBackoff"], d, config)
transformed["max_doublings"] =
flattenCloudTasksQueueRetryConfigMaxDoublings(original["maxDoublings"], d, config)
return []interface{}{transformed}
}
func flattenCloudTasksQueueRetryConfigMaxAttempts(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
// Handles the string fixed64 format
if strVal, ok := v.(string); ok {
if intVal, err := tpgresource.StringToFixed64(strVal); err == nil {
return intVal
}
}
// number values are represented as float64
if floatVal, ok := v.(float64); ok {
intVal := int(floatVal)
return intVal
}
return v // let terraform core handle it otherwise
}
func flattenCloudTasksQueueRetryConfigMaxRetryDuration(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueRetryConfigMinBackoff(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueRetryConfigMaxBackoff(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueRetryConfigMaxDoublings(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
// Handles the string fixed64 format
if strVal, ok := v.(string); ok {
if intVal, err := tpgresource.StringToFixed64(strVal); err == nil {
return intVal
}
}
// number values are represented as float64
if floatVal, ok := v.(float64); ok {
intVal := int(floatVal)
return intVal
}
return v // let terraform core handle it otherwise
}
func flattenCloudTasksQueueStackdriverLoggingConfig(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
}
original := v.(map[string]interface{})
if len(original) == 0 {
return nil
}
transformed := make(map[string]interface{})
transformed["sampling_ratio"] =
flattenCloudTasksQueueStackdriverLoggingConfigSamplingRatio(original["samplingRatio"], d, config)
return []interface{}{transformed}
}
func flattenCloudTasksQueueStackdriverLoggingConfigSamplingRatio(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTarget(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
}
original := v.(map[string]interface{})
if len(original) == 0 {
return nil
}
transformed := make(map[string]interface{})
transformed["http_method"] =
flattenCloudTasksQueueHttpTargetHttpMethod(original["httpMethod"], d, config)
transformed["uri_override"] =
flattenCloudTasksQueueHttpTargetUriOverride(original["uriOverride"], d, config)
transformed["header_overrides"] =
flattenCloudTasksQueueHttpTargetHeaderOverrides(original["headerOverrides"], d, config)
transformed["oauth_token"] =
flattenCloudTasksQueueHttpTargetOauthToken(original["oauthToken"], d, config)
transformed["oidc_token"] =
flattenCloudTasksQueueHttpTargetOidcToken(original["oidcToken"], d, config)
return []interface{}{transformed}
}
func flattenCloudTasksQueueHttpTargetHttpMethod(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetUriOverride(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
}
original := v.(map[string]interface{})
if len(original) == 0 {
return nil
}
transformed := make(map[string]interface{})
transformed["scheme"] =
flattenCloudTasksQueueHttpTargetUriOverrideScheme(original["scheme"], d, config)
transformed["host"] =
flattenCloudTasksQueueHttpTargetUriOverrideHost(original["host"], d, config)
transformed["port"] =
flattenCloudTasksQueueHttpTargetUriOverridePort(original["port"], d, config)
transformed["path_override"] =
flattenCloudTasksQueueHttpTargetUriOverridePathOverride(original["pathOverride"], d, config)
transformed["query_override"] =
flattenCloudTasksQueueHttpTargetUriOverrideQueryOverride(original["queryOverride"], d, config)
transformed["uri_override_enforce_mode"] =
flattenCloudTasksQueueHttpTargetUriOverrideUriOverrideEnforceMode(original["uriOverrideEnforceMode"], d, config)
return []interface{}{transformed}
}
func flattenCloudTasksQueueHttpTargetUriOverrideScheme(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetUriOverrideHost(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetUriOverridePort(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetUriOverridePathOverride(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
}
original := v.(map[string]interface{})
if len(original) == 0 {
return nil
}
transformed := make(map[string]interface{})
transformed["path"] =
flattenCloudTasksQueueHttpTargetUriOverridePathOverridePath(original["path"], d, config)
return []interface{}{transformed}
}
func flattenCloudTasksQueueHttpTargetUriOverridePathOverridePath(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetUriOverrideQueryOverride(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
}
original := v.(map[string]interface{})
if len(original) == 0 {
return nil
}
transformed := make(map[string]interface{})
transformed["query_params"] =
flattenCloudTasksQueueHttpTargetUriOverrideQueryOverrideQueryParams(original["queryParams"], d, config)
return []interface{}{transformed}
}
func flattenCloudTasksQueueHttpTargetUriOverrideQueryOverrideQueryParams(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetUriOverrideUriOverrideEnforceMode(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetHeaderOverrides(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return v
}
l := v.([]interface{})
transformed := make([]interface{}, 0, len(l))
for _, raw := range l {
original := raw.(map[string]interface{})
if len(original) < 1 {
// Do not include empty json objects coming back from the api
continue
}
transformed = append(transformed, map[string]interface{}{
"header": flattenCloudTasksQueueHttpTargetHeaderOverridesHeader(original["header"], d, config),
})
}
return transformed
}
func flattenCloudTasksQueueHttpTargetHeaderOverridesHeader(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
}
original := v.(map[string]interface{})
if len(original) == 0 {
return nil
}
transformed := make(map[string]interface{})
transformed["key"] =
flattenCloudTasksQueueHttpTargetHeaderOverridesHeaderKey(original["key"], d, config)
transformed["value"] =
flattenCloudTasksQueueHttpTargetHeaderOverridesHeaderValue(original["value"], d, config)
return []interface{}{transformed}
}
func flattenCloudTasksQueueHttpTargetHeaderOverridesHeaderKey(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetHeaderOverridesHeaderValue(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetOauthToken(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
}
original := v.(map[string]interface{})
if len(original) == 0 {
return nil
}
transformed := make(map[string]interface{})
transformed["service_account_email"] =
flattenCloudTasksQueueHttpTargetOauthTokenServiceAccountEmail(original["serviceAccountEmail"], d, config)
transformed["scope"] =
flattenCloudTasksQueueHttpTargetOauthTokenScope(original["scope"], d, config)
return []interface{}{transformed}
}
func flattenCloudTasksQueueHttpTargetOauthTokenServiceAccountEmail(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetOauthTokenScope(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetOidcToken(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
}
original := v.(map[string]interface{})
if len(original) == 0 {
return nil
}
transformed := make(map[string]interface{})
transformed["service_account_email"] =
flattenCloudTasksQueueHttpTargetOidcTokenServiceAccountEmail(original["serviceAccountEmail"], d, config)
transformed["audience"] =
flattenCloudTasksQueueHttpTargetOidcTokenAudience(original["audience"], d, config)
return []interface{}{transformed}
}
func flattenCloudTasksQueueHttpTargetOidcTokenServiceAccountEmail(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func flattenCloudTasksQueueHttpTargetOidcTokenAudience(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
func expandCloudTasksQueueName(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return tpgresource.ReplaceVars(d, config, "projects/{{project}}/locations/{{location}}/queues/{{name}}")
}
func expandCloudTasksQueueAppEngineRoutingOverride(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedService, err := expandCloudTasksQueueAppEngineRoutingOverrideService(original["service"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedService); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["service"] = transformedService
}
transformedVersion, err := expandCloudTasksQueueAppEngineRoutingOverrideVersion(original["version"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedVersion); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["version"] = transformedVersion
}
transformedInstance, err := expandCloudTasksQueueAppEngineRoutingOverrideInstance(original["instance"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedInstance); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["instance"] = transformedInstance
}
transformedHost, err := expandCloudTasksQueueAppEngineRoutingOverrideHost(original["host"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedHost); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["host"] = transformedHost
}
return transformed, nil
}
func expandCloudTasksQueueAppEngineRoutingOverrideService(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueAppEngineRoutingOverrideVersion(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueAppEngineRoutingOverrideInstance(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueAppEngineRoutingOverrideHost(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueRateLimits(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedMaxDispatchesPerSecond, err := expandCloudTasksQueueRateLimitsMaxDispatchesPerSecond(original["max_dispatches_per_second"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedMaxDispatchesPerSecond); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["maxDispatchesPerSecond"] = transformedMaxDispatchesPerSecond
}
transformedMaxConcurrentDispatches, err := expandCloudTasksQueueRateLimitsMaxConcurrentDispatches(original["max_concurrent_dispatches"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedMaxConcurrentDispatches); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["maxConcurrentDispatches"] = transformedMaxConcurrentDispatches
}
transformedMaxBurstSize, err := expandCloudTasksQueueRateLimitsMaxBurstSize(original["max_burst_size"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedMaxBurstSize); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["maxBurstSize"] = transformedMaxBurstSize
}
return transformed, nil
}
func expandCloudTasksQueueRateLimitsMaxDispatchesPerSecond(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueRateLimitsMaxConcurrentDispatches(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueRateLimitsMaxBurstSize(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueRetryConfig(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedMaxAttempts, err := expandCloudTasksQueueRetryConfigMaxAttempts(original["max_attempts"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedMaxAttempts); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["maxAttempts"] = transformedMaxAttempts
}
transformedMaxRetryDuration, err := expandCloudTasksQueueRetryConfigMaxRetryDuration(original["max_retry_duration"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedMaxRetryDuration); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["maxRetryDuration"] = transformedMaxRetryDuration
}
transformedMinBackoff, err := expandCloudTasksQueueRetryConfigMinBackoff(original["min_backoff"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedMinBackoff); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["minBackoff"] = transformedMinBackoff
}
transformedMaxBackoff, err := expandCloudTasksQueueRetryConfigMaxBackoff(original["max_backoff"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedMaxBackoff); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["maxBackoff"] = transformedMaxBackoff
}
transformedMaxDoublings, err := expandCloudTasksQueueRetryConfigMaxDoublings(original["max_doublings"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedMaxDoublings); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["maxDoublings"] = transformedMaxDoublings
}
return transformed, nil
}
func expandCloudTasksQueueRetryConfigMaxAttempts(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueRetryConfigMaxRetryDuration(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueRetryConfigMinBackoff(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueRetryConfigMaxBackoff(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueRetryConfigMaxDoublings(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueStackdriverLoggingConfig(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedSamplingRatio, err := expandCloudTasksQueueStackdriverLoggingConfigSamplingRatio(original["sampling_ratio"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedSamplingRatio); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["samplingRatio"] = transformedSamplingRatio
}
return transformed, nil
}
func expandCloudTasksQueueStackdriverLoggingConfigSamplingRatio(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTarget(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedHttpMethod, err := expandCloudTasksQueueHttpTargetHttpMethod(original["http_method"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedHttpMethod); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["httpMethod"] = transformedHttpMethod
}
transformedUriOverride, err := expandCloudTasksQueueHttpTargetUriOverride(original["uri_override"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedUriOverride); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["uriOverride"] = transformedUriOverride
}
transformedHeaderOverrides, err := expandCloudTasksQueueHttpTargetHeaderOverrides(original["header_overrides"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedHeaderOverrides); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["headerOverrides"] = transformedHeaderOverrides
}
transformedOauthToken, err := expandCloudTasksQueueHttpTargetOauthToken(original["oauth_token"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedOauthToken); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["oauthToken"] = transformedOauthToken
}
transformedOidcToken, err := expandCloudTasksQueueHttpTargetOidcToken(original["oidc_token"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedOidcToken); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["oidcToken"] = transformedOidcToken
}
return transformed, nil
}
func expandCloudTasksQueueHttpTargetHttpMethod(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetUriOverride(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedScheme, err := expandCloudTasksQueueHttpTargetUriOverrideScheme(original["scheme"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedScheme); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["scheme"] = transformedScheme
}
transformedHost, err := expandCloudTasksQueueHttpTargetUriOverrideHost(original["host"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedHost); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["host"] = transformedHost
}
transformedPort, err := expandCloudTasksQueueHttpTargetUriOverridePort(original["port"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedPort); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["port"] = transformedPort
}
transformedPathOverride, err := expandCloudTasksQueueHttpTargetUriOverridePathOverride(original["path_override"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedPathOverride); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["pathOverride"] = transformedPathOverride
}
transformedQueryOverride, err := expandCloudTasksQueueHttpTargetUriOverrideQueryOverride(original["query_override"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedQueryOverride); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["queryOverride"] = transformedQueryOverride
}
transformedUriOverrideEnforceMode, err := expandCloudTasksQueueHttpTargetUriOverrideUriOverrideEnforceMode(original["uri_override_enforce_mode"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedUriOverrideEnforceMode); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["uriOverrideEnforceMode"] = transformedUriOverrideEnforceMode
}
return transformed, nil
}
func expandCloudTasksQueueHttpTargetUriOverrideScheme(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetUriOverrideHost(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetUriOverridePort(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetUriOverridePathOverride(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedPath, err := expandCloudTasksQueueHttpTargetUriOverridePathOverridePath(original["path"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedPath); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["path"] = transformedPath
}
return transformed, nil
}
func expandCloudTasksQueueHttpTargetUriOverridePathOverridePath(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetUriOverrideQueryOverride(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedQueryParams, err := expandCloudTasksQueueHttpTargetUriOverrideQueryOverrideQueryParams(original["query_params"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedQueryParams); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["queryParams"] = transformedQueryParams
}
return transformed, nil
}
func expandCloudTasksQueueHttpTargetUriOverrideQueryOverrideQueryParams(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetUriOverrideUriOverrideEnforceMode(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetHeaderOverrides(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
req := make([]interface{}, 0, len(l))
for _, raw := range l {
if raw == nil {
continue
}
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedHeader, err := expandCloudTasksQueueHttpTargetHeaderOverridesHeader(original["header"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedHeader); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["header"] = transformedHeader
}
req = append(req, transformed)
}
return req, nil
}
func expandCloudTasksQueueHttpTargetHeaderOverridesHeader(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedKey, err := expandCloudTasksQueueHttpTargetHeaderOverridesHeaderKey(original["key"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedKey); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["key"] = transformedKey
}
transformedValue, err := expandCloudTasksQueueHttpTargetHeaderOverridesHeaderValue(original["value"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedValue); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["value"] = transformedValue
}
return transformed, nil
}
func expandCloudTasksQueueHttpTargetHeaderOverridesHeaderKey(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetHeaderOverridesHeaderValue(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetOauthToken(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedServiceAccountEmail, err := expandCloudTasksQueueHttpTargetOauthTokenServiceAccountEmail(original["service_account_email"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedServiceAccountEmail); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["serviceAccountEmail"] = transformedServiceAccountEmail
}
transformedScope, err := expandCloudTasksQueueHttpTargetOauthTokenScope(original["scope"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedScope); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["scope"] = transformedScope
}
return transformed, nil
}
func expandCloudTasksQueueHttpTargetOauthTokenServiceAccountEmail(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetOauthTokenScope(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetOidcToken(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})
transformedServiceAccountEmail, err := expandCloudTasksQueueHttpTargetOidcTokenServiceAccountEmail(original["service_account_email"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedServiceAccountEmail); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["serviceAccountEmail"] = transformedServiceAccountEmail
}
transformedAudience, err := expandCloudTasksQueueHttpTargetOidcTokenAudience(original["audience"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedAudience); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["audience"] = transformedAudience
}
return transformed, nil
}
func expandCloudTasksQueueHttpTargetOidcTokenServiceAccountEmail(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
func expandCloudTasksQueueHttpTargetOidcTokenAudience(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}