Skip to content

Commit 6ee6e72

Browse files
tulika-aakritiBBBmau
authored andcommitted
Feat add oracledatabase_autonomous_databases datasource (GoogleCloudPlatform#12018)
1 parent 41fb219 commit 6ee6e72

File tree

4 files changed

+192
-0
lines changed

4 files changed

+192
-0
lines changed

mmv1/third_party/terraform/provider/provider_mmv1_resources.go.tmpl

+1
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ var handwrittenDatasources = map[string]*schema.Resource{
168168
"google_monitoring_app_engine_service": monitoring.DataSourceMonitoringServiceAppEngine(),
169169
"google_monitoring_uptime_check_ips": monitoring.DataSourceGoogleMonitoringUptimeCheckIps(),
170170
"google_netblock_ip_ranges": resourcemanager.DataSourceGoogleNetblockIpRanges(),
171+
"google_oracle_database_autonomous_databases": oracledatabase.DataSourceOracleDatabaseAutonomousDatabases(),
171172
"google_oracle_database_db_nodes": oracledatabase.DataSourceOracleDatabaseDbNodes(),
172173
"google_oracle_database_db_servers": oracledatabase.DataSourceOracleDatabaseDbServers(),
173174
"google_oracle_database_cloud_exadata_infrastructures": oracledatabase.DataSourceOracleDatabaseCloudExadataInfrastructures(),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package oracledatabase
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
7+
"github.com/hashicorp/terraform-provider-google/google/tpgresource"
8+
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
9+
)
10+
11+
func DataSourceOracleDatabaseAutonomousDatabases() *schema.Resource {
12+
dsSchema := map[string]*schema.Schema{
13+
"project": {
14+
Type: schema.TypeString,
15+
Optional: true,
16+
Description: "The ID of the project in which the dataset is located. If it is not provided, the provider project is used.",
17+
},
18+
"location": {
19+
Type: schema.TypeString,
20+
Required: true,
21+
Description: "location",
22+
},
23+
"autonomous_databases": {
24+
Type: schema.TypeList,
25+
Computed: true,
26+
Elem: &schema.Resource{
27+
Schema: tpgresource.DatasourceSchemaFromResourceSchema(ResourceOracleDatabaseAutonomousDatabase().Schema),
28+
},
29+
},
30+
}
31+
return &schema.Resource{
32+
Read: dataSourceOracleDatabaseAutonomousDatabasesRead,
33+
Schema: dsSchema,
34+
}
35+
36+
}
37+
38+
func dataSourceOracleDatabaseAutonomousDatabasesRead(d *schema.ResourceData, meta interface{}) error {
39+
config := meta.(*transport_tpg.Config)
40+
userAgent, err := tpgresource.GenerateUserAgentString(d, config.UserAgent)
41+
if err != nil {
42+
return err
43+
}
44+
45+
url, err := tpgresource.ReplaceVars(d, config, "{{OracleDatabaseBasePath}}projects/{{project}}/locations/{{location}}/autonomousDatabases")
46+
if err != nil {
47+
return fmt.Errorf("Error constructing id: %s", err)
48+
}
49+
50+
billingProject := ""
51+
project, err := tpgresource.GetProject(d, config)
52+
if err != nil {
53+
return fmt.Errorf("Error fetching project for autonomousDatabases: %s", err)
54+
}
55+
billingProject = project
56+
// err == nil indicates that the billing_project value was found
57+
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
58+
billingProject = bp
59+
}
60+
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
61+
Config: config,
62+
Method: "GET",
63+
Project: billingProject,
64+
RawURL: url,
65+
UserAgent: userAgent,
66+
})
67+
68+
if err != nil {
69+
return fmt.Errorf("Error reading autonomousDatabases: %s", err)
70+
}
71+
72+
if err := d.Set("project", project); err != nil {
73+
return fmt.Errorf("Error setting autonomousDatabases project: %s", err)
74+
}
75+
76+
if err := d.Set("autonomous_databases", flattenOracleDatabaseautonomousDatabases(res["autonomousDatabases"], d, config)); err != nil {
77+
return fmt.Errorf("Error setting autonomousDatabases: %s", err)
78+
}
79+
80+
id, err := tpgresource.ReplaceVars(d, config, "projects/{{project}}/locations/{{location}}/autonomousDatabases")
81+
if err != nil {
82+
return fmt.Errorf("Error constructing id: %s", err)
83+
}
84+
d.SetId(id)
85+
86+
return nil
87+
}
88+
89+
func flattenOracleDatabaseautonomousDatabases(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) []map[string]interface{} {
90+
if v == nil {
91+
return nil
92+
}
93+
l := v.([]interface{})
94+
transformed := make([]map[string]interface{}, 0)
95+
for _, raw := range l {
96+
original := raw.(map[string]interface{})
97+
transformed = append(transformed, map[string]interface{}{
98+
"name": flattenOracleDatabaseAutonomousDatabaseName(original["name"], d, config),
99+
"database": flattenOracleDatabaseAutonomousDatabaseDatabase(original["database"], d, config),
100+
"display_name": flattenOracleDatabaseAutonomousDatabaseDisplayName(original["displayName"], d, config),
101+
"entitlement_id": flattenOracleDatabaseAutonomousDatabaseEntitlementId(original["entitlementId"], d, config),
102+
"properties": flattenOracleDatabaseAutonomousDatabaseProperties(original["properties"], d, config),
103+
"labels": flattenOracleDatabaseAutonomousDatabaseLabels(original["labels"], d, config),
104+
"network": flattenOracleDatabaseAutonomousDatabaseNetwork(original["network"], d, config),
105+
"cidr": flattenOracleDatabaseAutonomousDatabaseCidr(original["cidr"], d, config),
106+
"create_time": flattenOracleDatabaseAutonomousDatabaseCreateTime(original["createTime"], d, config),
107+
"terraform_labels": flattenOracleDatabaseAutonomousDatabaseTerraformLabels(original["labels"], d, config),
108+
"effective_labels": flattenOracleDatabaseAutonomousDatabaseEffectiveLabels(original["labels"], d, config),
109+
})
110+
}
111+
return transformed
112+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package oracledatabase_test
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
8+
"github.com/hashicorp/terraform-provider-google/google/acctest"
9+
)
10+
11+
func TestAccOracleDatabaseAutonomousDatabases_basic(t *testing.T) {
12+
t.Parallel()
13+
acctest.VcrTest(t, resource.TestCase{
14+
PreCheck: func() { acctest.AccTestPreCheck(t) },
15+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
16+
Steps: []resource.TestStep{
17+
{
18+
Config: testAccOracleDatabaseAutonomousDatabases_basic(),
19+
Check: resource.ComposeTestCheckFunc(
20+
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.#"),
21+
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.display_name"),
22+
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.cidr"),
23+
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.network"),
24+
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.entitlement_id"),
25+
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.database"),
26+
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.properties.#"),
27+
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.properties.0.state"),
28+
),
29+
},
30+
},
31+
})
32+
}
33+
34+
func testAccOracleDatabaseAutonomousDatabases_basic() string {
35+
return fmt.Sprintf(`
36+
data "google_oracle_database_autonomous_databases" "my-adbs"{
37+
location = "us-east4"
38+
project = "oci-terraform-testing"
39+
}
40+
`)
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
subcategory: "Oracle Database"
3+
description: |-
4+
List all AutonomousDatabases.
5+
---
6+
7+
# google_oracle_database_autonomous_databases
8+
9+
List all AutonomousDatabases.
10+
11+
For more information see the
12+
[API](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.autonomousDatabases).
13+
14+
## Example Usage
15+
16+
```hcl
17+
data "google_oracle_database_autonomous_databases" "my-adbs"{
18+
location = "us-east4"
19+
}
20+
```
21+
22+
## Argument Reference
23+
24+
The following arguments are supported:
25+
26+
* `location` - (Required) The location of the resource.
27+
28+
- - -
29+
* `project` - (Optional) The project to which the resource belongs. If it
30+
is not provided, the provider project is used.
31+
32+
## Attributes Reference
33+
34+
The following attributes are exported:
35+
36+
* `AutonomousDatabases` - A list of AutonomousDatabases.
37+
38+
See [google_oracle_database_autonomous_database](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_oracle_database_autonomous_database#argument-reference) resource for details of the available attributes.

0 commit comments

Comments
 (0)