provider "aws" {
  region = "${var.region}"
}


# Terraform backends cannot contain interpolations
terraform {
  backend "s3" {
    bucket         = "dev-orcd-terraform-state"
    key            = "dev/ows-product-workflow/terraform.tfstate"
    region         = "us-east-1"
    encrypt        = "true"
    dynamodb_table = "terraform-dev-ows-product-workflow"
  }
}

data "aws_secretsmanager_secret" "AR_MYSQL_PASSWORD" {
  name = "${var.environment}/${var.service_name}/AR_MYSQL_PASSWORD"
}

data "aws_secretsmanager_secret_version" "AR_MYSQL_PASSWORD" {
  secret_id = "${data.aws_secretsmanager_secret.AR_MYSQL_PASSWORD.id}"
}

data "aws_secretsmanager_secret" "NEW_RELIC_LICENSE_KEY" {
  name = "${var.environment}/${var.service_name}/NEW_RELIC_LICENSE_KEY"
}

data "aws_secretsmanager_secret_version" "NEW_RELIC_LICENSE_KEY" {
  secret_id = "${data.aws_secretsmanager_secret.NEW_RELIC_LICENSE_KEY.id}"
}

module "ows_service_owsrequest" {
  source = "git@github.com:theorchard/terraform-owsrequest.git//"

  environment_name = "${var.environment}"
  service_name     = "${var.service_name}"
}

 
module "ows_product_workflow_environment" {
  source           = "git@github.com:theorchard/terraform-elasticbeanstalk.git//"
  environment      = "${var.environment}"
  service_name     = "${var.service_name}"
  
  iam_managed_policy_attachments = [
    "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly",
    "arn:aws:iam::aws:policy/CloudWatchFullAccess",
    "arn:aws:iam::103233932089:policy/SQS-Cloudalytics-EB",
    "arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier",
    "${module.ows_service_owsrequest.policy_arn_output}"
  ]


  environment_variables = [
    {
      namespace = "aws:elasticbeanstalk:application:environment"
      name = "Environment"
      value = "${var.environment}"
    },
    {
      namespace = "aws:elasticbeanstalk:application:environment"
      name = "AR_MYSQL_DATABASE"
      value = "${var.ar_mysql_database}"
    },
    {
      namespace = "aws:elasticbeanstalk:application:environment"
      name = "AR_MYSQL_HOST"
      value = "${var.ar_mysql_host}"
    },    
    {
      namespace = "aws:elasticbeanstalk:application:environment"
      name = "AR_MYSQL_PORT"
      value = "${var.ar_mysql_port}"
    },        
    {
      namespace = "aws:elasticbeanstalk:application:environment"
      name = "AR_MYSQL_USER"
      value = "${data.aws_secretsmanager_secret_version.AR_MYSQL_USER.secret_string}"
    },
    {
      namespace = "aws:elasticbeanstalk:application:environment"
      name = "AR_MYSQL_PASSWORD"
      value = "${data.aws_secretsmanager_secret_version.AR_MYSQL_PASSWORD.secret_string}"
    },
    {
      namespace = "aws:elasticbeanstalk:application:environment"
      name = "SENTRY_DSN"
      value = "${var.sentry_dsn}"
    },
    {
      namespace = "aws:elasticbeanstalk:application:environment"
      name = "LOGGER_DSN"
      value = "${var.logger_dsn}"
    },
    {
      namespace = "aws:elasticbeanstalk:application:environment"
      name = "NEW_RELIC_APP_NAME"
      value = "${var.new_relic_app_name}"
    },
    {
      namespace = "aws:elasticbeanstalk:application:environment"
      name = "NEW_RELIC_LICENSE_KEY"
      value = "${data.aws_secretsmanager_secret_version.NEW_RELIC_LICENSE_KEY.secret_string}"
    }    
  ]  
}
