terraform/translation/registry/main.tf (42 lines of code) (raw):
#
#Copyright 2023 Google LLC.
#This software is provided as-is, without warranty or representation for any use or purpose.
#Your use of it is subject to your agreement with Google.
#/************************* TERADATA TO GOOGLE BIGQUERY END TO END MIGRATION INFRASTRUCTURE*************************
locals {
image_prefix = "${var.artifact_registry_region}-docker.pkg.dev/${var.project_id}/${google_artifact_registry_repository.dmt-repo.repository_id}"
dvt_image_name = "data-validation-tool"
event_listener_image_name = "event_listener"
oracle_lib_path_split = split("/", var.oracle_instant_client_file_path)
}
resource "google_artifact_registry_repository" "dmt-repo" {
location = var.artifact_registry_region
repository_id = "dmt-repo"
description = "Repository for all images needed to run dmt tool."
format = "DOCKER"
}
/* DVT Docker image creation */
resource "null_resource" "dvt_image_creation" {
provisioner "local-exec" {
working_dir = var.dvt_source_path
command = "gcloud builds submit --config cloudbuild_dvt.yaml --region=${var.artifact_registry_region} --project ${var.project_id} --substitutions _ORACLE_INSTANTCLIENT_FILE_PATH=${var.oracle_instant_client_file_path},_ORACLE_ODBC_VERSION_NUMBER=${var.oracle_odbc_version_number},_TAG=${local.image_prefix}/${local.dvt_image_name},_FILE_NAME=${local.oracle_lib_path_split[length(local.oracle_lib_path_split) - 1]}"
}
triggers = {
file_hashes = jsonencode({
for fn in fileset(var.dvt_source_path, "**") :
fn => filesha256("${var.dvt_source_path}/${fn}")
})
region_change = var.artifact_registry_region
locals_changes = "${local.image_prefix}${local.dvt_image_name}${local.event_listener_image_name}"
}
}
/* Event listener Docker image creation */
resource "null_resource" "event_listener_image_creation" {
provisioner "local-exec" {
working_dir = var.event_listener_source_path
command = "gcloud builds submit --region=${var.artifact_registry_region} --tag ${local.image_prefix}/${local.event_listener_image_name} . --project ${var.project_id}"
}
triggers = {
file_hashes = jsonencode({
for fn in fileset(var.event_listener_source_path, "**") :
fn => filesha256("${var.event_listener_source_path}/${fn}")
})
region_change = var.artifact_registry_region
locals_changes = "${local.image_prefix}${local.dvt_image_name}${local.event_listener_image_name}"
}
}