variable "InstanceImageOCID" {
  type = "map"
  default = {
    // Oracle-provided image "Oracle-Linux-7.4-2017.12.18-0"
    // See https://docs.us-phoenix-1.oraclecloud.com/Content/Resources/Assets/OracleProvidedImageOCIDs.pdf
    us-phoenix-1 = "ocid1.image.oc1.phx.aaaaaaaasc56hnpnx7swoyd2fw5gyvbn3kcdmqc2guiiuvnztl2erth62xnq"
    us-ashburn-1 = "ocid1.image.oc1.iad.aaaaaaaaxrqeombwty6jyqgk3fraczdd63bv66xgfsqka4ktr7c57awr3p5a"
    eu-frankfurt-1 = "ocid1.image.oc1.eu-frankfurt-1.aaaaaaaayxmzu6n5hsntq4wlffpb4h6qh6z3uskpbm5v3v4egqlqvwicfbyq"
  }
}

resource "oci_core_instance" "AlphaDB01" {
  availability_domain = "${lookup(data.oci_identity_availability_domains.ADs.availability_domains[0],"name")}"
  compartment_id      = "${var.compartment_ocid}"
  display_name        = "AlphaDB01"
  image               = "${var.InstanceImageOCID[var.region]}"
  shape               = "${var.InstanceShape}"
  subnet_id           = "${oci_core_subnet.AlphaDBSubnetAD01.id}"

  metadata {
    ssh_authorized_keys = "${var.ssh_public_key}"
    user_data           = "${base64encode(file(var.InstanceBootStrap))}"
  }

  connection {
    type        = "ssh"
    host        = "${self.public_ip}"
    user        = "opc"
    private_key = "${var.ssh_private_key}"
    timeout     = "30m"
  }

  provisioner "remote-exec" {
    inline = [
      "touch ~/IMadeAFile.Right.Here.AlphaDB01"
    ]
  }
}

resource "oci_core_instance" "AlphaDB02" {
  availability_domain = "${lookup(data.oci_identity_availability_domains.ADs.availability_domains[1],"name")}"
  compartment_id      = "${var.compartment_ocid}"
  display_name        = "AlphaDB02"
  image               = "${var.InstanceImageOCID[var.region]}"
  shape               = "${var.InstanceShape}"
  subnet_id           = "${oci_core_subnet.AlphaDBSubnetAD02.id}"

  metadata {
    ssh_authorized_keys = "${var.ssh_public_key}"
    user_data           = "${base64encode(file(var.InstanceBootStrap))}"
  }

  connection {
    type        = "ssh"
    host        = "${self.public_ip}"
    user        = "opc"
    private_key = "${var.ssh_private_key}"
    timeout     = "30m"
  }

  provisioner "remote-exec" {
    inline = [
      "touch ~/IMadeAFile.Right.Here.AlphaDB02"
    ]
  }
}

resource "oci_core_instance" "AlphaMW01" {
  availability_domain = "${lookup(data.oci_identity_availability_domains.ADs.availability_domains[0],"name")}"
  compartment_id      = "${var.compartment_ocid}"
  display_name        = "AlphaMW01"
  image               = "${var.InstanceImageOCID[var.region]}"
  shape               = "${var.InstanceShape}"
  subnet_id           = "${oci_core_subnet.AlphaMWSubnetAD01.id}"

  metadata {
    ssh_authorized_keys = "${var.ssh_public_key}"
    user_data           = "${base64encode(file(var.InstanceBootStrap))}"
  }

  connection {
    type        = "ssh"
    host        = "${self.public_ip}"
    user        = "opc"
    private_key = "${var.ssh_private_key}"
    timeout     = "30m"
  }

  provisioner "remote-exec" {
    inline = [
      "touch ~/IMadeAFile.Right.Here.AlphaMW01"
    ]
  }
}

resource "oci_core_instance" "AlphaMW02" {
  availability_domain = "${lookup(data.oci_identity_availability_domains.ADs.availability_domains[1],"name")}"
  compartment_id      = "${var.compartment_ocid}"
  display_name        = "AlphaMW02"
  image               = "${var.InstanceImageOCID[var.region]}"
  shape               = "${var.InstanceShape}"
  subnet_id           = "${oci_core_subnet.AlphaMWSubnetAD02.id}"

  metadata {
    ssh_authorized_keys = "${var.ssh_public_key}"
    user_data           = "${base64encode(file(var.InstanceBootStrap))}"
  }

  connection {
    type        = "ssh"
    host        = "${self.public_ip}"
    user        = "opc"
    private_key = "${var.ssh_private_key}"
    timeout     = "30m"
  }

  provisioner "remote-exec" {
    inline = [
      "touch ~/IMadeAFile.Right.Here.AlphaMW02"
    ]
  }
}

resource "null_resource" "client_image" {
  provisioner "local-exec" {
    command = ". ./importci.sh"
  }
}

resource "oci_core_instance" "ClientImageV29" {
  availability_domain = "${lookup(data.oci_identity_availability_domains.ADs.availability_domains[0],"name")}"
  compartment_id      = "${var.compartment_ocid}"
  display_name        = "ClientImageV29"
  image               = "${var.client_image}"
  shape               = "VM.Standard1.1"
  subnet_id           = "${oci_core_subnet.AlphaMWSubnetAD01.id}"
  depends_on = ["null_resource.client_image"]

  metadata {
    ssh_authorized_keys = "${var.ssh_public_key}"
  }

  connection {
    type        = "ssh"
    host        = "${self.public_ip}"
    user        = "opc"
    private_key = "${var.ssh_private_key}"
    timeout     = "10m"
  }

  provisioner "remote-exec" {
    inline = [
      "touch ~/IMadeAFile.Right.Here.ClientImageV29"
    ]
  }
}

