Skip to content

2026-03-26 | MAIN --> PROD | DEV (23287a5) --> STAGING#5501

Merged
neilmb merged 2 commits into
prodfrom
main
Mar 26, 2026
Merged

2026-03-26 | MAIN --> PROD | DEV (23287a5) --> STAGING#5501
neilmb merged 2 commits into
prodfrom
main

Conversation

@neilmb
Copy link
Copy Markdown
Contributor

@neilmb neilmb commented Mar 26, 2026

This is an auto-generated pull request to merge main into prod for a staging release on 2026-03-26 with the last commit being merged as 23287a5

jperson1 and others added 2 commits March 25, 2026 19:01
* Remove metabase limiter - all envs, not just dev

* ...In the DB, too.

* Service binding no index!
@neilmb neilmb requested a review from a team as a code owner March 26, 2026 10:50
@neilmb neilmb added autogenerated Automated pull request creation automerge Used for automated deployments labels Mar 26, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Terraform plan for production

Plan: 4 to add, 0 to change, 1 to destroy.
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+   create
-/+ destroy and then create replacement
 <= read (data resources)

Terraform will perform the following actions:

  # 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" = "2026-03-25T17:57:33Z" -> (known after apply)
        }
    }

  # module.production.module.metabase-app.data.cloudfoundry_domain.public will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_domain" "public" {
+       annotations         = (known after apply)
+       created_at          = (known after apply)
+       id                  = (known after apply)
+       internal            = (known after apply)
+       labels              = (known after apply)
+       name                = "app.cloud.gov"
+       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.metabase-app.data.cloudfoundry_org.app_org will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_org" "app_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.metabase-app.data.cloudfoundry_space.app_space will be read during apply
  # (config refers to values not yet known)
 <= data "cloudfoundry_space" "app_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.metabase-app.data.docker_registry_image.metabase will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "docker_registry_image" "metabase" {
+       id            = (known after apply)
+       name          = "metabase/metabase:v0.59.2"
+       sha256_digest = (known after apply)
    }

  # module.production.module.metabase-app.cloudfoundry_app.metabase will be created
+   resource "cloudfoundry_app" "metabase" {
+       buildpacks                  = (known after apply)
+       command                     = <<-EOT
            MB_DB_CONNECTION_URI=$(echo "$VCAP_SERVICES" | grep -o '"uri":\s*"[^"]*' | sed 's/"uri":\s*//' | cut -d '"' -f2 | tail -1)
            export MB_DB_CONNECTION_URI
            
            ./app/run_metabase.sh
        EOT
+       created_at                  = (known after apply)
+       disk_quota                  = "3072M"
+       docker_image                = (known after apply)
+       enable_ssh                  = (known after apply)
+       environment                 = {
+           "ENV"                = "production"
+           "REQUESTS_CA_BUNDLE" = "/etc/ssl/certs/ca-certificates.crt"
+           "SSL_CERT_FILE"      = "/etc/ssl/certs/ca-certificates.crt"
        }
+       health_check_http_endpoint  = "/api/health"
+       health_check_type           = "http"
+       id                          = (known after apply)
+       instances                   = 1
+       log_rate_limit_per_second   = (known after apply)
+       memory                      = "2048M"
+       name                        = "metabase"
+       org_name                    = "gsa-tts-oros-fac"
+       readiness_health_check_type = (known after apply)
+       routes                      = (known after apply)
+       service_bindings            = [
+           {
+               params           = jsonencode({})
+               service_instance = "fac-db"
            },
+           {
+               params           = jsonencode({})
+               service_instance = "https-proxy-creds"
            },
+           {
+               params           = jsonencode({})
+               service_instance = "metabase-db"
            },
        ]
+       space_name                  = "production"
+       stack                       = (known after apply)
+       strategy                    = "rolling"
+       updated_at                  = (known after apply)
    }

  # module.production.module.metabase-app.cloudfoundry_route.app_route will be created
+   resource "cloudfoundry_route" "app_route" {
+       created_at   = (known after apply)
+       destinations = [
+           {
+               app_id           = (known after apply)
+               app_process_type = (known after apply)
+               id               = (known after apply)
+               port             = (known after apply)
+               protocol         = (known after apply)
            },
        ]
+       domain       = (known after apply)
+       host         = "metabase-production"
+       id           = (known after apply)
+       protocol     = (known after apply)
+       space        = (known after apply)
+       updated_at   = (known after apply)
+       url          = (known after apply)
    }

  # module.production.module.metabasedb.cloudfoundry_service_instance.rds[0] will be created
+   resource "cloudfoundry_service_instance" "rds" {
+       created_at        = (known after apply)
+       dashboard_url     = (known after apply)
+       id                = (known after apply)
+       last_operation    = (known after apply)
+       maintenance_info  = (known after apply)
+       name              = "metabase-db"
+       parameters        = (sensitive value)
+       service_plan      = "58b899e8-eb36-441f-b406-d2f5b1e49c00"
+       space             = "5593dba8-7023-49a5-bdbe-e809fe23edf9"
+       tags              = [
+           "rds",
+           "terraform-cloudgov-managed",
        ]
+       type              = "managed"
+       updated_at        = (known after apply)
+       upgrade_available = (known after apply)
    }

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

📝 Plan generated in Pull Request Checks #637

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 26, 2026

Terraform plan for staging

Plan: 4 to add, 0 to change, 1 to destroy.
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+   create
-/+ destroy and then create replacement
 <= read (data resources)

Terraform will perform the following actions:

  # 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" = "2026-03-24T10:59:09Z" -> (known after apply)
        }
    }

  # module.staging.module.metabase-app.data.cloudfoundry_domain.public will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_domain" "public" {
+       annotations         = (known after apply)
+       created_at          = (known after apply)
+       id                  = (known after apply)
+       internal            = (known after apply)
+       labels              = (known after apply)
+       name                = "app.cloud.gov"
+       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.metabase-app.data.cloudfoundry_org.app_org will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "cloudfoundry_org" "app_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.metabase-app.data.cloudfoundry_space.app_space will be read during apply
  # (config refers to values not yet known)
 <= data "cloudfoundry_space" "app_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.metabase-app.data.docker_registry_image.metabase will be read during apply
  # (depends on a resource or a module with changes pending)
 <= data "docker_registry_image" "metabase" {
+       id            = (known after apply)
+       name          = "metabase/metabase:v0.59.2"
+       sha256_digest = (known after apply)
    }

  # module.staging.module.metabase-app.cloudfoundry_app.metabase will be created
+   resource "cloudfoundry_app" "metabase" {
+       buildpacks                  = (known after apply)
+       command                     = <<-EOT
            MB_DB_CONNECTION_URI=$(echo "$VCAP_SERVICES" | grep -o '"uri":\s*"[^"]*' | sed 's/"uri":\s*//' | cut -d '"' -f2 | tail -1)
            export MB_DB_CONNECTION_URI
            
            ./app/run_metabase.sh
        EOT
+       created_at                  = (known after apply)
+       disk_quota                  = "3072M"
+       docker_image                = (known after apply)
+       enable_ssh                  = (known after apply)
+       environment                 = {
+           "ENV"                = "staging"
+           "REQUESTS_CA_BUNDLE" = "/etc/ssl/certs/ca-certificates.crt"
+           "SSL_CERT_FILE"      = "/etc/ssl/certs/ca-certificates.crt"
        }
+       health_check_http_endpoint  = "/api/health"
+       health_check_type           = "http"
+       id                          = (known after apply)
+       instances                   = 1
+       log_rate_limit_per_second   = (known after apply)
+       memory                      = "2048M"
+       name                        = "metabase"
+       org_name                    = "gsa-tts-oros-fac"
+       readiness_health_check_type = (known after apply)
+       routes                      = (known after apply)
+       service_bindings            = [
+           {
+               params           = jsonencode({})
+               service_instance = "fac-db"
            },
+           {
+               params           = jsonencode({})
+               service_instance = "https-proxy-creds"
            },
+           {
+               params           = jsonencode({})
+               service_instance = "metabase-db"
            },
        ]
+       space_name                  = "staging"
+       stack                       = (known after apply)
+       strategy                    = "rolling"
+       updated_at                  = (known after apply)
    }

  # module.staging.module.metabase-app.cloudfoundry_route.app_route will be created
+   resource "cloudfoundry_route" "app_route" {
+       created_at   = (known after apply)
+       destinations = [
+           {
+               app_id           = (known after apply)
+               app_process_type = (known after apply)
+               id               = (known after apply)
+               port             = (known after apply)
+               protocol         = (known after apply)
            },
        ]
+       domain       = (known after apply)
+       host         = "metabase-staging"
+       id           = (known after apply)
+       protocol     = (known after apply)
+       space        = (known after apply)
+       updated_at   = (known after apply)
+       url          = (known after apply)
    }

  # module.staging.module.metabasedb.cloudfoundry_service_instance.rds[0] will be created
+   resource "cloudfoundry_service_instance" "rds" {
+       created_at        = (known after apply)
+       dashboard_url     = (known after apply)
+       id                = (known after apply)
+       last_operation    = (known after apply)
+       maintenance_info  = (known after apply)
+       name              = "metabase-db"
+       parameters        = (sensitive value)
+       service_plan      = "815c6069-289a-4444-ba99-40f0fa03a8f5"
+       space             = "7bbe587a-e8ee-4e8c-b32f-86d0b0f1b807"
+       tags              = [
+           "rds",
+           "terraform-cloudgov-managed",
        ]
+       type              = "managed"
+       updated_at        = (known after apply)
+       upgrade_available = (known after apply)
    }

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

✅ Plan applied in Deploy to the Staging Environment #446

@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% 96%
audit 95% 81%
audit.cross_validation 97% 86%
audit.fixtures 84% 50%
audit.formlib 92% 62%
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% 68%
audit.templatetags 100% 100%
audit.test_viewlib 100% 100%
audit.views 75% 52%
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 78% 37%
curation 98% 100%
curation.curationlib 88% 72%
curation.migrations 100% 100%
dissemination 90% 69%
dissemination.analytics 27% 0%
dissemination.forms 80% 30%
dissemination.migrations 97% 25%
dissemination.models 100% 100%
dissemination.report_generation 21% 0%
dissemination.report_generation.excel 32% 0%
dissemination.searchlib 61% 43%
dissemination.templatetags 52% 6%
dissemination.views 67% 47%
djangooidc 53% 38%
djangooidc.tests 100% 94%
report_submission 100% 96%
report_submission.migrations 100% 100%
report_submission.templatetags 74% 100%
report_submission.views 78% 61%
support 94% 75%
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% (22059 / 24878) 69% (2701 / 3918)

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.

3 participants