Skip to content

Terraform provider overhaul#4941

Merged
asteel-gsa merged 30 commits into
mainfrom
terraform-provider-overhaul
Apr 21, 2025
Merged

Terraform provider overhaul#4941
asteel-gsa merged 30 commits into
mainfrom
terraform-provider-overhaul

Conversation

@asteel-gsa
Copy link
Copy Markdown
Contributor

@asteel-gsa asteel-gsa commented Apr 21, 2025

This was done on 20250421, all environments have been upgraded, and this pr will be deployed to sync the code bases on a pairing session with Matt.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 21, 2025

Terraform plan for meta

No changes. Your infrastructure matches the configuration.
No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration
and found no differences, so no changes are needed.

✅ Plan applied in Deploy to Development and Management Environment #994

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 21, 2025

Terraform plan for dev

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.dev.cloudfoundry_network_policy.app-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "app-network-policy" {
        id = "99884884-59ae-8864-786d-a5e33d1b1455"

-       policy {
-           destination_app = "caa8e542-9d7e-438d-a17c-3af19b05eaa6" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "d7fcdc7a-fd97-4e31-89ae-b823883b5992" -> null
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = "d7fcdc7a-fd97-4e31-89ae-b823883b5992"
        }

#        (2 unchanged blocks hidden)
    }

  # module.dev.cloudfoundry_network_policy.clamav-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "clamav-network-policy" {
        id = "30fc72e9-9a5e-c40d-140c-98bc1b576989"

-       policy {
-           destination_app = "caa8e542-9d7e-438d-a17c-3af19b05eaa6" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "6eab89ac-271f-4193-893f-cfa1f590f3d9" -> null
        }
-       policy {
-           destination_app = "caa8e542-9d7e-438d-a17c-3af19b05eaa6" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "ea09b23c-eebc-4383-9f4d-29152236ad87" -> null
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = "6eab89ac-271f-4193-893f-cfa1f590f3d9"
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = "ea09b23c-eebc-4383-9f4d-29152236ad87"
        }
    }

  # module.dev.cloudfoundry_network_policy.logshipper-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "logshipper-network-policy" {
        id = "f188b467-82e6-e5d6-bae1-138086a288c5"

-       policy {
-           destination_app = "caa8e542-9d7e-438d-a17c-3af19b05eaa6" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "92483ac7-d368-43b0-b429-0170e3e2b2c2" -> null
        }
+       policy {
+           destination_app = (known after apply)
+           port            = "61443"
+           protocol        = "tcp"
+           source_app      = (known after apply)
        }
    }

  # module.dev.cloudfoundry_network_policy.scanner-network-policy will be updated in-place
!~  resource "cloudfoundry_network_policy" "scanner-network-policy" {
        id = "1c06d5ba-733a-e0a1-8eb6-d577a1347e2b"

-       policy {
-           destination_app = "6eab89ac-271f-4193-893f-cfa1f590f3d9" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "a0669f56-c5a5-4c35-85bf-5b6201478ad5" -> null
        }
-       policy {
-           destination_app = "caa8e542-9d7e-438d-a17c-3af19b05eaa6" -> null
-           port            = "61443" -> null
-           protocol        = "tcp" -> null
-           source_app      = "a0669f56-c5a5-4c35-85bf-5b6201478ad5" -> null
        }
+       policy {
+           destination_app = "6eab89ac-271f-4193-893f-cfa1f590f3d9"
+           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.dev.module.cg-logshipper.cloudfoundry_app.logshipper_app will be updated in-place
!~  resource "cloudfoundry_app" "logshipper_app" {
!~      created_at                  = "2025-04-21T18:47:16Z" -> (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-dev-logshipper.app.cloud.gov" -> null
            },
        ] -> (known after apply)
!~      source_code_hash            = "82b306b126425094badf7873be022c6168cfafca9ea6d7a14c8ce0bea56b0849" -> "e4e9e942a857c76a4792c6b18bcbee83cbcabc2c89084fc3a0a1cb94fb4d15e2"
!~      stack                       = "cflinuxfs4" -> (known after apply)
!~      updated_at                  = "2025-04-21T19:08:35Z" -> (known after apply)
#        (12 unchanged attributes hidden)
    }

  # module.dev.module.cg-logshipper.cloudfoundry_route.logshipper_route will be updated in-place
!~  resource "cloudfoundry_route" "logshipper_route" {
!~      destinations = [
-           {
-               app_id           = "92483ac7-d368-43b0-b429-0170e3e2b2c2" -> null
-               app_process_type = "web" -> null
-               id               = "cb430c0b-be04-428f-b94f-0af6d42d100b" -> 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           = "3aec8f3f-c16b-4528-bc10-021921a7c5c6"
!~      updated_at   = "2025-04-21T18:49:17Z" -> (known after apply)
#        (6 unchanged attributes hidden)
    }

  # module.dev.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-21T19:07:14Z" -> (known after apply)
        }
    }

  # module.dev.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.dev.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.dev.module.fac-file-scanner.cloudfoundry_app.scanner_app will be updated in-place
!~  resource "cloudfoundry_app" "scanner_app" {
!~      created_at                  = "2025-04-21T18:53:54Z" -> (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-dev.apps.internal" -> null
            },
        ] -> (known after apply)
!~      source_code_hash            = "7a3b52c9a6b09e17b1faa6baa3096c3ab60df1c232489770fbe492d860be7e2f" -> (known after apply)
!~      stack                       = "cflinuxfs4" -> (known after apply)
!~      updated_at                  = "2025-04-21T19:09:41Z" -> (known after apply)
#        (11 unchanged attributes hidden)
    }

  # module.dev.module.fac-file-scanner.cloudfoundry_route.scanner_route must be replaced
-/+ resource "cloudfoundry_route" "scanner_route" {
!~      created_at   = "2025-04-21T19:09:42Z" -> (known after apply)
!~      destinations = [
-           {
-               app_id           = "a0669f56-c5a5-4c35-85bf-5b6201478ad5" -> null
-               app_process_type = "web" -> null
-               id               = "ad6bcf9e-a3dc-4674-8eb5-9dd3a8ed96d5" -> 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-21T19:09:42Z" -> (known after apply)
!~      url          = "fac-file-scanner-dev.apps.internal" -> (known after apply)
#        (2 unchanged attributes hidden)
    }

  # module.dev.module.https-proxy.cloudfoundry_app.egress_app will be updated in-place
!~  resource "cloudfoundry_app" "egress_app" {
!~      created_at                  = "2025-04-21T18:44:40Z" -> (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/dev.https-proxy/egress_proxy/proxy.zip" -> "/tmp/terraform-data-dir/modules/dev.https-proxy/egress_proxy/proxy.zip"
!~      readiness_health_check_type = "process" -> (known after apply)
!~      routes                      = [
-           {
-               protocol = "http1" -> null
-               route    = "gsa-tts-oros-fac-dev-egress-https-proxy.apps.internal" -> null
            },
        ] -> (known after apply)
!~      source_code_hash            = "be167a50f5b2c762443595195786bd2fc4d024f43eb58c58d144b7d5cbf544f5" -> "175a3a43404fb2a33deaf8fba9e461a196ec830fb1991f4dffac53a6504ffcc8"
!~      stack                       = "cflinuxfs4" -> (known after apply)
!~      updated_at                  = "2025-04-21T19:07:46Z" -> (known after apply)
#        (8 unchanged attributes hidden)
    }

  # module.dev.module.https-proxy.cloudfoundry_route.egress_route will be updated in-place
!~  resource "cloudfoundry_route" "egress_route" {
!~      destinations = [
-           {
-               app_id           = "caa8e542-9d7e-438d-a17c-3af19b05eaa6" -> null
-               app_process_type = "web" -> null
-               id               = "2bf104be-d294-4864-a5e1-49d08e420a04" -> 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           = "13dc80b5-4d3b-4181-b7c1-b6dc8d5a0e65"
!~      updated_at   = "2025-04-21T18:44:56Z" -> (known after apply)
#        (6 unchanged attributes hidden)
    }

  # module.dev.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.dev.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                = "c435cb9c-32a7-4a31-828b-48c8c6f3bf37"
!~      last_operation    = {
!~          created_at  = "2025-03-14T14:22:42Z" -> (known after apply)
+           description = (known after apply)
!~          state       = "succeeded" -> (known after apply)
!~          type        = "update" -> (known after apply)
!~          updated_at  = "2025-03-14T14:22:42Z" -> (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:22:42Z" -> (known after apply)
!~      upgrade_available = false -> (known after apply)
#        (3 unchanged attributes hidden)
    }

  # module.dev.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.dev.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.dev.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              = "dev"
+       org               = (known after apply)
+       quota             = (known after apply)
+       updated_at        = (known after apply)
    }

  # module.dev.module.file_scanner_clamav.module.route.cloudfoundry_route.app_route must be replaced
-/+ resource "cloudfoundry_route" "app_route" {
!~      created_at   = "2025-04-21T19:09:43Z" -> (known after apply)
!~      destinations = [
-           {
-               app_id           = "6eab89ac-271f-4193-893f-cfa1f590f3d9" -> null
-               app_process_type = "web" -> null
-               id               = "46579faf-6abe-46e9-bc4f-1dd565fcd8d8" -> 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        = "06525ba3-19c2-451b-96e9-ea4a9134e8b9" -> (known after apply) # forces replacement
!~      updated_at   = "2025-04-21T19:09:43Z" -> (known after apply)
!~      url          = "fac-av-dev-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 Development and Management Environment #994

@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%

Copy link
Copy Markdown
Contributor

@jadudm jadudm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed 20250417 with BM, MJ, AS. Merge takes place after, due to TF state updates that had to happen before/coincidental.

@asteel-gsa asteel-gsa added this pull request to the merge queue Apr 21, 2025
Merged via the queue into main with commit 8b4c827 Apr 21, 2025
16 of 17 checks passed
@asteel-gsa asteel-gsa deleted the terraform-provider-overhaul branch April 21, 2025 21:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants