From d75bfb29c172ada059b30620d48c38aa6eb321ca Mon Sep 17 00:00:00 2001 From: Phil Dominguez <142051477+phildominguez-gsa@users.noreply.github.com> Date: Wed, 10 Jan 2024 11:40:36 -0500 Subject: [PATCH 1/5] Census migration: Handling tribal consent (#3175) * Handling tribal consent * Hassan's feedback * Adding unit tests * Using user_provided_organization_type; lint * Fixing tests --- .../sac_general_lib/sac_creator.py | 13 +- .../test_sac_creation.py | 115 ++++++++++++++++++ 2 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 backend/census_historical_migration/test_sac_creation.py diff --git a/backend/census_historical_migration/sac_general_lib/sac_creator.py b/backend/census_historical_migration/sac_general_lib/sac_creator.py index 5ec639f3c7..a2e5e9b51c 100644 --- a/backend/census_historical_migration/sac_general_lib/sac_creator.py +++ b/backend/census_historical_migration/sac_general_lib/sac_creator.py @@ -19,7 +19,9 @@ from .report_id_generator import ( xform_dbkey_to_report_id, ) - +from ..transforms.xform_string_to_string import ( + string_to_string, +) logger = logging.getLogger(__name__) @@ -79,6 +81,15 @@ def setup_sac(user, audit_header): sac.auditee_certification = auditee_certification(audit_header) sac.auditor_certification = auditor_certification(audit_header) sac.data_source = settings.CENSUS_DATA_SOURCE + + if general_info["user_provided_organization_type"] == "tribal": + suppression_code = string_to_string(audit_header.SUPPRESSION_CODE).upper() + sac.tribal_data_consent = { + "tribal_authorization_certifying_official_title": settings.GSA_MIGRATION, + "is_tribal_information_authorized_to_be_public": suppression_code != "IT", + "tribal_authorization_certifying_official_name": settings.GSA_MIGRATION, + } + sac.save() logger.info("Created single audit checklist %s", sac) diff --git a/backend/census_historical_migration/test_sac_creation.py b/backend/census_historical_migration/test_sac_creation.py new file mode 100644 index 0000000000..ea9214b583 --- /dev/null +++ b/backend/census_historical_migration/test_sac_creation.py @@ -0,0 +1,115 @@ +from .sac_general_lib.sac_creator import setup_sac +from audit.models import User + +from model_bakery import baker +from unittest import TestCase +from django.conf import settings + + +class TestSacTribalConsent(TestCase): + class MockAuditHeader: + def __init__( + self, + entity_type, + suppression_code, + ): + self.AUDITEECONTACT = "Scrooge Jones" + self.AUDITEEEMAIL = "auditee.mcaudited@leftfield.com" + self.AUDITEENAME = "Designate Representative" + self.AUDITEEPHONE = "5558675309" + self.AUDITEETITLE = "Lord of Doors" + self.AUDITOR_EIN = "987654321" + self.AUDITTYPE = "S" + self.AUDITYEAR = "2022" + self.CITY = "New York" + self.CPACITY = "Podunk" + self.CPACONTACT = "Qualified Human Accountant" + self.CPACOUNTRY = "US" + self.CPAEMAIL = "qualified.human.accountant@dollarauditstore.com" + self.CPAFIRMNAME = "Dollar Audit Store" + self.CPAPHONE = "0008675309" + self.CPASTATE = "NY" + self.CPASTREET1 = "100 Percent Respectable St." + self.CPATITLE = "Just an ordinary person" + self.CPAZIPCODE = "14886" + self.DBKEY = "123456789" + self.DOLLARTHRESHOLD = "750000" + self.EIN = "134278617" + self.ENTITY_TYPE = entity_type + self.FYENDDATE = "01/01/2022 00:00:00" + self.GOINGCONCERN = "N" + self.LOWRISK = "N" + self.MATERIALNONCOMPLIANCE = "N" + self.MATERIALWEAKNESS = "N" + self.MATERIALWEAKNESS_MP = "N" + self.MULTIPLE_CPAS = "N" + self.MULTIPLEEINS = "N" + self.MULTIPLEUEIS = "N" + self.PERIODCOVERED = "A" + self.REPORTABLECONDITION = "N" + self.SP_FRAMEWORK = "cash" + self.SP_FRAMEWORK_REQUIRED = "Y" + self.STATE = "NY" + self.STREET1 = "200 feet into left field" + self.SUPPRESSION_CODE = suppression_code + self.TYPEREPORT_FS = "UQADS" + self.TYPEREPORT_SP_FRAMEWORK = "UQAD" + self.UEI = "ZQGGHJH74DW7" + self.ZIPCODE = "10451" + + def _mock_audit_header(self, entity_type, suppression_code=None): + """Returns a mock audit header with all necessary fields""" + return self.MockAuditHeader(entity_type, suppression_code) + + def _test_consent(self, consent, is_public): + """Tests the values found within sac.tribal_data_consent""" + self.assertEqual( + consent["tribal_authorization_certifying_official_title"], + settings.GSA_MIGRATION, + ) + self.assertEqual( + consent["is_tribal_information_authorized_to_be_public"], + is_public, + ) + self.assertEqual( + consent["tribal_authorization_certifying_official_name"], + settings.GSA_MIGRATION, + ) + + def test_non_tribal(self): + """Only 'tribal' entity types have tribal_data_consent populated""" + audit_header = self._mock_audit_header("non-profit") + user = baker.make(User) + sac = setup_sac(user, audit_header) + + self.assertIsNone(sac.tribal_data_consent) + + def test_tribal_public(self): + """Misc suppression codes makes them public""" + audit_header = self._mock_audit_header("tribal", "foo") + user = baker.make(User) + sac = setup_sac(user, audit_header) + consent = sac.tribal_data_consent + + self.assertIsNotNone(sac.tribal_data_consent) + self._test_consent(consent, True) + + def test_tribal_public_no_code(self): + """A missing suppression code makes them public""" + audit_header = self._mock_audit_header("tribal", "") + user = baker.make(User) + sac = setup_sac(user, audit_header) + consent = sac.tribal_data_consent + + self.assertIsNotNone(sac.tribal_data_consent) + self._test_consent(consent, True) + + def test_tribal_private(self): + """A tribal audit with suppression code 'it' will be private""" + audit_header = self._mock_audit_header("tribal", "it") + user = baker.make(User) + sac = setup_sac(user, audit_header) + consent = sac.tribal_data_consent + + self.assertIsNotNone(sac.tribal_data_consent) + self._test_consent(consent, False) From 68a998b43898b6a6a55256e44aa2f82e0116e0d5 Mon Sep 17 00:00:00 2001 From: Alex Steel <130377221+asteel-gsa@users.noreply.github.com> Date: Wed, 10 Jan 2024 14:08:36 -0500 Subject: [PATCH 2/5] Media Backups Patch (#2820) * Expand the proxy for media backups The following need to be added to our allow list to ensure that we can get aws-cli and aws-s3-tar-tool onto the instance * Remove the unset proxy * Go through the proxy for the s3 tar binary * Add notes for backups This is temporary and will be removed at some point * Fix Workflow * Update notes * Fix notational command to extract * Move to a more permenant location * Fix list contents * Change restart command for "rolling" restart * Remove if conditional on dev for media backups * Simplifying the backup script We discovered we can tar directly to another bucket. This allows us to tar the contents of the media bucket directly to the backups bucket with no intermediate files. * Snapshot and sync We now have two scripts. One syncs, and another to to a tar snapshot. The latter is the original tar script, tweaked for smallification. * Remove original backup workflow * Add media sync workflow * add tar snapshot workflow * Scheduled dev backups * scheduled prod backups * Renaming * update docs --------- Co-authored-by: Matt Jadud --- .github/workflows/database-backups.yml | 101 ------------------ .github/workflows/scheduled-dev-snapshot.yml | 15 +++ .github/workflows/scheduled-dev-sync.yml | 15 +++ .../scheduled-production-snapshot.yml | 15 +++ .../workflows/scheduled-production-sync.yml | 15 +++ .github/workflows/sync-s3-media.yml | 64 +++++++++++ .github/workflows/tar-s3-media.yml | 30 ++++++ backend/s3-sync.sh | 33 ++---- backend/s3-tar-snapshot.sh | 37 +++++++ docs/dbbackups.md | 46 +++++++- terraform/shared/modules/env/https-proxy.tf | 8 +- 11 files changed, 252 insertions(+), 127 deletions(-) delete mode 100644 .github/workflows/database-backups.yml create mode 100644 .github/workflows/scheduled-dev-snapshot.yml create mode 100644 .github/workflows/scheduled-dev-sync.yml create mode 100644 .github/workflows/scheduled-production-snapshot.yml create mode 100644 .github/workflows/scheduled-production-sync.yml create mode 100644 .github/workflows/sync-s3-media.yml create mode 100644 .github/workflows/tar-s3-media.yml create mode 100755 backend/s3-tar-snapshot.sh diff --git a/.github/workflows/database-backups.yml b/.github/workflows/database-backups.yml deleted file mode 100644 index edc00d6e75..0000000000 --- a/.github/workflows/database-backups.yml +++ /dev/null @@ -1,101 +0,0 @@ ---- -name: Perform Media and Database Backups -on: - workflow_dispatch: - inputs: - environment: - required: true - type: string - -jobs: - backup-media: - if: ${{ inputs.environment == 'dev' }} - name: Perform Media Backups - runs-on: ubuntu-latest - environment: ${{ inputs.environment }} - env: - space: ${{ inputs.environment }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Unbind the private s3 bucket - uses: cloud-gov/cg-cli-tools@main - with: - cf_username: ${{ secrets.CF_USERNAME }} - cf_password: ${{ secrets.CF_PASSWORD }} - cf_org: gsa-tts-oros-fac - cf_space: ${{ env.space }} - command: cf unbind-service gsa-fac fac-private-s3 - - - name: Rebind the private s3 bucket with backups bucket as an additional instance - uses: cloud-gov/cg-cli-tools@main - with: - cf_username: ${{ secrets.CF_USERNAME }} - cf_password: ${{ secrets.CF_PASSWORD }} - cf_org: gsa-tts-oros-fac - cf_space: ${{ env.space }} - command: | - cf bind-service gsa-fac fac-private-s3 -c '{"additional_instances": ["backups"]}' - - - name: Restart the app - uses: cloud-gov/cg-cli-tools@main - with: - cf_username: ${{ secrets.CF_USERNAME }} - cf_password: ${{ secrets.CF_PASSWORD }} - cf_org: gsa-tts-oros-fac - cf_space: ${{ env.space }} - command: cf restart gsa-fac - - - name: Backup media files - uses: cloud-gov/cg-cli-tools@main - with: - cf_username: ${{ secrets.CF_USERNAME }} - cf_password: ${{ secrets.CF_PASSWORD }} - cf_org: gsa-tts-oros-fac - cf_space: ${{ env.space }} - command: cf run-task gsa-fac -k 2G -m 2G --name media_backup --command "./s3-sync.sh" - - backup-dev-database: - if: ${{ inputs.environment == 'dev' }} - name: Perform Dev Database Backups - runs-on: ubuntu-latest - environment: ${{ inputs.environment }} - env: - space: ${{ inputs.environment }} - steps: - - name: Backup Dev Database - uses: cloud-gov/cg-cli-tools@main - with: - cf_username: ${{ secrets.CF_USERNAME }} - cf_password: ${{ secrets.CF_PASSWORD }} - cf_org: gsa-tts-oros-fac - cf_space: ${{ env.space }} - command: cf run-task gsa-fac -k 2G -m 2G --name pg_backup --command "./backup_database.sh ${{ env.space }}" - - # backup-prod-database: - # if: ${{ inputs.environment == 'production' }} - # name: Perform Prod Database Backups - # runs-on: ubuntu-latest - # environment: ${{ inputs.environment }} - # env: - # space: ${{ inputs.environment }} - # steps: - # - name: Bind backup s3 bucket to prod app - # uses: cloud-gov/cg-cli-tools@main - # with: - # cf_username: ${{ secrets.CF_USERNAME }} - # cf_password: ${{ secrets.CF_PASSWORD }} - # cf_org: gsa-tts-oros-fac - # cf_space: ${{ env.space }} - # command: cf bind-service gsa-fac backups -w - - # - name: Backup the database (Prod Only) - # uses: cloud-gov/cg-cli-tools@main - # with: - # cf_username: ${{ secrets.CF_USERNAME }} - # cf_password: ${{ secrets.CF_PASSWORD }} - # cf_org: gsa-tts-oros-fac - # cf_space: ${{ env.space }} - # command: cf run-task gsa-fac -k 2G -m 2G --name pg_backup --command "./backup_database.sh ${{ env.space }}" - diff --git a/.github/workflows/scheduled-dev-snapshot.yml b/.github/workflows/scheduled-dev-snapshot.yml new file mode 100644 index 0000000000..5fb62d9eec --- /dev/null +++ b/.github/workflows/scheduled-dev-snapshot.yml @@ -0,0 +1,15 @@ +--- +name: Development Media Snapshot +on: + schedule: + # Invoke at 9 UTC every monday + - cron: '0 9 * * 1' + workflow_dispatch: null + +jobs: + trivy-scan: + uses: ./.github/workflows/tar-s3-media.yml + secrets: inherit + with: + environment: "dev" + diff --git a/.github/workflows/scheduled-dev-sync.yml b/.github/workflows/scheduled-dev-sync.yml new file mode 100644 index 0000000000..6139bff886 --- /dev/null +++ b/.github/workflows/scheduled-dev-sync.yml @@ -0,0 +1,15 @@ +--- +name: Sync Dev Media Files +on: + schedule: + # Invoke every 2 hours + - cron: '0 */2 * * *' + workflow_dispatch: null + +jobs: + trivy-scan: + uses: ./.github/workflows/sync-s3-media.yml + secrets: inherit + with: + environment: "dev" + diff --git a/.github/workflows/scheduled-production-snapshot.yml b/.github/workflows/scheduled-production-snapshot.yml new file mode 100644 index 0000000000..fb5a68f3f4 --- /dev/null +++ b/.github/workflows/scheduled-production-snapshot.yml @@ -0,0 +1,15 @@ +--- +name: Production Media Snapshot +on: + #schedule: + # Invoke at 9 UTC every monday + #- cron: '0 9 * * 1' + workflow_dispatch: null + +jobs: + trivy-scan: + uses: ./.github/workflows/tar-s3-media.yml + secrets: inherit + with: + environment: "production" + diff --git a/.github/workflows/scheduled-production-sync.yml b/.github/workflows/scheduled-production-sync.yml new file mode 100644 index 0000000000..b953be0fdd --- /dev/null +++ b/.github/workflows/scheduled-production-sync.yml @@ -0,0 +1,15 @@ +--- +name: Sync Production Media Files +on: + #schedule: + # Invoke every 2 hours + # - cron: '0 */2 * * *' + workflow_dispatch: null + +jobs: + trivy-scan: + uses: ./.github/workflows/sync-s3-media.yml + secrets: inherit + with: + environment: "production" + diff --git a/.github/workflows/sync-s3-media.yml b/.github/workflows/sync-s3-media.yml new file mode 100644 index 0000000000..3d28b09585 --- /dev/null +++ b/.github/workflows/sync-s3-media.yml @@ -0,0 +1,64 @@ +--- +name: Perform Media and Database Backups +on: + workflow_dispatch: + inputs: + environment: + required: true + type: string + workflow_call: + inputs: + environment: + required: true + type: string + +jobs: + backup-media: + name: Perform Media Backups + runs-on: ubuntu-latest + environment: ${{ inputs.environment }} + env: + space: ${{ inputs.environment }} + steps: + - name: Backup media files + uses: cloud-gov/cg-cli-tools@main + with: + cf_username: ${{ secrets.CF_USERNAME }} + cf_password: ${{ secrets.CF_PASSWORD }} + cf_org: gsa-tts-oros-fac + cf_space: ${{ env.space }} + command: cf run-task gsa-fac -k 2G -m 2G --name s3_sync --command "./s3-sync.sh" + + backup-dev-database: + if: ${{ inputs.environment == 'dev' }} + name: Perform Dev Database Backups + runs-on: ubuntu-latest + environment: ${{ inputs.environment }} + env: + space: ${{ inputs.environment }} + steps: + - name: Backup Dev Database + uses: cloud-gov/cg-cli-tools@main + with: + cf_username: ${{ secrets.CF_USERNAME }} + cf_password: ${{ secrets.CF_PASSWORD }} + cf_org: gsa-tts-oros-fac + cf_space: ${{ env.space }} + command: cf run-task gsa-fac -k 2G -m 2G --name pg_backup --command "./backup_database.sh ${{ env.space }}" + + backup-prod-database: + if: ${{ inputs.environment == 'production' }} + name: Perform Prod Database Backups + runs-on: ubuntu-latest + environment: ${{ inputs.environment }} + env: + space: ${{ inputs.environment }} + steps: + - name: Backup the database (Prod Only) + uses: cloud-gov/cg-cli-tools@main + with: + cf_username: ${{ secrets.CF_USERNAME }} + cf_password: ${{ secrets.CF_PASSWORD }} + cf_org: gsa-tts-oros-fac + cf_space: ${{ env.space }} + command: cf run-task gsa-fac -k 2G -m 2G --name pg_backup --command "./backup_database.sh ${{ env.space }}" diff --git a/.github/workflows/tar-s3-media.yml b/.github/workflows/tar-s3-media.yml new file mode 100644 index 0000000000..00f648b16b --- /dev/null +++ b/.github/workflows/tar-s3-media.yml @@ -0,0 +1,30 @@ +--- +name: Perform a tar snapshot of the media +on: + workflow_dispatch: + inputs: + environment: + required: true + type: string + workflow_call: + inputs: + environment: + required: true + type: string + +jobs: + backup-media: + name: Perform Media Backups + runs-on: ubuntu-latest + environment: ${{ inputs.environment }} + env: + space: ${{ inputs.environment }} + steps: + - name: Backup media files + uses: cloud-gov/cg-cli-tools@main + with: + cf_username: ${{ secrets.CF_USERNAME }} + cf_password: ${{ secrets.CF_PASSWORD }} + cf_org: gsa-tts-oros-fac + cf_space: ${{ env.space }} + command: cf run-task gsa-fac -k 2G -m 2G --name s3_tar_snapshot --command "./s3-tar-snapshot.sh" diff --git a/backend/s3-sync.sh b/backend/s3-sync.sh index 61c49b29eb..26aa2ed4c9 100755 --- a/backend/s3-sync.sh +++ b/backend/s3-sync.sh @@ -3,8 +3,8 @@ # This requires: cf bind-service gsa-fac fac-private-s3 -c '{"additional_instances": ["backups"]}' # Grab AWS cli -unset https_proxy -curl -L "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" +# awscli.amazonaws.com needs to be added to the proxy allow list +curl -x $https_proxy -L "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip && rm awscliv2.zip ./aws/install -i ~/usr -b ~/bin /home/vcap/app/bin/aws --version @@ -24,27 +24,14 @@ export BACKUPS_BUCKET="$(echo "$FACBACKUPS"|jq -r '.bucket')" date=$(date +%Y%m%d%H%M) # Grab the s3 tar binary -curl -L "https://github.com/awslabs/amazon-s3-tar-tool/releases/download/v1.0.14/s3tar-linux-amd64.zip" -o "s3tar-linux-amd64.zip" +# objects.githubusercontent.com needs to be added to the proxy allow list +curl -x $https_proxy -L "https://github.com/awslabs/amazon-s3-tar-tool/releases/download/v1.0.14/s3tar-linux-amd64.zip" -o "s3tar-linux-amd64.zip" unzip s3tar-linux-amd64.zip && rm s3tar-linux-amd64.zip -# Create a single tar in the source bucket -./s3tar-linux-amd64 --region $AWS_DEFAULT_REGION -cvf s3://${FAC_MEDIA_BUCKET}/mediabackups/$date/archive.tar s3://${FAC_MEDIA_BUCKET} --storage-class INTELLIGENT_TIERING - -# List contents of source bucket -/home/vcap/app/bin/aws s3 ls s3://${FAC_MEDIA_BUCKET}/mediabackups/$date/ - -# Move the tar to the backups bucket -/home/vcap/app/bin/aws s3 sync s3://${FAC_MEDIA_BUCKET}/mediabackups/$date/ s3://${BACKUPS_BUCKET}/mediabackups/$date/ --storage-class INTELLIGENT_TIERING -# Share the Tar to dest and extract (without including the tar) -#./s3tar-linux-amd64 --region $AWS_DEFAULT_REGION -cvf s3://${FAC_MEDIA_BUCKET}/mediabackups/$date/archive.tar -C s3://${BACKUPS_BUCKET}/mediabackups/$date/ --storage-class INTELLIGENT_TIERING - -# List contents of destination bucket -/home/vcap/app/bin/aws s3 ls s3://${BACKUPS_BUCKET}/mediabackups/$date/ - -# Cleanup the source bucket so older backups don't get added to the tar -/home/vcap/app/bin/aws s3 rm s3://${FAC_MEDIA_BUCKET}/mediabackups/$date/archive.tar -/home/vcap/app/bin/aws s3 rm s3://${FAC_MEDIA_BUCKET}/mediabackups/$date/ -/home/vcap/app/bin/aws s3 rm s3://${FAC_MEDIA_BUCKET}/mediabackups/ +# Unset the proxy so that s3tar-tool and aws-cli can function. Without doing this, none of the subsequent commands will work +unset https_proxy -# List contents of source bucket to ensure everything was deleted properly -/home/vcap/app/bin/aws s3 ls s3://${FAC_MEDIA_BUCKET}/mediabackups/$date/ +# Sync the whole media bucket to backup. +# This provides us with a current backup of all the files individually. +# If nothing has changed, this runs really quickly. +/home/vcap/app/bin/aws s3 sync s3://${FAC_MEDIA_BUCKET} s3://${BACKUPS_BUCKET} diff --git a/backend/s3-tar-snapshot.sh b/backend/s3-tar-snapshot.sh new file mode 100755 index 0000000000..8c7e41e463 --- /dev/null +++ b/backend/s3-tar-snapshot.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# This requires: cf bind-service gsa-fac fac-private-s3 -c '{"additional_instances": ["backups"]}' + +# Grab AWS cli +# awscli.amazonaws.com needs to be added to the proxy allow list +curl -x $https_proxy -L "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" +unzip awscliv2.zip && rm awscliv2.zip +./aws/install -i ~/usr -b ~/bin +/home/vcap/app/bin/aws --version + +# Get the fac-private-s3 bucket +export S3CREDS="$(echo $VCAP_SERVICES|jq -r '.s3')" +export FACPRIVS3="$(echo $S3CREDS|jq '.[]|select(.name=="fac-private-s3")'|jq '.credentials')" +export AWS_ACCESS_KEY_ID="$(echo "$FACPRIVS3"|jq -r '.access_key_id')" +export AWS_SECRET_ACCESS_KEY="$(echo "$FACPRIVS3"|jq -r '.secret_access_key')" +export FAC_MEDIA_BUCKET="$(echo "$FACPRIVS3"|jq -r '.bucket')" +export AWS_DEFAULT_REGION='us-gov-west-1' + +# Get the backups bucket +export FACBACKUPS="$(echo $S3CREDS|jq '.[]|select(.name=="backups")'|jq '.credentials')" +export BACKUPS_BUCKET="$(echo "$FACBACKUPS"|jq -r '.bucket')" + +date=$(date +%Y%m%d%H%M) + +# Grab the s3 tar binary +# objects.githubusercontent.com needs to be added to the proxy allow list +curl -x $https_proxy -L "https://github.com/awslabs/amazon-s3-tar-tool/releases/download/v1.0.14/s3tar-linux-amd64.zip" -o "s3tar-linux-amd64.zip" +unzip s3tar-linux-amd64.zip && rm s3tar-linux-amd64.zip + +# Unset the proxy so that s3tar-tool and aws-cli can function. Without doing this, none of the subsequent commands will work +unset https_proxy + +# Create a single tar in the backups bucket +./s3tar-linux-amd64 --region $AWS_DEFAULT_REGION -cvf s3://${BACKUPS_BUCKET}/mediabackups/$date/archive.tar s3://${FAC_MEDIA_BUCKET} --storage-class INTELLIGENT_TIERING +# List out the contents +./s3tar-linux-amd64 --region $AWS_DEFAULT_REGION -tvf s3://${BACKUPS_BUCKET}/mediabackups/$date/archive.tar diff --git a/docs/dbbackups.md b/docs/dbbackups.md index 055f5d7446..9a0dddb9f0 100644 --- a/docs/dbbackups.md +++ b/docs/dbbackups.md @@ -5,12 +5,10 @@ Database backups occur in the following ways: 1. Django backups ```bash python manage.py dbbbackup -python manage.py mediabackup ``` 2. Django restores ```bash python manage.py dbrestore -python manage.py mediarestore ``` 3. Backups in the prod environment occur every deployment, [before the most recent code is applied](https://github.com/GSA-TTS/FAC/blob/fd3a59287d58aec06a78d6da3b42a5def8fc9c98/.github/workflows/deploy-application.yml#L72-L100) 4. Manual steps are listed in the following document for where to catalog backups @@ -25,3 +23,47 @@ Select a space: 5. production cf logs gsa-fac ``` + +# Media Backups +```sh +cf t -s +``` + +Bind the backups bucket to the application +```sh +cf bind-service gsa-fac backups +``` + +Restart the app so changes occur and wait for the instance to come back up +```sh +cf restart gsa-fac --strategy rolling +``` + +Unbind the existing fac-private-s3 bucket from the app +```sh +cf unbind-service gsa-fac fac-private-s3 +``` + +Rebind the fac-private-s3 bucket with the backups bucket as an additional instance +```sh +cf bind-service gsa-fac fac-private-s3 -c '{"additional_instances": ["backups"]}' +``` + +Restart the app so changes occur and wait for the instance to come back up +```sh +cf restart gsa-fac --strategy rolling +``` + +Running things by hand: +[s3-sync](../backend/s3-sync.sh) +[s3-tar-snapshot](../backend/s3-tar-snapshot.sh) + +Tail the logs on the app +```sh +cf logs gsa-fac | grep "APP/TASK/media_backup" +``` + +Run the media backups via cf-tasks +```sh +cf run-task gsa-fac -k 2G -m 2G --name media_backup --command "./s3-sync.sh" +``` diff --git a/terraform/shared/modules/env/https-proxy.tf b/terraform/shared/modules/env/https-proxy.tf index 406dea9724..36ee642415 100644 --- a/terraform/shared/modules/env/https-proxy.tf +++ b/terraform/shared/modules/env/https-proxy.tf @@ -37,7 +37,13 @@ module "https-proxy" { "secure.login.gov:443", # Git - "*.github.com:443" + "*.github.com:443", + # The following needs to be added to the allowlist so that when we curl the s3-tar-tool to perform backups, + # the curl command can follow the redirect. + "objects.githubusercontent.com:443", + + # The following needs to be added to the allowlist so that we can get aws cli onto the instance to perform backups. + "awscli.amazonaws.com:443" ], # The parens here make Terraform understand that the key below is a reference # Solution from https://stackoverflow.com/a/57401750 From 9adfcce33676874e56e2945fe59254af0fda3b5c Mon Sep 17 00:00:00 2001 From: Phil Dominguez <142051477+phildominguez-gsa@users.noreply.github.com> Date: Wed, 10 Jan 2024 15:26:56 -0500 Subject: [PATCH 3/5] Adding myself to dev list (#3184) --- terraform/meta/config.tf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/terraform/meta/config.tf b/terraform/meta/config.tf index 36d670db49..c9cfe50da6 100644 --- a/terraform/meta/config.tf +++ b/terraform/meta/config.tf @@ -30,7 +30,8 @@ locals { "daniel.swick@gsa.gov", "alexander.steel@gsa.gov", "sudha.kumar@gsa.gov", - "purvin.patel@gsa.gov" + "purvin.patel@gsa.gov", + "philip.dominguez@gsa.gov", ] # All spaces have the same SpaceManagers for now From 121bd2b696e326d6f9cf010104d1c6d44b0490de Mon Sep 17 00:00:00 2001 From: "Hassan D. M. Sambo" Date: Wed, 10 Jan 2024 16:17:02 -0500 Subject: [PATCH 4/5] Re-build workbook templates only (#3181) --- .../excel/xlsx/additional-eins-workbook.xlsx | Bin 225052 -> 225049 bytes .../excel/xlsx/additional-ueis-workbook.xlsx | Bin 225059 -> 225052 bytes .../xlsx/audit-findings-text-workbook.xlsx | Bin 263615 -> 263615 bytes .../xlsx/corrective-action-plan-workbook.xlsx | Bin 263621 -> 263627 bytes ...ederal-awards-audit-findings-workbook.xlsx | Bin 1125745 -> 1125751 bytes .../excel/xlsx/federal-awards-workbook.xlsx | Bin 1550082 -> 1550078 bytes .../excel/xlsx/notes-to-sefa-workbook.xlsx | Bin 263683 -> 263683 bytes .../xlsx/secondary-auditors-workbook.xlsx | Bin 294951 -> 294961 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/backend/schemas/output/excel/xlsx/additional-eins-workbook.xlsx b/backend/schemas/output/excel/xlsx/additional-eins-workbook.xlsx index 5bc7b871384e5fadbc7cf8a39d061ca8b9794f1c..7d2af5fd5c0e2c208ec93b03ec0fb0552788bfd8 100644 GIT binary patch delta 9442 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 delta 7918 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 SYv2#ij#Om4_pW4wz5Q>9YQF;j diff --git a/backend/schemas/output/excel/xlsx/additional-ueis-workbook.xlsx b/backend/schemas/output/excel/xlsx/additional-ueis-workbook.xlsx index 8e8680f6795b413d6785f1118eb8754030e10bd0..f2d4754eacffc471dfc59f1012ca82fe039899bd 100644 GIT binary patch delta 6601 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 delta 6525 zcmc&(dt8&{9^bnc#T(2k7^w4Bcn+75qLjc^nHh2lB@iNID&C6AxQN`w9;{AysfL!m zCFd~3jD&O+pq(`q3lb~sXoQUpSW~+JlV0~hIq--Z&~%>4J~e$ z|DH(jCCR=~t|tnvXz#%<^#z`J=}z_H-Ep4zW%F5wJ5I)&{^{KYb<3K{B?686+cyFC zt)g|y_PBY3Ke2k!Q(K5J%9M<_z{B+`-L|; zOI5!>VdEz{^HlJP_s^wO^C!ITcwYY5nms~$KA7}E?6OP8tA{?k9kSK?Fst_a@qU{F zkBTF+kc-cj#ie{5p91n-Uw=oFyl^!W_ks#_>&@Kgk8{0BYv34Tl z;^NX)qYOpTmqRAjXrRd;@@RX5#Q`bTh6p~=bG0nA=GN^hjJqQSAj3j}Vo!Xbd z+m~faV~E<&Y;lRP+vGCkWd3 ztCrt+GEwnC1oZhhWa><4y<$cp+ZRGQXF*+HQg2L4&Da4LQ|mD;U<_k-h7QIk{a(Gz zEj0{)VH`UEzdABTE`X6VjFI)`mK0|Z{%_V5#$D_eAmq9$)TlW5G}HtkX_KIpV0`cL zmYT5xFs9a*GiSiq#qJCpj7j=$*7Vg0N?MWn0VHt&w4LoJMhtEY|5!%xPjk@+46Q7M zW4Mz>^U(N*%*Qa=WOl(b!_sVv8hJhfdIGt=7V?6c75qhz-}I0^4xOAJoL9YyUG&{n zEHHha?~t3Pd-_$S`iBK)ZwLF$={itQH~bj-%#~UAd!Ej1X=(fXSNx8|CbJ!@exu)l zPz(jb&D<3axpfLdoK6~LQ`bkrA=Sr!L#LKuHeSkzjDHjk$XhitsnK_H!j`cCFjj{D zV;77~*bk!yW0rZR3tJMvn@$`%0Ap(1cMBN9*qxy>{rCS*f70ceqs!&vOz|x>ihpiq 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 diff --git a/backend/schemas/output/excel/xlsx/audit-findings-text-workbook.xlsx b/backend/schemas/output/excel/xlsx/audit-findings-text-workbook.xlsx index 3ec0f81eace6d01849de0bc53d31d630387ee0db..d89e7d48db050dc2090c63a84f90b558e00a14a6 100644 GIT binary patch delta 6717 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 delta 3948 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 delta 11366 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 G`27b3_W#NN delta 18945 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 diff --git a/backend/schemas/output/excel/xlsx/federal-awards-workbook.xlsx b/backend/schemas/output/excel/xlsx/federal-awards-workbook.xlsx index b55438c01b67dc8c8a21714b4a9ea54e8510607a..3fcfcf4ba05273194928cc2342402217df69f71e 100644 GIT binary patch delta 41336 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 E0IAge8vp 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%0AiQLiXZ8Mteg&^aFFqga+I#t3EcRHy z3oXZSHoPI_^#cxDMp#V+VLybh6!cFLvWOZ8wDIU&<4@t=%0oc;9nCstd)2(XqS&xY z^OR|YpEX7{v1v(0SB4i=e7IXvN+7CK@SqK$wsMy~iPGsm;Fx881X{KShH(2sre~R#@<0qbNE83E0Q`yZu~pee_B6RHD?~dJ%_0$%a+GEsA9lI$ z@unMpvuR=TjhzK*#aAdi^c0s2Yu+J+mhN#EqSTX}@o0JC-I$>5b63)1%6-8{gP|$J zi{4}?4;cbH7IG=fYB^?|7J-c@&I!9+=hy;LNK0>qKRatv%A*IBdCL9O4p*lZze)K^ z6T4fC?h7Zlc~mTx4e&BXNR07g@>_FpX_fNmggHwyFIWJdhFlU$O-eQ(^!`x%y4Jf; z@QAVkpVWa09H>&^sJim$&51Kr6Md)V9z0Eba-<1uGi;Zx)8zqSivrF2L`cR?SuGyP zr8&-(s5*7E?vL6d?=WT93Ta|9OYN?8-VHUrQX5{N0rY@soKCAq%2FBHOn&f?lh?_Q zeeP^7LRm7~oq3)4V||tV<+8u1>&G&`e!_(*B3*Qg7JUn#1I1&rvi_v!7u?Kz$ly+G z-R&vhZ#P8|2x^rXAq%1jh^3ULUgj=gp4tufIEgnPr)j7Rn8b{+mi3y}8ZibCCJD7B zoSmKmJu)J3=cu#NVVIUw3VSZHzJ0tI9%j&%}w=(v1d=1h)d&9?~SB_cTFF1*pxDlR;NAG*7?9!aU+?3EKku ztIzs?>6hkc`)C6~=?$vb=sXMwBQ} z(wx6Z<2*yy^_0`qr76G`UDMolz6J2ET4)q7mFX?tc@~R`I6Ynx@&|30B0~1ASIHlCCmf%j zqZ@Ol6PX~Q5Ey_!@DZy+oixuiY2F5`Z%rF4V~;ERLu_0*Q!qUn!IhAcjgaSNYeO<@ z`ZuJ^$@XrJ&J1vuAjB|PbONuXws2Q~RGgU01-hF+iI%sk6y;7JDnwx+fZcceE2Hp= z{GBjYtI?g-lLe{Bq>7?QN2rqWzkx4?hU(9t@Zu ztE3EI%Iq9QhVbUAgnYS|Js+_`XHujso=<8?3%oOqbs(MMHtQ$rb%3M`K=Y`#nw|!v z^&J?;y6?KwnnIh%pjPOAnVx!kYkTLr(8H#NiB5~?Zu;}p&CG4Os-XLf6r1%r>K!QD zzhjH8otayiC3C~K;sWeAfRI4z8Tq}t0qC@XedE;RFaLD$dZ%_eW$u;6hxXiLDq&aH zKJ41I8xXQD0ijon0JrH@7VLz-1;rb*FdHM!}R=D5o(3Gm;moq~}3?9(Sis(r`F zh$sWt(*5+bP)`&SaV=j2|9Mdv1>QN;nJhrw!d60OA2xzYv_3Samywp zrBa58j!Xb(%jym~K;4n`s#T~Ewx&Xlm=W1JBbKq~xa#|geJbZ2NMyuliQr?&KeF)# zEHDPkGq4kT)pBUHwtwpS14F-(4qQaVQ?8ueg=n}##}fV|RHPsXtDe=7V#aT7Fd)Rp zCp|K@O2omWAlxY9r=qEJg2cb}_ ztB@#VD}8WS)Bt(^iJcKD2j#YbeMdaN^{&XA@RWd%C#@~*q*K)@Z6^@?FYdnG4Fl_# zpD4(fpea2Q*uI>iicd;+EOiv2Jz=T`B(vzLt#x}lQm6DVN7_N21qL?_ItcF` zSs1(482mKnlF8F_^G8A_I6xwpZ3u*(#kO}$K9_z6crh^Xlm>#Wj<61sDR)v{E&AIy zR&*z)|Db*;3&u}T$+c-C0i#DdVUK#ss+e_{eVE9&z#;}5dPuaW8*U$FX!e37Aut{R zReJ1i+xR$++Cs|yYB$yX80EFKH~DX}0JgZlPadcqP4#sSa7AM~nC%5J`j~gH0}Ki@ zqJO1WfRYFrndvd)_?C-}X*`u0A(c>mh+Z`dGsEZk>+r0d1!umEQx>s}9vgCoQY?}H z`^bvpEB^_I5&97_0}`n(@25x`ixk-~k(9Cdm&J;mp>;&`cCB;4ZPj_do1vcUz`2~c ziHzMK;RB1ji7Y@d?s*x4ur*je>t9bI*vK>-bvWzFZ&D@ z`Z+)f#i)=w=qW`Y1@(uR#O7jV|AHv7{N)xAlh6K}iImnx6+2^wX5sAi+w}*nev^a8 z%?|7%Ss__~Xxz;;IgIV~=dZxnraxJ*l=$F*0g`fg{kVE$GrksAfqh+ZaV>EO{(=H=~KDJBa|07J>EOJK(ZjRUNk^?0HHC0k1`ek4cxn4 zgA;w~cSCjqr*xJ3xu1O#zPW-@qs2YU`Gw5#kAnc#c%iM3E=7YAD9&~NBQVaZiXOzA z(;LL2G*VccVIo-Ld1Zr@E2hZ?KWQ`=;J-()%uLY;`l;x1h6n5jZJi6cevmnThn=k@#+OTaiAm!RqlR4Im}y6SV@rLli#f5fkOkm+TJgJ+`Pz`0kuyD8Cb77g+DzySCM_)J|M_+W+Pdk9D?teo@RtR-b1-HpnG&Gmb51 zhUC47Lrm&zcg*G+W1h0d$HwB5^M4Cp36el2As-|Sz>1PG;+LG~bIsa#*r}BScgXtuRO)DIUtf$xd^gzpl+87Ep&F z`8GVPY}ahK`Ic=wH+1{3Emp5z>0GWynHGEyfJu6(L1bpU-MXnR&eN(!Jdf#KL-p|D zFe&dxaUr17>?8E8ojEEr)^&MhA|b0 z6kbIPHXM>WVS3l}AjsKt&L@GGFNB9NN;9*_^RM0{&=N#Ce*&&++eq?e(g4w@YnAm< zfV$wJL(jG&)-OZ^bTgXMfC0^g)g;sSg*c(Cfh^$U=Ws{^g{27`MycZx^bZQ_vmDz6 zzX169;^1T>(}EM)R1CkxqTg2q-DIPr0qv1Dt40<)OyfPjGr|hlyXp76G{p%sMa-4V zXic1h7g>WtvPR5?4~K}h{9WN<_>^8*JR1yU@;G}pUM%qiQa7&RRYVJ2ZO6!d zkOlx@5Q1%13U2hD?V6QK`>wAA;*i0U2DHFw{2)ygZfE0deIq#UE&)HL;t|#BQjN^ryzLvYjk1?P8XSIrLB(~y47OxT!V$GRTi zdm^dl7C+(pkfrMt>WJF&C~EF^Cp{0fDp>#x3rte#66bq#jiIT?kM!|-->nDAY3J8m zT9ViMd+9nl7MM`1QU2j4fvgI+m(<6#a;S#)p8VQ3>6l6~Tatj(&@3_RcZ*EUs%gs4 zee;-i*A}DuOS-m?1*w2JmV`xw);8ufA)ZE77MRy6Gp_-LNt%H)_wjA zD@Q*OFH$x{x!$lc3vqJnlHg6+LuKx*sy#yhzZNeN?w-4FE*nfSDCM_t_hNm@E4-Na zUk?OdDQab_H-&)$bj0~WINZsUNb85=9*!J{4vH5~Y zJ)b-M?;poFn+=>v!#heEq8HCDtQG{C)8j>HI6=!8a@{a@ZPtN@o;uQ`Z%m$`D0d49 zTh~iWlaJ3NhyiT5H{%tS4T{z$597nwtG0F#2(9t8asxMc+{68k%zO6vUPMM+*%cn8ZV1T;JmsWwGzCHq+pK7(VOA{;b=ci_Da$?JUXH1 z{%A-&Nbn>p#adSUe2@6mdWq*^VILD6F>#Of+S5+&MVyOaJGv2;##LjURhG&}20$Z=i2=ca0KzVP~RtFgY0&3iggY zv*n^`vD+84_MmV?&lEEJD{Uf9L$Pl!^V0QJbncp7TZ&`vV#G62BA=>jjLfjBx-eXT z#>d&*(&2d6gz-7(66bkYN~P`P%{ym^XG|^JG4WJAhm4emy6_XwKTMlZ*XUf|l3T#%+#x$Ad$y6?}j=Gk5}DF=1otG`wj8PNFsEh7`u zh4!nqcrh6R3PJ_Y^nl}HOzc$6T8Cmu`2EJz&Lc>U9jl=&uR7df zdQIm?x=mwkZF4EmdiPZNEq>}FbwiMhGAnpWV5H=*Q2q0DzV!4R;KHlFw<#iX(F<_E z9!s#a#_u081uLRrhs&M7(U7j|1sGy|Sg^nU3_pP3>z%({LeurV!(eU{AP_pGDdAj7l;nmG@&Y!X?7r9oljea+pN}<}+3ZFIEpn2XU2rK%Zj4!T zqDm+^8P}4C74a?+f?7R$ZTmQ@UP$!zb&E`C)~`g-Q1XKBiPiEcGz6RUqp%f1q1k|r zcpvIx6d6gY909;R%auq!GjJzf>~)mAHWcI03wvh;%76kUt&B! zA0`kM-zn}+S(qp}cBLC%AiZwoq6C6g0N=H}1=MkFJ$w-F7@MfbKnG*}b=%yi%-Gm&y)`u7f85{JDx44UaV8jy~B;+yPbaU3RL{p-#5KmmwvN5VP&4J(y}4 zf!JoHq)H!P2Y&)bC>nC1KAmSeVbPRqtXP-b?C{Yj%iS{6T`i!1pDkn(|E@-8h9VgS zxwcYkREmkX0MPmE`OLl~Ra2DQ{ni^FG#;4`L{7H1h8XRUL&Q(Q3l{;>W zL12DOVq2espGV;;zyLMzd0OXBpxoDP^*8e_;RkmHcYW?Tc?h9;A(}dL7AZp5Z*^g= zzMQmQr&A@C9Xu8Az)jMC&d?n(@9V_wFmh2r*}<3kJYygRVf4`83&Cu`qn~7`7HYf5 zKEAUHX(}||sf=X!JNg7f43HB6^g>bTTR)=*lwuuCa_Y|>)LiCob5@-bX72(7E!SS( z3)Q`^XuQyopsRdz34PwH6|y@kfKNBQUGKD?*H@#5jM*P|zwQ$A%jacZ=JA=Z>qcPt zbM0ME0Ql0s^rZHhBJlP;dN{84#rt`T`7!y$<9S?6=<_^k#?uY-`q;M<@S^7be0uD9 zHwL~<4)`(xv-dWal=e5@-cmmApGU7lfS=b1Z<*5woF$FkZkes$&(bpAgl6X90SjcLCt@ z9U&WR=SaZep_z|z_Gj(K{_W)H&Yo~wbM?$=!dv~9pI2FCPBy)jZvujguo z2*PvZ_oo!SuGCUP-CjbU$KtNfm;Kw#$n`svkB?pCp04*?ix^kYoTHTq4xW}*ft#ys zpaB2-^DN_+{_m4rUS9*|^R)UX@P5^-u(=9Kn00w6_rx51RZVz+49fQvZ`$^J2zGAVHD{r-B$ zI6(2S3-o^3p1f=16(DDG7x?OBuPo^}vgyD_Qr7_Rwd;TI!~cgXi~r`n1`GsbBIQ>y zCNWS+VU-ExgI2WxIu^wO-UMBmrVtGR0I3S+DQdgJQ54Nsp9%HxKH+jT(sVO5@R->( zd3d`{PG1tmfX%vB2~aLpvXJ#A802Qu5W8poBGxg3EX#wEYm9cT#G=P51zhJW@(3)vWfp1CP15(`>Ax#ZveK!b^??j?9Ql`+4XhHm~$E@NOLcX^EJhDg41O# z{VtieL=#o_;m+ZN(7c;guXdEhV{U*Hj?ox#;)yte0oE6|a9%2PTFtl$ z>K0;0)c_XbYu$P>4l29mf$txR9OlUW5Bf0=vzTWI-TceFAJ>qtY&8mxHT8^3z1;*C z1`3~p(XKbE=y<7BDqhoT!kq>|^gt{dt5T8df+yT&>qoa5uYP=jePvdYQ(>MI&g$!L zXu-|bL^cT8_6Dgp9dWEu=wI1jo=6dur3IV1`XIsQB)ZO+rOy~+{tS?-`+-c{N`#&@ z0a`|dZrEk)O{g5x=7}Z=^}}~34tr(w-I07hdaff%XUIatarAy?>*V%8RROJ>Vb4{B z_<~ejECL?H7oyUbEA7D`u9T@2K^rUpTznM%BT=kr_lzyyjyn2X>@4dLi(M|*TEPR3 ziHnRypXB_l0?_>xV#PZVnN5HDicfuTb+qZ>t?}wk96sI#Xf(C7@INIZMwguDV(xn! z^*iXbuP9w!T``4$^Mwg)eh3i?zJBM-w~VS5htM)u@EF`=W*6Cvu61;%%9*8|E6|IaR%l-@ZS|aL;6SCT z*yimiSigY|F)}=t>11)tk#ZTuIo{2ir}!@PR2PNQw#2NMNew8;qjbNvF+li#lGE%f zOB7Smj$c?8uWDl>Gk28Unnm!0boCQ)b93|H5+DsG+~$|$%f7MQbHsSt8laqu2j(6U zlDD^{OO8&|J2_A!-Hi&Vys4r%E0>zk0Kwxuzmh`e$3_clZVtDyNE`=bx*JsoCF}f%o1YEw2GDazBDZUYDO1MO1P48+?;v`TOIxEd_YkoMzTyVH(r?F&;Fn$C z_;vsheLEgjg?#tn^7)#1Z5$pre?4er)N4xuk<)5F4AO*9ooYax6g}McH9^DXh-^`w zKY!k1IB=L6JH3>;ycKu31oONn*zO)Ti|V9}MXK67e?ilI$A;;4h_$(XckS=!(Kh8} z|MP<gwj_%5k*i&8ORfJ|+x?;Urt62$l=HT9*IB>T>aXa!-j*G%)jujwSEih#gu? zXD3@=irvS=cqiG@jyEB2LeC3lCt0A1?T7Th?w4x(t4LjQD`g!ZHd|h5lot(Ns*$!{ zzN8lFD4Y>Ovk-#h3;3?G*$>q zN{LXZ*2oUKcb9>#WbQ=Sl_3)0=9v7mk2Bi%t;EVu8=56?JAJ%mN8K>eQ&mM^v|E}K z%TzGxU3#f{yA0N%7IprHlMINOKI8^w^e4@$Q$1pd-oRGCw-nAgEQDazof}+B{P>#47#1Z&$`JC={SKd>YlOAb;!^WKwJH}%Xi56R z?(WTBKCeyqJ)IWs@2`dE>ugY+@a3j1V9hJ?#M~cc(zUkv#o!2m-5bk=FV^z^y`ob@ zb1~okv!I(r^Ds3*A%y;|?Yw+UZrFcUyXTIGmnmPc!W{o~gRlS-2XrEZy8x4f@ZWtm zL^>87IZzOo8 ze}(=(!o~maE&h+@{8HrpTS)G|58W@4%KxpCc1psR(0^@TorPaL5l&ey#Kcqo*M76a zX?XWng&1GQHT?gn7zD%@^mhg(h@OLqwId_Lzi&kuP%tzQv@a1DkpI8!@4w6Xf(E9@ z6=4$mS95knU(Io+gco5_|EIgAS&JvMpdcWxUrM6>cag7O-!Gw=B1{UX``-mnGnht-7j)qTD=+)`D??3pyrr4h@Mns*n3t3kVPY8y+uqD_spZJh zV`8l|U5YZzbR-)m<)$J|MVN}?FbF0L7`w6U>|Fk5!%WR9|I~dxoaf#9IeVYy`M%%x zd!F~@toyRlx-UD0L{DJ{JkMY-+B3=*zC7#ekOS>~RvrFZ^VcU|2Hymy?HUr+X+T=q z_JFFc{VTd2T)I2&7eo0s+Ya{pv}2*0!mrF+7W#8tpPalQ^ZUt`4t4LHdhxSi<)MKc z($4nQzOy*;YItJy^v>>ro8ouc}Vx2ONzyq$eJ1u+;q2QV0+G$=>vnS+CZeSoZ8FlFYY zsZ7SwBmLU1!zM17q}?*$%IqeK=lTBV{CsDrCav<5+{$YnHOE zv(>qaSm)@DUQ9@B<1!^oxRT4<4EC%!CwglBaU4jbNHgBqEr4`_LT9@4=gqZPdo6cDr&-gJLhmi zZ@V8n=m-9x<0bQ6oVi2abJwh;v7#>)?pdRa*toUUx&Hp0=IV*}jm0-K_(#}txE*hc z@F4?S{;&w#f|WBV8ax=XTYlgNx2$m8!y@oER!8}M8#Iaqz>Yai1_cVPAi0EE?Y)~r++ zBG!(dcUZLD&!~<*My;ss6w}bNtB*zt{LK(QqfYpUrx~8twdeh(_3xx^A%J($o!kHq zF-oJnEprX7J;cyja0f-bi+*|}_WILolz-KRxrRdM)d6ln=dO_5*-5UBesnUn6mGgl zfIaTHNRO(&<}j}@;X@o|cXdK%WRD z0FOV#`*?pQ9y}40?;QfT%N%#GzZD<*gf8HTdAhqJ@PzWbyY~)u@Z_MrYX}`~PPE!6 zWNo7#4WZ06>fK$KmznUGuFPQ|(Ef6K?9;n|r|SJ>dVM~<+Rc}Kfd7O-2$se^(VZkQ^!AD!+`0e0>xlL4gV;<>*YNk zeAMud6Os(5Ya5Dh(3S%Va`=lg!6To$5Y`_beW&ZZ*G97Ey-$1Y+(;f`19McZ^GNa; z7jVc>s#GZul7D9Kgv14|)a4ODVpny8DhDq@y+&P$ppYmR2&o#5I?tlz61jcJ($rHf zh~I3$oN81|G%6vl&5-RfCs)D{Rw6*$4nqtocE=!OzFx@3%_6?UY0#r&jZi{5T?+Cv z4*{5mi`SSatBn3_W~EFrhg{D;MNCInP#e_~Z$)SIjZe zI&dyxKSMT@=n$M8b4+U53W!2(ECo?`oI>g;wPfWGav@57uXio_Ou?79c~mV*Y(gx3 zz#I#gM$S=CsZ#;mq_^N6V5{>gfXgYwzty?uX;BL)n^^&zjW9<@;3fqi8aW3g?oyK| zhxF)G1;AF(hsMgO=1QFgrI2uEdXic|991izO1WY;fj6rt2Lw*ZxzvwU)fOrr@)Bem z)nG||3wke_7%$jIS(TR%?@JP56PIVsKsCQvb^)9WQ%Kz!4<@QeZ89kk%4W<~<%luB z$3y42HWOY1_wtSd*Bd%WdcpoW4}%ED$0Y5?S?sNJdqL)Wa_vBOcYYs$+aQVSB5@ew zpa83tI4v|PDu}2O(%;gP|HwY6NF;cu)DBQG7b}!!>425WnS_62_IC3+3^0XzL;!Pm z>&k%_kvi+LUEw6A?1^AbSO+j?l#ow2JUF3)Bwm{vFJW4Cn?*Sou&E$mHzS@FrHrb2 z?+;j@sZmZ}Q>4lvxe5gL!~kpYfJA9(cbb&Sc&gEbXuVz?N;uw@I!j$B!l@K$T+urr za(fc#kW-}!+<|=In(QqFM18snMJ)N)PaDH<4zi2#W^z!wT+6)ne(M%^+Q1len zq$gXz>I)iqBL@{@Ej*gFGMZe?>?p$h1@NR&wScUbp{7)|gz|{^TBwI510k@{gKW7v zsy@R4axhP-5djM{!ZQf2rvn-uGHn=D(+^mMx+&5XOk7cON)SlTHRz3AEWfa7Ktk(xtKC$SV)@;s-knNDXOaG z;>~EKMVc~~aujV)}H(sNy0hsEvQYE$KW>-qulbvczJcOu~MKy@1fz6XB?(P3u zxNyPJYwyo2#;mUW7~L4MVKbTZA4@%KCL3MwYQhUS=U!kg?EB^t*6PV~9kYhY4yL{P znWtsxuYo5drk$0Ud6{T#PJVp>_k7jxz&aqmp1|1-l!3&cGfUwBNZeeRvAo`5HZF8_d{K?C78rt#rrn4KNR(1D$Q8 z13f4(+RqM>@%OhaddlP=POw#`HbIZ}v`t3qMnX&R~xW;)P0isKtH zU}iQwX4}lPAiY_=FFgy!o9I9dXW9MXrY3seQtZ;yYj8vkdkh?%!|uX-jBR=jItOWE z5qj3)1vWa0AvX57z%pfGRTG@lOlQ_M6CFgafJO8QkeASC{qCfb@~r?)>k4R_nFds4 zTy&5juV{K!)AK*aauW?j(~l*pL-y%qb6vJ?50)PsU+*-QX-6$Ke{4=mkz}pn39cMB zjBMkrWpH9u%}cZOiL8BkhK}0W}Q%qo6FS-sjIdm9mVU5xRh6>6o@FiE?emmO2pnKkAP~d(}7fP zLPbuh3lHXlbe@W|dy@%_-Z^+0rA~*EBJjMT3{*?GTXL0@)lpr@bJ%KtM{Pl+t6c^! zqSd%-Wk4XH+=grcy}kF?sugGsup6_Lu&5bUawx2J`VSREv&tguO|^J}#VKBwN+Z@I zpvG$_5s%wisN|p|X0{v2a?xg)7b06A zqN%0E?rrhB;uVT2BrbrXCXTr}21qd@A%HUVj?zNPZfq3(0742Ww_RSP5+5ay8Wi0m*vSsQ~w2tp^^%+o;|RTWyI$llIc42enf zGKYuc@r0u+;x#281#{pX$r?G3cx%gbkV`}wZGAn3&5k+~k56sngBCjGRA)NX?)F`Z zn&o9jumgOrJi!AnT>eOK*pN8w#F_oa1I8!q=vRGt z?Y7U#+^m7TIam7+5{^jwoyYj)(%}8yevl_l`LaQ|sVZ}Ehj-o69rar(?8*Gl-Nwc~ zlVxgizM+2Ngsb}v?BC~1Yn&gszRxG0R&_R30>Rn&6H^^oW5065MeYy<_j&ok{0+Q6 z8YWE0IV4k+88;2<=UlgPra7o*WbYH5_y6FHc)w+CqPRNZcTbmNOCt+9u+`T`4I9`a z=TA+`ADiZ8L}pK%S~+t|<)$O6KCi9YKJnV=-B+~L-MY_S`RkPIcKYGt!be>*CA^(? z=$-Y6pN=v%0ejc-HxB&%cCRFin{>6{qi6fc2KP9Hyi$A6DGwi4{me#B=}TubIP3CX z_`cx#Qp;q?Tzt?h386faGTZbfV|MUmSbnZ(>#s*6hD?|_`>SV8xQ6QEhF(9?@`2~9 zb=#7oGL5dgqUP0wt22LlHdJ!5c=o5pkI%H9EHgaYCC*@Y;rr&8`0dRfb{~^8sd>hV zaf4V3lOp>3GJ>htH*Vya14UVaV{60U?EwJ;{5R#7x!=TC48{@;gAx4K9kl&~X@@HU0>WF} zkO2Wb=5-_44B^Vf%Rl4|@m-^*Fj>zt{(g_~CSwB`40^DepHG-fip^NPoR=(G8NW~@ ZiXXB%VfmduhCd1nn9%A=6Bsb*{{V)%|JeWl delta 10130 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 diff --git a/backend/schemas/output/excel/xlsx/secondary-auditors-workbook.xlsx b/backend/schemas/output/excel/xlsx/secondary-auditors-workbook.xlsx index fbe4504dee266d5953e38f0a4050582e77cff4b6..949c3cdce0d49cfd967b51074349f0e4a04ce5d0 100644 GIT binary patch delta 9020 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 delta 10430 zcmeHNc~}!y*UykBA}GirsMv_$t^|sJ3nW$xDr%!5FStMi7b>7(Q2|48v4Xguh@fMo z5-BPw(x`|LSw@9|vPDINiVzTiLVy4PvQ1{b1iRS2|Gr=IPxCx;?&Qq5^E>CLAEk|}{e7)Mxdk>s5`@ea_m)0={i^s2R$5P>jB-R@@Y+8E9ZjiBse zhVQYB+8=Tuc>}$~&fqv+k;)R;)ES+6?6=~F6)OXbPi#+(+U_RFD81Q)WG&k6Ofo+^ zpp@Oqc{6*yi7_?H$bQr5Xvar2fqOn2pMK&;o#!2~-*krCpcZ{A!!MTwzFYMMbgU9j zvgvegIrpIMn!oYnF#G!{uP?hzp?Ny%-+_8wW@H)sXd3FTmr@Cws$Q&|nD2YDSX^0r zIX}!AV$zc+l0i3-!#?IY$2`Xhn>VJL9ehobR(Y3r-J@1xwpV@6n3zttKG3i7gK2kTpZbijPcKY%4LbCy$?cV55muT)xL|&XL@4+0dd3CsUzs!FSOY9C_LkK&$8%9Dx>N*MttVl>XzD`-xk_diTKLZ5P&YOf#Sw3<_)(pszjCW9xEtNM{y2*x)z#y(FxKgib__( zPd%V7iQC9d@T;}zC(TYLXezN@vGFsTRhe*x2Q(cHb%Msj{f_ExIflBhzXvoIzN%Ic zgV`3al?UXYGu#Sa^?<(k!%&ZZ&>B)q((N_G1N<0Yz=s^6y*eWau)i~81(OXSW8ypV zwAdx`bn&-DB)$QDjqhXi{dcUY%p3 z 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 C{HB5c From e1352b443c72c3662863d451be89b275315f0403 Mon Sep 17 00:00:00 2001 From: "Hassan D. M. Sambo" Date: Wed, 10 Jan 2024 16:17:49 -0500 Subject: [PATCH 5/5] Data migration GitHub action (#3185) * Improvement * Typos --- .../workflows/historic-data-migrator-with-pagination.yml | 2 +- .github/workflows/historic-data-migrator.yml | 2 +- backend/census_historical_migration/README.md | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/historic-data-migrator-with-pagination.yml b/.github/workflows/historic-data-migrator-with-pagination.yml index 24c7326ecf..84c77f9926 100644 --- a/.github/workflows/historic-data-migrator-with-pagination.yml +++ b/.github/workflows/historic-data-migrator-with-pagination.yml @@ -1,5 +1,5 @@ --- -name: Historic Data Migration +name: Historic Data Migration With Pagination on: workflow_dispatch: inputs: diff --git a/.github/workflows/historic-data-migrator.yml b/.github/workflows/historic-data-migrator.yml index 918d47561a..10fa4e8cdc 100644 --- a/.github/workflows/historic-data-migrator.yml +++ b/.github/workflows/historic-data-migrator.yml @@ -14,7 +14,7 @@ on: dbkeys: required: true type: string - description: Comma-separated list of report-IDs. + description: Comma-separated list of dbkeys. years: required: true type: string diff --git a/backend/census_historical_migration/README.md b/backend/census_historical_migration/README.md index fd55fbfe27..dafe732121 100644 --- a/backend/census_historical_migration/README.md +++ b/backend/census_historical_migration/README.md @@ -20,7 +20,7 @@ This is implemented as a Django app to leverage existing management commands and - fac_s3.py - Uploads folders or files to an S3 bucket. ```bash -python manage.py fac_s3 fac-private-s3 --upload --src census_historical_migration/data +python manage.py fac_s3 gsa-fac-private-s3 --upload --src census_historical_migration/data ``` - csv_to_postgres.py - Inserts data into Postgres tables using the contents of the CSV files in the S3 bucket. The first row of each file is assumed to have the column names (we convert to lowercase). The name of the table is determined by examining the name of the file. The sample source files do not have delimters for empty fields at the end of a line - so we assume these are nulls. @@ -44,16 +44,16 @@ python manage.py csv_to_postgres --clean True 1. Download test Census data from https://drive.google.com/drive/folders/1TY-7yWsMd8DsVEXvwrEe_oWW1iR2sGoy into census_historical_migration/data folder. NOTE: Never check in the census_historical_migration/data folder into GitHub. -2. In the FAC/backend folder, run the following to load CSV files from census_historical_migration/data folder into fac-private-s3 bucket. +2. In the FAC/backend folder, run the following to load CSV files from census_historical_migration/data folder into gsa-fac-private-s3 bucket. ```bash docker compose run --rm web python manage.py fac_s3 \ - fac-private-s3 \ + gsa-fac-private-s3 \ --upload \ --src census_historical_migration/data ``` -3. In the FAC/backend folder, run the following to read the CSV files from fac-private-s3 bucket and load into Postgres. +3. In the FAC/backend folder, run the following to read the CSV files from gsa-fac-private-s3 bucket and load into Postgres. ```bash docker compose run --rm web python manage.py \