patrickchugh / terravision

Terravision creates Professional Cloud Architecture Diagrams from your Terraform code automatically. Supports AWS, Google and Azure.
Mozilla Public License 2.0
683 stars 67 forks source link

Unhandled error: <class 'KeyError'>, 'aws_subnet.private[1a]', <traceback object at 0xffffb06148c0> #112

Closed jonbutland closed 1 month ago

jonbutland commented 3 months ago

The variable,

subnets = {
    "1a" = {
      "public_cidr": "x.x.x.x/24"
      "private_cidr": "x.x.x.x/24"
      "az": "us-east-1a"
    }
    "1b" = {
      "public_cidr": "x.x.x.x/24"
      "private_cidr": "x.x.x.x/24"
      "az": "us-east-1b"
    }
    "1c" = {
      "public_cidr": "x.x.x.x/24"
      "private_cidr": "x.x.x.x/24"
      "az": "us-east-1c"
    }
  }

The code,

resource "aws_subnet" "private" {
  for_each    = var.subnets
  vpc_id      = aws_vpc.vpc.id
  cidr_block  = each.value["private_cidr"]
  availability_zone = each.value["az"]
  tags = {
    Name      = "private-subnet-${each.key}"
  }
}

terravision draw --source --debug

Traceback (most recent call last): File "/terravision/terravision", line 265, in cli( File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1130, in call return self.main(args, kwargs) File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, ctx.params) File "/usr/local/lib/python3.9/site-packages/click/core.py", line 760, in invoke return __callback(args, **kwargs) File "/terravision/terravision", line 188, in draw tfdata = compile_tfdata(source, varfile, workspace, debug, annotate) File "/terravision/terravision", line 64, in compile_tfdata tfdata = graphmaker.handle_special_resources(tfdata) File "/terravision/modules/graphmaker.py", line 462, in handle_special_resources tfdata = getattr(resource_handlers, handler)(tfdata) File "/terravision/modules/resource_handlers.py", line 154, in aws_handle_subnet_azs tfdata["meta_data"][az]["count"] = tfdata["meta_data"][subnet]["count"] KeyError: 'aws_subnet.private[1a]'

patrickchugh commented 1 month ago

Thanks for the bug report. Can you confirm if this still exists with the latest release pushed just now?

jonbutland commented 1 month ago

That error seems to be fixed now.