Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,26 @@ func ResourceComposerEnvironment() *schema.Resource {
ValidateFunc: validateComposerInternalIpv4CidrBlock,
Description: `IPv4 cidr range that will be used by Composer internal components.`,
},
{{- if ne $.TargetVersionName "ga" }}
"traffic_routing_config": {
Type: schema.TypeList,
Optional: true,
Computed: true,
MaxItems: 1,
Description: `Traffic routing configuration for Cloud Composer environment.`,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"cloud_run_functions_routing": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: validation.StringInSlice([]string{"DIRECT", "VIA_NETWORK_ATTACHMENT"}, false),
Description: `Traffic routing mode for Cloud Run functions. Possible values: ["DIRECT", "VIA_NETWORK_ATTACHMENT"]`,
},
},
},
},
{{- end }}
},
},
},
Expand Down Expand Up @@ -1295,6 +1315,23 @@ func resourceComposerEnvironmentUpdate(d *schema.ResourceData, meta interface{})
}
}

{{ if ne $.TargetVersionName `ga` -}}
if d.HasChange("config.0.node_config.0.traffic_routing_config") {
patchObj := &composer.Environment{
Config: &composer.EnvironmentConfig{
NodeConfig: &composer.NodeConfig{},
},
}
if config != nil && config.NodeConfig != nil {
patchObj.Config.NodeConfig.TrafficRoutingConfig = config.NodeConfig.TrafficRoutingConfig
}
err = resourceComposerEnvironmentPatchField("config.nodeConfig.trafficRoutingConfig", userAgent, patchObj, d, tfConfig)
if err != nil {
return err
}
}
{{- end }}

if d.HasChange("config.0.software_config.0.image_version") {
patchObj := &composer.Environment{
Config: &composer.EnvironmentConfig{
Expand Down Expand Up @@ -1990,6 +2027,9 @@ func flattenComposerEnvironmentConfigNodeConfig(nodeCfg *composer.NodeConfig) in
transformed["tags"] = flattenComposerEnvironmentConfigNodeConfigTags(nodeCfg.Tags)
transformed["ip_allocation_policy"] = flattenComposerEnvironmentConfigNodeConfigIPAllocationPolicy(nodeCfg.IpAllocationPolicy)
transformed["composer_internal_ipv4_cidr_block"] = nodeCfg.ComposerInternalIpv4CidrBlock
{{- if ne $.TargetVersionName "ga" }}
transformed["traffic_routing_config"] = flattenComposerEnvironmentConfigNodeConfigTrafficRoutingConfig(nodeCfg.TrafficRoutingConfig)
{{- end }}
return []interface{}{transformed}
}

Expand All @@ -2007,6 +2047,17 @@ func flattenComposerEnvironmentConfigNodeConfigIPAllocationPolicy(ipPolicy *comp
return []interface{}{transformed}
}

{{ if ne $.TargetVersionName `ga` -}}
func flattenComposerEnvironmentConfigNodeConfigTrafficRoutingConfig(cfg *composer.TrafficRoutingConfig) interface{} {
if cfg == nil {
return nil
}
transformed := make(map[string]interface{})
transformed["cloud_run_functions_routing"] = cfg.CloudRunFunctionsRouting
return []interface{}{transformed}
}
{{- end }}

func flattenComposerEnvironmentConfigNodeConfigOauthScopes(v interface{}) interface{} {
if v == nil {
return v
Expand Down Expand Up @@ -2645,9 +2696,38 @@ func expandComposerEnvironmentConfigNodeConfig(v interface{}, d *schema.Resource
transformed.ComposerInternalIpv4CidrBlock = transformedComposerInternalIpv4CidrBlock.(string)
}

{{ if ne $.TargetVersionName `ga` -}}
transformedTrafficRoutingConfig, err := expandComposerEnvironmentTrafficRoutingConfig(original["traffic_routing_config"], d, config)
if err != nil {
return nil, err
}
transformed.TrafficRoutingConfig = transformedTrafficRoutingConfig
{{- end }}

return transformed, nil
}

{{ if ne $.TargetVersionName `ga` -}}
func expandComposerEnvironmentTrafficRoutingConfig(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) (*composer.TrafficRoutingConfig, error) {
if v == nil {
return nil, nil
}
l, ok := v.([]interface{})
if !ok || len(l) == 0 || l[0] == nil {
return nil, nil
}
raw := l[0]
original := raw.(map[string]interface{})
transformed := &composer.TrafficRoutingConfig{}

if v, ok := original["cloud_run_functions_routing"]; ok && v != nil {
transformed.CloudRunFunctionsRouting = v.(string)
}

return transformed, nil
}
{{- end }}

func expandComposerEnvironmentIPAllocationPolicy(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) (*composer.IPAllocationPolicy, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
Expand Down Expand Up @@ -3138,6 +3218,7 @@ func versionValidationCustomizeDiffFunc(ctx context.Context, d *schema.ResourceD
"config.0.master_authorized_networks_config": false,
"config.0.node_config.0.composer_network_attachment": true, // allowed only in composer 3
"config.0.node_config.0.composer_internal_ipv4_cidr_block": true,
"config.0.node_config.0.traffic_routing_config": true,
"config.0.software_config.0.web_server_plugins_mode": true,
"config.0.enable_private_environment": true,
"config.0.enable_private_builds_only": true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ fields:
- api_field: 'config.nodeConfig.machineType'
{{- if ne $.TargetVersionName "ga" }}
- api_field: 'config.nodeConfig.maxPodsPerNode'
- api_field: 'config.nodeConfig.trafficRoutingConfig.cloudRunFunctionsRouting'
{{- end }}
- api_field: 'config.nodeConfig.network'
- api_field: 'config.nodeConfig.oauthScopes'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -598,6 +598,20 @@ block supports:
/20 IPv4 cidr range that will be used by the environment's internal
components. Cannot be updated.

* `traffic_routing_config` -
(Optional, [Beta](../guides/provider_versions.html.markdown),
Managed Airflow (Gen 3) only)
Traffic routing configuration for Cloud Composer environment.
Structure is [documented below](#nested_traffic_routing_config).


<a name="nested_traffic_routing_config"></a>The `traffic_routing_config` block supports:

* `cloud_run_functions_routing` -
(Optional, [Beta](../guides/provider_versions.html.markdown))
Traffic routing mode for Cloud Run functions. Possible values: `DIRECT`, `VIA_NETWORK_ATTACHMENT`.
If unspecified, defaults to `DIRECT`.

<a name="nested_software_config_gen_3"></a>The `software_config` block supports:

* `airflow_config_overrides` -
Expand Down