diff --git a/README.md b/README.md
index 8b52f7d4..c1ef86bd 100644
--- a/README.md
+++ b/README.md
@@ -99,10 +99,10 @@ To attach access management tags to resources in this module, you need the follo
| [existing\_kms\_instance\_guid](#input\_existing\_kms\_instance\_guid) | The GUID of the Hyper Protect Crypto Services or Key Protect instance in which the key specified in var.kms\_key\_crn and var.backup\_encryption\_key\_crn is coming from. Required only if var.kms\_encryption\_enabled is set to true, var.skip\_iam\_authorization\_policy is set to false, and you pass a value for var.kms\_key\_crn, var.backup\_encryption\_key\_crn, or both. | `string` | `null` | no |
| [kms\_encryption\_enabled](#input\_kms\_encryption\_enabled) | Set this to true to control the encryption keys used to encrypt the data that you store in IBM Cloud Databases. If set to false, the data is encrypted by using randomly generated keys. For more info on Key Protect integration, see https://cloud.ibm.com/docs/cloud-databases?topic=cloud-databases-key-protect. For more info on HPCS integration, see https://cloud.ibm.com/docs/cloud-databases?topic=cloud-databases-hpcs | `bool` | `false` | no |
| [kms\_key\_crn](#input\_kms\_key\_crn) | The root key CRN of a Key Management Services like Key Protect or Hyper Protect Crypto Services (HPCS) that you want to use for disk encryption. Only used if var.kms\_encryption\_enabled is set to true. | `string` | `null` | no |
-| [member\_cpu\_count](#input\_member\_cpu\_count) | Allocated dedicated CPU per member. For shared CPU, set to 0. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling) | `number` | `0` | no |
-| [member\_disk\_mb](#input\_member\_disk\_mb) | Allocated disk per member. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling) | `number` | `5120` | no |
-| [member\_host\_flavor](#input\_member\_host\_flavor) | Allocated host flavor per member. [Learn more](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/database#host_flavor) | `string` | `null` | no |
-| [member\_memory\_mb](#input\_member\_memory\_mb) | Allocated memory per member. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling) | `number` | `4096` | no |
+| [member\_cpu\_count](#input\_member\_cpu\_count) | Allocated dedicated CPU per member. For shared CPU, set to 0. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling). Ignored during restore and point in time recovery operations | `number` | `0` | no |
+| [member\_disk\_mb](#input\_member\_disk\_mb) | Allocated disk per member. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling). Ignored during restore and point in time recovery operations | `number` | `5120` | no |
+| [member\_host\_flavor](#input\_member\_host\_flavor) | Allocated host flavor per member. [Learn more](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/database#host_flavor). Ignored during restore and point in time recovery operations | `string` | `null` | no |
+| [member\_memory\_mb](#input\_member\_memory\_mb) | Allocated memory per member. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling). Ignored during restore and point in time recovery operations | `number` | `4096` | no |
| [members](#input\_members) | Allocated number of members. Members can be scaled up but not down. | `number` | `2` | no |
| [name](#input\_name) | The name to give the Postgresql instance. | `string` | n/a | yes |
| [pg\_version](#input\_pg\_version) | Version of the PostgreSQL instance. If no value is passed, the current preferred version of IBM Cloud Databases is used. | `string` | `null` | no |
diff --git a/examples/basic/main.tf b/examples/basic/main.tf
index afde91d9..4605ce5b 100644
--- a/examples/basic/main.tf
+++ b/examples/basic/main.tf
@@ -54,7 +54,7 @@ module "read_only_replica_postgresql_db" {
pg_version = var.pg_version
remote_leader_crn = module.postgresql_db.crn
member_host_flavor = "multitenant"
- member_memory_mb = 4096 # Must be an increment of 384 megabytes. The minimum size of a read-only replica is 2 GB RAM, new hosting model minimum is 4 GB RAM.
- member_disk_mb = 15360 # Must be an increment of 512 megabytes. The minimum size of a read-only replica is 15.36 GB of disk
+ member_memory_mb = 4096 # Must be an increment of 384 megabytes. The minimum size of a read-only replica is 2 GB RAM, new hosting model minimum is 4 GB RAM.
+ member_disk_mb = 5120 # Must be an increment of 512 megabytes. The minimum size of a read-only replica is 5 GB of disk
depends_on = [time_sleep.wait_time]
}
diff --git a/examples/pitr/main.tf b/examples/pitr/main.tf
index e4193f27..e1c7e394 100644
--- a/examples/pitr/main.tf
+++ b/examples/pitr/main.tf
@@ -18,9 +18,9 @@ module "postgresql_db_pitr" {
region = var.region
resource_tags = var.resource_tags
access_tags = var.access_tags
- member_memory_mb = 12288
- member_disk_mb = 15360
- member_cpu_count = var.member_cpu_count
+ member_memory_mb = 4096
+ member_disk_mb = 5120
+ member_cpu_count = 0
member_host_flavor = "multitenant"
members = var.members
pg_version = var.pg_version
diff --git a/examples/pitr/variables.tf b/examples/pitr/variables.tf
index 98488d55..1ca31f4d 100644
--- a/examples/pitr/variables.tf
+++ b/examples/pitr/variables.tf
@@ -53,8 +53,3 @@ variable "members" {
description = "Allocated number of members. Members must be same or higher than the source deployment PostgreSQL instance."
default = 2
}
-
-variable "member_cpu_count" {
- type = number
- description = "Allocated dedicated CPU per member. For shared CPU, set to 0. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling)"
-}
diff --git a/main.tf b/main.tf
index e9388bb5..030ec448 100644
--- a/main.tf
+++ b/main.tf
@@ -25,6 +25,9 @@ locals {
# Determine if host_flavor is used
host_flavor_set = var.member_host_flavor != null ? true : false
+ # Determine if restore, from backup or point in time recovery
+ recovery_mode = var.backup_crn != null || var.pitr_id != null
+
# Determine what KMS service is being used for database encryption
kms_service = var.kms_key_crn != null ? (
can(regex(".*kms.*", var.kms_key_crn)) ? "kms" : (
@@ -84,12 +87,13 @@ resource "ibm_database" "postgresql_db" {
# Workaround for https://github.ibm.com/GoldenEye/issues/issues/11359
# means that no `group` block is added when restoring from backup
+ # or point in time recovery
## This for_each block is NOT a loop to attach to multiple group blocks.
## This is used to conditionally add one, OR, the other group block depending on var.local.host_flavor_set
## This block is for if host_flavor IS set to specific pre-defined host sizes and not set to "multitenant"
dynamic "group" {
- for_each = local.host_flavor_set && var.member_host_flavor != "multitenant" && var.backup_crn == null ? [1] : []
+ for_each = local.host_flavor_set && var.member_host_flavor != "multitenant" && !local.recovery_mode ? [1] : []
content {
group_id = "member" # Only member type is allowed for IBM Cloud Databases
host_flavor {
@@ -109,7 +113,7 @@ resource "ibm_database" "postgresql_db" {
## This block is for if host_flavor IS set to "multitenant"
dynamic "group" {
- for_each = local.host_flavor_set && var.member_host_flavor == "multitenant" && var.backup_crn == null ? [1] : []
+ for_each = local.host_flavor_set && var.member_host_flavor == "multitenant" && !local.recovery_mode ? [1] : []
content {
group_id = "member" # Only member type is allowed for IBM Cloud Databases
host_flavor {
@@ -135,7 +139,7 @@ resource "ibm_database" "postgresql_db" {
## This block is for if host_flavor IS NOT set
dynamic "group" {
- for_each = local.host_flavor_set == false && var.backup_crn == null ? [1] : []
+ for_each = local.host_flavor_set == false && !local.recovery_mode ? [1] : []
content {
group_id = "member" # Only member type is allowed for IBM Cloud Databases
memory {
diff --git a/tests/other_test.go b/tests/other_test.go
index 0f6f135a..df3d070e 100644
--- a/tests/other_test.go
+++ b/tests/other_test.go
@@ -39,11 +39,10 @@ func TestRunPointInTimeRecoveryDBExample(t *testing.T) {
ResourceGroup: resourceGroup,
Region: fmt.Sprint(permanentResources["postgresqlPITRRegion"]),
TerraformVars: map[string]interface{}{
- "pitr_id": permanentResources["postgresqlPITRCrn"],
- "pitr_time": "", // if blank string is passed, earliest_point_in_time_recovery_time will be used to restore
- "pg_version": permanentResources["postgresqlPITRVersion"],
- "members": "3", // Lock members to 3 as the permanent postgres instances has 3 members
- "member_cpu_count": 0, // Lock cpu to 0 as the permanent postgres instances has 0 cpu
+ "pitr_id": permanentResources["postgresqlPITRCrn"],
+ "pitr_time": "", // if blank string is passed, earliest_point_in_time_recovery_time will be used to restore
+ "pg_version": permanentResources["postgresqlPITRVersion"],
+ "members": "3", // Lock members to 3 as the permanent postgres instances has 3 members
},
CloudInfoService: sharedInfoSvc,
})
diff --git a/variables.tf b/variables.tf
index 85f724b3..5a8e757e 100644
--- a/variables.tf
+++ b/variables.tf
@@ -55,28 +55,28 @@ variable "members" {
variable "member_cpu_count" {
type = number
- description = "Allocated dedicated CPU per member. For shared CPU, set to 0. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling)"
+ description = "Allocated dedicated CPU per member. For shared CPU, set to 0. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling). Ignored during restore and point in time recovery operations"
default = 0
# Validation is done in the Terraform plan phase by the IBM provider, so no need to add extra validation here.
}
variable "member_disk_mb" {
type = number
- description = "Allocated disk per member. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling)"
+ description = "Allocated disk per member. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling). Ignored during restore and point in time recovery operations"
default = 5120
# Validation is done in the Terraform plan phase by the IBM provider, so no need to add extra validation here.
}
variable "member_host_flavor" {
type = string
- description = "Allocated host flavor per member. [Learn more](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/database#host_flavor)"
+ description = "Allocated host flavor per member. [Learn more](https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs/resources/database#host_flavor). Ignored during restore and point in time recovery operations"
default = null
# Validation is done in the Terraform plan phase by the IBM provider, so no need to add extra validation here.
}
variable "member_memory_mb" {
type = number
- description = "Allocated memory per member. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling)"
+ description = "Allocated memory per member. [Learn more](https://cloud.ibm.com/docs/databases-for-postgresql?topic=databases-for-postgresql-resources-scaling). Ignored during restore and point in time recovery operations"
default = 4096
# Validation is done in the Terraform plan phase by the IBM provider, so no need to add extra validation here.
}