Skip to content

Commit 58f6f12

Browse files
Adding Datasource: google_composer_user_workloads_config_map (#10680) (#7519)
[upstream:037390f1e6ea93e7b540dca24d376c03d415d2d0] Signed-off-by: Modular Magician <[email protected]>
1 parent 365fda1 commit 58f6f12

File tree

5 files changed

+176
-0
lines changed

5 files changed

+176
-0
lines changed

.changelog/10680.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:new-datasource
2+
`google_composer_user_workloads_config_map` (beta)
3+
```

google-beta/provider/provider_mmv1_resources.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ var handwrittenDatasources = map[string]*schema.Resource{
184184
"google_cloud_run_v2_job": cloudrunv2.DataSourceGoogleCloudRunV2Job(),
185185
"google_cloud_run_v2_service": cloudrunv2.DataSourceGoogleCloudRunV2Service(),
186186
"google_composer_environment": composer.DataSourceGoogleComposerEnvironment(),
187+
"google_composer_user_workloads_config_map": composer.DataSourceGoogleComposerUserWorkloadsConfigMap(),
187188
"google_composer_user_workloads_secret": composer.DataSourceGoogleComposerUserWorkloadsSecret(),
188189
"google_composer_image_versions": composer.DataSourceGoogleComposerImageVersions(),
189190
"google_compute_address": compute.DataSourceGoogleComputeAddress(),
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: MPL-2.0
3+
package composer
4+
5+
import (
6+
"fmt"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
10+
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
11+
)
12+
13+
func DataSourceGoogleComposerUserWorkloadsConfigMap() *schema.Resource {
14+
dsSchema := tpgresource.DatasourceSchemaFromResourceSchema(ResourceComposerUserWorkloadsConfigMap().Schema)
15+
16+
// Set 'Required' schema elements
17+
tpgresource.AddRequiredFieldsToSchema(dsSchema, "environment", "name")
18+
19+
// Set 'Optional' schema elements
20+
tpgresource.AddOptionalFieldsToSchema(dsSchema, "project", "region")
21+
22+
return &schema.Resource{
23+
Read: dataSourceGoogleComposerUserWorkloadsConfigMapRead,
24+
Schema: dsSchema,
25+
}
26+
}
27+
28+
func dataSourceGoogleComposerUserWorkloadsConfigMapRead(d *schema.ResourceData, meta interface{}) error {
29+
config := meta.(*transport_tpg.Config)
30+
31+
id, err := tpgresource.ReplaceVars(d, config, "projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsConfigMaps/{{name}}")
32+
if err != nil {
33+
return fmt.Errorf("Error constructing id: %s", err)
34+
}
35+
d.SetId(id)
36+
37+
err = resourceComposerUserWorkloadsConfigMapRead(d, meta)
38+
if err != nil {
39+
return err
40+
}
41+
42+
if err := tpgresource.SetDataSourceLabels(d); err != nil {
43+
return err
44+
}
45+
46+
if d.Id() == "" {
47+
return fmt.Errorf("%s not found", id)
48+
}
49+
50+
return nil
51+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: MPL-2.0
3+
package composer_test
4+
5+
import (
6+
"fmt"
7+
"testing"
8+
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
10+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/acctest"
11+
)
12+
13+
func TestAccDataSourceComposerUserWorkloadsConfigMap_basic(t *testing.T) {
14+
t.Parallel()
15+
16+
context := map[string]interface{}{
17+
"env_name": fmt.Sprintf("%s-%d", testComposerEnvironmentPrefix, acctest.RandInt(t)),
18+
"config_map_name": fmt.Sprintf("tf-test-composer-config-map-%d", acctest.RandInt(t)),
19+
}
20+
21+
acctest.VcrTest(t, resource.TestCase{
22+
PreCheck: func() { acctest.AccTestPreCheck(t) },
23+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
24+
Steps: []resource.TestStep{
25+
{
26+
Config: testAccDataSourceComposerUserWorkloadsConfigMap_basic(context),
27+
Check: resource.ComposeTestCheckFunc(
28+
acctest.CheckDataSourceStateMatchesResourceState("data.google_composer_user_workloads_config_map.test",
29+
"google_composer_user_workloads_config_map.test"),
30+
),
31+
},
32+
},
33+
})
34+
}
35+
36+
func testAccDataSourceComposerUserWorkloadsConfigMap_basic(context map[string]interface{}) string {
37+
return acctest.Nprintf(`
38+
resource "google_composer_environment" "test" {
39+
name = "%{env_name}"
40+
config {
41+
software_config {
42+
image_version = "composer-3-airflow-2"
43+
}
44+
}
45+
}
46+
resource "google_composer_user_workloads_config_map" "test" {
47+
environment = google_composer_environment.test.name
48+
name = "%{config_map_name}"
49+
data = {
50+
db_host: "dbhost:5432",
51+
api_host: "apihost:443",
52+
}
53+
}
54+
data "google_composer_user_workloads_config_map" "test" {
55+
name = google_composer_user_workloads_config_map.test.name
56+
environment = google_composer_environment.test.name
57+
}
58+
`, context)
59+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
---
2+
subcategory: "Cloud Composer"
3+
description: |-
4+
User workloads ConfigMap used by Airflow tasks that run with Kubernetes Executor or KubernetesPodOperator.
5+
---
6+
7+
# google\_composer\_user\_workloads\_config\_map
8+
9+
Provides access to Kubernetes ConfigMap configuration for a given project, region and Composer Environment.
10+
11+
> **Warning:** This data source is in beta, and should be used with the terraform-provider-google-beta provider.
12+
See [Provider Versions](https://terraform.io/docs/providers/google/guides/provider_versions.html) for more details on beta resources.
13+
14+
## Example Usage
15+
16+
```hcl
17+
resource "google_composer_environment" "example" {
18+
name = "example-environment"
19+
config{
20+
software_config {
21+
image_version = "composer-3-airflow-2"
22+
}
23+
}
24+
}
25+
resource "google_composer_user_workloads_config_map" "example" {
26+
environment = google_composer_environment.example.name
27+
name = "example-config-map"
28+
data = {
29+
db_host: "dbhost:5432",
30+
api_host: "apihost:443",
31+
}
32+
}
33+
data "google_composer_user_workloads_config_map" "example" {
34+
environment = google_composer_environment.example.name
35+
name = resource.google_composer_user_workloads_config_map.example.name
36+
}
37+
output "debug" {
38+
value = data.google_composer_user_workloads_config_map.example
39+
}
40+
```
41+
42+
## Argument Reference
43+
44+
The following arguments are supported:
45+
46+
* `name` - (Required) Name of the ConfigMap.
47+
48+
* `environment` - (Required) Environment where the ConfigMap is stored.
49+
50+
* `project` - (Optional) The ID of the project in which the resource belongs.
51+
If it is not provided, the provider project is used.
52+
53+
* `region` - (Optional) The location or Compute Engine region of the environment.
54+
55+
## Attributes Reference
56+
57+
The following attributes are exported:
58+
59+
* `id` - An identifier for the resource in format `projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsConfigMaps/{{name}}`
60+
61+
* `data` - The "data" field of Kubernetes ConfigMap, organized in key-value pairs.
62+
For details see: https://kubernetes.io/docs/concepts/configuration/configmap/

0 commit comments

Comments
 (0)