terraform-provider-kubernetes: kubernetes_resource_quota variable interpolation does not work with terraform v0.12.0

Terraform Version

terraform -v
Terraform v0.12.0
+ provider.google v2.7.0
+ provider.google-beta v2.7.0
+ provider.kubernetes v1.7.0
+ provider.template v2.1.2

Affected Resource(s)

  • kubernetes_resource_quota

Expected Behavior

This should work:

resource "kubernetes_resource_quota" "resource" {
  metadata {
    name = "${var.namespace}-quota"
    namespace = "${var.namespace}"
  }

  spec {
    hard = {
      "pods"            = "${var.quota_pods}"
      "requests.cpu"    = "${var.quota_cpu_request}"
      "requests.memory" = "${var.quota_memory_request}"
      "limits.cpu"      = "${var.quota_cpu_limit}"
      "limits.memory"   = "${var.quota_memory_limit}"
    }
  }
}

Actual Behavior

I’m getting this error:

Error: spec.0.hard.pods ("74D93920-ED26-11E3-AC10-0800200C9A66"): quantities must match the regular expression '^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$'

  on ../../modules/module-name/main.tf line 11, in resource "kubernetes_resource_quota" "resource":
  11: resource "kubernetes_resource_quota" "resource" {

If I place the values in line it works:

resource "kubernetes_resource_quota" "resource" {
  metadata {
    name = "${var.namespace}-quota"
    namespace = "${var.namespace}"
  }

  spec {
    hard = {
      "pods"            = 5    #"${var.quota_pods}"
      "requests.cpu"    = "3"  #"${var.quota_cpu_request}"
      "requests.memory" = "4Gi"#"${var.quota_memory_request}"
      "limits.cpu"      = "4"  #"${var.quota_cpu_limit}"
      "limits.memory"   = "8Gi"#"${var.quota_memory_limit}"
    }
  }
}

It seems like the variable reference is tested agains the regexp not it’s value.

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 1
  • Comments: 21 (11 by maintainers)

Most upvoted comments

@conet I merged #491 which fixes this issue. It will be available in the next release.