module "default_tags" {
  source             = "git@github.com:theorchard/terraform-default-tags.git//?ref=2.0.0"
  environment        = var.environment
  application_family = var.application_family
  team_name          = var.team_name
}

data "aws_caller_identity" "current" {
}

provider "aws" {
  region = "us-east-1"

  default_tags {
    tags = module.default_tags.tags
  }
}

terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "qa/us_east_1_vpc/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

variable "vpc_name_tag" {
  type = map
  default = {
    dev  = "dev"
    qa   = "prod"
    prod = "prod"
  }
}

data "aws_vpc" "vpc" {
  tags = {
    Name = var.vpc_name_tag[var.env]
  }
}

data "aws_subnets" "private_subnets" {
  filter {
    name   = "vpc-id"
    values = [data.aws_vpc.vpc.id]
  }

  tags = {
    Name = "*private*"
    tier = "private"
  }
}

data "aws_subnet" "private_subnets" {
  for_each = toset(data.aws_subnets.private_subnets.ids)

  id = each.value
}

# Create elasticache subnet group
resource "aws_elasticache_subnet_group" "qa_elasticache_subnet_group" {
  description = "Cache subnet group for qa. Managed by Terraform."
  name        = "${var.env}-elasticache-subnet-group"
  subnet_ids  = values(data.aws_subnet.private_subnets).*.id
}
