

locals {
  test_vars = read_terragrunt_config("../../terragrunt.hcl")
  root_vars        = read_terragrunt_config(local.test_vars.locals.environment == "local" ? "../../terragrunt-localstack.hcl" : "../../terragrunt.hcl")
  environment      = local.root_vars.locals.environment
  region           = local.root_vars.inputs.region
  aws_account_id   = local.root_vars.locals.aws_account_id
  node_env         = local.root_vars.locals.node_env
  common_vars_path = "./common.hcl"
  common_vars      = read_terragrunt_config(local.common_vars_path)
  env_files_path   = "../_environments/${local.environment}.yaml"
  env_files_global = try(yamldecode(file(local.env_files_path)), {})
  env_files        = try(local.env_files_global[local.region], {})
}


dependency "api-gw" {
  config_path = "${local.environment == "local" ? "../api-gw/mock" : "../api-gw"}"
  skip_outputs = "${local.environment == "local" ? true : false}"
  mock_outputs = {
    exec-id = "dcsalsdf"
  }
}

inputs = merge(local.common_vars.inputs,
  {
    description   = "Lambda function with shared configurations"
    memory_size   = 512
    environment_variables = merge(local.common_vars.inputs.datadog_config, try(local.env_files.common.lambda.datadog_config, {}), {
      ENVIRONMENT       = local.environment
      NODE_ENV          = local.node_env
    })

    ### Policies
    policies = {
      cloudwatch = {
        policy = templatefile("../policies/cloudwatch.json", {})
      }

      api-gateway = {
        policy = templatefile("../policies/api-gateway.json", {
          path1                 = "POST/sdpv2/connectivity-layer/agent/push"
          api_gateway1_exec_arn = "arn:aws:execute-api:${local.region}:${local.aws_account_id}:${local.environment != "local" ? dependency.api-gw.outputs.exec-id : "*"}/*"
        })
      }
      datadog_secret = {
        policy = templatefile("../policies/datadog-secrets-manager.json", {
          dd_api_key_arn = try(local.env_files.common.lambda.datadog_config.DD_API_KEY_SECRET_ARN, "")
        })
      }
    }
    create_mongo_role = local.root_vars.inputs.environment == "local" ? false : true
    mongodb_roles = {
      readWriteP81 = {
        database_name = "p81-${local.root_vars.inputs.environment}"
        role_name     = "readWrite"
      }
    }
    mongodb_scopes = {
       p81-devops = {
       name = local.root_vars.inputs.environment == "ahsoka" ? "p81-devops-qa" : "p81-${local.root_vars.inputs.environment}"
       type = "CLUSTER"
      }   
    } 
}, try(local.env_files.common.lambda, {}), try(local.env_files[local.function_name], {}))
