Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modules not included when creating DB on existing subscription in GCP #98

Closed
stevenk824 opened this issue Mar 31, 2021 · 1 comment
Closed

Comments

@stevenk824
Copy link

Hi there,

Reporting an issue on behalf of another organization in which the modules are not being saved on the DB creation. Everything in the DB creation is correct except for the missing modules.

It looks like it is getting lost somewhere in the provider because the TF contains the modules it needs, but in the response back from the API modules is empty.

Terraform Version

Terraform version: 0.14.7

Terragrunt version: 0.23.40

Affected Resource(s)

Database Modules

Terraform Configuration Files

# example value passed in for enabled_module
// enabled_module = "RedisJSON"

resource "rediscloud_subscription" "subscription" {
  name                          = var.name

  // this is optional for marketplace accounts
  payment_method_id             = var.payment_method_id
  
  memory_storage                = var.memory_storage
  persistent_storage_encryption = var.is_persistent_storage_encryption 
  
  cloud_provider {
    provider         = var.cloud_provider_type
    
    // we need to update then when we have real accounts, or the data source will fail due to being a POC
    // redis internal account is the default, of 1
    // cloud_account_id = data.rediscloud_cloud_account.account != null ? data.rediscloud_cloud_account.account.id : 1

    region {
      region                       = var.deployment_region
      networking_deployment_cidr   = var.deployment_cidr
      preferred_availability_zones = var.preferred_azs

      // optional
      multiple_availability_zones = var.is_multi_az
      networking_vpc_id           = var.networking_vpc_id
    }
  }

  // allowlist can only be configured when using a non redis labs internal account (id != 1)
  dynamic "allowlist" {
    for_each = var.allowlist

    content {
      cidrs              = allowlist.value.cidrs
      security_group_ids = allowlist.value.security_group_ids
    }
  }

  dynamic "database" {
    for_each = var.databases

    content {
      name                         = database.value.name
      memory_limit_in_gb           = database.value.memory_limit_in_gb
      
      // operations-per-second or number-of-shards
      throughput_measurement_by    = database.value.throughput_measurement_by
      throughput_measurement_value = database.value.throughput_measurement_value
      password                     = random_password.password.result

      dynamic "alert" {
        for_each = database.value.alerts != null ? database.value.alerts : []

        content {
          name  = alert.value.name
          value = alert.value.value
        }
      }

      module {
        name = database.value.enabled_module != null ? database.value.enabled_module : "None"
      }

      // optional
      average_item_size_in_bytes            = database.value.average_item_size_in_bytes
      client_ssl_certificate                = database.value.client_ssl_certificate
      data_persistence                      = database.value.data_persistence
      external_endpoint_for_oss_cluster_api = database.value.use_external_endpoint_for_oss_cluster_api
      hashing_policy                        = database.value.hashing_policy
      periodic_backup_path                  = database.value.periodic_backup_path
      protocol                              = database.value.protocol
      replication                           = database.value.replication 
      source_ips                            = database.value.source_ips
      support_oss_cluster_api               = database.value.support_oss_cluster_api
    }
  }

  timeouts {
    create = var.timeouts.create
    update = var.timeouts.update
  }
}

  database {
    name = "orbis-dev-redis"
    memory_limit_in_gb = 1
    throughput_measurement_by = "operations-per-second"
    throughput_measurement_value  = "5000"
    password = "abcdefg1234567@!"

    module {
      name = "RedisJSON"
    }

    protocol = "redis"
    replication = false
    
  }
}

Expected Behavior

The DB should be created with the specs provided in the TF.

Actual Behavior

The modules array is empty in the response back from the Redis API /v1/subscriptions/

Steps to Reproduce

Please list the steps required to reproduce the issue, for example:

  1. Create subscription in GCP
  2. Run terraform above
  3. See results (no modules were added in the response back from the API or in the UI)
@nir-redis
Copy link
Contributor

Fix released on version v0.2.2. Closing the issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants