provider "aws" {
  region = var.aws_region
}

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

data "aws_caller_identity" "current" {}

module "content_integrations_bulk_approve_owsrequest" {
  source = "git@github.com:theorchard/terraform-owsrequest.git//?ref=1.0.1"

  environment_name = var.environment
  service_name     = "${var.service_name}-bulk-approve"
}

data "aws_iam_policy_document" "content_integrations_scripts_assume_role_policy_document" {
  statement {
    actions = ["sts:AssumeRole"]

    principals {
      type = "AWS"

      identifiers = [
        "arn:aws:iam::${data.aws_caller_identity.current.account_id}:role/prod-jenkins-aws-pipeline-agent",
      ]
    }
  }
}

resource "aws_iam_role" "content_integrations_bulk_approve_service_role" {
  name               = "${var.environment}-content-integrations-bulk-approve-role"
  assume_role_policy = data.aws_iam_policy_document.content_integrations_scripts_assume_role_policy_document.json
  tags = {
    environment        = var.environment
    application_family = var.application_family
    service_name       = var.service_name
    terraformed        = "true"
  }
}

resource "aws_iam_role_policy_attachment" "content_integrations_scripts_role_attachment" {
  role       = aws_iam_role.content_integrations_bulk_approve_service_role.name
  policy_arn = module.content_integrations_bulk_approve_owsrequest.policy_arn_output
}

module "content_integrations_bulk_submit_owsrequest" {
  source = "git@github.com:theorchard/terraform-owsrequest.git//?ref=1.0.1"

  environment_name = var.environment
  service_name     = "${var.service_name}-bulk-submit"
}

resource "aws_iam_role" "content_integrations_bulk_submit_service_role" {
  name               = "${var.environment}-content-integrations-bulk-submit-role"
  assume_role_policy = data.aws_iam_policy_document.content_integrations_scripts_assume_role_policy_document.json
  tags = {
    environment        = var.environment
    application_family = var.application_family
    service_name       = var.service_name
    terraformed        = "true"
  }
}

resource "aws_iam_role_policy_attachment" "content_integrations_scripts_bulk_submit_role_attachment" {
  role       = aws_iam_role.content_integrations_bulk_submit_service_role.name
  policy_arn = module.content_integrations_bulk_submit_owsrequest.policy_arn_output
}


module "content_integrations_revert_will_not_deliver_owsrequest" {
  source = "git@github.com:theorchard/terraform-owsrequest.git//?ref=1.0.1"

  environment_name = var.environment
  service_name     = "${var.service_name}-revert-will-not-deliver"
}

resource "aws_iam_role" "content_integrations_revert_will_not_deliver_service_role" {
  name               = "${var.environment}-content-integrations-revert-will-not-deliver-role"
  assume_role_policy = data.aws_iam_policy_document.content_integrations_scripts_assume_role_policy_document.json
  tags = {
    environment        = var.environment
    application_family = var.application_family
    service_name       = var.service_name
    terraformed        = "true"
  }
}

resource "aws_iam_role_policy_attachment" "content_integrations_scripts_revert_will_not_deliver_role_attachment" {
  role       = aws_iam_role.content_integrations_revert_will_not_deliver_service_role.name
  policy_arn = module.content_integrations_revert_will_not_deliver_owsrequest.policy_arn_output
}
