Skip to content

Commit

Permalink
Feat add oracledatabase_autonomous_databases datasource (GoogleCloudP…
Browse files Browse the repository at this point in the history
  • Loading branch information
tulika-aakriti authored and BBBmau committed Nov 5, 2024
1 parent 8ba9928 commit cd48b48
Show file tree
Hide file tree
Showing 4 changed files with 192 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ var handwrittenDatasources = map[string]*schema.Resource{
"google_monitoring_app_engine_service": monitoring.DataSourceMonitoringServiceAppEngine(),
"google_monitoring_uptime_check_ips": monitoring.DataSourceGoogleMonitoringUptimeCheckIps(),
"google_netblock_ip_ranges": resourcemanager.DataSourceGoogleNetblockIpRanges(),
"google_oracle_database_autonomous_databases": oracledatabase.DataSourceOracleDatabaseAutonomousDatabases(),
"google_oracle_database_db_nodes": oracledatabase.DataSourceOracleDatabaseDbNodes(),
"google_oracle_database_db_servers": oracledatabase.DataSourceOracleDatabaseDbServers(),
"google_oracle_database_cloud_exadata_infrastructures": oracledatabase.DataSourceOracleDatabaseCloudExadataInfrastructures(),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package oracledatabase

import (
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-provider-google/google/tpgresource"
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
)

func DataSourceOracleDatabaseAutonomousDatabases() *schema.Resource {
dsSchema := map[string]*schema.Schema{
"project": {
Type: schema.TypeString,
Optional: true,
Description: "The ID of the project in which the dataset is located. If it is not provided, the provider project is used.",
},
"location": {
Type: schema.TypeString,
Required: true,
Description: "location",
},
"autonomous_databases": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: tpgresource.DatasourceSchemaFromResourceSchema(ResourceOracleDatabaseAutonomousDatabase().Schema),
},
},
}
return &schema.Resource{
Read: dataSourceOracleDatabaseAutonomousDatabasesRead,
Schema: dsSchema,
}

}

func dataSourceOracleDatabaseAutonomousDatabasesRead(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, "{{OracleDatabaseBasePath}}projects/{{project}}/locations/{{location}}/autonomousDatabases")
if err != nil {
return fmt.Errorf("Error constructing id: %s", err)
}

billingProject := ""
project, err := tpgresource.GetProject(d, config)
if err != nil {
return fmt.Errorf("Error fetching project for autonomousDatabases: %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
}
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
Config: config,
Method: "GET",
Project: billingProject,
RawURL: url,
UserAgent: userAgent,
})

if err != nil {
return fmt.Errorf("Error reading autonomousDatabases: %s", err)
}

if err := d.Set("project", project); err != nil {
return fmt.Errorf("Error setting autonomousDatabases project: %s", err)
}

if err := d.Set("autonomous_databases", flattenOracleDatabaseautonomousDatabases(res["autonomousDatabases"], d, config)); err != nil {
return fmt.Errorf("Error setting autonomousDatabases: %s", err)
}

id, err := tpgresource.ReplaceVars(d, config, "projects/{{project}}/locations/{{location}}/autonomousDatabases")
if err != nil {
return fmt.Errorf("Error constructing id: %s", err)
}
d.SetId(id)

return nil
}

func flattenOracleDatabaseautonomousDatabases(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) []map[string]interface{} {
if v == nil {
return nil
}
l := v.([]interface{})
transformed := make([]map[string]interface{}, 0)
for _, raw := range l {
original := raw.(map[string]interface{})
transformed = append(transformed, map[string]interface{}{
"name": flattenOracleDatabaseAutonomousDatabaseName(original["name"], d, config),
"database": flattenOracleDatabaseAutonomousDatabaseDatabase(original["database"], d, config),
"display_name": flattenOracleDatabaseAutonomousDatabaseDisplayName(original["displayName"], d, config),
"entitlement_id": flattenOracleDatabaseAutonomousDatabaseEntitlementId(original["entitlementId"], d, config),
"properties": flattenOracleDatabaseAutonomousDatabaseProperties(original["properties"], d, config),
"labels": flattenOracleDatabaseAutonomousDatabaseLabels(original["labels"], d, config),
"network": flattenOracleDatabaseAutonomousDatabaseNetwork(original["network"], d, config),
"cidr": flattenOracleDatabaseAutonomousDatabaseCidr(original["cidr"], d, config),
"create_time": flattenOracleDatabaseAutonomousDatabaseCreateTime(original["createTime"], d, config),
"terraform_labels": flattenOracleDatabaseAutonomousDatabaseTerraformLabels(original["labels"], d, config),
"effective_labels": flattenOracleDatabaseAutonomousDatabaseEffectiveLabels(original["labels"], d, config),
})
}
return transformed
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package oracledatabase_test

import (
"fmt"
"testing"

"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-provider-google/google/acctest"
)

func TestAccOracleDatabaseAutonomousDatabases_basic(t *testing.T) {
t.Parallel()
acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
Steps: []resource.TestStep{
{
Config: testAccOracleDatabaseAutonomousDatabases_basic(),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.#"),
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.display_name"),
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.cidr"),
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.network"),
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.entitlement_id"),
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.database"),
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.properties.#"),
resource.TestCheckResourceAttrSet("data.google_oracle_database_autonomous_databases.my-adbs", "autonomous_databases.0.properties.0.state"),
),
},
},
})
}

func testAccOracleDatabaseAutonomousDatabases_basic() string {
return fmt.Sprintf(`
data "google_oracle_database_autonomous_databases" "my-adbs"{
location = "us-east4"
project = "oci-terraform-testing"
}
`)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
subcategory: "Oracle Database"
description: |-
List all AutonomousDatabases.
---

# google_oracle_database_autonomous_databases

List all AutonomousDatabases.

For more information see the
[API](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.autonomousDatabases).

## Example Usage

```hcl
data "google_oracle_database_autonomous_databases" "my-adbs"{
location = "us-east4"
}
```

## Argument Reference

The following arguments are supported:

* `location` - (Required) The location of the resource.

- - -
* `project` - (Optional) The project to which the resource belongs. If it
is not provided, the provider project is used.

## Attributes Reference

The following attributes are exported:

* `AutonomousDatabases` - A list of AutonomousDatabases.

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 comments on commit cd48b48

Please sign in to comment.