provider "google" {
  project = "dragonfly-257523"
  region  = "us-west2"
  zone    = "us-west2-a"
}

resource "google_storage_bucket" "gcp-data-dragonfly-public" {
  name     = "gcp-data-dragonfly-public"
  location = "EU"
}

resource "google_storage_bucket_object" "dfly-latest" {
  name   = "disk.raw.tar.gz"
  source = "disk.raw.tar.gz"
  bucket = "gcp-data-dragonfly-public"

  depends_on = [google_storage_bucket.gcp-data-dragonfly-public]
}

resource "google_storage_object_acl" "gcp-data-dragonfly-public-acl" {
  bucket = "${google_storage_bucket.gcp-data-dragonfly-public.name}"
  object = "${google_storage_bucket_object.dfly-latest.output_name}"

  role_entity = [
    "READER:AllUsers",
  ]
  depends_on = [google_storage_bucket_object.dfly-latest]
}

resource "google_compute_image" "dfly-latest" {
  name = "dfly-latest"

  raw_disk {
    source = "https://storage.googleapis.com/gcp-data-dragonfly-public/disk.raw.tar.gz"
  }
  depends_on = [google_storage_bucket_object.dfly-latest]
}

resource "google_compute_instance" "dfly-test" {
  name         = "dfly-test"
  machine_type = "f1-micro"

  boot_disk {
    initialize_params {
      image = "dfly-latest"
    }
  }

  network_interface {
    # A default network is created for all GCP projects
    network       = "${google_compute_network.vpc_network.self_link}"
    access_config {
    }
  }
  depends_on = [google_compute_image.dfly-latest]
}

resource "google_compute_network" "vpc_network" {
  name                    = "terraform-network"
  auto_create_subnetworks = "true"
}
