forked from GoogleCloudPlatform/magic-modules
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Feat add oracledatabase_autonomous_databases datasource (GoogleCloudP…
- Loading branch information
1 parent
41fb219
commit 6ee6e72
Showing
4 changed files
with
192 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
112 changes: 112 additions & 0 deletions
112
...rty/terraform/services/oracledatabase/data_source_oracle_database_autonomous_databases.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
} |
41 changes: 41 additions & 0 deletions
41
...erraform/services/oracledatabase/data_source_oracle_database_autonomous_databases_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
`) | ||
} |
38 changes: 38 additions & 0 deletions
38
...rty/terraform/website/docs/d/oracle_database_autonomous_databases.html.markdown
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |