Skip to content

Conversation

jparr
Copy link
Contributor

@jparr jparr commented Sep 30, 2025

Deploy once confirmed that staging is working as expected.

Production endpoint for enghouse sftp.
#4048

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • [ x] New feature
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation

Copy link

Terraform plan in iac/cal-itp-data-infra-staging/gke/us

Plan: 1 to add, 0 to change, 1 to destroy. Changes to Outputs.
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # google_container_cluster.sftp-endpoints must be replaced
-/+ resource "google_container_cluster" "sftp-endpoints" {
!~      cluster_ipv4_cidr                        = "10.89.128.0/17" -> (known after apply)
!~      datapath_provider                        = "ADVANCED_DATAPATH" -> (known after apply)
!~      default_max_pods_per_node                = 110 -> (known after apply)
-       enable_tpu                               = false -> null
!~      endpoint                                 = "35.236.23.139" -> (known after apply)
!~      id                                       = "******************************************************************************" -> (known after apply)
-       initial_node_count                       = 0 -> null
!~      label_fingerprint                        = "78cdf2f6" -> (known after apply)
!~      logging_service                          = "logging.googleapis.com/kubernetes" -> (known after apply)
!~      master_version                           = "1.33.4-gke.1172000" -> (known after apply)
!~      monitoring_service                       = "monitoring.googleapis.com/kubernetes" -> (known after apply)
        name                                     = "sftp-endpoints"
!~      network                                  = "projects/cal-itp-data-infra-staging/global/networks/default" -> "https://www.googleapis.com/compute/v1/projects/cal-itp-data-infra-staging/global/networks/default"
!~      node_locations                           = [
-           "us-west2-a",
-           "us-west2-b",
-           "us-west2-c",
        ] -> (known after apply)
!~      node_version                             = "1.33.4-gke.1172000" -> (known after apply)
+       operation                                = (known after apply)
+       private_ipv6_google_access               = (known after apply)
-       resource_labels                          = {} -> null
!~      self_link                                = "https://container.googleapis.com/v1/projects/cal-itp-data-infra-staging/locations/us-west2/clusters/sftp-endpoints" -> (known after apply)
!~      services_ipv4_cidr                       = "34.118.224.0/20" -> (known after apply)
!~      subnetwork                               = "projects/cal-itp-data-infra-staging/regions/us-west2/subnetworks/default" -> (known after apply)
+       tpu_ipv4_cidr_block                      = (known after apply)
#        (18 unchanged attributes hidden)

!~      addons_config {
!~          cloudrun_config (known after apply)
!~          config_connector_config (known after apply)
!~          dns_cache_config (known after apply)
-           dns_cache_config {
-               enabled = true -> null
            }
!~          gce_persistent_disk_csi_driver_config (known after apply)
-           gce_persistent_disk_csi_driver_config {
-               enabled = true -> null
            }
!~          gcp_filestore_csi_driver_config (known after apply)
-           gcp_filestore_csi_driver_config {
-               enabled = true -> null
            }
!~          gke_backup_agent_config (known after apply)
!~          horizontal_pod_autoscaling (known after apply)
!~          http_load_balancing (known after apply)
!~          network_policy_config (known after apply)
-           network_policy_config {
-               disabled = true -> null
            }
!~          parallelstore_csi_driver_config (known after apply)
-           parallelstore_csi_driver_config {
-               enabled = true -> null
            }
!~          ray_operator_config (known after apply)
!~          stateful_ha_config (known after apply)
-           stateful_ha_config {
-               enabled = true -> null
            }

#            (1 unchanged block hidden)
        }

!~      authenticator_groups_config (known after apply)

-       binary_authorization {
-           enabled         = false -> null
#            (1 unchanged attribute hidden)
        }

!~      cluster_autoscaling (known after apply)
-       cluster_autoscaling {
-           auto_provisioning_locations = [] -> null
-           autoscaling_profile         = "OPTIMIZE_UTILIZATION" -> null
-           enabled                     = true -> null

-           auto_provisioning_defaults {
-               disk_size         = 0 -> null
-               image_type        = "COS_CONTAINERD" -> null
-               oauth_scopes      = [
-                   "https://www.googleapis.com/auth/devstorage.read_only",
-                   "https://www.googleapis.com/auth/logging.write",
-                   "https://www.googleapis.com/auth/monitoring",
-                   "https://www.googleapis.com/auth/service.management.readonly",
-                   "https://www.googleapis.com/auth/servicecontrol",
-                   "https://www.googleapis.com/auth/trace.append",
                ] -> null
-               service_account   = "default" -> null
#                (3 unchanged attributes hidden)

-               management {
-                   auto_repair     = true -> null
-                   auto_upgrade    = true -> null
-                   upgrade_options = [] -> null
                }

-               upgrade_settings {
-                   max_surge       = 1 -> null
-                   max_unavailable = 0 -> null
-                   strategy        = "SURGE" -> null
                }
            }

-           resource_limits {
-               maximum       = 1000000000 -> null
-               minimum       = 0 -> null
-               resource_type = "cpu" -> null
            }
-           resource_limits {
-               maximum       = 1000000000 -> null
-               minimum       = 0 -> null
-               resource_type = "memory" -> null
            }
-           resource_limits {
-               maximum       = 1000000000 -> null
-               minimum       = 0 -> null
-               resource_type = "nvidia-tesla-t4" -> null
            }
-           resource_limits {
-               maximum       = 1000000000 -> null
-               minimum       = 0 -> null
-               resource_type = "nvidia-tesla-a100" -> null
            }
        }

!~      confidential_nodes (known after apply)

!~      control_plane_endpoints_config (known after apply)
-       control_plane_endpoints_config {
-           dns_endpoint_config {
-               allow_external_traffic = false -> null
-               endpoint               = "gke-32f84df295474850ba9c06ce6a3c1aefea89-473674835135.us-west2.gke.goog" -> null
            }
-           ip_endpoints_config {
-               enabled = true -> null
            }
        }

!~      cost_management_config (known after apply)

!~      database_encryption (known after apply)
-       database_encryption {
-           state    = "DECRYPTED" -> null
#            (1 unchanged attribute hidden)
        }

!~      default_snat_status (known after apply)
-       default_snat_status {
-           disabled = false -> null
        }

-       dns_config {
-           cluster_dns                   = "CLOUD_DNS" -> null
-           cluster_dns_domain            = "cluster.local" -> null
-           cluster_dns_scope             = "CLUSTER_SCOPE" -> null
#            (1 unchanged attribute hidden)
        }

!~      enterprise_config (known after apply)
-       enterprise_config {
-           cluster_tier = "STANDARD" -> null
#            (1 unchanged attribute hidden)
        }

!~      gateway_api_config (known after apply)
-       gateway_api_config {
-           channel = "CHANNEL_STANDARD" -> null
        }

!~      identity_service_config (known after apply)

!~      ip_allocation_policy (known after apply)
-       ip_allocation_policy {
-           cluster_ipv4_cidr_block       = "10.89.128.0/17" -> null
-           cluster_secondary_range_name  = "gke-sftp-endpoints-pods-32f84df2" -> null
-           services_ipv4_cidr_block      = "34.118.224.0/20" -> null
-           stack_type                    = "IPV4" -> null
#            (1 unchanged attribute hidden)

-           pod_cidr_overprovision_config {
-               disabled = false -> null
            }
        }

!~      logging_config (known after apply)
-       logging_config {
-           enable_components = [
-               "SYSTEM_COMPONENTS",
-               "WORKLOADS",
            ] -> null
        }

!~      master_auth (known after apply)
-       master_auth {
-           cluster_ca_certificate = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVMVENDQXBXZ0F3SUJBZ0lSQVBWL1phUXBrRTFmS0djazBlck94bVF3RFFZSktvWklodmNOQVFFTEJRQXcKTHpFdE1Dc0dBMVVFQXhNa1pUQmhNelUxWVRRdFkyTmtOaTAwTm1KakxUaG1NekF0WldFeVlUaGxNbVU1TkRBMgpNQ0FYRFRJMU1Ea3hNakl6TWpNek4xb1lEekl3TlRVd09UQTJNREF5TXpNM1dqQXZNUzB3S3dZRFZRUURFeVJsCk1HRXpOVFZoTkMxalkyUTJMVFEyWW1NdE9HWXpNQzFsWVRKaE9HVXlaVGswTURZd2dnR2lNQTBHQ1NxR1NJYjMKRFFFQkFRVUFBNElCandBd2dnR0tBb0lCZ1FDcjNibW5BRGtjNWxmZ1ZKK2pkNk90MDhXME9VbDFtV2FHYkVpRApKZmNLeGdJV0JEemJIWFhleEEwRUtXZnlyYXlIemlDbTlTYlM5ZDR2a293VEZCbGhYS3A5Q3VGSTRtMjJuQUQwCkhDYTdFcWdnWHMyNm40a3RBSnhzMWljVHJuYy9tTFRQOTdUSkVENFZIcWF0UVYyNmY5SVdwWXhuRk5LOTJJRTgKVkl0ckZ2eUZ4eDczYXBBcE5sOHI4QzJrZnFreXV5ZTI0RlE1QWZ5ZVI3Mk1CREgwY0lzZ0VxQjR0WUd6VndVeApVYjJPSkxWYTc4cU44aGEzWkhIUEthN1pXRHludDR0bjhxM3ptNmp3dytlWHRwZE5xZ3Z4bk1kREY5elVwUnNICjlPZWg5Z0l1Y0NLWGw4cFJzSjFLWUozS3laMUVuN3diQWR6RVNPUUljaEpROWJ1MHdIZHF6UzdzSERJY3ZMRmYKaUFmbkZCcFoyZUgrOTB1Z3hId1dYeW1mMDhrYTR0M0EyRTJwZEZrQ3R3RG5YSWR5ZE93M016MlVFUXduNnNLMgpSeXhIQStNOWY4ZEZob1FXOEhVbk5KYkdkNkIzRm5WSlVxUktwdWhXSkh0Ly9rb00zdVJ2MEJaMjNXZ0l6L1gxCi94bFBqUElIMUNCMEtRY3drUEpIQk1BZ2xOc0NBd0VBQWFOQ01FQXdEZ1lEVlIwUEFRSC9CQVFEQWdJRU1BOEcKQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGRlBDNzEzRW5GMlVCeVk4TVdzQ0ozbGNSa0VjTUEwRwpDU3FHU0liM0RRRUJDd1VBQTRJQmdRQVlmUktJM1NJcEplNTlkdWlMVW82RlRCZEhMQ0o0cWFJQ1JWVGlrSmhBCmtKbDY0dTVpRTN2RW9KM2paL1JZd1lNemtuVmlLMkZ3UGFyd2N6VTR1ZnpUc1RNTUprM2M4S3J2NHo4STkrYlcKNktvV1hmNmZ6MnlTOTliUjdLWjlyNkVURy9yK3FWRkg5NlhEcGZIM2J1dUc0ZkM4cm5LUjV5ZU5SL3BhbWR5Ugo2ZzNGUm9VSGRwOWVUQmFEK3VNWE9yWlpKNXBwZ1lrSEFPL0RXcmloWmF4bU9oRXpzTE45Q240YWhrWmhpTkQ3Cm5KakNSOUtzSldUQVRCWU91KzhUVjVFQ2N2RW5PN0ZQajljYVhiaWdjZVNPd25TUzIzWTR4clcrWTErbDJscmoKbHU4eFBkcGphRzZoMnRMSFkvdFdFQVJaR2hWbGRzcU94TlB1c2EvSWorQmRVNyt0S1REMkliOGM3MGpYeVBLOQpzUjg3dGk2SHIrbi8vZ3YzaGNJeUxFdTZVQ0V5QyttQXNWZThKRXA5YlNmYk1CVGVXbml3QlVCTEpkQXpHL3pkCnRDMmx6YmpwZEl5aTM1VS9nRjVoNGNnN0lUTXBZcGJuUVRyV21vUWxnYVVDaUtnbk1qNngrVGZHRVJHcnUwRmEKWVRxZEdwOTd2b0VSWjFVUUwzR014ZmM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K" -> null
#            (2 unchanged attributes hidden)

-           client_certificate_config {
-               issue_client_certificate = false -> null
            }
        }

!~      master_authorized_networks_config (known after apply)

!~      mesh_certificates (known after apply)

!~      monitoring_config (known after apply)
-       monitoring_config {
-           enable_components = [
-               "SYSTEM_COMPONENTS",
-               "STORAGE",
-               "HPA",
-               "POD",
-               "DAEMONSET",
-               "DEPLOYMENT",
-               "STATEFULSET",
-               "JOBSET",
-               "CADVISOR",
-               "KUBELET",
-               "DCGM",
            ] -> null

-           advanced_datapath_observability_config {
-               enable_metrics = true -> null
-               enable_relay   = false -> null
            }

-           managed_prometheus {
-               enabled = true -> null
            }
        }

-       network_policy {
-           enabled  = false -> null
-           provider = "PROVIDER_UNSPECIFIED" -> null
        }

!~      node_config {
!~          disk_size_gb                = 100 -> (known after apply)
!~          disk_type                   = "pd-balanced" -> (known after apply)
!~          effective_taints            = [
-               {
-                   effect = "NO_SCHEDULE"
-                   key    = "cloud.google.com/gke-quick-remove"
-                   value  = "true"
                },
            ] -> (known after apply)
-           enable_confidential_storage = false -> null
-           flex_start                  = false -> null
!~          image_type                  = "COS_CONTAINERD" -> (known after apply)
!~          labels                      = {} -> (known after apply)
!~          local_ssd_count             = 0 -> (known after apply)
!~          logging_variant             = "DEFAULT" -> (known after apply)
!~          machine_type                = "ek-standard-8" -> (known after apply)
!~          metadata                    = {
-               "disable-legacy-endpoints" = "true"
            } -> (known after apply)
+           min_cpu_platform            = (known after apply)
!~          oauth_scopes                = [
-               "https://www.googleapis.com/auth/devstorage.read_only",
-               "https://www.googleapis.com/auth/logging.write",
-               "https://www.googleapis.com/auth/monitoring",
-               "https://www.googleapis.com/auth/service.management.readonly",
-               "https://www.googleapis.com/auth/servicecontrol",
-               "https://www.googleapis.com/auth/trace.append",
            ] -> (known after apply)
-           resource_labels             = {
-               "goog-gke-node-pool-provisioning-model" = "on-demand"
            } -> null
-           resource_manager_tags       = {} -> null
!~          service_account             = "default" -> (known after apply)
-           storage_pools               = [] -> null
-           tags                        = [] -> null
#            (6 unchanged attributes hidden)

!~          confidential_nodes (known after apply)

!~          gcfs_config (known after apply)

!~          guest_accelerator (known after apply)

-           gvnic {
-               enabled = true -> null
            }

!~          kubelet_config (known after apply)
-           kubelet_config {
-               allowed_unsafe_sysctls                 = [] -> null
-               container_log_max_files                = 0 -> null
-               cpu_cfs_quota                          = false -> null
-               image_gc_high_threshold_percent        = 0 -> null
-               image_gc_low_threshold_percent         = 0 -> null
-               insecure_kubelet_readonly_port_enabled = "FALSE" -> null
-               pod_pids_limit                         = 0 -> null
#                (5 unchanged attributes hidden)
            }

-           reservation_affinity { # forces replacement
-               consume_reservation_type = "NO_RESERVATION" -> null # forces replacement
-               values                   = [] -> null
#                (1 unchanged attribute hidden)
            }

!~          shielded_instance_config (known after apply)
-           shielded_instance_config {
-               enable_integrity_monitoring = true -> null
-               enable_secure_boot          = true -> null
            }

!~          windows_node_config (known after apply)
-           windows_node_config {
#                (1 unchanged attribute hidden)
            }

#            (1 unchanged block hidden)
        }

!~      node_pool (known after apply)
-       node_pool {
-           initial_node_count          = 1 -> null
-           instance_group_urls         = [] -> null
-           managed_instance_group_urls = [] -> null
-           max_pods_per_node           = 32 -> null
-           name                        = "default-pool" -> null
-           node_count                  = 0 -> null
-           node_locations              = [
-               "us-west2-c",
            ] -> null
-           version                     = "1.33.4-gke.1172000" -> null
#            (1 unchanged attribute hidden)

-           autoscaling {
-               location_policy      = "BALANCED" -> null
-               max_node_count       = 1000 -> null
-               min_node_count       = 0 -> null
-               total_max_node_count = 0 -> null
-               total_min_node_count = 0 -> null
            }

-           management {
-               auto_repair  = true -> null
-               auto_upgrade = true -> null
            }

-           network_config {
-               create_pod_range     = false -> null
-               enable_private_nodes = false -> null
-               pod_ipv4_cidr_block  = "10.89.128.0/17" -> null
-               pod_range            = "gke-sftp-endpoints-pods-32f84df2" -> null
            }

-           node_config {
-               disk_size_gb                = 100 -> null
-               disk_type                   = "pd-balanced" -> null
-               effective_taints            = [
-                   {
-                       effect = "NO_SCHEDULE"
-                       key    = "cloud.google.com/gke-quick-remove"
-                       value  = "true"
                    },
                ] -> null
-               enable_confidential_storage = false -> null
-               flex_start                  = false -> null
-               image_type                  = "COS_CONTAINERD" -> null
-               labels                      = {} -> null
-               local_ssd_count             = 0 -> null
-               logging_variant             = "DEFAULT" -> null
-               machine_type                = "ek-standard-8" -> null
-               metadata                    = {
-                   "disable-legacy-endpoints" = "true"
                } -> null
-               oauth_scopes                = [
-                   "https://www.googleapis.com/auth/devstorage.read_only",
-                   "https://www.googleapis.com/auth/logging.write",
-                   "https://www.googleapis.com/auth/monitoring",
-                   "https://www.googleapis.com/auth/service.management.readonly",
-                   "https://www.googleapis.com/auth/servicecontrol",
-                   "https://www.googleapis.com/auth/trace.append",
                ] -> null
-               preemptible                 = false -> null
-               resource_labels             = {
-                   "goog-gke-node-pool-provisioning-model" = "on-demand"
                } -> null
-               resource_manager_tags       = {} -> null
-               service_account             = "default" -> null
-               spot                        = false -> null
-               storage_pools               = [] -> null
-               tags                        = [] -> null
#                (5 unchanged attributes hidden)

-               gvnic {
-                   enabled = true -> null
                }

-               kubelet_config {
-                   allowed_unsafe_sysctls                 = [] -> null
-                   container_log_max_files                = 0 -> null
-                   cpu_cfs_quota                          = false -> null
-                   image_gc_high_threshold_percent        = 0 -> null
-                   image_gc_low_threshold_percent         = 0 -> null
-                   insecure_kubelet_readonly_port_enabled = "FALSE" -> null
-                   pod_pids_limit                         = 0 -> null
#                    (5 unchanged attributes hidden)
                }

-               reservation_affinity {
-                   consume_reservation_type = "NO_RESERVATION" -> null
-                   values                   = [] -> null
#                    (1 unchanged attribute hidden)
                }

-               shielded_instance_config {
-                   enable_integrity_monitoring = true -> null
-                   enable_secure_boot          = true -> null
                }

-               windows_node_config {
#                    (1 unchanged attribute hidden)
                }

-               workload_metadata_config {
-                   mode = "GKE_METADATA" -> null
                }
            }

-           upgrade_settings {
-               max_surge       = 1 -> null
-               max_unavailable = 0 -> null
-               strategy        = "SURGE" -> null
            }
        }
-       node_pool {
-           initial_node_count          = 0 -> null
-           instance_group_urls         = [] -> null
-           managed_instance_group_urls = [] -> null
-           max_pods_per_node           = 32 -> null
-           name                        = "pool-1" -> null
-           node_count                  = 0 -> null
-           node_locations              = [
-               "us-west2-a",
-               "us-west2-b",
-               "us-west2-c",
            ] -> null
-           version                     = "1.33.4-gke.1172000" -> null
#            (1 unchanged attribute hidden)

-           autoscaling {
-               location_policy      = "BALANCED" -> null
-               max_node_count       = 1000 -> null
-               min_node_count       = 0 -> null
-               total_max_node_count = 0 -> null
-               total_min_node_count = 0 -> null
            }

-           management {
-               auto_repair  = true -> null
-               auto_upgrade = true -> null
            }

-           network_config {
-               create_pod_range     = false -> null
-               enable_private_nodes = false -> null
-               pod_ipv4_cidr_block  = "10.89.128.0/17" -> null
-               pod_range            = "gke-sftp-endpoints-pods-32f84df2" -> null
            }

-           node_config {
-               disk_size_gb                = 100 -> null
-               disk_type                   = "pd-balanced" -> null
-               effective_taints            = [] -> null
-               enable_confidential_storage = false -> null
-               flex_start                  = false -> null
-               image_type                  = "COS_CONTAINERD" -> null
-               labels                      = {} -> null
-               local_ssd_count             = 0 -> null
-               logging_variant             = "DEFAULT" -> null
-               machine_type                = "ek-standard-8" -> null
-               metadata                    = {
-                   "disable-legacy-endpoints" = "true"
                } -> null
-               oauth_scopes                = [
-                   "https://www.googleapis.com/auth/devstorage.read_only",
-                   "https://www.googleapis.com/auth/logging.write",
-                   "https://www.googleapis.com/auth/monitoring",
-                   "https://www.googleapis.com/auth/service.management.readonly",
-                   "https://www.googleapis.com/auth/servicecontrol",
-                   "https://www.googleapis.com/auth/trace.append",
                ] -> null
-               preemptible                 = false -> null
-               resource_labels             = {
-                   "goog-gke-node-pool-provisioning-model" = "on-demand"
                } -> null
-               resource_manager_tags       = {} -> null
-               service_account             = "default" -> null
-               spot                        = false -> null
-               storage_pools               = [] -> null
-               tags                        = [] -> null
#                (5 unchanged attributes hidden)

-               gvnic {
-                   enabled = true -> null
                }

-               kubelet_config {
-                   allowed_unsafe_sysctls                 = [] -> null
-                   container_log_max_files                = 0 -> null
-                   cpu_cfs_quota                          = false -> null
-                   image_gc_high_threshold_percent        = 0 -> null
-                   image_gc_low_threshold_percent         = 0 -> null
-                   insecure_kubelet_readonly_port_enabled = "FALSE" -> null
-                   pod_pids_limit                         = 0 -> null
#                    (5 unchanged attributes hidden)
                }

-               reservation_affinity {
-                   consume_reservation_type = "NO_RESERVATION" -> null
-                   values                   = [] -> null
#                    (1 unchanged attribute hidden)
                }

-               shielded_instance_config {
-                   enable_integrity_monitoring = true -> null
-                   enable_secure_boot          = true -> null
                }

-               windows_node_config {
#                    (1 unchanged attribute hidden)
                }

-               workload_metadata_config {
-                   mode = "GKE_METADATA" -> null
                }
            }

-           upgrade_settings {
-               max_surge       = 1 -> null
-               max_unavailable = 0 -> null
-               strategy        = "SURGE" -> null
            }
        }
-       node_pool {
-           initial_node_count          = 0 -> null
-           instance_group_urls         = [] -> null
-           managed_instance_group_urls = [] -> null
-           max_pods_per_node           = 32 -> null
-           name                        = "pool-2" -> null
-           node_count                  = 0 -> null
-           node_locations              = [
-               "us-west2-a",
-               "us-west2-b",
-               "us-west2-c",
            ] -> null
-           version                     = "1.33.4-gke.1172000" -> null
#            (1 unchanged attribute hidden)

-           autoscaling {
-               location_policy      = "BALANCED" -> null
-               max_node_count       = 1000 -> null
-               min_node_count       = 0 -> null
-               total_max_node_count = 0 -> null
-               total_min_node_count = 0 -> null
            }

-           management {
-               auto_repair  = true -> null
-               auto_upgrade = true -> null
            }

-           network_config {
-               create_pod_range     = false -> null
-               enable_private_nodes = false -> null
-               pod_ipv4_cidr_block  = "10.89.128.0/17" -> null
-               pod_range            = "gke-sftp-endpoints-pods-32f84df2" -> null
            }

-           node_config {
-               disk_size_gb                = 100 -> null
-               disk_type                   = "pd-balanced" -> null
-               effective_taints            = [] -> null
-               enable_confidential_storage = false -> null
-               flex_start                  = false -> null
-               image_type                  = "COS_CONTAINERD" -> null
-               labels                      = {} -> null
-               local_ssd_count             = 0 -> null
-               logging_variant             = "DEFAULT" -> null
-               machine_type                = "ek-standard-16" -> null
-               metadata                    = {
-                   "disable-legacy-endpoints" = "true"
                } -> null
-               oauth_scopes                = [
-                   "https://www.googleapis.com/auth/devstorage.read_only",
-                   "https://www.googleapis.com/auth/logging.write",
-                   "https://www.googleapis.com/auth/monitoring",
-                   "https://www.googleapis.com/auth/service.management.readonly",
-                   "https://www.googleapis.com/auth/servicecontrol",
-                   "https://www.googleapis.com/auth/trace.append",
                ] -> null
-               preemptible                 = false -> null
-               resource_labels             = {
-                   "goog-gke-node-pool-provisioning-model" = "on-demand"
                } -> null
-               resource_manager_tags       = {} -> null
-               service_account             = "default" -> null
-               spot                        = false -> null
-               storage_pools               = [] -> null
-               tags                        = [] -> null
#                (5 unchanged attributes hidden)

-               gvnic {
-                   enabled = true -> null
                }

-               kubelet_config {
-                   allowed_unsafe_sysctls                 = [] -> null
-                   container_log_max_files                = 0 -> null
-                   cpu_cfs_quota                          = false -> null
-                   image_gc_high_threshold_percent        = 0 -> null
-                   image_gc_low_threshold_percent         = 0 -> null
-                   insecure_kubelet_readonly_port_enabled = "FALSE" -> null
-                   pod_pids_limit                         = 0 -> null
#                    (5 unchanged attributes hidden)
                }

-               reservation_affinity {
-                   consume_reservation_type = "NO_RESERVATION" -> null
-                   values                   = [] -> null
#                    (1 unchanged attribute hidden)
                }

-               shielded_instance_config {
-                   enable_integrity_monitoring = true -> null
-                   enable_secure_boot          = true -> null
                }

-               windows_node_config {
#                    (1 unchanged attribute hidden)
                }

-               workload_metadata_config {
-                   mode = "GKE_METADATA" -> null
                }
            }

-           upgrade_settings {
-               max_surge       = 1 -> null
-               max_unavailable = 0 -> null
-               strategy        = "SURGE" -> null
            }
        }
-       node_pool {
-           initial_node_count          = 0 -> null
-           instance_group_urls         = [] -> null
-           managed_instance_group_urls = [] -> null
-           max_pods_per_node           = 32 -> null
-           name                        = "pool-3" -> null
-           node_count                  = 0 -> null
-           node_locations              = [
-               "us-west2-a",
-               "us-west2-b",
-               "us-west2-c",
            ] -> null
-           version                     = "1.33.4-gke.1172000" -> null
#            (1 unchanged attribute hidden)

-           autoscaling {
-               location_policy      = "BALANCED" -> null
-               max_node_count       = 1000 -> null
-               min_node_count       = 0 -> null
-               total_max_node_count = 0 -> null
-               total_min_node_count = 0 -> null
            }

-           management {
-               auto_repair  = true -> null
-               auto_upgrade = true -> null
            }

-           network_config {
-               create_pod_range     = false -> null
-               enable_private_nodes = false -> null
-               pod_ipv4_cidr_block  = "10.89.128.0/17" -> null
-               pod_range            = "gke-sftp-endpoints-pods-32f84df2" -> null
            }

-           node_config {
-               disk_size_gb                = 100 -> null
-               disk_type                   = "pd-balanced" -> null
-               effective_taints            = [] -> null
-               enable_confidential_storage = false -> null
-               flex_start                  = false -> null
-               image_type                  = "COS_CONTAINERD" -> null
-               labels                      = {} -> null
-               local_ssd_count             = 0 -> null
-               logging_variant             = "DEFAULT" -> null
-               machine_type                = "ek-standard-32" -> null
-               metadata                    = {
-                   "disable-legacy-endpoints" = "true"
                } -> null
-               oauth_scopes                = [
-                   "https://www.googleapis.com/auth/devstorage.read_only",
-                   "https://www.googleapis.com/auth/logging.write",
-                   "https://www.googleapis.com/auth/monitoring",
-                   "https://www.googleapis.com/auth/service.management.readonly",
-                   "https://www.googleapis.com/auth/servicecontrol",
-                   "https://www.googleapis.com/auth/trace.append",
                ] -> null
-               preemptible                 = false -> null
-               resource_labels             = {
-                   "goog-gke-node-pool-provisioning-model" = "on-demand"
                } -> null
-               resource_manager_tags       = {} -> null
-               service_account             = "default" -> null
-               spot                        = false -> null
-               storage_pools               = [] -> null
-               tags                        = [] -> null
#                (5 unchanged attributes hidden)

-               gvnic {
-                   enabled = true -> null
                }

-               kubelet_config {
-                   allowed_unsafe_sysctls                 = [] -> null
-                   container_log_max_files                = 0 -> null
-                   cpu_cfs_quota                          = false -> null
-                   image_gc_high_threshold_percent        = 0 -> null
-                   image_gc_low_threshold_percent         = 0 -> null
-                   insecure_kubelet_readonly_port_enabled = "FALSE" -> null
-                   pod_pids_limit                         = 0 -> null
#                    (5 unchanged attributes hidden)
                }

-               reservation_affinity {
-                   consume_reservation_type = "NO_RESERVATION" -> null
-                   values                   = [] -> null
#                    (1 unchanged attribute hidden)
                }

-               shielded_instance_config {
-                   enable_integrity_monitoring = true -> null
-                   enable_secure_boot          = true -> null
                }

-               windows_node_config {
#                    (1 unchanged attribute hidden)
                }

-               workload_metadata_config {
-                   mode = "GKE_METADATA" -> null
                }
            }

-           upgrade_settings {
-               max_surge       = 1 -> null
-               max_unavailable = 0 -> null
-               strategy        = "SURGE" -> null
            }
        }
-       node_pool {
-           initial_node_count          = 0 -> null
-           instance_group_urls         = [] -> null
-           managed_instance_group_urls = [] -> null
-           max_pods_per_node           = 32 -> null
-           name                        = "pool-4" -> null
-           node_count                  = 0 -> null
-           node_locations              = [
-               "us-west2-a",
-               "us-west2-b",
-               "us-west2-c",
            ] -> null
-           version                     = "1.33.4-gke.1172000" -> null
#            (1 unchanged attribute hidden)

-           autoscaling {
-               location_policy      = "BALANCED" -> null
-               max_node_count       = 1000 -> null
-               min_node_count       = 0 -> null
-               total_max_node_count = 0 -> null
-               total_min_node_count = 0 -> null
            }

-           management {
-               auto_repair  = true -> null
-               auto_upgrade = true -> null
            }

-           network_config {
-               create_pod_range     = false -> null
-               enable_private_nodes = false -> null
-               pod_ipv4_cidr_block  = "10.89.128.0/17" -> null
-               pod_range            = "gke-sftp-endpoints-pods-32f84df2" -> null
            }

-           node_config {
-               disk_size_gb                = 100 -> null
-               disk_type                   = "pd-balanced" -> null
-               effective_taints            = [] -> null
-               enable_confidential_storage = false -> null
-               flex_start                  = false -> null
-               image_type                  = "COS_CONTAINERD" -> null
-               labels                      = {} -> null
-               local_ssd_count             = 0 -> null
-               logging_variant             = "DEFAULT" -> null
-               machine_type                = "e2-medium" -> null
-               metadata                    = {
-                   "disable-legacy-endpoints" = "true"
                } -> null
-               oauth_scopes                = [
-                   "https://www.googleapis.com/auth/devstorage.read_only",
-                   "https://www.googleapis.com/auth/logging.write",
-                   "https://www.googleapis.com/auth/monitoring",
-                   "https://www.googleapis.com/auth/service.management.readonly",
-                   "https://www.googleapis.com/auth/servicecontrol",
-                   "https://www.googleapis.com/auth/trace.append",
                ] -> null
-               preemptible                 = false -> null
-               resource_labels             = {
-                   "goog-gke-node-pool-provisioning-model" = "on-demand"
                } -> null
-               resource_manager_tags       = {} -> null
-               service_account             = "default" -> null
-               spot                        = false -> null
-               storage_pools               = [] -> null
-               tags                        = [] -> null
#                (5 unchanged attributes hidden)

-               gvnic {
-                   enabled = true -> null
                }

-               kubelet_config {
-                   allowed_unsafe_sysctls                 = [] -> null
-                   container_log_max_files                = 0 -> null
-                   cpu_cfs_quota                          = false -> null
-                   image_gc_high_threshold_percent        = 0 -> null
-                   image_gc_low_threshold_percent         = 0 -> null
-                   insecure_kubelet_readonly_port_enabled = "FALSE" -> null
-                   pod_pids_limit                         = 0 -> null
#                    (5 unchanged attributes hidden)
                }

-               reservation_affinity {
-                   consume_reservation_type = "NO_RESERVATION" -> null
-                   values                   = [] -> null
#                    (1 unchanged attribute hidden)
                }

-               shielded_instance_config {
-                   enable_integrity_monitoring = true -> null
-                   enable_secure_boot          = true -> null
                }

-               windows_node_config {
#                    (1 unchanged attribute hidden)
                }

-               workload_metadata_config {
-                   mode = "GKE_METADATA" -> null
                }
            }

-           upgrade_settings {
-               max_surge       = 1 -> null
-               max_unavailable = 0 -> null
-               strategy        = "SURGE" -> null
            }
        }
-       node_pool {
-           initial_node_count          = 0 -> null
-           instance_group_urls         = [] -> null
-           managed_instance_group_urls = [] -> null
-           max_pods_per_node           = 32 -> null
-           name                        = "pool-5" -> null
-           node_count                  = 0 -> null
-           node_locations              = [
-               "us-west2-a",
-               "us-west2-b",
-               "us-west2-c",
            ] -> null
-           version                     = "1.33.4-gke.1172000" -> null
#            (1 unchanged attribute hidden)

-           autoscaling {
-               location_policy      = "BALANCED" -> null
-               max_node_count       = 1000 -> null
-               min_node_count       = 0 -> null
-               total_max_node_count = 0 -> null
-               total_min_node_count = 0 -> null
            }

-           management {
-               auto_repair  = true -> null
-               auto_upgrade = true -> null
            }

-           network_config {
-               create_pod_range     = false -> null
-               enable_private_nodes = false -> null
-               pod_ipv4_cidr_block  = "10.89.128.0/17" -> null
-               pod_range            = "gke-sftp-endpoints-pods-32f84df2" -> null
            }

-           node_config {
-               disk_size_gb                = 100 -> null
-               disk_type                   = "pd-balanced" -> null
-               effective_taints            = [] -> null
-               enable_confidential_storage = false -> null
-               flex_start                  = false -> null
-               image_type                  = "COS_CONTAINERD" -> null
-               labels                      = {} -> null
-               local_ssd_count             = 0 -> null
-               logging_variant             = "DEFAULT" -> null
-               machine_type                = "e2-standard-2" -> null
-               metadata                    = {
-                   "disable-legacy-endpoints" = "true"
                } -> null
-               oauth_scopes                = [
-                   "https://www.googleapis.com/auth/devstorage.read_only",
-                   "https://www.googleapis.com/auth/logging.write",
-                   "https://www.googleapis.com/auth/monitoring",
-                   "https://www.googleapis.com/auth/service.management.readonly",
-                   "https://www.googleapis.com/auth/servicecontrol",
-                   "https://www.googleapis.com/auth/trace.append",
                ] -> null
-               preemptible                 = false -> null
-               resource_labels             = {
-                   "goog-gke-node-pool-provisioning-model" = "on-demand"
                } -> null
-               resource_manager_tags       = {} -> null
-               service_account             = "default" -> null
-               spot                        = false -> null
-               storage_pools               = [] -> null
-               tags                        = [] -> null
#                (5 unchanged attributes hidden)

-               gvnic {
-                   enabled = true -> null
                }

-               kubelet_config {
-                   allowed_unsafe_sysctls                 = [] -> null
-                   container_log_max_files                = 0 -> null
-                   cpu_cfs_quota                          = false -> null
-                   image_gc_high_threshold_percent        = 0 -> null
-                   image_gc_low_threshold_percent         = 0 -> null
-                   insecure_kubelet_readonly_port_enabled = "FALSE" -> null
-                   pod_pids_limit                         = 0 -> null
#                    (5 unchanged attributes hidden)
                }

-               reservation_affinity {
-                   consume_reservation_type = "NO_RESERVATION" -> null
-                   values                   = [] -> null
#                    (1 unchanged attribute hidden)
                }

-               shielded_instance_config {
-                   enable_integrity_monitoring = true -> null
-                   enable_secure_boot          = true -> null
                }

-               windows_node_config {
#                    (1 unchanged attribute hidden)
                }

-               workload_metadata_config {
-                   mode = "GKE_METADATA" -> null
                }
            }

-           upgrade_settings {
-               max_surge       = 1 -> null
-               max_unavailable = 0 -> null
-               strategy        = "SURGE" -> null
            }
        }
-       node_pool {
-           initial_node_count          = 0 -> null
-           instance_group_urls         = [] -> null
-           managed_instance_group_urls = [] -> null
-           max_pods_per_node           = 32 -> null
-           name                        = "pool-6" -> null
-           node_count                  = 0 -> null
-           node_locations              = [
-               "us-west2-a",
-               "us-west2-b",
-               "us-west2-c",
            ] -> null
-           version                     = "1.33.4-gke.1172000" -> null
#            (1 unchanged attribute hidden)

-           autoscaling {
-               location_policy      = "BALANCED" -> null
-               max_node_count       = 1000 -> null
-               min_node_count       = 0 -> null
-               total_max_node_count = 0 -> null
-               total_min_node_count = 0 -> null
            }

-           management {
-               auto_repair  = true -> null
-               auto_upgrade = true -> null
            }

-           network_config {
-               create_pod_range     = false -> null
-               enable_private_nodes = false -> null
-               pod_ipv4_cidr_block  = "10.89.128.0/17" -> null
-               pod_range            = "gke-sftp-endpoints-pods-32f84df2" -> null
            }

-           node_config {
-               disk_size_gb                = 100 -> null
-               disk_type                   = "pd-balanced" -> null
-               effective_taints            = [] -> null
-               enable_confidential_storage = false -> null
-               flex_start                  = false -> null
-               image_type                  = "COS_CONTAINERD" -> null
-               labels                      = {} -> null
-               local_ssd_count             = 0 -> null
-               logging_variant             = "DEFAULT" -> null
-               machine_type                = "e2-standard-4" -> null
-               metadata                    = {
-                   "disable-legacy-endpoints" = "true"
                } -> null
-               oauth_scopes                = [
-                   "https://www.googleapis.com/auth/devstorage.read_only",
-                   "https://www.googleapis.com/auth/logging.write",
-                   "https://www.googleapis.com/auth/monitoring",
-                   "https://www.googleapis.com/auth/service.management.readonly",
-                   "https://www.googleapis.com/auth/servicecontrol",
-                   "https://www.googleapis.com/auth/trace.append",
                ] -> null
-               preemptible                 = false -> null
-               resource_labels             = {
-                   "goog-gke-node-pool-provisioning-model" = "on-demand"
                } -> null
-               resource_manager_tags       = {} -> null
-               service_account             = "default" -> null
-               spot                        = false -> null
-               storage_pools               = [] -> null
-               tags                        = [] -> null
#                (5 unchanged attributes hidden)

-               gvnic {
-                   enabled = true -> null
                }

-               kubelet_config {
-                   allowed_unsafe_sysctls                 = [] -> null
-                   container_log_max_files                = 0 -> null
-                   cpu_cfs_quota                          = false -> null
-                   image_gc_high_threshold_percent        = 0 -> null
-                   image_gc_low_threshold_percent         = 0 -> null
-                   insecure_kubelet_readonly_port_enabled = "FALSE" -> null
-                   pod_pids_limit                         = 0 -> null
#                    (5 unchanged attributes hidden)
                }

-               reservation_affinity {
-                   consume_reservation_type = "NO_RESERVATION" -> null
-                   values                   = [] -> null
#                    (1 unchanged attribute hidden)
                }

-               shielded_instance_config {
-                   enable_integrity_monitoring = true -> null
-                   enable_secure_boot          = true -> null
                }

-               windows_node_config {
#                    (1 unchanged attribute hidden)
                }

-               workload_metadata_config {
-                   mode = "GKE_METADATA" -> null
                }
            }

-           upgrade_settings {
-               max_surge       = 1 -> null
-               max_unavailable = 0 -> null
-               strategy        = "SURGE" -> null
            }
        }
-       node_pool {
-           initial_node_count          = 0 -> null
-           instance_group_urls         = [] -> null
-           managed_instance_group_urls = [] -> null
-           max_pods_per_node           = 32 -> null
-           name                        = "pool-7" -> null
-           node_count                  = 0 -> null
-           node_locations              = [
-               "us-west2-a",
-               "us-west2-b",
-               "us-west2-c",
            ] -> null
-           version                     = "1.33.4-gke.1172000" -> null
#            (1 unchanged attribute hidden)

-           autoscaling {
-               location_policy      = "BALANCED" -> null
-               max_node_count       = 1000 -> null
-               min_node_count       = 0 -> null
-               total_max_node_count = 0 -> null
-               total_min_node_count = 0 -> null
            }

-           management {
-               auto_repair  = true -> null
-               auto_upgrade = true -> null
            }

-           network_config {
-               create_pod_range     = false -> null
-               enable_private_nodes = false -> null
-               pod_ipv4_cidr_block  = "10.89.128.0/17" -> null
-               pod_range            = "gke-sftp-endpoints-pods-32f84df2" -> null
            }

-           node_config {
Plan is too large to fit in a PR comment. See the full plan in the workflow log.

📝 Plan generated in Terraform Plan #559

Copy link

Terraform plan in iac/cal-itp-data-infra/networks/us

Plan: 1 to add, 0 to change, 0 to destroy. Changes to Outputs.
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+   create

Terraform will perform the following actions:

  # google_compute_address.enghouse-sftp-address will be created
+   resource "google_compute_address" "enghouse-sftp-address" {
+       address            = (known after apply)
+       address_type       = "EXTERNAL"
+       creation_timestamp = (known after apply)
+       effective_labels   = {
+           "goog-terraform-provisioned" = "true"
        }
+       id                 = (known after apply)
+       label_fingerprint  = (known after apply)
+       name               = "enghouse-sftp-address"
+       network_tier       = (known after apply)
+       prefix_length      = (known after apply)
+       project            = "cal-itp-data-infra"
+       purpose            = (known after apply)
+       region             = "us-west2"
+       self_link          = (known after apply)
+       subnetwork         = (known after apply)
+       terraform_labels   = {
+           "goog-terraform-provisioned" = "true"
        }
+       users              = (known after apply)
    }

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

Changes to Outputs:
+   google_compute_address_enghouse-sftp-address_ip        = (known after apply)

📝 Plan generated in Terraform Plan #559

Copy link

Terraform plan in iac/cal-itp-data-infra/gke/us

Plan: 1 to add, 0 to change, 0 to destroy. Changes to Outputs.
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+   create

Terraform will perform the following actions:

  # google_container_cluster.sftp-endpoints will be created
+   resource "google_container_cluster" "sftp-endpoints" {
+       cluster_ipv4_cidr                        = (known after apply)
+       datapath_provider                        = (known after apply)
+       default_max_pods_per_node                = (known after apply)
+       deletion_protection                      = false
+       disable_l4_lb_firewall_reconciliation    = false
+       effective_labels                         = {
+           "goog-terraform-provisioned" = "true"
        }
+       enable_autopilot                         = true
+       enable_cilium_clusterwide_network_policy = false
+       enable_fqdn_network_policy               = false
+       enable_intranode_visibility              = true
+       enable_kubernetes_alpha                  = false
+       enable_l4_ilb_subsetting                 = false
+       enable_legacy_abac                       = false
+       enable_multi_networking                  = false
+       enable_shielded_nodes                    = true
+       endpoint                                 = (known after apply)
+       id                                       = (known after apply)
+       label_fingerprint                        = (known after apply)
+       location                                 = "us-west2"
+       logging_service                          = (known after apply)
+       master_version                           = (known after apply)
+       monitoring_service                       = (known after apply)
+       name                                     = "sftp-endpoints"
+       network                                  = "https://www.googleapis.com/compute/v1/projects/cal-itp-data-infra/global/networks/default"
+       networking_mode                          = "VPC_NATIVE"
+       node_locations                           = (known after apply)
+       node_version                             = (known after apply)
+       operation                                = (known after apply)
+       private_ipv6_google_access               = (known after apply)
+       project                                  = "cal-itp-data-infra"
+       self_link                                = (known after apply)
+       services_ipv4_cidr                       = (known after apply)
+       subnetwork                               = (known after apply)
+       terraform_labels                         = {
+           "goog-terraform-provisioned" = "true"
        }
+       tpu_ipv4_cidr_block                      = (known after apply)

+       addons_config {
+           cloudrun_config (known after apply)
+           config_connector_config (known after apply)
+           dns_cache_config (known after apply)
+           gce_persistent_disk_csi_driver_config (known after apply)
+           gcp_filestore_csi_driver_config (known after apply)
+           gcs_fuse_csi_driver_config {
+               enabled = true
            }
+           gke_backup_agent_config (known after apply)
+           horizontal_pod_autoscaling (known after apply)
+           http_load_balancing (known after apply)
+           network_policy_config (known after apply)
+           parallelstore_csi_driver_config (known after apply)
+           ray_operator_config (known after apply)
+           stateful_ha_config (known after apply)
        }

+       authenticator_groups_config (known after apply)

+       cluster_autoscaling (known after apply)

+       confidential_nodes (known after apply)

+       control_plane_endpoints_config (known after apply)

+       cost_management_config (known after apply)

+       database_encryption (known after apply)

+       default_snat_status (known after apply)

+       enterprise_config (known after apply)

+       gateway_api_config (known after apply)

+       identity_service_config (known after apply)

+       ip_allocation_policy (known after apply)

+       logging_config (known after apply)

+       master_auth (known after apply)

+       master_authorized_networks_config (known after apply)

+       mesh_certificates (known after apply)

+       monitoring_config (known after apply)

+       node_config {
+           disk_size_gb     = (known after apply)
+           disk_type        = (known after apply)
+           effective_taints = (known after apply)
+           image_type       = (known after apply)
+           labels           = (known after apply)
+           local_ssd_count  = (known after apply)
+           logging_variant  = (known after apply)
+           machine_type     = (known after apply)
+           metadata         = (known after apply)
+           min_cpu_platform = (known after apply)
+           oauth_scopes     = (known after apply)
+           preemptible      = false
+           service_account  = (known after apply)
+           spot             = false

+           confidential_nodes (known after apply)

+           gcfs_config (known after apply)

+           guest_accelerator (known after apply)

+           kubelet_config (known after apply)

+           shielded_instance_config (known after apply)

+           windows_node_config (known after apply)

+           workload_metadata_config {
+               mode = "GKE_METADATA"
            }
        }

+       node_pool (known after apply)

+       node_pool_auto_config (known after apply)

+       node_pool_defaults (known after apply)

+       notification_config (known after apply)

+       pod_autoscaling (known after apply)

+       release_channel (known after apply)

+       secret_manager_config {
+           enabled = true
        }

+       security_posture_config (known after apply)

+       service_external_ips_config (known after apply)

+       timeouts {
+           create = "10m"
+           delete = "10m"
        }

+       vertical_pod_autoscaling (known after apply)

+       workload_identity_config {
+           workload_pool = "cal-itp-data-infra.svc.id.goog"
        }
    }

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

Changes to Outputs:
+   google_container_cluster_sftp-endpoints_ca_certificate               = (sensitive value)
+   google_container_cluster_sftp-endpoints_endpoint                     = (known after apply)
+   google_container_cluster_sftp-endpoints_name                         = "sftp-endpoints"

📝 Plan generated in Terraform Plan #559

Copy link

Terraform plan in iac/cal-itp-data-infra/gcs/us

Error: Unsupported attribute
Error: Unsupported attribute

  on storage_bucket_iam_member.tf line 634, in resource "google_storage_bucket_iam_member" "enghouse-raw-sftp-service-account":
 634:   member = "serviceAccount:${data.terraform_remote_state.iam.outputs.google_service_account_sftp-pod-service-account_email}"
    ├────────────────
    │ data.terraform_remote_state.iam.outputs is object with 130 attributes

This object does not have an attribute named
"google_service_account_sftp-pod-service-account_email".

❌ Failed to generate plan in Terraform Plan #559

@ohrite ohrite changed the title DRAFT: Mov/4048 enghouse sftp server prod Enghouse Developers can upload payments data to a bucket via SFTP Oct 7, 2025
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.

1 participant