Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 33 additions & 1 deletion docs/resources/mongodb_instance.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,32 @@ resource "scaleway_mongodb_instance" "main" {
}
```

### Private Network and Public Network

```terraform
resource scaleway_vpc_private_network pn01 {
name = "my_private_network"
region = "fr-par"
}

resource "scaleway_mongodb_instance" "main" {
name = "test-mongodb-basic1"
version = "7.0.12"
node_type = "MGDB-PLAY2-NANO"
node_number = 1
user_name = "my_initial_user"
password = "thiZ_is_v&ry_s3cret"
volume_size_in_gb = 5

private_network {
pn_id = "${scaleway_vpc_private_network.pn02.id}"
}

public_network {}

}
```


### Restore From Snapshot

Expand Down Expand Up @@ -77,7 +103,9 @@ The following arguments are supported:
- `snapshot_id` - (Optional) Snapshot ID to restore the MongoDB® instance from.
- `private_network` - (Optional) Private Network endpoints of the Database Instance.
- `pn_id` - (Required) The ID of the Private Network.
- `public_network` - (Optional) Public network specs details.
- `public_network` - (Optional) Public network endpoint configuration (no arguments).
~> **Important** If neither private_network nor public_network is specified, a public network endpoint is created by default.


## Attributes Reference

Expand All @@ -91,6 +119,10 @@ In addition to all arguments above, the following attributes are exported:
- `ips` - List of IP addresses for your endpoint.
- `port` - TCP port of the endpoint.
- `dns_records` - List of DNS records for your endpoint.
- `public_network` - Private Network endpoints of the Database Instance.
- `id` - The ID of the endpoint.
- `port` - TCP port of the endpoint.
- `dns_records` - List of DNS records for your endpoint.

## Import

Expand Down
9 changes: 9 additions & 0 deletions internal/services/mongodb/instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,15 @@ func ResourceInstanceCreate(ctx context.Context, d *schema.ResourceData, m inter
}
}

if pubList, ok := d.GetOk("public_network"); ok {
items := pubList.([]interface{})
if len(items) > 0 {
eps = append(eps, &mongodb.EndpointSpec{
Public: &mongodb.EndpointSpecPublicDetails{},
})
}
}

if len(eps) == 0 {
eps = append(eps, &mongodb.EndpointSpec{
Public: &mongodb.EndpointSpecPublicDetails{},
Expand Down
49 changes: 49 additions & 0 deletions internal/services/mongodb/instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,55 @@ func TestAccMongoDBInstance_UpdatePrivateNetwork(t *testing.T) {
})
}

func TestAccMongoDBInstance_WithPublicNetwork(t *testing.T) {
tt := acctest.NewTestTools(t)
defer tt.Cleanup()

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ProviderFactories: tt.ProviderFactories,
CheckDestroy: IsInstanceDestroyed(tt),
Steps: []resource.TestStep{
{
Config: `

resource "scaleway_vpc_private_network" "pn01" {
name = "my_private_network"
region = "fr-par"
}

resource "scaleway_mongodb_instance" "main" {
name = "test-mongodb-public-network"
version = "7.0.12"
node_type = "MGDB-PLAY2-NANO"
node_number = 1
user_name = "my_initial_user"
password = "thiZ_is_v&ry_s3cret"
volume_size_in_gb = 5

private_network {
pn_id = scaleway_vpc_private_network.pn01.id
}

public_network {}
}
`,
Check: resource.ComposeTestCheckFunc(
isMongoDBInstancePresent(tt, "scaleway_mongodb_instance.main"),
resource.TestCheckResourceAttr("scaleway_mongodb_instance.main", "public_network.#", "1"),
resource.TestCheckResourceAttrSet("scaleway_mongodb_instance.main", "public_network.0.id"),
resource.TestCheckResourceAttrSet("scaleway_mongodb_instance.main", "public_network.0.port"),
resource.TestCheckResourceAttrSet("scaleway_mongodb_instance.main", "public_network.0.dns_record"),
resource.TestCheckResourceAttr("scaleway_mongodb_instance.main", "private_network.#", "1"),
resource.TestCheckResourceAttrSet("scaleway_mongodb_instance.main", "private_network.0.id"),
resource.TestCheckResourceAttrSet("scaleway_mongodb_instance.main", "private_network.0.port"),
resource.TestCheckResourceAttrSet("scaleway_mongodb_instance.main", "private_network.0.dns_records.#"),
),
},
},
})
}

func capturePrivateNetworkID(previousID *string) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources["scaleway_mongodb_instance.main"]
Expand Down
Loading
Loading