Skip to content

2025-04-21 | MAIN --> PROD | DEV (8b4c827) --> STAGING#4943

Merged
asteel-gsa merged 1 commit into
prodfrom
main
Apr 21, 2025
Merged

2025-04-21 | MAIN --> PROD | DEV (8b4c827) --> STAGING#4943
asteel-gsa merged 1 commit into
prodfrom
main

Conversation

@asteel-gsa
Copy link
Copy Markdown
Contributor

This is an auto-generated pull request to merge main into prod for a staging release on 2025-04-21 with the last commit being merged as 8b4c827

* Provider Upgrade to 1.4.0

* Upgrade env providers

* Upgrade component providers

* Upgrade locks

* Initial Sandbox Overhaul

* Application Overhaul

* File Scanner Overhaul

* Archive the sandbox proxy

* Logshipper Overhaul

* Remove routes.tf

This no longer seems to be necessary, at least in sandbox. Due to the way
we are handling routing now, this is not used.

* 1.4.0 Provider Upgrade

* Cleanup Comments

* Cleanup Space Var

* Move network policies into their own file

* Remove policies from main files

* Archive the proxy

* Live Environment Overhaul

* Terraform fmt

* Meta overhaul

* 2.3.0 Initial Upgrade

* terraform fmt

* Domain module update

* Small Cleanup

* Fix module output

* Fix module output name

* Add depends_on for the logdrain service

* Update new relic version

* Add allowedports for the proxy

* restart the proxy post deploy

This seems to help things

* Small fix
@asteel-gsa asteel-gsa requested a review from a team as a code owner April 21, 2025 22:25
@asteel-gsa asteel-gsa added autogenerated Automated pull request creation automerge Used for automated deployments labels Apr 21, 2025
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 21, 2025

Terraform plan for staging

Plan: 3 to add, 10 to change, 3 to destroy.
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
!~  update in-place
-/+ destroy and then create replacement
 <= read (data resources)

Terraform will perform the following actions:

  # module.staging.cloudfoundry_network_policy.app-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "app-network-policy" {
        id = "ce880589-cfed-0c08-7225-d78834d31d26"

-       policy {
-           destination_app = "50343cba-d67f-4a5a-90a8-f6b2e978b8d6" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "38f7f948-e7b4-4e8f-8ff4-7c89213ad857" -> null
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = "38f7f948-e7b4-4e8f-8ff4-7c89213ad857"
        }

#        (2 unchanged blocks hidden)
    }

  # module.staging.cloudfoundry_network_policy.clamav-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "clamav-network-policy" {
        id = "b03ca21f-c8ff-335b-7ef7-89dd796c8e14"

-       policy {
-           destination_app = "50343cba-d67f-4a5a-90a8-f6b2e978b8d6" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "23cd75fe-c912-44e7-8999-4686eae30d72" -> null
        }
-       policy {
-           destination_app = "50343cba-d67f-4a5a-90a8-f6b2e978b8d6" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "74ef79bb-2502-40ea-9138-385669a4397b" -> null
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = "23cd75fe-c912-44e7-8999-4686eae30d72"
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = "74ef79bb-2502-40ea-9138-385669a4397b"
        }
    }

  # module.staging.cloudfoundry_network_policy.logshipper-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "logshipper-network-policy" {
        id = "d79429a7-84f6-2576-fce2-e9479e71e48c"

-       policy {
-           destination_app = "50343cba-d67f-4a5a-90a8-f6b2e978b8d6" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "69025dbf-8d9c-4b1d-ab09-06ba137d1be1" -> null
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = (known after apply)
        }
    }

  # module.staging.cloudfoundry_network_policy.scanner-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "scanner-network-policy" {
        id = "8be715dc-7035-f013-29a4-8233469c292a"

-       policy {
-           destination_app = "23cd75fe-c912-44e7-8999-4686eae30d72" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "c07fdedc-2e37-4572-80ba-fc04d5a087ed" -> null
        }
-       policy {
-           destination_app = "50343cba-d67f-4a5a-90a8-f6b2e978b8d6" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "c07fdedc-2e37-4572-80ba-fc04d5a087ed" -> null
        }
+       policy {
+           destination_app = "23cd75fe-c912-44e7-8999-4686eae30d72"
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = (known after apply)
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = (known after apply)
        }
    }

  # module.staging.module.cg-logshipper.cloudfoundry_app.logshipper_app will be updated in-place
!~  resource "cloudfoundry_app" "logshipper_app" {
!~      created_at                  = "2025-04-21T19:51:00Z" -> (known after apply)
!~      id                          = "************************************" -> (known after apply)
!~      log_rate_limit_per_second   = "-1" -> (known after apply)
        name                        = "logshipper"
!~      readiness_health_check_type = "process" -> (known after apply)
!~      routes                      = [
-           {
-               protocol = "http1" -> null
-               route    = "fac-staging-logshipper.app.cloud.gov" -> null
            },
        ] -> (known after apply)
!~      source_code_hash            = "82b306b126425094badf7873be022c6168cfafca9ea6d7a14c8ce0bea56b0849" -> "e4e9e942a857c76a4792c6b18bcbee83cbcabc2c89084fc3a0a1cb94fb4d15e2"
!~      stack                       = "cflinuxfs4" -> (known after apply)
!~      updated_at                  = "2025-04-21T20:21:40Z" -> (known after apply)
#        (12 unchanged attributes hidden)
    }

  # module.staging.module.cg-logshipper.cloudfoundry_route.logshipper_route will be updated in-place
!~  resource "cloudfoundry_route" "logshipper_route" {
!~      destinations = [
-           {
-               app_id           = "69025dbf-8d9c-4b1d-ab09-06ba137d1be1" -> null
-               app_process_type = "web" -> null
-               id               = "1793196f-4770-4065-9a8d-47af5789cd91" -> null
-               port             = 8080 -> null
-               protocol         = "http1" -> null
            },
+           {
+               app_id           = (known after apply)
+               app_process_type = (known after apply)
+               id               = (known after apply)
+               port             = (known after apply)
+               protocol         = (known after apply)
            },
        ]
        id           = "ea6986d2-46cd-4850-aff0-0e3c72d24e39"
!~      updated_at   = "2025-04-21T19:51:53Z" -> (known after apply)
#        (6 unchanged attributes hidden)
    }

  # module.staging.module.cors.null_resource.cors_header must be replaced
-/+ resource "null_resource" "cors_header" {
!~      id       = "*******************" -> (known after apply)
!~      triggers = { # forces replacement
!~          "always_run" = "2025-04-21T20:20:04Z" -> (known after apply)
        }
    }

  # module.staging.module.fac-file-scanner.data.cloudfoundry_domain.internal will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_domain" "internal" {
+       annotations         = (known after apply)
+       created_at          = (known after apply)
+       id                  = (known after apply)
+       internal            = (known after apply)
+       labels              = (known after apply)
+       name                = "apps.internal"
+       org                 = (known after apply)
+       router_group        = (known after apply)
+       shared_orgs         = (known after apply)
+       supported_protocols = (known after apply)
+       updated_at          = (known after apply)
    }

  # module.staging.module.fac-file-scanner.data.external.scannerzip will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "external" "scannerzip" {
+       id          = (known after apply)
+       program     = [
+           "/bin/sh",
+           "prepare-scanner.sh",
        ]
+       query       = {
+           "gitref" = "refs/heads/main"
        }
+       result      = (known after apply)
+       working_dir = "../shared/modules/scanner"
    }

  # module.staging.module.fac-file-scanner.cloudfoundry_app.scanner_app will be updated in-place
!~  resource "cloudfoundry_app" "scanner_app" {
!~      created_at                  = "2025-04-21T19:51:55Z" -> (known after apply)
!~      id                          = "************************************" -> (known after apply)
!~      log_rate_limit_per_second   = "-1" -> (known after apply)
        name                        = "fac-file-scanner"
!~      path                        = "../shared/modules/scanner/scanner.zip" -> (known after apply)
!~      readiness_health_check_type = "process" -> (known after apply)
!~      routes                      = [
-           {
-               protocol = "http1" -> null
-               route    = "fac-file-scanner-staging.apps.internal" -> null
            },
        ] -> (known after apply)
!~      source_code_hash            = "7a3b52c9a6b09e17b1faa6baa3096c3ab60df1c232489770fbe492d860be7e2f" -> (known after apply)
!~      stack                       = "cflinuxfs4" -> (known after apply)
!~      updated_at                  = "2025-04-21T20:22:50Z" -> (known after apply)
#        (11 unchanged attributes hidden)
    }

  # module.staging.module.fac-file-scanner.cloudfoundry_route.scanner_route must be replaced
-/+ resource "cloudfoundry_route" "scanner_route" {
!~      created_at   = "2025-04-21T20:22:51Z" -> (known after apply)
!~      destinations = [
-           {
-               app_id           = "c07fdedc-2e37-4572-80ba-fc04d5a087ed" -> null
-               app_process_type = "web" -> null
-               id               = "8deef18a-5cb4-4dd3-a2ea-984b469e3cf3" -> null
-               port             = 8080 -> null
-               protocol         = "http1" -> null
            },
+           {
+               app_id           = (known after apply)
+               app_process_type = (known after apply)
+               id               = (known after apply)
+               port             = (known after apply)
+               protocol         = (known after apply)
            },
        ]
!~      domain       = "26df58ef-0c0d-4997-b68b-8defb7b3998b" -> (known after apply) # forces replacement
!~      id           = "************************************" -> (known after apply)
!~      protocol     = "http" -> (known after apply)
!~      updated_at   = "2025-04-21T20:22:51Z" -> (known after apply)
!~      url          = "fac-file-scanner-staging.apps.internal" -> (known after apply)
#        (2 unchanged attributes hidden)
    }

  # module.staging.module.https-proxy.cloudfoundry_app.egress_app will be updated in-place
!~  resource "cloudfoundry_app" "egress_app" {
!~      created_at                  = "2025-04-21T19:50:48Z" -> (known after apply)
!~      disk_quota                  = "2048M" -> (known after apply)
!~      health_check_type           = "port" -> (known after apply)
!~      id                          = "************************************" -> (known after apply)
!~      log_rate_limit_per_second   = "-1" -> (known after apply)
        name                        = "https-proxy"
!~      path                        = ".terraform/modules/staging.https-proxy/egress_proxy/proxy.zip" -> "/tmp/terraform-data-dir/modules/staging.https-proxy/egress_proxy/proxy.zip"
!~      readiness_health_check_type = "process" -> (known after apply)
!~      routes                      = [
-           {
-               protocol = "http1" -> null
-               route    = "gsa-tts-oros-fac-staging-egress-https-proxy.apps.internal" -> null
            },
        ] -> (known after apply)
!~      source_code_hash            = "be167a50f5b2c762443595195786bd2fc4d024f43eb58c58d144b7d5cbf544f5" -> "175a3a43404fb2a33deaf8fba9e461a196ec830fb1991f4dffac53a6504ffcc8"
!~      stack                       = "cflinuxfs4" -> (known after apply)
!~      updated_at                  = "2025-04-21T20:23:43Z" -> (known after apply)
#        (8 unchanged attributes hidden)
    }

  # module.staging.module.https-proxy.cloudfoundry_route.egress_route will be updated in-place
!~  resource "cloudfoundry_route" "egress_route" {
!~      destinations = [
-           {
-               app_id           = "50343cba-d67f-4a5a-90a8-f6b2e978b8d6" -> null
-               app_process_type = "web" -> null
-               id               = "f0bc28bf-37ff-4a8a-8a53-9a86743ea50d" -> null
-               port             = 8080 -> null
-               protocol         = "http1" -> null
            },
+           {
+               app_id           = (known after apply)
+               app_process_type = (known after apply)
+               id               = (known after apply)
+               port             = (known after apply)
+               protocol         = (known after apply)
            },
        ]
        id           = "d2e8c906-3614-474f-869d-3f0e0a12cbbe"
!~      updated_at   = "2025-04-21T19:51:00Z" -> (known after apply)
#        (6 unchanged attributes hidden)
    }

  # module.staging.module.fac-file-scanner.module.quarantine.data.cloudfoundry_service_plans.s3 will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_service_plans" "s3" {
+       name                  = "basic"
+       service_offering_name = "s3"
+       service_plans         = (known after apply)
    }

  # module.staging.module.fac-file-scanner.module.quarantine.cloudfoundry_service_instance.bucket will be updated in-place
!~  resource "cloudfoundry_service_instance" "bucket" {
+       dashboard_url     = (known after apply)
        id                = "b4cf43f9-7ada-4c21-9d16-b340672e50ae"
!~      last_operation    = {
!~          created_at  = "2025-03-14T14:54:11Z" -> (known after apply)
+           description = (known after apply)
!~          state       = "succeeded" -> (known after apply)
!~          type        = "update" -> (known after apply)
!~          updated_at  = "2025-03-14T14:54:11Z" -> (known after apply)
        } -> (known after apply)
!~      maintenance_info  = {
+           description = (known after apply)
+           version     = (known after apply)
        } -> (known after apply)
        name              = "fac-file-scanner-quarantine"
!~      service_plan      = "021bb2a3-7e11-4fc2-b06b-d9f5938cd806" -> (known after apply)
        tags              = [
            "s3",
            "terraform-cloudgov-managed",
        ]
!~      updated_at        = "2025-03-14T14:54:11Z" -> (known after apply)
!~      upgrade_available = false -> (known after apply)
#        (3 unchanged attributes hidden)
    }

  # module.staging.module.file_scanner_clamav.module.route.data.cloudfoundry_domain.domain will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_domain" "domain" {
+       annotations         = (known after apply)
+       created_at          = (known after apply)
+       id                  = (known after apply)
+       internal            = (known after apply)
+       labels              = (known after apply)
+       name                = "apps.internal"
+       org                 = (known after apply)
+       router_group        = (known after apply)
+       shared_orgs         = (known after apply)
+       supported_protocols = (known after apply)
+       updated_at          = (known after apply)
    }

  # module.staging.module.file_scanner_clamav.module.route.data.cloudfoundry_org.org will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_org" "org" {
+       annotations = (known after apply)
+       created_at  = (known after apply)
+       id          = (known after apply)
+       labels      = (known after apply)
+       name        = "gsa-tts-oros-fac"
+       quota       = (known after apply)
+       suspended   = (known after apply)
+       updated_at  = (known after apply)
    }

  # module.staging.module.file_scanner_clamav.module.route.data.cloudfoundry_space.space will be read during apply
  # (config refers to values not yet known)
 <= data "cloudfoundry_space" "space" {
+       allow_ssh         = (known after apply)
+       annotations       = (known after apply)
+       created_at        = (known after apply)
+       id                = (known after apply)
+       isolation_segment = (known after apply)
+       labels            = (known after apply)
+       name              = "staging"
+       org               = (known after apply)
+       quota             = (known after apply)
+       updated_at        = (known after apply)
    }

  # module.staging.module.file_scanner_clamav.module.route.cloudfoundry_route.app_route must be replaced
-/+ resource "cloudfoundry_route" "app_route" {
!~      created_at   = "2025-04-21T20:22:52Z" -> (known after apply)
!~      destinations = [
-           {
-               app_id           = "23cd75fe-c912-44e7-8999-4686eae30d72" -> null
-               app_process_type = "web" -> null
-               id               = "53b347e8-b92e-4ec7-9ed8-cfd1f172b293" -> null
-               port             = 8080 -> null
-               protocol         = "http1" -> null
            },
+           {
+               app_id           = "************************************"
+               app_process_type = (known after apply)
+               id               = (known after apply)
+               port             = (known after apply)
+               protocol         = (known after apply)
            },
        ]
!~      domain       = "26df58ef-0c0d-4997-b68b-8defb7b3998b" -> (known after apply) # forces replacement
!~      id           = "************************************" -> (known after apply)
!~      protocol     = "http" -> (known after apply)
!~      space        = "7bbe587a-e8ee-4e8c-b32f-86d0b0f1b807" -> (known after apply) # forces replacement
!~      updated_at   = "2025-04-21T20:22:52Z" -> (known after apply)
!~      url          = "fac-av-staging-fs.apps.internal" -> (known after apply)
#        (1 unchanged attribute hidden)
    }

Plan: 3 to add, 10 to change, 3 to destroy.

✅ Plan applied in Deploy to Staging Environment #356

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 21, 2025

Terraform plan for production

Plan: 3 to add, 10 to change, 3 to destroy.
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
!~  update in-place
-/+ destroy and then create replacement
 <= read (data resources)

Terraform will perform the following actions:

  # module.production.cloudfoundry_network_policy.app-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "app-network-policy" {
        id = "41e96938-1383-c2ce-3157-af85063feaa3"

-       policy {
-           destination_app = "608e1961-37b3-4401-ba35-c7d3be359232" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "5dac166f-2fb0-4e72-8d4d-4359191bf284" -> null
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = "5dac166f-2fb0-4e72-8d4d-4359191bf284"
        }

#        (2 unchanged blocks hidden)
    }

  # module.production.cloudfoundry_network_policy.clamav-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "clamav-network-policy" {
        id = "bffa4f44-73e2-295d-6c7e-2809a21406d6"

-       policy {
-           destination_app = "608e1961-37b3-4401-ba35-c7d3be359232" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "99ba1218-5b6e-42fc-9484-00eebde48eda" -> null
        }
-       policy {
-           destination_app = "608e1961-37b3-4401-ba35-c7d3be359232" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "ae5cd101-195d-4ca1-8a26-58b6a08a1fdb" -> null
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = "99ba1218-5b6e-42fc-9484-00eebde48eda"
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = "ae5cd101-195d-4ca1-8a26-58b6a08a1fdb"
        }
    }

  # module.production.cloudfoundry_network_policy.logshipper-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "logshipper-network-policy" {
        id = "63155665-aac2-9f9d-6c0f-c98cdcec4047"

-       policy {
-           destination_app = "608e1961-37b3-4401-ba35-c7d3be359232" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "85f6e332-8ef0-4fa1-bcc4-ba5803231358" -> null
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = (known after apply)
        }
    }

  # module.production.cloudfoundry_network_policy.scanner-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "scanner-network-policy" {
        id = "65fbd285-0a4b-cfbe-3445-d40cc279c621"

-       policy {
-           destination_app = "608e1961-37b3-4401-ba35-c7d3be359232" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "c7d5a4a2-5eca-46e5-81f0-315381c5b873" -> null
        }
-       policy {
-           destination_app = "99ba1218-5b6e-42fc-9484-00eebde48eda" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "c7d5a4a2-5eca-46e5-81f0-315381c5b873" -> null
        }
+       policy {
+           destination_app = "99ba1218-5b6e-42fc-9484-00eebde48eda"
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = (known after apply)
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = (known after apply)
        }
    }

  # module.production.module.cg-logshipper.cloudfoundry_app.logshipper_app will be updated in-place
!~  resource "cloudfoundry_app" "logshipper_app" {
!~      created_at                  = "2025-04-21T20:52:46Z" -> (known after apply)
!~      id                          = "************************************" -> (known after apply)
!~      log_rate_limit_per_second   = "-1" -> (known after apply)
        name                        = "logshipper"
!~      readiness_health_check_type = "process" -> (known after apply)
!~      routes                      = [
-           {
-               protocol = "http1" -> null
-               route    = "fac-production-logshipper.app.cloud.gov" -> null
            },
        ] -> (known after apply)
!~      source_code_hash            = "93ba903e051252644ff9eaa9ea0bfa3c9776bd91331dc49cf4907f6977eb831e" -> "e4e9e942a857c76a4792c6b18bcbee83cbcabc2c89084fc3a0a1cb94fb4d15e2"
!~      stack                       = "cflinuxfs4" -> (known after apply)
!~      updated_at                  = "2025-04-21T20:53:38Z" -> (known after apply)
#        (12 unchanged attributes hidden)
    }

  # module.production.module.cg-logshipper.cloudfoundry_route.logshipper_route will be updated in-place
!~  resource "cloudfoundry_route" "logshipper_route" {
!~      destinations = [
-           {
-               app_id           = "85f6e332-8ef0-4fa1-bcc4-ba5803231358" -> null
-               app_process_type = "web" -> null
-               id               = "92e80372-ae8a-4f64-86e4-11727a2d766d" -> null
-               port             = 8080 -> null
-               protocol         = "http1" -> null
            },
+           {
+               app_id           = (known after apply)
+               app_process_type = (known after apply)
+               id               = (known after apply)
+               port             = (known after apply)
+               protocol         = (known after apply)
            },
        ]
        id           = "bac6e24a-a79d-48d6-b96e-05fee20c0539"
!~      updated_at   = "2025-04-21T20:53:39Z" -> (known after apply)
#        (6 unchanged attributes hidden)
    }

  # module.production.module.cors.null_resource.cors_header must be replaced
-/+ resource "null_resource" "cors_header" {
!~      id       = "*******************" -> (known after apply)
!~      triggers = { # forces replacement
!~          "always_run" = "2025-04-21T20:57:30Z" -> (known after apply)
        }
    }

  # module.production.module.fac-file-scanner.data.cloudfoundry_domain.internal will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_domain" "internal" {
+       annotations         = (known after apply)
+       created_at          = (known after apply)
+       id                  = (known after apply)
+       internal            = (known after apply)
+       labels              = (known after apply)
+       name                = "apps.internal"
+       org                 = (known after apply)
+       router_group        = (known after apply)
+       shared_orgs         = (known after apply)
+       supported_protocols = (known after apply)
+       updated_at          = (known after apply)
    }

  # module.production.module.fac-file-scanner.data.external.scannerzip will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "external" "scannerzip" {
+       id          = (known after apply)
+       program     = [
+           "/bin/sh",
+           "prepare-scanner.sh",
        ]
+       query       = {
+           "gitref" = "refs/heads/main"
        }
+       result      = (known after apply)
+       working_dir = "../shared/modules/scanner"
    }

  # module.production.module.fac-file-scanner.cloudfoundry_app.scanner_app will be updated in-place
!~  resource "cloudfoundry_app" "scanner_app" {
!~      created_at                  = "2025-04-21T20:53:41Z" -> (known after apply)
!~      id                          = "************************************" -> (known after apply)
!~      log_rate_limit_per_second   = "-1" -> (known after apply)
        name                        = "fac-file-scanner"
!~      path                        = "../shared/modules/scanner/scanner.zip" -> (known after apply)
!~      readiness_health_check_type = "process" -> (known after apply)
!~      routes                      = [
-           {
-               protocol = "http1" -> null
-               route    = "fac-file-scanner-production.apps.internal" -> null
            },
        ] -> (known after apply)
!~      source_code_hash            = "30fb22ce2ea853a4cf9e03d39e287ed94e041ba8f9ecc29faa0ee746e3188e32" -> (known after apply)
!~      stack                       = "cflinuxfs4" -> (known after apply)
!~      updated_at                  = "2025-04-21T20:54:36Z" -> (known after apply)
#        (11 unchanged attributes hidden)
    }

  # module.production.module.fac-file-scanner.cloudfoundry_route.scanner_route must be replaced
-/+ resource "cloudfoundry_route" "scanner_route" {
!~      created_at   = "2025-04-21T20:54:36Z" -> (known after apply)
!~      destinations = [
-           {
-               app_id           = "c7d5a4a2-5eca-46e5-81f0-315381c5b873" -> null
-               app_process_type = "web" -> null
-               id               = "d4f5054e-f20d-46c5-9269-3037019bcce1" -> null
-               port             = 8080 -> null
-               protocol         = "http1" -> null
            },
+           {
+               app_id           = (known after apply)
+               app_process_type = (known after apply)
+               id               = (known after apply)
+               port             = (known after apply)
+               protocol         = (known after apply)
            },
        ]
!~      domain       = "26df58ef-0c0d-4997-b68b-8defb7b3998b" -> (known after apply) # forces replacement
!~      id           = "************************************" -> (known after apply)
!~      protocol     = "http" -> (known after apply)
!~      updated_at   = "2025-04-21T20:54:36Z" -> (known after apply)
!~      url          = "fac-file-scanner-production.apps.internal" -> (known after apply)
#        (2 unchanged attributes hidden)
    }

  # module.production.module.https-proxy.cloudfoundry_app.egress_app will be updated in-place
!~  resource "cloudfoundry_app" "egress_app" {
!~      created_at                  = "2025-04-21T20:52:29Z" -> (known after apply)
!~      disk_quota                  = "2048M" -> (known after apply)
!~      health_check_type           = "port" -> (known after apply)
!~      id                          = "************************************" -> (known after apply)
!~      log_rate_limit_per_second   = "-1" -> (known after apply)
        name                        = "https-proxy"
!~      path                        = ".terraform/modules/production.https-proxy/egress_proxy/proxy.zip" -> "/tmp/terraform-data-dir/modules/production.https-proxy/egress_proxy/proxy.zip"
!~      readiness_health_check_type = "process" -> (known after apply)
!~      routes                      = [
-           {
-               protocol = "http1" -> null
-               route    = "gsa-tts-oros-fac-production-egress-https-proxy.apps.internal" -> null
            },
        ] -> (known after apply)
!~      source_code_hash            = "f9d4ba14c759e11a7da240c63888eba36a4e58318999d11f604525c6b4be408a" -> "175a3a43404fb2a33deaf8fba9e461a196ec830fb1991f4dffac53a6504ffcc8"
!~      stack                       = "cflinuxfs4" -> (known after apply)
!~      updated_at                  = "2025-04-21T20:58:48Z" -> (known after apply)
#        (8 unchanged attributes hidden)
    }

  # module.production.module.https-proxy.cloudfoundry_route.egress_route will be updated in-place
!~  resource "cloudfoundry_route" "egress_route" {
!~      destinations = [
-           {
-               app_id           = "608e1961-37b3-4401-ba35-c7d3be359232" -> null
-               app_process_type = "web" -> null
-               id               = "301409a5-a526-4295-a5bc-434d89b7b4c2" -> null
-               port             = 8080 -> null
-               protocol         = "http1" -> null
            },
+           {
+               app_id           = (known after apply)
+               app_process_type = (known after apply)
+               id               = (known after apply)
+               port             = (known after apply)
+               protocol         = (known after apply)
            },
        ]
        id           = "456570fe-c30a-4ed5-a2ef-ab3f768e617a"
!~      updated_at   = "2025-04-21T20:52:46Z" -> (known after apply)
#        (6 unchanged attributes hidden)
    }

  # module.production.module.fac-file-scanner.module.quarantine.data.cloudfoundry_service_plans.s3 will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_service_plans" "s3" {
+       name                  = "basic"
+       service_offering_name = "s3"
+       service_plans         = (known after apply)
    }

  # module.production.module.fac-file-scanner.module.quarantine.cloudfoundry_service_instance.bucket will be updated in-place
!~  resource "cloudfoundry_service_instance" "bucket" {
+       dashboard_url     = (known after apply)
        id                = "ca564d14-b89a-4944-a43f-033dca62ab30"
!~      last_operation    = {
!~          created_at  = "2025-03-14T15:36:40Z" -> (known after apply)
+           description = (known after apply)
!~          state       = "succeeded" -> (known after apply)
!~          type        = "update" -> (known after apply)
!~          updated_at  = "2025-03-14T15:36:40Z" -> (known after apply)
        } -> (known after apply)
!~      maintenance_info  = {
+           description = (known after apply)
+           version     = (known after apply)
        } -> (known after apply)
        name              = "fac-file-scanner-quarantine"
!~      service_plan      = "021bb2a3-7e11-4fc2-b06b-d9f5938cd806" -> (known after apply)
        tags              = [
            "s3",
            "terraform-cloudgov-managed",
        ]
!~      updated_at        = "2025-03-14T15:36:40Z" -> (known after apply)
!~      upgrade_available = false -> (known after apply)
#        (3 unchanged attributes hidden)
    }

  # module.production.module.file_scanner_clamav.module.route.data.cloudfoundry_domain.domain will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_domain" "domain" {
+       annotations         = (known after apply)
+       created_at          = (known after apply)
+       id                  = (known after apply)
+       internal            = (known after apply)
+       labels              = (known after apply)
+       name                = "apps.internal"
+       org                 = (known after apply)
+       router_group        = (known after apply)
+       shared_orgs         = (known after apply)
+       supported_protocols = (known after apply)
+       updated_at          = (known after apply)
    }

  # module.production.module.file_scanner_clamav.module.route.data.cloudfoundry_org.org will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_org" "org" {
+       annotations = (known after apply)
+       created_at  = (known after apply)
+       id          = (known after apply)
+       labels      = (known after apply)
+       name        = "gsa-tts-oros-fac"
+       quota       = (known after apply)
+       suspended   = (known after apply)
+       updated_at  = (known after apply)
    }

  # module.production.module.file_scanner_clamav.module.route.data.cloudfoundry_space.space will be read during apply
  # (config refers to values not yet known)
 <= data "cloudfoundry_space" "space" {
+       allow_ssh         = (known after apply)
+       annotations       = (known after apply)
+       created_at        = (known after apply)
+       id                = (known after apply)
+       isolation_segment = (known after apply)
+       labels            = (known after apply)
+       name              = "production"
+       org               = (known after apply)
+       quota             = (known after apply)
+       updated_at        = (known after apply)
    }

  # module.production.module.file_scanner_clamav.module.route.cloudfoundry_route.app_route must be replaced
-/+ resource "cloudfoundry_route" "app_route" {
!~      created_at   = "2025-04-21T20:55:12Z" -> (known after apply)
!~      destinations = [
-           {
-               app_id           = "99ba1218-5b6e-42fc-9484-00eebde48eda" -> null
-               app_process_type = "web" -> null
-               id               = "c11a74f0-2c55-49de-a77c-6f612ec50565" -> null
-               port             = 8080 -> null
-               protocol         = "http1" -> null
            },
+           {
+               app_id           = "************************************"
+               app_process_type = (known after apply)
+               id               = (known after apply)
+               port             = (known after apply)
+               protocol         = (known after apply)
            },
        ]
!~      domain       = "26df58ef-0c0d-4997-b68b-8defb7b3998b" -> (known after apply) # forces replacement
!~      id           = "************************************" -> (known after apply)
!~      protocol     = "http" -> (known after apply)
!~      space        = "5593dba8-7023-49a5-bdbe-e809fe23edf9" -> (known after apply) # forces replacement
!~      updated_at   = "2025-04-21T20:55:12Z" -> (known after apply)
!~      url          = "fac-av-production-fs.apps.internal" -> (known after apply)
#        (1 unchanged attribute hidden)
    }

Plan: 3 to add, 10 to change, 3 to destroy.

✅ Plan applied in Deploy to Production Environment #132

@github-actions
Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Branch Rate Health
. 100% 100%
api 98% 86%
api.serializers 97% 88%
api.views 91% 100%
audit 95% 80%
audit.cross_validation 97% 85%
audit.fixtures 84% 50%
audit.intakelib 89% 83%
audit.intakelib.checks 92% 85%
audit.intakelib.common 98% 82%
audit.intakelib.transforms 100% 95%
audit.management.commands 78% 17%
audit.migrations 100% 100%
audit.models 91% 59%
audit.templatetags 100% 100%
audit.views 74% 55%
census_historical_migration 96% 65%
census_historical_migration.migrations 100% 100%
census_historical_migration.sac_general_lib 92% 84%
census_historical_migration.transforms 95% 90%
census_historical_migration.workbooklib 68% 69%
config 80% 37%
curation 100% 100%
curation.curationlib 93% 100%
curation.migrations 100% 100%
dissemination 91% 69%
dissemination.migrations 97% 25%
dissemination.report_generation 29% 0%
dissemination.report_generation.excel 32% 0%
dissemination.searchlib 59% 41%
dissemination.templatetags 100% 100%
dissemination.views 76% 55%
djangooidc 53% 38%
djangooidc.tests 100% 94%
report_submission 100% 95%
report_submission.migrations 100% 100%
report_submission.templatetags 74% 100%
report_submission.views 77% 63%
support 93% 74%
support.migrations 100% 100%
support.models 90% 50%
tools 98% 50%
users 95% 86%
users.fixtures 100% 83%
users.management 100% 100%
users.management.commands 100% 100%
users.migrations 100% 100%
Summary 89% (20092 / 22536) 71% (2440 / 3460)

Minimum allowed line rate is 85%

@asteel-gsa asteel-gsa merged commit 1bd2f23 into prod Apr 21, 2025
40 of 44 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autogenerated Automated pull request creation automerge Used for automated deployments

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant