Skip to content

Commit af07a73

Browse files
committed
Added datasource for current connection
1 parent 25fbd1c commit af07a73

File tree

5 files changed

+150
-3
lines changed

5 files changed

+150
-3
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package postgresql
2+
3+
import (
4+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
5+
"strconv"
6+
"strings"
7+
)
8+
9+
func dataSourcePostgreSQLDatabaseConnection() *schema.Resource {
10+
return &schema.Resource{
11+
Read: PGResourceFunc(dataSourcePostgreSQLConnectionRead),
12+
Schema: map[string]*schema.Schema{
13+
"host": {
14+
Type: schema.TypeString,
15+
Computed: true,
16+
Description: "The current connected PostgreSQL server hostname",
17+
},
18+
"port": {
19+
Type: schema.TypeInt,
20+
Computed: true,
21+
Description: "The current connected PostgreSQL server port",
22+
},
23+
"scheme": {
24+
Type: schema.TypeString,
25+
Computed: true,
26+
Description: "TThe current connected PostgreSQL server scheme",
27+
},
28+
"username": {
29+
Type: schema.TypeString,
30+
Computed: true,
31+
Description: "The current connected username of the PostgreSQL server",
32+
},
33+
"database_username": {
34+
Type: schema.TypeString,
35+
Computed: true,
36+
Description: "The current connected username of the PostgreSQL server",
37+
},
38+
"version": {
39+
Type: schema.TypeString,
40+
Computed: true,
41+
Description: "The current connected PostgreSQL server version",
42+
},
43+
"database": {
44+
Type: schema.TypeString,
45+
Computed: true,
46+
Description: "The current connected PostgreSQL server database",
47+
},
48+
},
49+
}
50+
}
51+
52+
func dataSourcePostgreSQLConnectionRead(db *DBConnection, d *schema.ResourceData) error {
53+
d.Set("host", db.client.config.Host)
54+
d.Set("port", db.client.config.Port)
55+
d.Set("scheme", db.client.config.Scheme)
56+
d.Set("username", db.client.config.Username)
57+
d.Set("database_username", db.client.config.DatabaseUsername)
58+
d.Set("version", db.version.String())
59+
d.Set("database", db.client.databaseName)
60+
61+
d.SetId(strings.Join([]string{
62+
db.client.config.Host,
63+
strconv.Itoa(db.client.config.Port),
64+
db.client.config.Scheme,
65+
db.client.config.Username,
66+
db.client.config.DatabaseUsername,
67+
db.version.String(),
68+
db.client.databaseName,
69+
}, "_"))
70+
return nil
71+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package postgresql
2+
3+
import (
4+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
5+
"os"
6+
"testing"
7+
)
8+
9+
func TestAccPostgresqlDataSourceConnection(t *testing.T) {
10+
skipIfNotAcc(t)
11+
12+
testAccPostgresqlDataSourceTablesDatabaseConfig := generateDataSourceConnectionConfig()
13+
14+
resource.Test(t, resource.TestCase{
15+
PreCheck: func() { testAccPreCheck(t) },
16+
Providers: testAccProviders,
17+
Steps: []resource.TestStep{
18+
{
19+
Config: testAccPostgresqlDataSourceTablesDatabaseConfig,
20+
Check: resource.ComposeTestCheckFunc(
21+
resource.TestCheckResourceAttr("data.postgresql_connection.current1", "host", os.Getenv("PGHOST")),
22+
resource.TestCheckResourceAttr("data.postgresql_connection.current1", "port", os.Getenv("PGPORT")),
23+
resource.TestCheckResourceAttr("data.postgresql_connection.current1", "scheme", "postgres"),
24+
resource.TestCheckResourceAttr("data.postgresql_connection.current1", "username", os.Getenv("PGUSER")),
25+
resource.TestCheckResourceAttr("data.postgresql_connection.current1", "database_username", ""),
26+
resource.TestCheckResourceAttrSet("data.postgresql_connection.current1", "version"),
27+
resource.TestCheckResourceAttr("data.postgresql_connection.current1", "database", "postgres"),
28+
),
29+
},
30+
},
31+
})
32+
}
33+
34+
func generateDataSourceConnectionConfig() string {
35+
return `
36+
data "postgresql_connection" "current1" {
37+
}
38+
`
39+
}

postgresql/provider.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,10 @@ func Provider() *schema.Provider {
220220
},
221221

222222
DataSourcesMap: map[string]*schema.Resource{
223-
"postgresql_schemas": dataSourcePostgreSQLDatabaseSchemas(),
224-
"postgresql_tables": dataSourcePostgreSQLDatabaseTables(),
225-
"postgresql_sequences": dataSourcePostgreSQLDatabaseSequences(),
223+
"postgresql_schemas": dataSourcePostgreSQLDatabaseSchemas(),
224+
"postgresql_tables": dataSourcePostgreSQLDatabaseTables(),
225+
"postgresql_sequences": dataSourcePostgreSQLDatabaseSequences(),
226+
"postgresql_connection": dataSourcePostgreSQLDatabaseConnection(),
226227
},
227228

228229
ConfigureFunc: providerConfigure,
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
layout: "postgresql"
3+
page_title: "PostgreSQL: postgresql_tables"
4+
sidebar_current: "docs-postgresql-data-source-postgresql_tables"
5+
description: |-
6+
Retrieves a list of table names from a PostgreSQL database.
7+
---
8+
9+
# postgresql\_connection
10+
11+
The ``postgresql_connection`` data source retrieves a current config of PostgreSQL connection.
12+
13+
14+
## Usage
15+
16+
```hcl
17+
data "postgresql_connection" "current" {
18+
}
19+
```
20+
21+
## Argument Reference
22+
23+
There are no arguments available for this data source.
24+
25+
## Attributes Reference
26+
27+
* `host` - The current connected PostgreSQL server hostname
28+
* `port` - The current connected PostgreSQL server port
29+
* `scheme` - TThe current connected PostgreSQL server scheme
30+
* `username` - The current connected username of the PostgreSQL server
31+
* `database_username` - The current connected username of the PostgreSQL server
32+
* `version` - The current connected PostgreSQL server version
33+
* `database` - The current connected PostgreSQL server database

website/postgresql.erb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@
7070
<li<%= sidebar_current("docs-postgresql-data-source-postgresql_sequences") %>>
7171
<a href="/docs/providers/postgresql/d/postgresql_sequences.html">postgresql_sequences</a>
7272
</li>
73+
<li<%= sidebar_current("docs-postgresql-data-source-postgresql_connection") %>>
74+
<a href="/docs/providers/postgresql/d/postgresql_connection.html">postgresql_sequences</a>
75+
</li>
7376
</li>
7477
</ul>
7578
</li>

0 commit comments

Comments
 (0)