Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement a workaround for the IPv6 issue #398

Merged
merged 1 commit into from
Dec 16, 2022
Merged

Conversation

copybara-service[bot]
Copy link

Implement a workaround for the IPv6 issue

We observed intermittent failures during deployment, due to Go resolving Google API domains into IPv6 addresses, even though the Cloud Shell environment has IPv6 disabled.

Until the Go issue (golang/go#25321) has been resolved, we have to patch the /etc/hosts file on the Cloud Shell machine to ensure that these domains are resolved using IPv4 only.

@github-actions
Copy link

github-actions bot commented Dec 15, 2022

Terraform Format and Style 🖌``

Terraform Initialization ⚙️success

Terraform Validation 🤖success

Validation Output

Success! The configuration is valid.


Terraform Plan 📖success

Show Plan

terraform

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create
 <= read (data resources)

Terraform will perform the following actions:

  # data.google_iam_policy.iap_users will be read during apply
  # (config refers to values not yet known)
 <= data "google_iam_policy" "iap_users" {
      + id          = (known after apply)
      + policy_data = (known after apply)

      + binding {
          + members = [
              + "user@example.com",
              + (known after apply),
            ]
          + role    = "roles/iap.httpsResourceAccessor"
        }
    }

  # google_cloud_run_service.controller_run will be created
  + resource "google_cloud_run_service" "controller_run" {
      + autogenerate_revision_name = true
      + id                         = (known after apply)
      + location                   = "us-east1"
      + name                       = "controller"
      + project                    = "my-gcp-project"
      + status                     = (known after apply)

      + metadata {
          + annotations      = {
              + "run.googleapis.com/ingress" = "internal-and-cloud-load-balancing"
            }
          + generation       = (known after apply)
          + labels           = (known after apply)
          + namespace        = (known after apply)
          + resource_version = (known after apply)
          + self_link        = (known after apply)
          + uid              = (known after apply)
        }

      + template {
          + metadata {
              + annotations      = (known after apply)
              + generation       = (known after apply)
              + name             = (known after apply)
              + namespace        = (known after apply)
              + resource_version = (known after apply)
              + self_link        = (known after apply)
              + uid              = (known after apply)
            }

          + spec {
              + container_concurrency = (known after apply)
              + service_account_name  = (known after apply)
              + serving_state         = (known after apply)
              + timeout_seconds       = (known after apply)

              + containers {
                  + image = "europe-docker.pkg.dev/crmint-builds/crmint/controller:latest"

                  + env {
                      + name  = "APP_TITLE"
                      + value = "Custom CRMint Title"
                    }
                  + env {
                      + name = "DATABASE_URI"

                      + value_from {
                          + secret_key_ref {
                              + key  = "latest"
                              + name = "cloud_db_uri"
                            }
                        }
                    }
                  + env {
                      + name  = "GOOGLE_CLOUD_PROJECT"
                      + value = "my-gcp-project"
                    }
                  + env {
                      + name  = "NOTIFICATION_SENDER_EMAIL"
                      + value = "user@example.com"
                    }
                  + env {
                      + name  = "PUBSUB_VERIFICATION_TOKEN"
                      + value = (known after apply)
                    }
                  + env {
                      + name  = "REPORT_USAGE_ID"
                      + value = "abc123"
                    }
                  + env {
                      + name  = "SERVICE_ACCOUNT_EMAIL"
                      + value = (known after apply)
                    }

                  + ports {
                      + container_port = (known after apply)
                      + name           = (known after apply)
                      + protocol       = (known after apply)
                    }

                  + resources {
                      + limits   = (known after apply)
                      + requests = (known after apply)
                    }

                  + startup_probe {
                      + failure_threshold     = (known after apply)
                      + initial_delay_seconds = (known after apply)
                      + period_seconds        = (known after apply)
                      + timeout_seconds       = (known after apply)

                      + http_get {
                          + path = (known after apply)

                          + http_headers {
                              + name  = (known after apply)
                              + value = (known after apply)
                            }
                        }

                      + tcp_socket {
                          + port = (known after apply)
                        }
                    }
                }
            }
        }

      + traffic {
          + latest_revision = true
          + percent         = 100
          + url             = (known after apply)
        }
    }

  # google_cloud_run_service.frontend_run will be created
  + resource "google_cloud_run_service" "frontend_run" {
      + autogenerate_revision_name = true
      + id                         = (known after apply)
      + location                   = "us-east1"
      + name                       = "frontend"
      + project                    = "my-gcp-project"
      + status                     = (known after apply)

      + metadata {
          + annotations      = {
              + "run.googleapis.com/ingress" = "internal-and-cloud-load-balancing"
            }
          + generation       = (known after apply)
          + labels           = (known after apply)
          + namespace        = (known after apply)
          + resource_version = (known after apply)
          + self_link        = (known after apply)
          + uid              = (known after apply)
        }

      + template {
          + metadata {
              + annotations      = {
                  + "autoscaling.knative.dev/maxScale" = "1"
                  + "autoscaling.knative.dev/minScale" = "1"
                }
              + generation       = (known after apply)
              + name             = (known after apply)
              + namespace        = (known after apply)
              + resource_version = (known after apply)
              + self_link        = (known after apply)
              + uid              = (known after apply)
            }

          + spec {
              + container_concurrency = (known after apply)
              + service_account_name  = (known after apply)
              + serving_state         = (known after apply)
              + timeout_seconds       = (known after apply)

              + containers {
                  + image = "europe-docker.pkg.dev/crmint-builds/crmint/frontend:latest"

                  + env {
                      + name  = "APP_TITLE"
                      + value = "Custom CRMint Title"
                    }

                  + ports {
                      + container_port = (known after apply)
                      + name           = (known after apply)
                      + protocol       = (known after apply)
                    }

                  + resources {
                      + limits   = (known after apply)
                      + requests = (known after apply)
                    }
                }
            }
        }

      + traffic {
          + latest_revision = true
          + percent         = 100
          + url             = (known after apply)
        }
    }

  # google_cloud_run_service.jobs_run will be created
  + resource "google_cloud_run_service" "jobs_run" {
      + autogenerate_revision_name = true
      + id                         = (known after apply)
      + location                   = "us-east1"
      + name                       = "jobs"
      + project                    = "my-gcp-project"
      + status                     = (known after apply)

      + metadata {
          + annotations      = {
              + "run.googleapis.com/ingress" = "internal-and-cloud-load-balancing"
            }
          + generation       = (known after apply)
          + labels           = (known after apply)
          + namespace        = (known after apply)
          + resource_version = (known after apply)
          + self_link        = (known after apply)
          + uid              = (known after apply)
        }

      + template {
          + metadata {
              + annotations      = {
                  + "autoscaling.knative.dev/maxScale" = "20"
                  + "autoscaling.knative.dev/minScale" = "0"
                }
              + generation       = (known after apply)
              + name             = (known after apply)
              + namespace        = (known after apply)
              + resource_version = (known after apply)
              + self_link        = (known after apply)
              + uid              = (known after apply)
            }

          + spec {
              + container_concurrency = (known after apply)
              + service_account_name  = (known after apply)
              + serving_state         = (known after apply)
              + timeout_seconds       = (known after apply)

              + containers {
                  + image = "europe-docker.pkg.dev/crmint-builds/crmint/jobs:latest"

                  + env {
                      + name  = "GOOGLE_CLOUD_PROJECT"
                      + value = "my-gcp-project"
                    }
                  + env {
                      + name  = "PUBSUB_VERIFICATION_TOKEN"
                      + value = (known after apply)
                    }

                  + ports {
                      + container_port = (known after apply)
                      + name           = (known after apply)
                      + protocol       = (known after apply)
                    }

                  + resources {
                      + limits   = (known after apply)
                      + requests = (known after apply)
                    }

                  + startup_probe {
                      + failure_threshold     = (known after apply)
                      + initial_delay_seconds = (known after apply)
                      + period_seconds        = (known after apply)
                      + timeout_seconds       = (known after apply)

                      + http_get {
                          + path = (known after apply)

                          + http_headers {
                              + name  = (known after apply)
                              + value = (known after apply)
                            }
                        }

                      + tcp_socket {
                          + port = (known after apply)
                        }
                    }
                }
            }
        }

      + traffic {
          + latest_revision = true
          + percent         = 100
          + url             = (known after apply)
        }
    }

  # google_cloud_run_service_iam_member.controller_run-public will be created
  + resource "google_cloud_run_service_iam_member" "controller_run-public" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + location = "us-east1"
      + member   = "allUsers"
      + project  = "my-gcp-project"
      + role     = "roles/run.invoker"
      + service  = "controller"
    }

  # google_cloud_run_service_iam_member.frontend_run-public will be created
  + resource "google_cloud_run_service_iam_member" "frontend_run-public" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + location = "us-east1"
      + member   = "allUsers"
      + project  = "my-gcp-project"
      + role     = "roles/run.invoker"
      + service  = "frontend"
    }

  # google_cloud_run_service_iam_member.jobs_run-public will be created
  + resource "google_cloud_run_service_iam_member" "jobs_run-public" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + location = "us-east1"
      + member   = "allUsers"
      + project  = "my-gcp-project"
      + role     = "roles/run.invoker"
      + service  = "jobs"
    }

  # google_cloud_scheduler_job.heartbeat will be created
  + resource "google_cloud_scheduler_job" "heartbeat" {
      + description = "Triggers scheduled pipeline runs."
      + id          = (known after apply)
      + name        = "crmint-heartbeat"
      + paused      = (known after apply)
      + project     = "my-gcp-project"
      + region      = (known after apply)
      + schedule    = "* * * * *"
      + state       = (known after apply)
      + time_zone   = "Etc/UTC"

      + pubsub_target {
          + attributes = {
              + "start_time" = "0"
            }
          + data       = "eyJwaXBlbGluZV9pZHMiOiAic2NoZWR1bGVkIn0="
          + topic_name = (known after apply)
        }
    }

  # google_compute_backend_service.controller_backend will be created
  + resource "google_compute_backend_service" "controller_backend" {
      + connection_draining_timeout_sec = 10
      + creation_timestamp              = (known after apply)
      + enable_cdn                      = false
      + fingerprint                     = (known after apply)
      + id                              = (known after apply)
      + load_balancing_scheme           = "EXTERNAL"
      + name                            = "crmint-controller-backend-service"
      + port_name                       = (known after apply)
      + project                         = (known after apply)
      + protocol                        = "HTTP"
      + self_link                       = (known after apply)
      + session_affinity                = (known after apply)
      + timeout_sec                     = (known after apply)

      + backend {
          + balancing_mode               = "UTILIZATION"
          + capacity_scaler              = 1
          + group                        = (known after apply)
          + max_connections              = (known after apply)
          + max_connections_per_endpoint = (known after apply)
          + max_connections_per_instance = (known after apply)
          + max_rate                     = (known after apply)
          + max_rate_per_endpoint        = (known after apply)
          + max_rate_per_instance        = (known after apply)
          + max_utilization              = (known after apply)
        }

      + cdn_policy {
          + cache_mode                   = (known after apply)
          + client_ttl                   = (known after apply)
          + default_ttl                  = (known after apply)
          + max_ttl                      = (known after apply)
          + negative_caching             = (known after apply)
          + serve_while_stale            = (known after apply)
          + signed_url_cache_max_age_sec = (known after apply)

          + cache_key_policy {
              + include_host           = (known after apply)
              + include_named_cookies  = (known after apply)
              + include_protocol       = (known after apply)
              + include_query_string   = (known after apply)
              + query_string_blacklist = (known after apply)
              + query_string_whitelist = (known after apply)
            }

          + negative_caching_policy {
              + code = (known after apply)
              + ttl  = (known after apply)
            }
        }

      + iap {
          + oauth2_client_id            = (known after apply)
          + oauth2_client_secret        = (sensitive value)
          + oauth2_client_secret_sha256 = (sensitive value)
        }

      + log_config {
          + enable      = (known after apply)
          + sample_rate = (known after apply)
        }
    }

  # google_compute_backend_service.frontend_backend will be created
  + resource "google_compute_backend_service" "frontend_backend" {
      + connection_draining_timeout_sec = 10
      + creation_timestamp              = (known after apply)
      + enable_cdn                      = false
      + fingerprint                     = (known after apply)
      + id                              = (known after apply)
      + load_balancing_scheme           = "EXTERNAL"
      + name                            = "crmint-frontend-backend-service"
      + port_name                       = (known after apply)
      + project                         = (known after apply)
      + protocol                        = "HTTP"
      + self_link                       = (known after apply)
      + session_affinity                = (known after apply)
      + timeout_sec                     = (known after apply)

      + backend {
          + balancing_mode               = "UTILIZATION"
          + capacity_scaler              = 1
          + group                        = (known after apply)
          + max_connections              = (known after apply)
          + max_connections_per_endpoint = (known after apply)
          + max_connections_per_instance = (known after apply)
          + max_rate                     = (known after apply)
          + max_rate_per_endpoint        = (known after apply)
          + max_rate_per_instance        = (known after apply)
          + max_utilization              = (known after apply)
        }

      + cdn_policy {
          + cache_mode                   = (known after apply)
          + client_ttl                   = (known after apply)
          + default_ttl                  = (known after apply)
          + max_ttl                      = (known after apply)
          + negative_caching             = (known after apply)
          + serve_while_stale            = (known after apply)
          + signed_url_cache_max_age_sec = (known after apply)

          + cache_key_policy {
              + include_host           = (known after apply)
              + include_named_cookies  = (known after apply)
              + include_protocol       = (known after apply)
              + include_query_string   = (known after apply)
              + query_string_blacklist = (known after apply)
              + query_string_whitelist = (known after apply)
            }

          + negative_caching_policy {
              + code = (known after apply)
              + ttl  = (known after apply)
            }
        }

      + iap {
          + oauth2_client_id            = (known after apply)
          + oauth2_client_secret        = (sensitive value)
          + oauth2_client_secret_sha256 = (sensitive value)
        }

      + log_config {
          + enable      = (known after apply)
          + sample_rate = (known after apply)
        }
    }

  # google_compute_backend_service.jobs_backend will be created
  + resource "google_compute_backend_service" "jobs_backend" {
      + connection_draining_timeout_sec = 10
      + creation_timestamp              = (known after apply)
      + enable_cdn                      = false
      + fingerprint                     = (known after apply)
      + id                              = (known after apply)
      + load_balancing_scheme           = "EXTERNAL"
      + name                            = "crmint-jobs-backend-service"
      + port_name                       = (known after apply)
      + project                         = (known after apply)
      + protocol                        = "HTTP"
      + self_link                       = (known after apply)
      + session_affinity                = (known after apply)
      + timeout_sec                     = (known after apply)

      + backend {
          + balancing_mode               = "UTILIZATION"
          + capacity_scaler              = 1
          + group                        = (known after apply)
          + max_connections              = (known after apply)
          + max_connections_per_endpoint = (known after apply)
          + max_connections_per_instance = (known after apply)
          + max_rate                     = (known after apply)
          + max_rate_per_endpoint        = (known after apply)
          + max_rate_per_instance        = (known after apply)
          + max_utilization              = (known after apply)
        }

      + cdn_policy {
          + cache_mode                   = (known after apply)
          + client_ttl                   = (known after apply)
          + default_ttl                  = (known after apply)
          + max_ttl                      = (known after apply)
          + negative_caching             = (known after apply)
          + serve_while_stale            = (known after apply)
          + signed_url_cache_max_age_sec = (known after apply)

          + cache_key_policy {
              + include_host           = (known after apply)
              + include_named_cookies  = (known after apply)
              + include_protocol       = (known after apply)
              + include_query_string   = (known after apply)
              + query_string_blacklist = (known after apply)
              + query_string_whitelist = (known after apply)
            }

          + negative_caching_policy {
              + code = (known after apply)
              + ttl  = (known after apply)
            }
        }

      + iap {
          + oauth2_client_id            = (known after apply)
          + oauth2_client_secret        = (sensitive value)
          + oauth2_client_secret_sha256 = (sensitive value)
        }

      + log_config {
          + enable      = (known after apply)
          + sample_rate = (known after apply)
        }
    }

  # google_compute_global_address.default will be created
  + resource "google_compute_global_address" "default" {
      + address            = (known after apply)
      + creation_timestamp = (known after apply)
      + id                 = (known after apply)
      + name               = "global-crmint-default"
      + project            = (known after apply)
      + self_link          = (known after apply)
    }

  # google_compute_global_forwarding_rule.default will be created
  + resource "google_compute_global_forwarding_rule" "default" {
      + id                    = (known after apply)
      + ip_address            = (known after apply)
      + ip_protocol           = "TCP"
      + label_fingerprint     = (known after apply)
      + load_balancing_scheme = "EXTERNAL"
      + name                  = "crmint-default-https-lb-forwarding-rule"
      + network               = (known after apply)
      + port_range            = "443"
      + project               = (known after apply)
      + psc_connection_id     = (known after apply)
      + psc_connection_status = (known after apply)
      + self_link             = (known after apply)
      + target                = (known after apply)
    }

  # google_compute_managed_ssl_certificate.default will be created
  + resource "google_compute_managed_ssl_certificate" "default" {
      + certificate_id            = (known after apply)
      + creation_timestamp        = (known after apply)
      + expire_time               = (known after apply)
      + id                        = (known after apply)
      + name                      = "crmint-managed"
      + project                   = (known after apply)
      + self_link                 = (known after apply)
      + subject_alternative_names = (known after apply)
      + type                      = "MANAGED"

      + managed {
          + domains = (known after apply)
        }
    }

  # google_compute_region_network_endpoint_group.controller_neg will be created
  + resource "google_compute_region_network_endpoint_group" "controller_neg" {
      + id                    = (known after apply)
      + name                  = "controller-neg"
      + network_endpoint_type = "SERVERLESS"
      + project               = (known after apply)
      + region                = "us-east1"
      + self_link             = (known after apply)

      + cloud_run {
          + service = "controller"
        }
    }

  # google_compute_region_network_endpoint_group.frontend_neg will be created
  + resource "google_compute_region_network_endpoint_group" "frontend_neg" {
      + id                    = (known after apply)
      + name                  = "frontend-neg"
      + network_endpoint_type = "SERVERLESS"
      + project               = (known after apply)
      + region                = "us-east1"
      + self_link             = (known after apply)

      + cloud_run {
          + service = "frontend"
        }
    }

  # google_compute_region_network_endpoint_group.jobs_neg will be created
  + resource "google_compute_region_network_endpoint_group" "jobs_neg" {
      + id                    = (known after apply)
      + name                  = "jobs-neg"
      + network_endpoint_type = "SERVERLESS"
      + project               = (known after apply)
      + region                = "us-east1"
      + self_link             = (known after apply)

      + cloud_run {
          + service = "jobs"
        }
    }

  # google_compute_ssl_certificate.locally_signed will be created
  + resource "google_compute_ssl_certificate" "locally_signed" {
      + certificate        = (sensitive value)
      + certificate_id     = (known after apply)
      + creation_timestamp = (known after apply)
      + description        = "Self managed certificate"
      + id                 = (known after apply)
      + name               = "crmint-self-signed-with-chain"
      + name_prefix        = (known after apply)
      + private_key        = (sensitive value)
      + project            = (known after apply)
      + self_link          = (known after apply)
    }

  # google_compute_target_https_proxy.default will be created
  + resource "google_compute_target_https_proxy" "default" {
      + creation_timestamp = (known after apply)
      + id                 = (known after apply)
      + name               = "crmint-default-https-lb-proxy"
      + project            = (known after apply)
      + proxy_bind         = (known after apply)
      + proxy_id           = (known after apply)
      + quic_override      = "NONE"
      + self_link          = (known after apply)
      + ssl_certificates   = (known after apply)
      + url_map            = (known after apply)
    }

  # google_compute_url_map.default will be created
  + resource "google_compute_url_map" "default" {
      + creation_timestamp = (known after apply)
      + default_service    = (known after apply)
      + fingerprint        = (known after apply)
      + id                 = (known after apply)
      + map_id             = (known after apply)
      + name               = "crmint-http-lb"
      + project            = (known after apply)
      + self_link          = (known after apply)

      + host_rule {
          + hosts        = [
              + "*",
            ]
          + path_matcher = "allpaths"
        }

      + path_matcher {
          + default_service = (known after apply)
          + name            = "allpaths"

          + path_rule {
              + paths   = [
                  + "/api/workers",
                  + "/api/workers/*",
                  + "/push/start-task",
                ]
              + service = (known after apply)
            }
          + path_rule {
              + paths   = [
                  + "/api/*",
                  + "/push/start-pipeline",
                  + "/push/task-finished",
                ]
              + service = (known after apply)
            }
        }
    }

  # google_iap_brand.default will be created
  + resource "google_iap_brand" "default" {
      + application_title = "Cloud IAP protected Application"
      + id                = (known after apply)
      + name              = (known after apply)
      + org_internal_only = (known after apply)
      + project           = "my-gcp-project"
      + support_email     = "user@example.com"
    }

  # google_iap_client.default will be created
  + resource "google_iap_client" "default" {
      + brand        = (known after apply)
      + client_id    = (known after apply)
      + display_name = "Test Client"
      + id           = (known after apply)
      + secret       = (sensitive value)
    }

  # google_iap_web_backend_service_iam_policy.controller will be created
  + resource "google_iap_web_backend_service_iam_policy" "controller" {
      + etag                = (known after apply)
      + id                  = (known after apply)
      + policy_data         = (known after apply)
      + project             = (known after apply)
      + web_backend_service = "crmint-controller-backend-service"
    }

  # google_iap_web_backend_service_iam_policy.frontend will be created
  + resource "google_iap_web_backend_service_iam_policy" "frontend" {
      + etag                = (known after apply)
      + id                  = (known after apply)
      + policy_data         = (known after apply)
      + project             = (known after apply)
      + web_backend_service = "crmint-frontend-backend-service"
    }

  # google_iap_web_backend_service_iam_policy.jobs will be created
  + resource "google_iap_web_backend_service_iam_policy" "jobs" {
      + etag                = (known after apply)
      + id                  = (known after apply)
      + policy_data         = (known after apply)
      + project             = (known after apply)
      + web_backend_service = "crmint-jobs-backend-service"
    }

  # google_logging_metric.pipeline_status_failed will be created
  + resource "google_logging_metric" "pipeline_status_failed" {
      + filter           = "resource.type=cloud_run_revision AND jsonPayload.log_type=PIPELINE_STATUS AND jsonPayload.labels.pipeline_status=failed"
      + id               = (known after apply)
      + label_extractors = {
          + "message"     = "EXTRACT(jsonPayload.message)"
          + "pipeline_id" = "EXTRACT(jsonPayload.labels.pipeline_id)"
        }
      + name             = "crmint/pipeline_status_failed"
      + project          = (known after apply)

      + metric_descriptor {
          + display_name = "Pipeline Status Failed Metric"
          + metric_kind  = "DELTA"
          + unit         = "1"
          + value_type   = "INT64"

          + labels {
              + description = "Error message"
              + key         = "message"
              + value_type  = "STRING"
            }
          + labels {
              + description = "Pipeline ID"
              + key         = "pipeline_id"
              + value_type  = "STRING"
            }
        }
    }

  # google_monitoring_alert_policy.notify_on_pipeline_status_failed will be created
  + resource "google_monitoring_alert_policy" "notify_on_pipeline_status_failed" {
      + combiner              = "OR"
      + creation_record       = (known after apply)
      + display_name          = "Pipeline Status Failed Alert Policy"
      + enabled               = true
      + id                    = (known after apply)
      + name                  = (known after apply)
      + notification_channels = (known after apply)
      + project               = (known after apply)

      + conditions {
          + display_name = "Monitor pipeline errors"
          + name         = (known after apply)

          + condition_threshold {
              + comparison      = "COMPARISON_GT"
              + duration        = "60s"
              + filter          = (known after apply)
              + threshold_value = 0.001

              + aggregations {
                  + alignment_period   = "60s"
                  + per_series_aligner = "ALIGN_COUNT"
                }

              + trigger {
                  + count = 1
                }
            }
        }
    }

  # google_monitoring_notification_channel.email will be created
  + resource "google_monitoring_notification_channel" "email" {
      + display_name        = "Email Notification Channel"
      + enabled             = true
      + force_delete        = false
      + id                  = (known after apply)
      + labels              = {
          + "email_address" = "user@example.com"
        }
      + name                = (known after apply)
      + project             = (known after apply)
      + type                = "email"
      + verification_status = (known after apply)
    }

  # google_project_iam_member.cloudbuild_managed_sa--cloudsql-client will be created
  + resource "google_project_iam_member" "cloudbuild_managed_sa--cloudsql-client" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/cloudsql.client"
    }

  # google_project_iam_member.cloudbuild_managed_sa--object-viewer will be created
  + resource "google_project_iam_member" "cloudbuild_managed_sa--object-viewer" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/storage.objectViewer"
    }

  # google_project_iam_member.controller_sa--cloudsql-client will be created
  + resource "google_project_iam_member" "controller_sa--cloudsql-client" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/cloudsql.client"
    }

  # google_project_iam_member.controller_sa--logging-viewer will be created
  + resource "google_project_iam_member" "controller_sa--logging-viewer" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/logging.viewer"
    }

  # google_project_iam_member.controller_sa--logging-writer will be created
  + resource "google_project_iam_member" "controller_sa--logging-writer" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/logging.logWriter"
    }

  # google_project_iam_member.controller_sa--pubsub-publisher will be created
  + resource "google_project_iam_member" "controller_sa--pubsub-publisher" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/pubsub.publisher"
    }

  # google_project_iam_member.iap_sa--run_invoker will be created
  + resource "google_project_iam_member" "iap_sa--run_invoker" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/run.invoker"
    }

  # google_project_iam_member.jobs_sa--aiplatform-user will be created
  + resource "google_project_iam_member" "jobs_sa--aiplatform-user" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/aiplatform.user"
    }

  # google_project_iam_member.jobs_sa--bigquery-data-editor will be created
  + resource "google_project_iam_member" "jobs_sa--bigquery-data-editor" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/bigquery.dataEditor"
    }

  # google_project_iam_member.jobs_sa--bigquery-job-user will be created
  + resource "google_project_iam_member" "jobs_sa--bigquery-job-user" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/bigquery.jobUser"
    }

  # google_project_iam_member.jobs_sa--bigquery-resource-viewer will be created
  + resource "google_project_iam_member" "jobs_sa--bigquery-resource-viewer" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/bigquery.resourceViewer"
    }

  # google_project_iam_member.jobs_sa--logging-writer will be created
  + resource "google_project_iam_member" "jobs_sa--logging-writer" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/logging.logWriter"
    }

  # google_project_iam_member.jobs_sa--pubsub-publisher will be created
  + resource "google_project_iam_member" "jobs_sa--pubsub-publisher" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/pubsub.publisher"
    }

  # google_project_iam_member.jobs_sa--storage-object-admin will be created
  + resource "google_project_iam_member" "jobs_sa--storage-object-admin" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/storage.objectAdmin"
    }

  # google_project_iam_member.pubsub_token-creator will be created
  + resource "google_project_iam_member" "pubsub_token-creator" {
      + etag    = (known after apply)
      + id      = (known after apply)
      + member  = (known after apply)
      + project = "my-gcp-project"
      + role    = "roles/iam.serviceAccountTokenCreator"
    }

  # google_project_service.apis["aiplatform.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "aiplatform.googleapis.com"
    }

  # google_project_service.apis["analytics.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "analytics.googleapis.com"
    }

  # google_project_service.apis["analyticsadmin.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "analyticsadmin.googleapis.com"
    }

  # google_project_service.apis["analyticsreporting.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "analyticsreporting.googleapis.com"
    }

  # google_project_service.apis["cloudbuild.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "cloudbuild.googleapis.com"
    }

  # google_project_service.apis["cloudscheduler.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "cloudscheduler.googleapis.com"
    }

  # google_project_service.apis["compute.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "compute.googleapis.com"
    }

  # google_project_service.apis["logging.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "logging.googleapis.com"
    }

  # google_project_service.apis["pubsub.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "pubsub.googleapis.com"
    }

  # google_project_service.apis["secretmanager.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "secretmanager.googleapis.com"
    }

  # google_project_service.apis["servicenetworking.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "servicenetworking.googleapis.com"
    }

  # google_project_service.apis["sqladmin.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "sqladmin.googleapis.com"
    }

  # google_project_service.apis["storage-api.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "storage-api.googleapis.com"
    }

  # google_project_service.apis["storage-component.googleapis.com"] will be created
  + resource "google_project_service" "apis" {
      + disable_dependent_services = true
      + disable_on_destroy         = true
      + id                         = (known after apply)
      + project                    = "my-gcp-project"
      + service                    = "storage-component.googleapis.com"
    }

  # google_project_service.iap_service will be created
  + resource "google_project_service" "iap_service" {
      + disable_on_destroy = true
      + id                 = (known after apply)
      + project            = "my-gcp-project"
      + service            = "iap.googleapis.com"
    }

  # google_project_service_identity.cloudbuild_managed_sa will be created
  + resource "google_project_service_identity" "cloudbuild_managed_sa" {
      + email   = (known after apply)
      + id      = (known after apply)
      + project = "my-gcp-project"
      + service = "cloudbuild.googleapis.com"
    }

  # google_project_service_identity.iap_sa will be created
  + resource "google_project_service_identity" "iap_sa" {
      + email   = (known after apply)
      + id      = (known after apply)
      + project = "my-gcp-project"
      + service = "iap.googleapis.com"
    }

  # google_project_service_identity.pubsub_managed_sa will be created
  + resource "google_project_service_identity" "pubsub_managed_sa" {
      + email   = (known after apply)
      + id      = (known after apply)
      + project = "my-gcp-project"
      + service = "pubsub.googleapis.com"
    }

  # google_pubsub_subscription.subscriptions["crmint-3-start-pipeline"] will be created
  + resource "google_pubsub_subscription" "subscriptions" {
      + ack_deadline_seconds       = 60
      + id                         = (known after apply)
      + message_retention_duration = "604800s"
      + name                       = "crmint-3-start-pipeline-subscription"
      + project                    = (known after apply)
      + topic                      = (known after apply)

      + expiration_policy {}

      + push_config {
          + push_endpoint = (known after apply)

          + oidc_token {
              + audience              = (known after apply)
              + service_account_email = (known after apply)
            }
        }

      + retry_policy {
          + maximum_backoff = (known after apply)
          + minimum_backoff = "10s"
        }
    }

  # google_pubsub_subscription.subscriptions["crmint-3-start-task"] will be created
  + resource "google_pubsub_subscription" "subscriptions" {
      + ack_deadline_seconds       = 600
      + id                         = (known after apply)
      + message_retention_duration = "604800s"
      + name                       = "crmint-3-start-task-subscription"
      + project                    = (known after apply)
      + topic                      = (known after apply)

      + expiration_policy {}

      + push_config {
          + push_endpoint = (known after apply)

          + oidc_token {
              + audience              = (known after apply)
              + service_account_email = (known after apply)
            }
        }

      + retry_policy {
          + maximum_backoff = (known after apply)
          + minimum_backoff = "60s"
        }
    }

  # google_pubsub_subscription.subscriptions["crmint-3-task-finished"] will be created
  + resource "google_pubsub_subscription" "subscriptions" {
      + ack_deadline_seconds       = 60
      + id                         = (known after apply)
      + message_retention_duration = "604800s"
      + name                       = "crmint-3-task-finished-subscription"
      + project                    = (known after apply)
      + topic                      = (known after apply)

      + expiration_policy {}

      + push_config {
          + push_endpoint = (known after apply)

          + oidc_token {
              + audience              = (known after apply)
              + service_account_email = (known after apply)
            }
        }

      + retry_policy {
          + maximum_backoff = (known after apply)
          + minimum_backoff = "10s"
        }
    }

  # google_pubsub_topic.pipeline-finished will be created
  + resource "google_pubsub_topic" "pipeline-finished" {
      + id      = (known after apply)
      + name    = "crmint-3-pipeline-finished"
      + project = (known after apply)

      + message_storage_policy {
          + allowed_persistence_regions = (known after apply)
        }

      + schema_settings {
          + encoding = (known after apply)
          + schema   = (known after apply)
        }
    }

  # google_pubsub_topic.topics["crmint-3-start-pipeline"] will be created
  + resource "google_pubsub_topic" "topics" {
      + id      = (known after apply)
      + name    = "crmint-3-start-pipeline"
      + project = (known after apply)

      + message_storage_policy {
          + allowed_persistence_regions = (known after apply)
        }

      + schema_settings {
          + encoding = (known after apply)
          + schema   = (known after apply)
        }
    }

  # google_pubsub_topic.topics["crmint-3-start-task"] will be created
  + resource "google_pubsub_topic" "topics" {
      + id      = (known after apply)
      + name    = "crmint-3-start-task"
      + project = (known after apply)

      + message_storage_policy {
          + allowed_persistence_regions = (known after apply)
        }

      + schema_settings {
          + encoding = (known after apply)
          + schema   = (known after apply)
        }
    }

  # google_pubsub_topic.topics["crmint-3-task-finished"] will be created
  + resource "google_pubsub_topic" "topics" {
      + id      = (known after apply)
      + name    = "crmint-3-task-finished"
      + project = (known after apply)

      + message_storage_policy {
          + allowed_persistence_regions = (known after apply)
        }

      + schema_settings {
          + encoding = (known after apply)
          + schema   = (known after apply)
        }
    }

  # google_secret_manager_secret.cloud_db_uri will be created
  + resource "google_secret_manager_secret" "cloud_db_uri" {
      + create_time = (known after apply)
      + expire_time = (known after apply)
      + id          = (known after apply)
      + name        = (known after apply)
      + project     = (known after apply)
      + secret_id   = "cloud_db_uri"

      + replication {
          + automatic = true
        }
    }

  # google_secret_manager_secret_iam_member.cloud_db_uri-access will be created
  + resource "google_secret_manager_secret_iam_member" "cloud_db_uri-access" {
      + etag      = (known after apply)
      + id        = (known after apply)
      + member    = (known after apply)
      + project   = (known after apply)
      + role      = "roles/secretmanager.secretAccessor"
      + secret_id = (known after apply)
    }

  # google_secret_manager_secret_version.cloud_db_uri-latest will be created
  + resource "google_secret_manager_secret_version" "cloud_db_uri-latest" {
      + create_time  = (known after apply)
      + destroy_time = (known after apply)
      + enabled      = true
      + id           = (known after apply)
      + name         = (known after apply)
      + secret       = (known after apply)
      + secret_data  = (sensitive value)
      + version      = (known after apply)
    }

  # google_service_account.controller_sa will be created
  + resource "google_service_account" "controller_sa" {
      + account_id   = "crmint-controller-sa"
      + disabled     = false
      + display_name = "CRMint Controller Service Account"
      + email        = (known after apply)
      + id           = (known after apply)
      + member       = (known after apply)
      + name         = (known after apply)
      + project      = "my-gcp-project"
      + unique_id    = (known after apply)
    }

  # google_service_account.frontend_sa will be created
  + resource "google_service_account" "frontend_sa" {
      + account_id   = "crmint-frontend-sa"
      + disabled     = false
      + display_name = "CRMint Frontend Service Account"
      + email        = (known after apply)
      + id           = (known after apply)
      + member       = (known after apply)
      + name         = (known after apply)
      + project      = "my-gcp-project"
      + unique_id    = (known after apply)
    }

  # google_service_account.jobs_sa will be created
  + resource "google_service_account" "jobs_sa" {
      + account_id   = "crmint-jobs-sa"
      + disabled     = false
      + display_name = "CRMint Jobs Service Account"
      + email        = (known after apply)
      + id           = (known after apply)
      + member       = (known after apply)
      + name         = (known after apply)
      + project      = "my-gcp-project"
      + unique_id    = (known after apply)
    }

  # google_service_account.pubsub_sa will be created
  + resource "google_service_account" "pubsub_sa" {
      + account_id   = "crmint-pubsub-sa"
      + disabled     = false
      + display_name = "CRMint PubSub Service Account"
      + email        = (known after apply)
      + id           = (known after apply)
      + member       = (known after apply)
      + name         = (known after apply)
      + project      = "my-gcp-project"
      + unique_id    = (known after apply)
    }

  # google_sql_database.crmint will be created
  + resource "google_sql_database" "crmint" {
      + charset   = (known after apply)
      + collation = (known after apply)
      + id        = (known after apply)
      + instance  = "crmintapp-db"
      + name      = "crmintapp-db"
      + project   = (known after apply)
      + self_link = (known after apply)
    }

  # google_sql_database_instance.main will be created
  + resource "google_sql_database_instance" "main" {
      + available_maintenance_versions = (known after apply)
      + connection_name                = (known after apply)
      + database_version               = "MYSQL_8_0"
      + deletion_protection            = true
      + encryption_key_name            = (known after apply)
      + first_ip_address               = (known after apply)
      + id                             = (known after apply)
      + ip_address                     = (known after apply)
      + maintenance_version            = (known after apply)
      + master_instance_name           = (known after apply)
      + name                           = "crmintapp-db"
      + private_ip_address             = (known after apply)
      + project                        = "my-gcp-project"
      + public_ip_address              = (known after apply)
      + region                         = "us-east1"
      + self_link                      = (known after apply)
      + server_ca_cert                 = (known after apply)
      + service_account_email_address  = (known after apply)

      + replica_configuration {
          + ca_certificate            = (known after apply)
          + client_certificate        = (known after apply)
          + client_key                = (known after apply)
          + connect_retry_interval    = (known after apply)
          + dump_file_path            = (known after apply)
          + failover_target           = (known after apply)
          + master_heartbeat_period   = (known after apply)
          + password                  = (sensitive value)
          + ssl_cipher                = (known after apply)
          + username                  = (known after apply)
          + verify_server_certificate = (known after apply)
        }

      + settings {
          + activation_policy     = "ALWAYS"
          + availability_type     = "ZONAL"
          + disk_autoresize       = true
          + disk_autoresize_limit = 0
          + disk_size             = (known after apply)
          + disk_type             = "PD_SSD"
          + pricing_plan          = "PER_USE"
          + tier                  = "db-g1-small"
          + user_labels           = (known after apply)
          + version               = (known after apply)

          + backup_configuration {
              + binary_log_enabled             = (known after apply)
              + enabled                        = (known after apply)
              + location                       = (known after apply)
              + point_in_time_recovery_enabled = (known after apply)
              + start_time                     = (known after apply)
              + transaction_log_retention_days = (known after apply)

              + backup_retention_settings {
                  + retained_backups = (known after apply)
                  + retention_unit   = (known after apply)
                }
            }

          + insights_config {
              + query_insights_enabled  = true
              + query_string_length     = 1024
              + record_application_tags = false
              + record_client_address   = false
            }

          + ip_configuration {
              + allocated_ip_range = (known after apply)
              + ipv4_enabled       = (known after apply)
              + private_network    = (known after apply)
              + require_ssl        = (known after apply)

              + authorized_networks {
                  + expiration_time = (known after apply)
                  + name            = (known after apply)
                  + value           = (known after apply)
                }
            }

          + location_preference {
              + follow_gae_application = (known after apply)
              + secondary_zone         = (known after apply)
              + zone                   = (known after apply)
            }

          + maintenance_window {
              + day  = 7
              + hour = 2
            }
        }
    }

  # google_sql_user.crmint will be created
  + resource "google_sql_user" "crmint" {
      + host                    = (known after apply)
      + id                      = (known after apply)
      + instance                = "crmintapp-db"
      + name                    = "crmintapp"
      + password                = (sensitive value)
      + project                 = (known after apply)
      + sql_server_user_details = (known after apply)
    }

  # random_id.pubsub_verification_token will be created
  + resource "random_id" "pubsub_verification_token" {
      + b64_std     = (known after apply)
      + b64_url     = (known after apply)
      + byte_length = 16
      + dec         = (known after apply)
      + hex         = (known after apply)
      + id          = (known after apply)
    }

  # random_password.main_db_password will be created
  + resource "random_password" "main_db_password" {
      + bcrypt_hash = (sensitive value)
      + id          = (known after apply)
      + length      = 16
      + lower       = true
      + min_lower   = 0
      + min_numeric = 0
      + min_special = 0
      + min_upper   = 0
      + number      = true
      + numeric     = true
      + result      = (sensitive value)
      + special     = false
      + upper       = true
    }

  # tls_cert_request.default will be created
  + resource "tls_cert_request" "default" {
      + cert_request_pem = (known after apply)
      + dns_names        = [
          + (known after apply),
        ]
      + id               = (known after apply)
      + ip_addresses     = [
          + (known after apply),
        ]
      + key_algorithm    = (known after apply)
      + private_key_pem  = (sensitive value)

      + subject {
          + common_name  = (known after apply)
          + organization = "CRMint OpenSource"
        }
    }

  # tls_locally_signed_cert.default will be created
  + resource "tls_locally_signed_cert" "default" {
      + allowed_uses          = [
          + "key_encipherment",
          + "digital_signature",
          + "client_auth",
          + "server_auth",
        ]
      + ca_cert_pem           = (known after apply)
      + ca_key_algorithm      = (known after apply)
      + ca_private_key_pem    = (sensitive value)
      + cert_pem              = (known after apply)
      + cert_request_pem      = (known after apply)
      + early_renewal_hours   = 0
      + id                    = (known after apply)
      + is_ca_certificate     = false
      + ready_for_renewal     = false
      + set_subject_key_id    = false
      + validity_end_time     = (known after apply)
      + validity_period_hours = 8760
      + validity_start_time   = (known after apply)
    }

  # tls_private_key.default will be created
  + resource "tls_private_key" "default" {
      + algorithm                     = "ECDSA"
      + ecdsa_curve                   = "P256"
      + id                            = (known after apply)
      + private_key_openssh           = (sensitive value)
      + private_key_pem               = (sensitive value)
      + private_key_pem_pkcs8         = (sensitive value)
      + public_key_fingerprint_md5    = (known after apply)
      + public_key_fingerprint_sha256 = (known after apply)
      + public_key_openssh            = (known after apply)
      + public_key_pem                = (known after apply)
      + rsa_bits                      = 2048
    }

  # tls_private_key.root will be created
  + resource "tls_private_key" "root" {
      + algorithm                     = "RSA"
      + ecdsa_curve                   = "P224"
      + id                            = (known after apply)
      + private_key_openssh           = (sensitive value)
      + private_key_pem               = (sensitive value)
      + private_key_pem_pkcs8         = (sensitive value)
      + public_key_fingerprint_md5    = (known after apply)
      + public_key_fingerprint_sha256 = (known after apply)
      + public_key_openssh            = (known after apply)
      + public_key_pem                = (known after apply)
      + rsa_bits                      = 2048
    }

  # tls_self_signed_cert.root will be created
  + resource "tls_self_signed_cert" "root" {
      + allowed_uses          = [
          + "cert_signing",
          + "crl_signing",
          + "digital_signature",
        ]
      + cert_pem              = (known after apply)
      + early_renewal_hours   = 0
      + id                    = (known after apply)
      + is_ca_certificate     = true
      + key_algorithm         = (known after apply)
      + private_key_pem       = (sensitive value)
      + ready_for_renewal     = false
      + set_authority_key_id  = false
      + set_subject_key_id    = false
      + validity_end_time     = (known after apply)
      + validity_period_hours = 8760
      + validity_start_time   = (known after apply)

      + subject {
          + common_name  = "CRMint Personal Root"
          + organization = "CRMint OpenSource"
        }
    }

Plan: 84 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + cloud_build_worker_pool = "default"
  + cloud_db_uri            = (sensitive value)
  + migrate_image           = "europe-docker.pkg.dev/crmint-builds/crmint/controller:latest"
  + migrate_sql_conn_name   = (known after apply)
  + region                  = "us-east1"
  + secured_url             = (known after apply)
  + unsecured_url           = (known after apply)

─────────────────────────────────────────────────────────────────────────────

Note: You didn't use the -out option to save this plan, so Terraform can't
guarantee to take exactly these actions if you run "terraform apply" now.

Pusher: @copybara-service[bot], Action: pull_request, Working Directory: ``, Workflow: terraform-plan

@copybara-service copybara-service bot force-pushed the test_495598377 branch 3 times, most recently from ca680b1 to 3d481e6 Compare December 16, 2022 05:45
@codecov-commenter
Copy link

codecov-commenter commented Dec 16, 2022

Codecov Report

Merging #398 (3d481e6) into master (0e6aa28) will increase coverage by 0.02%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #398      +/-   ##
==========================================
+ Coverage   86.87%   86.90%   +0.02%     
==========================================
  Files          69       69              
  Lines        3618     3626       +8     
  Branches      337      337              
==========================================
+ Hits         3143     3151       +8     
  Misses        417      417              
  Partials       58       58              
Flag Coverage Δ
backend 85.07% <ø> (ø)
cli 90.47% <100.00%> (+0.06%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
cli/commands/cloud_tests.py 97.60% <ø> (ø)
cli/commands/cloud.py 84.50% <100.00%> (+0.64%) ⬆️

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

We observed intermittent failures during deployment, due to Go resolving Google API domains into IPv6 addresses, even though the Cloud Shell environment has IPv6 disabled.

Until the Go issue (golang/go#25321) has been resolved, we have to patch the `/etc/hosts` file on the Cloud Shell machine to ensure that these domains are resolved using IPv4 only.

PiperOrigin-RevId: 495779871
@copybara-service copybara-service bot merged commit bd7473d into master Dec 16, 2022
@copybara-service copybara-service bot deleted the test_495598377 branch December 16, 2022 05:52
@github-pages github-pages bot temporarily deployed to github-pages December 16, 2022 05:52 Inactive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants