diff --git a/.changelog/9825.txt b/.changelog/9825.txt new file mode 100644 index 00000000000..fea14409b2d --- /dev/null +++ b/.changelog/9825.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +workflows: add support for `call_log_level` to resource `google_workflows_workflow` +``` diff --git a/google/services/workflows/resource_workflows_workflow.go b/google/services/workflows/resource_workflows_workflow.go index c0c9cc67af5..a1c7aaf34eb 100644 --- a/google/services/workflows/resource_workflows_workflow.go +++ b/google/services/workflows/resource_workflows_workflow.go @@ -31,6 +31,7 @@ import ( "github.com/hashicorp/terraform-provider-google/google/tpgresource" transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport" + "github.com/hashicorp/terraform-provider-google/google/verify" ) func ResourceWorkflowsWorkflow() *schema.Resource { @@ -61,6 +62,14 @@ func ResourceWorkflowsWorkflow() *schema.Resource { ), Schema: map[string]*schema.Schema{ + "call_log_level": { + Type: schema.TypeString, + Optional: true, + ValidateFunc: verify.ValidateEnum([]string{"CALL_LOG_LEVEL_UNSPECIFIED", "LOG_ALL_CALLS", "LOG_ERRORS_ONLY", "LOG_NONE", ""}), + Description: `Describes the level of platform logging to apply to calls and call responses during +executions of this workflow. If both the workflow and the execution specify a logging level, +the execution level takes precedence. Possible values: ["CALL_LOG_LEVEL_UNSPECIFIED", "LOG_ALL_CALLS", "LOG_ERRORS_ONLY", "LOG_NONE"]`, + }, "crypto_key_name": { Type: schema.TypeString, Optional: true, @@ -113,7 +122,7 @@ Modifying this field for an existing workflow results in a new workflow revision "source_contents": { Type: schema.TypeString, Optional: true, - Description: `Workflow code to be executed. The size limit is 32KB.`, + Description: `Workflow code to be executed. The size limit is 128KB.`, }, "user_env_vars": { Type: schema.TypeMap, @@ -210,6 +219,12 @@ func resourceWorkflowsWorkflowCreate(d *schema.ResourceData, meta interface{}) e } else if v, ok := d.GetOkExists("crypto_key_name"); !tpgresource.IsEmptyValue(reflect.ValueOf(cryptoKeyNameProp)) && (ok || !reflect.DeepEqual(v, cryptoKeyNameProp)) { obj["cryptoKeyName"] = cryptoKeyNameProp } + callLogLevelProp, err := expandWorkflowsWorkflowCallLogLevel(d.Get("call_log_level"), d, config) + if err != nil { + return err + } else if v, ok := d.GetOkExists("call_log_level"); !tpgresource.IsEmptyValue(reflect.ValueOf(callLogLevelProp)) && (ok || !reflect.DeepEqual(v, callLogLevelProp)) { + obj["callLogLevel"] = callLogLevelProp + } userEnvVarsProp, err := expandWorkflowsWorkflowUserEnvVars(d.Get("user_env_vars"), d, config) if err != nil { return err @@ -366,6 +381,9 @@ func resourceWorkflowsWorkflowRead(d *schema.ResourceData, meta interface{}) err if err := d.Set("crypto_key_name", flattenWorkflowsWorkflowCryptoKeyName(res["cryptoKeyName"], d, config)); err != nil { return fmt.Errorf("Error reading Workflow: %s", err) } + if err := d.Set("call_log_level", flattenWorkflowsWorkflowCallLogLevel(res["callLogLevel"], d, config)); err != nil { + return fmt.Errorf("Error reading Workflow: %s", err) + } if err := d.Set("user_env_vars", flattenWorkflowsWorkflowUserEnvVars(res["userEnvVars"], d, config)); err != nil { return fmt.Errorf("Error reading Workflow: %s", err) } @@ -419,6 +437,12 @@ func resourceWorkflowsWorkflowUpdate(d *schema.ResourceData, meta interface{}) e } else if v, ok := d.GetOkExists("crypto_key_name"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, cryptoKeyNameProp)) { obj["cryptoKeyName"] = cryptoKeyNameProp } + callLogLevelProp, err := expandWorkflowsWorkflowCallLogLevel(d.Get("call_log_level"), d, config) + if err != nil { + return err + } else if v, ok := d.GetOkExists("call_log_level"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, callLogLevelProp)) { + obj["callLogLevel"] = callLogLevelProp + } userEnvVarsProp, err := expandWorkflowsWorkflowUserEnvVars(d.Get("user_env_vars"), d, config) if err != nil { return err @@ -461,6 +485,10 @@ func resourceWorkflowsWorkflowUpdate(d *schema.ResourceData, meta interface{}) e updateMask = append(updateMask, "cryptoKeyName") } + if d.HasChange("call_log_level") { + updateMask = append(updateMask, "callLogLevel") + } + if d.HasChange("user_env_vars") { updateMask = append(updateMask, "userEnvVars") } @@ -617,6 +645,10 @@ func flattenWorkflowsWorkflowCryptoKeyName(v interface{}, d *schema.ResourceData return v } +func flattenWorkflowsWorkflowCallLogLevel(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} { + return v +} + func flattenWorkflowsWorkflowUserEnvVars(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} { return v } @@ -660,6 +692,10 @@ func expandWorkflowsWorkflowCryptoKeyName(v interface{}, d tpgresource.Terraform return v, nil } +func expandWorkflowsWorkflowCallLogLevel(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) { + return v, nil +} + func expandWorkflowsWorkflowUserEnvVars(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]string, error) { if v == nil { return map[string]string{}, nil diff --git a/google/services/workflows/resource_workflows_workflow_generated_test.go b/google/services/workflows/resource_workflows_workflow_generated_test.go index f56816e8fa2..d9e56f2a2e7 100644 --- a/google/services/workflows/resource_workflows_workflow_generated_test.go +++ b/google/services/workflows/resource_workflows_workflow_generated_test.go @@ -61,6 +61,7 @@ resource "google_workflows_workflow" "example" { region = "us-central1" description = "Magic" service_account = google_service_account.test_account.id + call_log_level = "LOG_ERRORS_ONLY" labels = { env = "test" } diff --git a/google/services/workflows/resource_workflows_workflow_test.go b/google/services/workflows/resource_workflows_workflow_test.go index 05fad551e30..a178a1f3ba3 100644 --- a/google/services/workflows/resource_workflows_workflow_test.go +++ b/google/services/workflows/resource_workflows_workflow_test.go @@ -38,9 +38,10 @@ func TestAccWorkflowsWorkflow_Update(t *testing.T) { func testAccWorkflowsWorkflow_Update(name string) string { return fmt.Sprintf(` resource "google_workflows_workflow" "example" { - name = "%s" - region = "us-central1" - description = "Magic" + name = "%s" + region = "us-central1" + description = "Magic" + call_log_level = "LOG_ERRORS_ONLY" user_env_vars = { url = "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam" } @@ -78,9 +79,10 @@ EOF func testAccWorkflowsWorkflow_Updated(name string) string { return fmt.Sprintf(` resource "google_workflows_workflow" "example" { - name = "%s" - region = "us-central1" - description = "Magic" + name = "%s" + region = "us-central1" + description = "Magic" + call_log_level = "LOG_ERRORS_ONLY" user_env_vars = { url = "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam" } diff --git a/website/docs/r/workflows_workflow.html.markdown b/website/docs/r/workflows_workflow.html.markdown index 8376c5de47f..17cfbab3391 100644 --- a/website/docs/r/workflows_workflow.html.markdown +++ b/website/docs/r/workflows_workflow.html.markdown @@ -47,6 +47,7 @@ resource "google_workflows_workflow" "example" { region = "us-central1" description = "Magic" service_account = google_service_account.test_account.id + call_log_level = "LOG_ERRORS_ONLY" labels = { env = "test" } @@ -120,13 +121,20 @@ The following arguments are supported: * `source_contents` - (Optional) - Workflow code to be executed. The size limit is 32KB. + Workflow code to be executed. The size limit is 128KB. * `crypto_key_name` - (Optional) The KMS key used to encrypt workflow and execution data. Format: projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{cryptoKey} +* `call_log_level` - + (Optional) + Describes the level of platform logging to apply to calls and call responses during + executions of this workflow. If both the workflow and the execution specify a logging level, + the execution level takes precedence. + Possible values are: `CALL_LOG_LEVEL_UNSPECIFIED`, `LOG_ALL_CALLS`, `LOG_ERRORS_ONLY`, `LOG_NONE`. + * `user_env_vars` - (Optional) User-defined environment variables associated with this workflow revision. This map has a maximum length of 20. Each string can take up to 4KiB. Keys cannot be empty strings and cannot start with “GOOGLE” or “WORKFLOWS".