resource "aws_iam_role" "video_approval_workflow_state_machine_role" {
  name               = "${var.environment}_video_approval_workflow_state_machine_role"
  assume_role_policy = data.aws_iam_policy_document.assume_statemachines_role.json
}

resource "aws_sfn_state_machine" "video_approval_workflow" {
  name     = "${var.environment}_${var.video_approval_workflow_state_machine_name}"
  role_arn = aws_iam_role.video_approval_workflow_state_machine_role.arn

  definition = templatefile("${path.module}/${var.video_approval_workflow_state_machine_definition_file}", {
    region                                                           = var.region
    daemon_video_start_workflow_arn                                  = aws_sfn_activity.daemon_video_start_workflow.id
    daemon_video_transfer_prores_from_s3_to_ripper_arn               = aws_sfn_activity.daemon_video_transfer_prores_from_s3_to_ripper.id
    daemon_video_is_ripper_mezzanine_processing_done_arn             = aws_sfn_activity.daemon_video_is_ripper_mezzanine_processing_done.id
    daemon_video_transfer_h264_from_s3_to_ripper_arn                 = aws_sfn_activity.daemon_video_transfer_h264_from_s3_to_ripper.id
    daemon_video_transfer_h264_from_s3_to_ripper_storage_arn         = aws_sfn_activity.daemon_video_transfer_h264_from_s3_to_ripper_storage.id
    daemon_video_is_ripper_h264_processing_done_arn                  = aws_sfn_activity.daemon_video_is_ripper_h264_processing_done.id
    daemon_video_get_create_mezzanines_inputs_arn                    = aws_sfn_activity.daemon_video_get_create_mezzanines_inputs.id
    daemon_video_create_mezzanines_arn                               = aws_sfn_activity.daemon_video_create_mezzanines.id
    daemon_video_is_create_mezzanines_done_arn                       = aws_sfn_activity.daemon_video_is_create_mezzanines_done.id
    daemon_video_end_workflow_arn                                    = aws_sfn_activity.daemon_video_end_workflow.id
    daemon_video_get_product_metadata_arn                            = aws_sfn_activity.daemon_video_get_product_metadata.id
    daemon_video_convert_default_thumbnail_to_tiff_arn               = aws_sfn_activity.daemon_video_convert_default_thumbnail_to_tiff.id
    daemon_video_transfer_tiff_thumbnail_from_s3_to_ripper_arn       = aws_sfn_activity.daemon_video_transfer_tiff_thumbnail_from_s3_to_ripper.id
    daemon_video_is_ripper_tiff_thumbnail_processing_done_arn        = aws_sfn_activity.daemon_video_is_ripper_tiff_thumbnail_processing_done.id
    daemon_video_extract_prores_mezzanine_metadata_arn               = aws_sfn_activity.daemon_video_extract_prores_mezzanine_metadata.id
    daemon_video_convert_thumbnails_to_tiffs_arn                     = aws_sfn_activity.daemon_video_convert_thumbnails_to_tiffs.id
    daemon_video_write_thumbnail_locations_to_video_asset_table_arn  = aws_sfn_activity.daemon_video_write_thumbnail_locations_to_video_asset_table.id
    daemon_video_write_mezz_video_locations_to_video_asset_table_arn = aws_sfn_activity.daemon_video_write_mezz_video_locations_to_video_asset_table.id
    daemon_video_mark_video_product_as_approved_arn                  = aws_sfn_activity.daemon_video_mark_video_product_as_approved.id

    physical_location_id = var.physical_location_id
  })

  tags = {
    application_family = var.application_family
    environment        = var.environment
    service_name       = var.video_approval_workflow_state_machine_name
    terraformed        = true
  }
  tracing_configuration {
    enabled = true
  }
}
