akamai / terraform-provider-akamai

Terraform Akamai provider
https://www.terraform.io/docs/providers/akamai/
Mozilla Public License 2.0
109 stars 96 forks source link

akamai 0.1.5 - err: rpc error: code = Unavailable desc = transport is closing #87

Closed mayaaravotwm closed 4 years ago

mayaaravotwm commented 4 years ago

Hello, After release v1.0.5, my terraform fails with the error:

Error: rpc error: code = Unavailable desc = transport is closing
panic: interface conversion: interface {} is nil, not string

when I got it back to v1.0.4 it worked again.

Terraform v0.12.12
+ provider.akamai v0.1.5
provider "akamai" {
  edgerc = "~/.edgerc"

carsh.log: https://gist.github.com/mayaaravotwm/731e62c965cb69f19083c26d41aa0513

Expected Behavior work as v0.1.4

Actual Behavior terraform crash

martinstibbe commented 4 years ago

Maya Do you have an example TF file you can provide with rules.json for reference as error appears right after working on data.akamai_property_rules.rules ...

mayaaravotwm commented 4 years ago
data "akamai_property_rules" "rules" {
  rules { # Default rule
    behavior {
      name = "origin"
      option {
        key   = "cacheKeyHostname"
        value = "ORIGIN_HOSTNAME"
      }
      option {
        key   = "originType"
        value = "CUSTOMER"
      }
      option {
        key   = "hostname"
        value = "1.2.3.4"
      }
      option {
        key   = "forwardHostHeader"
        value = "REQUEST_HOST_HEADER"
      }
      option {
        key   = "compress"
        value = true
      }
      option {
        key   = "enableTrueClientIp"
        value = false
      }
      option {
        key   = "httpPort"
        value = 80
      }
      option {
        key   = "httpsPort"
        value = 443
      }
      option {
        key   = "verificationMode"
        value = "CUSTOM"
      }
      option {
        key   = "originSni"
        value = false
      }
      option {
        key   = "originCertsToHonor"
        value = "STANDARD_CERTIFICATE_AUTHORITIES"
      }
      option {
        key    = "standardCertificateAuthorities"
        values = ["akamai-permissive", "THIRD_PARTY_AMAZON"]
      }
      option {
        key    = "customValidCnValues"
        values = ["{{Origin Hostname}}", "{{Forward Host Header}}"]
      }
    }
    behavior {
      name = "caching"
      option {
        key   = "behavior"
        value = "CACHE_CONTROL_AND_EXPIRES"
      }
      option {
        key   = "mustRevalidate"
        value = true
      }
      option {
        key   = "defaultTtl"
        value = "0h"
      }
      option {
        key   = "honorPrivateEnabled"
        value = false
      }
      option {
        key   = "honorMustrevalidateEnabled"
        value = false
      }
    }
    behavior {
      name = "allowPost"
      option {
        key   = "enabled"
        value = true
      }
      option {
        key   = "allowWithoutContentLength"
        value = false
      }
    }
    behavior {
      name = "report"
      option {
        key   = "logHost"
        value = false
      }
      option {
        key   = "logReferer"
        value = false
      }
      option {
        key   = "logUserAgent"
        value = true
      }
      option {
        key   = "logAcceptLanguage"
        value = false
      }
      option {
        key   = "logCookies"
        value = "OFF"
      }
      option {
        key   = "logCustomLogField"
        value = false
      }
    }
    behavior {
      name = "sureRoute"
      option {
        key   = "enabled"
        value = false
      }
      option {
        key   = "srDownloadLinkTitle"
        value = ""
      }
    }
    behavior {
      name = "tieredDistribution"
      option {
        key   = "enabled"
        value = true
      }
    }
    behavior {
      name = "prefetch"
      option {
        key   = "enabled"
        value = true
      }
    }
    behavior {
      name = "realUserMonitoring"
      option {
        key   = "enabled"
        value = false
      }
    }
    behavior {
      name = "http2"
      option {
        key   = "enabled"
        value = ""
      }
    }
    behavior {
      name = "allowTransferEncoding"
      option {
        key   = "enabled"
        value = true
      }
    }
    rule {
      name = "Redirect to HTTPS"
      behavior {
        name = "redirect"
        option {
          key   = "queryString"
          value = "APPEND"
        }
        option {
          key   = "responseCode"
          value = 301
        }
        option {
          key   = "destinationHostname"
          value = "SAME_AS_REQUEST"
        }
        option {
          key   = "destinationPath"
          value = "SAME_AS_REQUEST"
        }
        option {
          key   = "destinationProtocol"
          value = "HTTPS"
        }
        option {
          key   = "mobileDefaultChoice"
          value = "DEFAULT"
        }
      }
      criteria {
        name = "requestProtocol"
        option {
          key   = "value"
          value = "HTTP"
        }
      }
    }
    rule {
      name = (var.env == "prod" ? "console.mobile.walkme.com" : "${data.terraform_remote_state.vpc.outputs.env}-console.mobile.walkme.com")
      criteria {
        name = "hostname"
        option {
          key   = "matchOperator"
          value = "IS_ONE_OF"
        }
        option {
          key   = "values"
          values = [(var.env == "prod" ? "console.mobile.walkme.com" : "${data.terraform_remote_state.vpc.outputs.env}-console.mobile.walkme.com")]
        }
      }
      behavior {
        name = "origin"
        option {
          key   = "cacheKeyHostname"
          value = "ORIGIN_HOSTNAME"
        }
        option {
          key   = "compress"
          value = true
        }
        option {
          key    = "customValidCnValues"
          values = ["{{Origin Hostname}}", "{{Forward Host Header}}"]
        }
        option {
          key   = "enableTrueClientIp"
          value = true
        }
        option {
          key   = "forwardHostHeader"
          value = "ORIGIN_HOSTNAME"
        }
        option {
          key   = "hostname"
          value = "${aws_cloudfront_distribution.s3_distribution.domain_name}"
        }
        option {
          key   = "httpPort"
          value = 80
        }
        option {
          key   = "httpsPort"
          value = 443
        }
        option {
          key   = "originCertificate"
          value = ""
        }
        option {
          key   = "originCertsToHonor"
          value = "STANDARD_CERTIFICATE_AUTHORITIES"
        }
        option {
          key   = "originSni"
          value = false
        }
        option {
          key   = "originType"
          value = "CUSTOMER"
        }
        option {
          key   = "ports"
          value = ""
        }
        option {
          key    = "standardCertificateAuthorities"
          values = ["akamai-permissive", "THIRD_PARTY_AMAZON"]
        }
        option {
          key   = "trueClientIpClientSetting"
          value = false
        }
        option {
          key   = "trueClientIpHeader"
          value = "True-Client-IP"
        }
        option {
          key   = "verificationMode"
          value = "CUSTOM"
        }
      }
    }
    rule {
      name = "Content Compression"
      criteria {
        name = "contentType"
        option {
          key   = "matchCaseSensitive"
          value = false
        }
        option {
          key   = "matchOperator"
          value = "IS_ONE_OF"
        }
        option {
          key   = "matchWildcard"
          value = true
        }
        option {
          key   = "values"
          values = ["text/*","application/javascript","application/x-javascript","application/x-javascript*","application/json","application/x-json","application/*+json","application/*+xml","application/text","application/vnd.microsoft.icon","application/vnd-ms-fontobject","application/x-font-ttf","application/x-font-opentype","application/x-font-truetype","application/xmlfont/eot","application/xml","font/opentype","font/otf","font/eot","image/svg+xml","image/vnd.microsoft.icon"]
        }
      }
      behavior {
        name = "gzipResponse"
        option {
          key   = "behavior"
          value = "ALWAYS"
        }
      }
    }
    rule {
      name = "Static Content"
      criteria {
        name = "fileExtension"
        option {
          key   = "matchCaseSensitive"
          value = false
        }
        option {
          key   = "matchOperator"
          value = "IS_ONE_OF"
        }
        option {
          key   = "values"
          values = ["aif","aiff","au","avi","bin","bmp","cab","carb","cct","cdf","class","css","doc","dcr","dtd","exe","flv","gcf","gff","gif","grv","hdml","hqx","ico","ini","jpeg","jpg","js","mov","mp3","nc","pct","pdf","png","ppc","pws","swa","swf","txt","vbs","w32","wav","wbmp","wml","wmlc","wmls","wmlsc","xsd","zip","pict","tif","tiff","mid","midi","ttf","eot","woff","woff2","otf","svg","svgz","webp","jxr","jar","jp2"]
        }
      }
      behavior {
        name = "caching"
        option {
          key   = "behavior"
          value = "CACHE_CONTROL_AND_EXPIRES"
        }
        option {
          key   = "mustRevalidate"
          value = false
        }
        option {
          key   = "defaultTtl"
          value = "1h"
        }
        option {
          key   = "honorPrivateEnabled"
          value = false
        }
        option {
          key   = "honorMustrevalidateEnabled"
          value = false
        }
      }
      behavior {
        name = "prefetch"
        option {
          key   = "enabled"
          value = false
        }
      }
      behavior {
        name = "prefetchable"
        option {
          key   = "enabled"
          value = true
        }
      }
    }
    rule {
      name = "Dynamic Content"
      criteria {
        name = "cacheability"
        option {
          key   = "matchOperator"
          value = "IS_NOT"
        }
        option {
          key   = "value"
          value = "CACHEABLE"
        }
      }
      behavior {
        name = "downstreamCache"
        option {
          key   = "behavior"
          value = "TUNNEL_ORIGIN"
        }
      }
    }
  }
}
unixsurfer commented 4 years ago

I got the same crash today, when I upgraded from 0.1.4 to 0.1.5


Error: rpc error: code = Unavailable desc = transport is closing

panic: interface conversion: interface {} is nil, not string
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: goroutine 29 [running]:
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/akamai.extractRulesJSON.func1(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0xc00050184e, 0xb06, ...)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/akamai/resource_akamai_property.go:1033 +0x645
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/tidwall/gjson.Result.ForEach(0x5, 0xc000501840, 0x40b6, 0x0, 0x0, 0x0, 0x0, 0xc00090ccc0)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/tidwall/gjson/gjson.go:277 +0x33b
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/akamai.extractRulesJSON(0xc0001dfab0, 0x5, 0xc000501840, 0x40b6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/akamai/resource_akamai_property.go:1026 +0xa5
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/akamai.unmarshalRulesFromJSONComp.func1(0x3, 0xc000501834, 0xa, 0xc000501835, 0x8, 0x0, 0x25, 0x5, 0xc000501840, 0x40b6, ...)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/akamai/diff_suppress_funcs.go:191 +0x1c4
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/tidwall/gjson.Result.ForEach(0x5, 0xc00050180f, 0x45aa, 0x0, 0x0, 0x0, 0xf, 0xc00090d138)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/tidwall/gjson/gjson.go:277 +0x33b
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/akamai.unmarshalRulesFromJSONComp(0xc0001dfab0, 0xc000501800, 0x45bc, 0xc000b0e240)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/akamai/diff_suppress_funcs.go:127 +0x1e0
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/akamai.getRulesForComp(0xc0001dfab0, 0xc000501800, 0x45bc, 0x1, 0x1, 0x169f)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/akamai/diff_suppress_funcs.go:92 +0x27e
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/akamai.suppressEquivalentJsonDiffs(0x111266a, 0x5, 0xc0003e8800, 0x16c6, 0xc000501800, 0x45bc, 0xc0001dfab0, 0x203000)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/akamai/diff_suppress_funcs.go:51 +0x509
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/helper/schema.schemaMap.diff(0xc000453230, 0x111266a, 0x5, 0xc00046e300, 0xc000455e60, 0x139a3a0, 0xc0001dfab0, 0x0, 0x0, 0x0)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/helper/schema/schema.go:893 +0x3d4
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/helper/schema.schemaMap.Diff(0xc000453230, 0xc00042b8b0, 0xc0004d2390, 0x0, 0xf12e60, 0x1d27d88, 0x1394c00, 0xc0004ac260, 0xffffffffffffffff, 0x0)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/helper/schema/schema.go:491 +0x216
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/helper/schema.(*Resource).simpleDiff(0xc00014db00, 0xc00042b8b0, 0xc0004d2390, 0xf12e60, 0x1d27d88, 0x1, 0xc0004ac260, 0xc0004d2390)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/helper/schema/resource.go:332 +0x85
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/helper/schema.(*Provider).SimpleDiff(0xc00014dd00, 0xc000273ab8, 0xc00042b8b0, 0xc0004d2390, 0xc0001f3c10, 0xc0004d2390, 0x0)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/helper/schema/provider.go:312 +0x18f
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/helper/plugin.(*GRPCProviderServer).PlanResourceChange(0xc000146528, 0x1393ca0, 0xc0003a6ab0, 0xc00045ab40, 0xc000146528, 0xc0003a6ab0, 0xc0002c9bd0)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/helper/plugin/grpc_provider.go:634 +0x777
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/internal/tfplugin5._Provider_PlanResourceChange_Handler(0x10d4320, 0xc000146528, 0x1393ca0, 0xc0003a6ab0, 0xc00042b720, 0x0, 0x1393ca0, 0xc0003a6ab0, 0xc0004c2000, 0xa863)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/github.com/hashicorp/terraform/internal/tfplugin5/tfplugin5.pb.go:3199 +0x23e
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/vendor/google.golang.org/grpc.(*Server).processUnaryRPC(0xc000564900, 0x139f500, 0xc000556900, 0xc0001f4600, 0xc00013d230, 0x1cfdd08, 0x0, 0x0, 0x0)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/google.golang.org/grpc/server.go:966 +0x470
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/vendor/google.golang.org/grpc.(*Server).handleStream(0xc000564900, 0x139f500, 0xc000556900, 0xc0001f4600, 0x0)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/google.golang.org/grpc/server.go:1245 +0xd25
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: github.com/terraform-providers/terraform-provider-akamai/vendor/google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc000148090, 0xc000564900, 0x139f500, 0xc000556900, 0xc0001f4600)
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/google.golang.org/grpc/server.go:685 +0x9f
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4: created by github.com/terraform-providers/terraform-provider-akamai/vendor/google.golang.org/grpc.(*Server).serveStreams.func1
2020-01-10T12:36:09.471+0100 [DEBUG] plugin.terraform-provider-akamai_v0.1.5_x4:        /opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/terraform-providers/terraform-provider-akamai/vendor/google.golang.org/grpc/server.go:683 +0xa1
2020-01-10T12:36:09.478+0100 [DEBUG] plugin: plugin process exited: path=/foobar/akamai/global/aws_govcloud/.terraform/plugins/linux_amd64/terraform-provider-akamai_v0.1.5_x4 pid=13609 error="exit status 2"
2020/01/10 12:36:09 [ERROR] module.govcloud_userconsole_ui: eval: *terraform.EvalDiff, err: rpc error: code = Unavailable desc = transport is closing
2020/01/10 12:36:09 [ERROR] module.govcloud_userconsole_ui: eval: *terraform.EvalSequence, err: rpc error: code = Unavailable desc = transport is closing
2020/01/10 12:36:09 [TRACE] [walkPlan] Exiting eval tree: module.govcloud_userconsole_ui.akamai_property.prop
2020/01/10 12:36:09 [TRACE] vertex "module.govcloud_userconsole_ui.akamai_property.prop": visit complete
2020/01/10 12:36:09 [TRACE] vertex "module.govcloud_userconsole_ui.akamai_property.prop": dynamic subgraph encountered errors
2020/01/10 12:36:09 [TRACE] vertex "module.govcloud_userconsole_ui.akamai_property.prop": visit complete
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "module.govcloud_userconsole_ui.output.property_id" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "module.govcloud_userconsole_ui.output.property_version" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "module.govcloud_userconsole_ui.output.property_production_version" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "output.govcloud-userconsole_ui-latest-version" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "module.govcloud_userconsole_ui.output.property_edge_hostnames" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "module.govcloud_userconsole_ui.output.property_staging_version" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "output.govcloud-userconsole_ui-endge_hostnames" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "output.govcloud-userconsole_ui-staging-version" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "module.govcloud_userconsole_ui.akamai_property_activation.staging" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "module.govcloud_userconsole_ui.akamai_property_activation.production" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "module.govcloud_userconsole_ui.provider.akamai (close)" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "output.govcloud-userconsole_ui-production-version" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "meta.count-boundary (EachMode fixup)" errored, so skipping
2020/01/10 12:36:09 [TRACE] dag/walk: upstream of "root" errored, so skipping
2020/01/10 12:36:09 [INFO] backend/local: plan operation completed
2020-01-10T12:36:09.482+0100 [DEBUG] plugin: plugin exited
martinstibbe commented 4 years ago

Found issue this will be fixed in next release

mayaaravotwm commented 4 years ago

Hey, happens to me too in v0.8.0

martinstibbe commented 4 years ago

@mayaaravotwm We had a bug introduced around group datasource(duplicate group names making contract parameter mandatory ) that can create same RPC disconnection error Can you validate that your group resource does not crash the apply with a panic / rpc disconnection issue ?

mayaaravotwm commented 4 years ago

hey @martinstibbe , since v0.5.0 we have unrelated changes shown as in [https://github.com/terraform-providers/terraform-provider-akamai/issues/89].

so i tried to upgrade to v0.8.0 in order to see if it was fixed and then I got - Error: rpc error: code = Unavailable desc = transport is closing

my data resources:

data "akamai_group" "group" {
  name = "NAME"
}

data "akamai_contract" "contract" {
  group = "NAME"
}

data "akamai_cp_code" "code" {
  name     = "NAME"
  group    = "${data.akamai_group.group.id}"
  contract = "${data.akamai_contract.contract.id}"
}

data "akamai_property_rules" "rules" {
  rules { # Default rule
    behavior {
      name = "origin"
      option {
        key   = "cacheKeyHostname"
        value = "ORIGIN_HOSTNAME"
      }
      option {
        key   = "originType"
        value = "CUSTOMER"
      }
      option {
        key   = "hostname"
        value = "1.2.3.4"
      }
      option {
        key   = "forwardHostHeader"
        value = "REQUEST_HOST_HEADER"
      }
      option {
        key   = "compress"
        value = true
      }
      option {
        key   = "enableTrueClientIp"
        value = false
      }
      option {
        key   = "httpPort"
        value = 80
      }
      option {
        key   = "httpsPort"
        value = 443
      }
      option {
        key   = "verificationMode"
        value = "CUSTOM"
      }
      option {
        key   = "originSni"
        value = false
      }
      option {
        key   = "originCertsToHonor"
        value = "STANDARD_CERTIFICATE_AUTHORITIES"
      }
      option {
        key    = "standardCertificateAuthorities"
        values = ["akamai-permissive", "THIRD_PARTY_AMAZON"]
      }
      option {
        key    = "customValidCnValues"
        values = ["{{Origin Hostname}}", "{{Forward Host Header}}"]
      }
    }
    behavior {
      name = "caching"
      option {
        key   = "behavior"
        value = "CACHE_CONTROL_AND_EXPIRES"
      }
      option {
        key   = "mustRevalidate"
        value = true
      }
      option {
        key   = "defaultTtl"
        value = "0h"
      }
      option {
        key   = "honorPrivateEnabled"
        value = false
      }
      option {
        key   = "honorMustrevalidateEnabled"
        value = false
      }
    }
    behavior {
      name = "allowPost"
      option {
        key   = "enabled"
        value = true
      }
      option {
        key   = "allowWithoutContentLength"
        value = false
      }
    }
    behavior {
      name = "report"
      option {
        key   = "logHost"
        value = false
      }
      option {
        key   = "logReferer"
        value = false
      }
      option {
        key   = "logUserAgent"
        value = true
      }
      option {
        key   = "logAcceptLanguage"
        value = false
      }
      option {
        key   = "logCookies"
        value = "OFF"
      }
      option {
        key   = "logCustomLogField"
        value = false
      }
    }
    behavior {
      name = "sureRoute"
      option {
        key   = "enabled"
        value = false
      }
      option {
        key   = "srDownloadLinkTitle"
        value = ""
      }
    }
    behavior {
      name = "tieredDistribution"
      option {
        key   = "enabled"
        value = true
      }
    }
    behavior {
      name = "prefetch"
      option {
        key   = "enabled"
        value = true
      }
    }
    behavior {
      name = "realUserMonitoring"
      option {
        key   = "enabled"
        value = false
      }
    }
    behavior {
      name = "http2"
      option {
        key   = "enabled"
        value = ""
      }
    }
    behavior {
      name = "allowTransferEncoding"
      option {
        key   = "enabled"
        value = true
      }
    }
    rule {
      name = "Redirect to HTTPS"
      behavior {
        name = "redirect"
        option {
          key   = "queryString"
          value = "APPEND"
        }
        option {
          key   = "responseCode"
          value = 301
        }
        option {
          key   = "destinationHostname"
          value = "SAME_AS_REQUEST"
        }
        option {
          key   = "destinationPath"
          value = "SAME_AS_REQUEST"
        }
        option {
          key   = "destinationProtocol"
          value = "HTTPS"
        }
        option {
          key   = "mobileDefaultChoice"
          value = "DEFAULT"
        }
      }
      criteria {
        name = "requestProtocol"
        option {
          key   = "value"
          value = "HTTP"
        }
      }
    }
    rule {
      name = ADDRESS
      criteria {
        name = "hostname"
        option {
          key   = "matchOperator"
          value = "IS_ONE_OF"
        }
        option {
          key    = "values"
          values = [ADDRESS]
        }
      }
      behavior {
        name = "origin"
        option {
          key   = "cacheKeyHostname"
          value = "ORIGIN_HOSTNAME"
        }
        option {
          key   = "compress"
          value = true
        }
        option {
          key    = "customValidCnValues"
          values = ["{{Origin Hostname}}", "{{Forward Host Header}}"]
        }
        option {
          key   = "enableTrueClientIp"
          value = true
        }
        option {
          key   = "forwardHostHeader"
          value = "ORIGIN_HOSTNAME"
        }
        option {
          key   = "hostname"
          value = "${aws_cloudfront_distribution.s3_distribution.domain_name}"
        }
        option {
          key   = "httpPort"
          value = 80
        }
        option {
          key   = "httpsPort"
          value = 443
        }
        option {
          key   = "originCertificate"
          value = ""
        }
        option {
          key   = "originCertsToHonor"
          value = "STANDARD_CERTIFICATE_AUTHORITIES"
        }
        option {
          key   = "originSni"
          value = false
        }
        option {
          key   = "originType"
          value = "CUSTOMER"
        }
        option {
          key   = "ports"
          value = ""
        }
        option {
          key    = "standardCertificateAuthorities"
          values = ["akamai-permissive", "THIRD_PARTY_AMAZON"]
        }
        option {
          key   = "trueClientIpClientSetting"
          value = false
        }
        option {
          key   = "trueClientIpHeader"
          value = "True-Client-IP"
        }
        option {
          key   = "verificationMode"
          value = "CUSTOM"
        }
      }
    }
    rule {
      name = "Content Compression"
      criteria {
        name = "contentType"
        option {
          key   = "matchCaseSensitive"
          value = false
        }
        option {
          key   = "matchOperator"
          value = "IS_ONE_OF"
        }
        option {
          key   = "matchWildcard"
          value = true
        }
        option {
          key    = "values"
          values = ["text/*", "application/javascript", "application/x-javascript", "application/x-javascript*", "application/json", "application/x-json", "application/*+json", "application/*+xml", "application/text", "application/vnd.microsoft.icon", "application/vnd-ms-fontobject", "application/x-font-ttf", "application/x-font-opentype", "application/x-font-truetype", "application/xmlfont/eot", "application/xml", "font/opentype", "font/otf", "font/eot", "image/svg+xml", "image/vnd.microsoft.icon"]
        }
      }
      behavior {
        name = "gzipResponse"
        option {
          key   = "behavior"
          value = "ALWAYS"
        }
      }
    }
    rule {
      name = "Static Content"
      criteria {
        name = "fileExtension"
        option {
          key   = "matchCaseSensitive"
          value = false
        }
        option {
          key   = "matchOperator"
          value = "IS_ONE_OF"
        }
        option {
          key    = "values"
          values = ["aif", "aiff", "au", "avi", "bin", "bmp", "cab", "carb", "cct", "cdf", "class", "css", "doc", "dcr", "dtd", "exe", "flv", "gcf", "gff", "gif", "grv", "hdml", "hqx", "ico", "ini", "jpeg", "jpg", "js", "mov", "mp3", "nc", "pct", "pdf", "png", "ppc", "pws", "swa", "swf", "txt", "vbs", "w32", "wav", "wbmp", "wml", "wmlc", "wmls", "wmlsc", "xsd", "zip", "pict", "tif", "tiff", "mid", "midi", "ttf", "eot", "woff", "woff2", "otf", "svg", "svgz", "webp", "jxr", "jar", "jp2"]
        }
      }
      behavior {
        name = "caching"
        option {
          key   = "behavior"
          value = "CACHE_CONTROL_AND_EXPIRES"
        }
        option {
          key   = "mustRevalidate"
          value = false
        }
        option {
          key   = "defaultTtl"
          value = "1h"
        }
        option {
          key   = "honorPrivateEnabled"
          value = false
        }
        option {
          key   = "honorMustrevalidateEnabled"
          value = false
        }
      }
      behavior {
        name = "prefetch"
        option {
          key   = "enabled"
          value = false
        }
      }
      behavior {
        name = "prefetchable"
        option {
          key   = "enabled"
          value = true
        }
      }
    }
    rule {
      name = "Dynamic Content"
      criteria {
        name = "cacheability"
        option {
          key   = "matchOperator"
          value = "IS_NOT"
        }
        option {
          key   = "value"
          value = "CACHEABLE"
        }
      }
      behavior {
        name = "downstreamCache"
        option {
          key   = "behavior"
          value = "TUNNEL_ORIGIN"
        }
      }
    }
    rule {
      name = "Security Headers"
      behavior {
        name = "modifyOutgoingResponseHeader"
        option {
          key   = "action"
          value = "MODIFY"
        }
        option {
          key   = "standardModifyHeaderName"
          value = "OTHER"
        }
        option {
          key   = "newHeaderValue"
          value = "max-age=31536000;preload"
        }
        option {
          key   = "avoidDuplicateHeaders"
          value = true
        }
        option {
          key   = "customHeaderName"
          value = "Strict-Transport-Security"
        }
      }
      behavior {
        name = "modifyOutgoingResponseHeader"
        option {
          key   = "action"
          value = "MODIFY"
        }
        option {
          key   = "standardModifyHeaderName"
          value = "OTHER"
        }
        option {
          key   = "newHeaderValue"
          value = "nosniff"
        }
        option {
          key   = "avoidDuplicateHeaders"
          value = true
        }
        option {
          key   = "customHeaderName"
          value = "X-Content-Type-Options"
        }
      }
      behavior {
        name = "modifyOutgoingResponseHeader"
        option {
          key   = "action"
          value = "MODIFY"
        }
        option {
          key   = "standardModifyHeaderName"
          value = "OTHER"
        }
        option {
          key   = "newHeaderValue"
          value = "no-referrer-when-downgrade"
        }
        option {
          key   = "avoidDuplicateHeaders"
          value = true
        }
        option {
          key   = "customHeaderName"
          value = "Referrer-Policy"
        }
      }
      behavior {
        name = "modifyOutgoingResponseHeader"
        option {
          key   = "action"
          value = "MODIFY"
        }
        option {
          key   = "standardModifyHeaderName"
          value = "OTHER"
        }
        option {
          key   = "newHeaderValue"
          value = "1; mode=block"
        }
        option {
          key   = "avoidDuplicateHeaders"
          value = true
        }
        option {
          key   = "customHeaderName"
          value = "X-XSS-Protection"
        }
      }
      behavior {
        name = "modifyOutgoingResponseHeader"
        option {
          key   = "action"
          value = "MODIFY"
        }
        option {
          key   = "standardModifyHeaderName"
          value = "OTHER"
        }
        option {
          key   = "newHeaderValue"
          value = "SAMEORIGIN"
        }
        option {
          key   = "avoidDuplicateHeaders"
          value = true
        }
        option {
          key   = "customHeaderName"
          value = "X-FRAME-OPTIONS"
        }
      }
    }
  }
}

my terraform output:

# akamai_property.mobile will be updated in-place
  ~ resource "akamai_property" "mobile" {
        account            = "ACCOUNT"
        contact            = [
            "EMAIL",
        ]
        contract           = "CTR"
        cp_code            = "CP"
        edge_hostnames     = {
            "ADDRESS" = "EDGE_HOSTNAME"
        }
        group              = "GRP"
        hostnames          = {
            "ADDRESS" = "EDGE_HOSTNAME"
        }
        id                 = "ID"
        is_secure          = true
        name               = "NAME"
        product            = "PRD"
        production_version = 38
        rule_format        = "v2018-02-27"
      ~ rules              = jsonencode(
          ~ {
              ~ accountId       = "ACCOUNT_ID" -> ""
              ~ contractId      = "CONTRACT_ID" -> ""
                etag            = ""
              ~ groupId         = "GRP" -> ""
              ~ propertyId      = "PROPERTY_ID" -> ""
              ~ propertyVersion = 38 -> 0
              ~ ruleFormat      = "v2018-02-27" -> ""
              ~ rules           = {
                  ~ behaviors = [
                        {
                            name    = "sureRoute"
                            options = {
                                enabled             = false
                                srDownloadLinkTitle = ""
                            }
                        },
                        {
                            name    = "caching"
                            options = {
                                behavior                   = "CACHE_CONTROL_AND_EXPIRES"
                                defaultTtl                 = "0h"
                                honorMustrevalidateEnabled = false
                                honorPrivateEnabled        = false
                                mustRevalidate             = true
                            }
                        },
                        {
                            name    = "report"
                            options = {
                                logAcceptLanguage = false
                                logCookies        = "OFF"
                                logCustomLogField = false
                                logHost           = false
                                logReferer        = false
                                logUserAgent      = true
                            }
                        },
                        {
                            name    = "origin"
                            options = {
                                cacheKeyHostname               = "ORIGIN_HOSTNAME"
                                compress                       = true
                                customValidCnValues            = [
                                    "{{Origin Hostname}}",
                                    "{{Forward Host Header}}",
                                ]
                                enableTrueClientIp             = false
                                forwardHostHeader              = "REQUEST_HOST_HEADER"
                                hostname                       = "1.2.3.4"
                                httpPort                       = 80
                                httpsPort                      = 443
                                originCertsToHonor             = "STANDARD_CERTIFICATE_AUTHORITIES"
                                originSni                      = false
                                originType                     = "CUSTOMER"
                                standardCertificateAuthorities = [
                                    "akamai-permissive",
                                    "THIRD_PARTY_AMAZON",
                                ]
                                verificationMode               = "CUSTOM"
                            }
                        },
                        {
                            name    = "realUserMonitoring"
                            options = {
                                enabled = false
                            }
                        },
                        {
                            name    = "allowPost"
                            options = {
                                allowWithoutContentLength = false
                                enabled                   = true
                            }
                        },
                        {
                            name    = "allowTransferEncoding"
                            options = {
                                enabled = true
                            }
                        },
                        {
                            name    = "prefetch"
                            options = {
                                enabled = true
                            }
                        },
                        {
                            name    = "tieredDistribution"
                            options = {
                                enabled = true
                            }
                        },
                        {
                            name    = "http2"
                            options = {
                                enabled = ""
                            }
                        },
                      - {
                          - name    = "cpCode"
                          - options = {
                              - value = {
                                  - id = 557659
                                }
                            }
                        },
                    ]
                  ~ children  = [
                      ~ {
                            behaviors           = [
                                {
                                    name    = "downstreamCache"
                                    options = {
                                        behavior = "TUNNEL_ORIGIN"
                                    }
                                },
                            ]
                            criteria            = [
                                {
                                    name    = "cacheability"
                                    options = {
                                        matchOperator = "IS_NOT"
                                        value         = "CACHEABLE"
                                    }
                                },
                            ]
                          - criteriaMustSatisfy = "all" -> null
                            name                = "Dynamic Content"
                            options             = {}
                        },
                      ~ {
                            behaviors           = [
                                {
                                    name    = "redirect"
                                    options = {
                                        destinationHostname = "SAME_AS_REQUEST"
                                        destinationPath     = "SAME_AS_REQUEST"
                                        destinationProtocol = "HTTPS"
                                        mobileDefaultChoice = "DEFAULT"
                                        queryString         = "APPEND"
                                        responseCode        = 301
                                    }
                                },
                            ]
                            criteria            = [
                                {
                                    name    = "requestProtocol"
                                    options = {
                                        value = "HTTP"
                                    }
                                },
                            ]
                          - criteriaMustSatisfy = "all" -> null
                            name                = "Redirect to HTTPS"
                            options             = {}
                        },
                      ~ {
                            behaviors           = [
                                {
                                    name    = "gzipResponse"
                                    options = {
                                        behavior = "ALWAYS"
                                    }
                                },
                            ]
                            criteria            = [
                                {
                                    name    = "contentType"
                                    options = {
                                        matchCaseSensitive = false
                                        matchOperator      = "IS_ONE_OF"
                                        matchWildcard      = true
                                        values             = [
                                            "application/vnd.microsoft.icon",
                                            "application/x-font-opentype",
                                            "application/*+xml",
                                            "application/x-font-ttf",
                                            "font/otf",
                                            "font/eot",
                                            "application/*+json",
                                            "image/svg+xml",
                                            "application/xmlfont/eot",
                                            "application/json",
                                            "application/text",
                                            "font/opentype",
                                            "image/vnd.microsoft.icon",
                                            "application/vnd-ms-fontobject",
                                            "application/xml",
                                            "application/x-javascript",
                                            "application/javascript",
                                            "application/x-javascript*",
                                            "application/x-json",
                                            "text/*",
                                            "application/x-font-truetype",
                                        ]
                                    }
                                },
                            ]
                          - criteriaMustSatisfy = "all" -> null
                            name                = "Content Compression"
                            options             = {}
                        },
                      ~ {
                            behaviors           = [
                                {
                                    name    = "origin"
                                    options = {
                                        cacheKeyHostname               = "ORIGIN_HOSTNAME"
                                        compress                       = true
                                        customValidCnValues            = [
                                            "{{Origin Hostname}}",
                                            "{{Forward Host Header}}",
                                        ]
                                        enableTrueClientIp             = true
                                        forwardHostHeader              = "ORIGIN_HOSTNAME"
                                        hostname                       = "HOSTNAME"
                                        httpPort                       = 80
                                        httpsPort                      = 443
                                        originCertificate              = ""
                                        originCertsToHonor             = "STANDARD_CERTIFICATE_AUTHORITIES"
                                        originSni                      = false
                                        originType                     = "CUSTOMER"
                                        ports                          = ""
                                        standardCertificateAuthorities = [
                                            "akamai-permissive",
                                            "THIRD_PARTY_AMAZON",
                                        ]
                                        trueClientIpClientSetting      = false
                                        trueClientIpHeader             = "True-Client-IP"
                                        verificationMode               = "CUSTOM"
                                    }
                                },
                            ]
                            criteria            = [
                                {
                                    name    = "hostname"
                                    options = {
                                        matchOperator = "IS_ONE_OF"
                                        values        = [
                                            "ADDRESS",
                                        ]
                                    }
                                },
                            ]
                          - criteriaMustSatisfy = "all" -> null
                            name                = "ADDRESS"
                            options             = {}
                        },
                      ~ {
                            behaviors           = [
                                {
                                    name    = "caching"
                                    options = {
                                        behavior                   = "CACHE_CONTROL_AND_EXPIRES"
                                        defaultTtl                 = "1h"
                                        honorMustrevalidateEnabled = false
                                        honorPrivateEnabled        = false
                                        mustRevalidate             = false
                                    }
                                },
                                {
                                    name    = "prefetchable"
                                    options = {
                                        enabled = true
                                    }
                                },
                                {
                                    name    = "prefetch"
                                    options = {
                                        enabled = false
                                    }
                                },
                            ]
                            criteria            = [
                                {
                                    name    = "fileExtension"
                                    options = {
                                        matchCaseSensitive = false
                                        matchOperator      = "IS_ONE_OF"
                                        values             = [
                                            "gif",
                                            "tiff",
                                            "nc",
                                            "tif",
                                            "gff",
                                            "gcf",
                                            "webp",
                                            "au",
                                            "wav",
                                            "mov",
                                            "txt",
                                            "aif",
                                            "xsd",
                                            "bmp",
                                            "dcr",
                                            "dtd",
                                            "jp2",
                                            "ico",
                                            "jxr",
                                            "pdf",
                                            "swf",
                                            "jar",
                                            "vbs",
                                            "svg",
                                            "otf",
                                            "png",
                                            "eot",
                                            "js",
                                            "cab",
                                            "jpeg",
                                            "midi",
                                            "w32",
                                            "pws",
                                            "wmls",
                                            "woff2",
                                            "flv",
                                            "cct",
                                            "jpg",
                                            "bin",
                                            "wbmp",
                                            "swa",
                                            "cdf",
                                            "pict",
                                            "ttf",
                                            "hqx",
                                            "exe",
                                            "ppc",
                                            "hdml",
                                            "aiff",
                                            "css",
                                            "wml",
                                            "grv",
                                            "avi",
                                            "mp3",
                                            "wmlc",
                                            "pct",
                                            "zip",
                                            "wmlsc",
                                            "svgz",
                                            "mid",
                                            "ini",
                                            "woff",
                                            "class",
                                            "doc",
                                            "carb",
                                        ]
                                    }
                                },
                            ]
                          - criteriaMustSatisfy = "all" -> null
                            name                = "Static Content"
                            options             = {}
                        },
                      ~ {
                            behaviors           = [
                                {
                                    name    = "modifyOutgoingResponseHeader"
                                    options = {
                                        action                   = "MODIFY"
                                        avoidDuplicateHeaders    = true
                                        customHeaderName         = "Strict-Transport-Security"
                                        newHeaderValue           = "max-age=31536000;preload"
                                        standardModifyHeaderName = "OTHER"
                                    }
                                },
                                {
                                    name    = "modifyOutgoingResponseHeader"
                                    options = {
                                        action                   = "MODIFY"
                                        avoidDuplicateHeaders    = true
                                        customHeaderName         = "X-XSS-Protection"
                                        newHeaderValue           = "1; mode=block"
                                        standardModifyHeaderName = "OTHER"
                                    }
                                },
                                {
                                    name    = "modifyOutgoingResponseHeader"
                                    options = {
                                        action                   = "MODIFY"
                                        avoidDuplicateHeaders    = true
                                        customHeaderName         = "X-FRAME-OPTIONS"
                                        newHeaderValue           = "SAMEORIGIN"
                                        standardModifyHeaderName = "OTHER"
                                    }
                                },
                                {
                                    name    = "modifyOutgoingResponseHeader"
                                    options = {
                                        action                   = "MODIFY"
                                        avoidDuplicateHeaders    = true
                                        customHeaderName         = "X-Content-Type-Options"
                                        newHeaderValue           = "nosniff"
                                        standardModifyHeaderName = "OTHER"
                                    }
                                },
                                {
                                    name    = "modifyOutgoingResponseHeader"
                                    options = {
                                        action                   = "MODIFY"
                                        avoidDuplicateHeaders    = true
                                        customHeaderName         = "Referrer-Policy"
                                        newHeaderValue           = "no-referrer-when-downgrade"
                                        standardModifyHeaderName = "OTHER"
                                    }
                                },
                            ]
                          - criteriaMustSatisfy = "all" -> null
                            name                = "Security Headers"
                            options             = {}
                        },
                    ]
                    name      = "default"
                  ~ options   = {
                      - is_secure = true -> null
                    }
                }
            }
        )
        rulessha           = "SHA"
        staging_version    = 38
      ~ version            = 38 -> (known after apply)
    }