GSA-TTS / FAC

GSA's Federal Audit Clearinghouse
Other
18 stars 5 forks source link

20240516 main -> staging (fac-file-scanner rebuild) #3850

Closed asteel-gsa closed 3 months ago

asteel-gsa commented 3 months ago

This PR is the PR that modifies the fac-av-${environement}-fs to limit its instances and is the rebuild of fac-file-scanner.

This PR should be a "merge" commit, not a "squash"

github-actions[bot] commented 3 months ago

Terraform plan for production

Plan: 4 to add, 3 to change, 2 to destroy. ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create !~ update in-place -/+ destroy and then create replacement <= read (data resources) Terraform will perform the following actions: # 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 = "5e81ca8b-99cf-41f8-ae42-76652d51a44c" + port = "61443" + protocol = "tcp" + source_app = (known after apply) } } # module.production.module.fac-file-scanner.cloudfoundry_app.scanner_app will be created + resource "cloudfoundry_app" "scanner_app" { + buildpack = "https://github.com/cloudfoundry/python-buildpack" + disk_quota = 512 + enable_ssh = (known after apply) + environment = (sensitive value) + health_check_http_endpoint = (known after apply) + health_check_invocation_timeout = (known after apply) + health_check_timeout = (known after apply) + health_check_type = "port" + id = (known after apply) + id_bg = (known after apply) + instances = 1 + memory = 512 + name = "fac-file-scanner" + path = "../shared/modules/scanner/scanner.zip" + ports = (known after apply) + space = "5593dba8-7023-49a5-bdbe-e809fe23edf9" + stack = (known after apply) + stopped = false + strategy = "rolling" + timeout = 180 + routes { + port = (known after apply) + route = (known after apply) } + service_binding { + service_instance = "593e554d-fab4-4dc0-bf84-f4f9c39b5620" } + service_binding { + service_instance = "ac8bf271-4c6d-4ee0-bd36-1415b839a93c" } + service_binding { + service_instance = "ca564d14-b89a-4944-a43f-033dca62ab30" } + service_binding { + service_instance = "0eca29d3-e963-49e6-8c9e-c53b7aa8482e" } } # module.production.module.fac-file-scanner.cloudfoundry_route.scanner_route will be created + resource "cloudfoundry_route" "scanner_route" { + domain = "26df58ef-0c0d-4997-b68b-8defb7b3998b" + endpoint = (known after apply) + hostname = "fac-file-scanner-production" + id = (known after apply) + port = (known after apply) + space = "5593dba8-7023-49a5-bdbe-e809fe23edf9" } # module.production.module.file_scanner_clamav.data.cloudfoundry_app.app will be read during apply # (config refers to values not yet known) <= data "cloudfoundry_app" "app" { + buildpack = (known after apply) + command = (known after apply) + disk_quota = (known after apply) + enable_ssh = (known after apply) + environment = (sensitive value) + health_check_http_endpoint = (known after apply) + health_check_timeout = (known after apply) + health_check_type = (known after apply) + id = (known after apply) + instances = (known after apply) + memory = (known after apply) + name = (known after apply) + name_or_id = "****************" + space = (known after apply) + stack = (known after apply) + state = (known after apply) } # module.production.module.file_scanner_clamav.data.cloudfoundry_domain.internal will be read during apply # (depends on a resource or a module with changes pending) <= data "cloudfoundry_domain" "internal" { + domain = (known after apply) + id = (known after apply) + internal = (known after apply) + name = "apps.internal" + org = (known after apply) } # module.production.module.file_scanner_clamav.data.cloudfoundry_space.space will be read during apply # (depends on a resource or a module with changes pending) <= data "cloudfoundry_space" "space" { + id = (known after apply) + name = "production" + org = (known after apply) + org_name = "gsa-tts-oros-fac" + quota = (known after apply) } # module.production.module.file_scanner_clamav.cloudfoundry_app.clamav_api must be replaced -/+ resource "cloudfoundry_app" "clamav_api" { + buildpack = (known after apply) !~ enable_ssh = true -> (known after apply) + health_check_http_endpoint = (known after apply) !~ health_check_invocation_timeout = 0 -> (known after apply) !~ health_check_timeout = 0 -> (known after apply) !~ id = "************************************" -> (known after apply) !~ id_bg = "************************************" -> (known after apply) !~ instances = 2 -> 4 - labels = {} -> null name = "fac-av-production-fs" !~ ports = [] -> (known after apply) !~ space = "5593dba8-7023-49a5-bdbe-e809fe23edf9" # forces replacement -> (known after apply) # forces replacement + stack = (known after apply) # (8 unchanged attributes hidden) - routes { - port = 0 -> null - route = "3d584a52-c592-4879-8de9-11198d2f625d" -> null } + routes { + port = (known after apply) + route = (known after apply) } } # module.production.module.file_scanner_clamav.cloudfoundry_network_policy.clamav_routing will be updated in-place !~ resource "cloudfoundry_network_policy" "clamav_routing" { id = "22404581-6620-4dc7-9fbb-207db75b10be" + policy { + destination_app = (known after apply) + port = "61443" + protocol = "tcp" + source_app = (known after apply) } } # module.production.module.file_scanner_clamav.cloudfoundry_route.clamav_route must be replaced -/+ resource "cloudfoundry_route" "clamav_route" { !~ domain = "26df58ef-0c0d-4997-b68b-8defb7b3998b" # forces replacement -> (known after apply) # forces replacement !~ endpoint = "fac-av-production-fs.apps.internal" -> (known after apply) !~ id = "************************************" -> (known after apply) + port = (known after apply) !~ space = "5593dba8-7023-49a5-bdbe-e809fe23edf9" # forces replacement -> (known after apply) # forces replacement # (2 unchanged attributes hidden) } # module.production.module.https-proxy.cloudfoundry_app.egress_app will be updated in-place !~ resource "cloudfoundry_app" "egress_app" { id = "5e81ca8b-99cf-41f8-ae42-76652d51a44c" name = "https-proxy" !~ source_code_hash = "48b2f5eba8d1f35c0fbc2f90c2ec87cab180f5f19e7e34b16b9190fe5c5ca09a" -> "e246274fca627d48afccde010de949371f24b6c9974c48aa91044acd36654fa8" # (21 unchanged attributes hidden) # (1 unchanged block hidden) } Plan: 4 to add, 3 to change, 2 to destroy. Warning: Argument is deprecated with module.domain.cloudfoundry_service_instance.external_domain_instance, on /tmp/terraform-data-dir/modules/domain/domain/main.tf line 45, in resource "cloudfoundry_service_instance" "external_domain_instance": 45: recursive_delete = var.recursive_delete Since CF API v3, recursive delete is always done on the cloudcontroller side. This will be removed in future releases (and 5 more similar warnings elsewhere) ```

:white_check_mark: Plan applied in Deploy to Production Environment #89

github-actions[bot] commented 3 months ago

Terraform plan for staging

Plan: 4 to add, 2 to change, 2 to destroy. ```diff Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create !~ update in-place -/+ destroy and then create replacement <= read (data resources) Terraform will perform the following actions: # 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 = "1c9e7877-3c69-4fe5-8541-7bca3f845eb1" + port = "61443" + protocol = "tcp" + source_app = (known after apply) } } # module.staging.module.fac-file-scanner.cloudfoundry_app.scanner_app will be created + resource "cloudfoundry_app" "scanner_app" { + buildpack = "https://github.com/cloudfoundry/python-buildpack" + disk_quota = 512 + enable_ssh = (known after apply) + environment = (sensitive value) + health_check_http_endpoint = (known after apply) + health_check_invocation_timeout = (known after apply) + health_check_timeout = (known after apply) + health_check_type = "port" + id = (known after apply) + id_bg = (known after apply) + instances = 1 + memory = 512 + name = "fac-file-scanner" + path = "../shared/modules/scanner/scanner.zip" + ports = (known after apply) + space = "7bbe587a-e8ee-4e8c-b32f-86d0b0f1b807" + stack = (known after apply) + stopped = false + strategy = "rolling" + timeout = 180 + routes { + port = (known after apply) + route = (known after apply) } + service_binding { + service_instance = "ca75ab8e-2d85-438f-b657-84a1ef4216e5" } + service_binding { + service_instance = "f43724f8-a94f-4ee9-9234-72aac309afad" } + service_binding { + service_instance = "b4cf43f9-7ada-4c21-9d16-b340672e50ae" } + service_binding { + service_instance = "0f3f00c6-509d-4851-bfa0-df869c2b8321" } } # module.staging.module.fac-file-scanner.cloudfoundry_route.scanner_route will be created + resource "cloudfoundry_route" "scanner_route" { + domain = "26df58ef-0c0d-4997-b68b-8defb7b3998b" + endpoint = (known after apply) + hostname = "fac-file-scanner-staging" + id = (known after apply) + port = (known after apply) + space = "7bbe587a-e8ee-4e8c-b32f-86d0b0f1b807" } # module.staging.module.file_scanner_clamav.data.cloudfoundry_app.app will be read during apply # (config refers to values not yet known) <= data "cloudfoundry_app" "app" { + buildpack = (known after apply) + command = (known after apply) + disk_quota = (known after apply) + enable_ssh = (known after apply) + environment = (sensitive value) + health_check_http_endpoint = (known after apply) + health_check_timeout = (known after apply) + health_check_type = (known after apply) + id = (known after apply) + instances = (known after apply) + memory = (known after apply) + name = (known after apply) + name_or_id = "****************" + space = (known after apply) + stack = (known after apply) + state = (known after apply) } # module.staging.module.file_scanner_clamav.data.cloudfoundry_domain.internal will be read during apply # (depends on a resource or a module with changes pending) <= data "cloudfoundry_domain" "internal" { + domain = (known after apply) + id = (known after apply) + internal = (known after apply) + name = "apps.internal" + org = (known after apply) } # module.staging.module.file_scanner_clamav.data.cloudfoundry_space.space will be read during apply # (depends on a resource or a module with changes pending) <= data "cloudfoundry_space" "space" { + id = (known after apply) + name = "staging" + org = (known after apply) + org_name = "gsa-tts-oros-fac" + quota = (known after apply) } # module.staging.module.file_scanner_clamav.cloudfoundry_app.clamav_api must be replaced -/+ resource "cloudfoundry_app" "clamav_api" { + buildpack = (known after apply) !~ enable_ssh = true -> (known after apply) + health_check_http_endpoint = (known after apply) !~ health_check_invocation_timeout = 0 -> (known after apply) !~ health_check_timeout = 0 -> (known after apply) !~ id = "************************************" -> (known after apply) !~ id_bg = "************************************" -> (known after apply) - labels = {} -> null name = "fac-av-staging-fs" !~ ports = [] -> (known after apply) !~ space = "7bbe587a-e8ee-4e8c-b32f-86d0b0f1b807" # forces replacement -> (known after apply) # forces replacement + stack = (known after apply) # (9 unchanged attributes hidden) - routes { - port = 0 -> null - route = "d76ca78e-b31c-49ac-bac8-d0151c44ed82" -> null } + routes { + port = (known after apply) + route = (known after apply) } } # module.staging.module.file_scanner_clamav.cloudfoundry_network_policy.clamav_routing will be updated in-place !~ resource "cloudfoundry_network_policy" "clamav_routing" { id = "a79420b0-0919-281d-cee8-8818ccf9dede" + policy { + destination_app = (known after apply) + port = "61443" + protocol = "tcp" + source_app = (known after apply) } } # module.staging.module.file_scanner_clamav.cloudfoundry_route.clamav_route must be replaced -/+ resource "cloudfoundry_route" "clamav_route" { !~ domain = "26df58ef-0c0d-4997-b68b-8defb7b3998b" # forces replacement -> (known after apply) # forces replacement !~ endpoint = "fac-av-staging-fs.apps.internal" -> (known after apply) !~ id = "************************************" -> (known after apply) + port = (known after apply) !~ space = "7bbe587a-e8ee-4e8c-b32f-86d0b0f1b807" # forces replacement -> (known after apply) # forces replacement # (2 unchanged attributes hidden) } Plan: 4 to add, 2 to change, 2 to destroy. Warning: Argument is deprecated with module.staging.module.cg-logshipper.module.s3-logshipper-storage.cloudfoundry_service_instance.bucket, on /tmp/terraform-data-dir/modules/staging.cg-logshipper.s3-logshipper-storage/s3/main.tf line 14, in resource "cloudfoundry_service_instance" "bucket": 14: recursive_delete = var.recursive_delete Since CF API v3, recursive delete is always done on the cloudcontroller side. This will be removed in future releases (and 4 more similar warnings elsewhere) ```

:white_check_mark: Plan applied in Deploy to Staging Environment #217

github-actions[bot] commented 3 months ago

File Coverage Missing
All files 88% :white_check_mark:
api/serializers.py 88% :white_check_mark: 177-178 183 188
api/test_views.py 95% :white_check_mark: 103
api/uei.py 88% :white_check_mark: 87 118-119 163 167-168
api/views.py 98% :white_check_mark: 198-199 337-338
audit/forms.py 60% :x: 31-38 109-116
audit/intake_to_dissemination.py 88% :white_check_mark: 57-62 264 308-316
audit/mixins.py 96% :white_check_mark: 27
audit/test_commands.py 91% :white_check_mark:
audit/test_intakelib.py 88% :white_check_mark: 154-158
audit/test_manage_submission_access_view.py 98% :white_check_mark: 15 19
audit/test_mixins.py 90% :white_check_mark: 159-160 164-166 254-255 259-261
audit/test_validators.py 95% :white_check_mark: 439 443 611-612 851 858 865 872 1117-1118 1149-1150 1175-1180
audit/test_views.py 98% :white_check_mark: 132
audit/test_workbooks_should_fail.py 88% :white_check_mark: 58 87-88 92
audit/test_workbooks_should_pass.py 87% :white_check_mark: 59 74-76
audit/utils.py 86% :white_check_mark: 9 19 60-62 65
audit/validators.py 93% :white_check_mark: 138 190 272 412-413 428-429 512-513 615-619 624-628 644-653
audit/cross_validation/additional_ueis.py 93% :white_check_mark: 33
audit/cross_validation/check_award_ref_declaration.py 90% :white_check_mark:
audit/cross_validation/check_award_reference_uniqueness.py 93% :white_check_mark:
audit/cross_validation/check_certifying_contacts.py 87% :white_check_mark:
audit/cross_validation/check_findings_count_consistency.py 91% :white_check_mark:
audit/cross_validation/check_ref_number_in_cap.py 90% :white_check_mark:
audit/cross_validation/check_ref_number_in_findings_text.py 90% :white_check_mark:
audit/cross_validation/errors.py 78% :x: 30 77
audit/cross_validation/naming.py 93% :white_check_mark: 229
audit/cross_validation/submission_progress_check.py 91% :white_check_mark: 83 126 174 182-183
audit/cross_validation/tribal_data_sharing_consent.py 81% :x: 33 36 40
audit/cross_validation/validate_general_information.py 65% :x: 77 81-84 96 99
audit/fixtures/single_audit_checklist.py 55% :x: 147-184 230-239
audit/intakelib/exceptions.py 71% :x: 7-9 12
audit/intakelib/intermediate_representation.py 91% :white_check_mark: 27-28 73 91 129 200-203 212-213 283-284
audit/intakelib/mapping_audit_findings.py 97% :white_check_mark: 55
audit/intakelib/mapping_audit_findings_text.py 97% :white_check_mark: 54
audit/intakelib/mapping_federal_awards.py 93% :white_check_mark: 92
audit/intakelib/mapping_util.py 79% :x: 21 25 29 63 99 104-105 114-120 130 145 150
audit/intakelib/checks/check_all_unique_award_numbers.py 79% :x: 24
audit/intakelib/checks/check_cluster_names.py 75% :x: 20-25
audit/intakelib/checks/check_cluster_total.py 95% :white_check_mark: 99
audit/intakelib/checks/check_finding_reference_pattern.py 73% :x: 31 41-42
audit/intakelib/checks/check_has_all_the_named_ranges.py 95% :white_check_mark: 66
audit/intakelib/checks/check_is_a_workbook.py 69% :x: 20
audit/intakelib/checks/check_loan_balance_entries.py 83% :x: 28
audit/intakelib/checks/check_look_for_empty_rows.py 91% :white_check_mark: 18
audit/intakelib/checks/check_no_major_program_no_type.py 76% :x: 18 27
audit/intakelib/checks/check_no_repeat_findings.py 88% :white_check_mark: 21
audit/intakelib/checks/check_other_cluster_names.py 81% :x: 23 33
audit/intakelib/checks/check_passthrough_name_when_no_direct.py 83% :x: 11 49 58
audit/intakelib/checks/check_sequential_award_numbers.py 82% :x: 25 35
audit/intakelib/checks/check_start_and_end_rows_of_all_columns_are_same.py 89% :white_check_mark: 14
audit/intakelib/checks/check_state_cluster_names.py 81% :x: 23 33
audit/intakelib/checks/check_version_number.py 73% :x: 30 40-41
audit/intakelib/checks/runners.py 97% :white_check_mark: 157
audit/intakelib/common/util.py 90% :white_check_mark: 22 39
audit/intakelib/transforms/xform_rename_additional_notes_sheet.py 81% :x: 14
audit/management/commands/load_fixtures.py 46% :x: 39-45
audit/models/models.py 85% :white_check_mark: 58 60 65 67 209 215 227 239-242 260 437 455-456 464 486 584-585 589 597 606 612
audit/views/audit_info_form_view.py 27% :x: 25-74 77-117 120-137
audit/views/manage_submission.py 86% :white_check_mark: 73-80
audit/views/manage_submission_access.py 98% :white_check_mark: 113-114
audit/views/pre_dissemination_download_view.py 78% :x: 15-16 21-22 29-39
audit/views/submission_progress_view.py 89% :white_check_mark: 117 182-183
audit/views/tribal_data_consent.py 34% :x: 23-41 44-79
audit/views/unlock_after_certification.py 57% :x: 28-51 73-87
audit/views/upload_report_view.py 26% :x: 32-35 44 91-117 120-170 178-209
audit/views/views.py 53% :x: 74 81-100 123-124 198-199 220-230 257 268-269 280-281 283-287 329-342 345-359 364-377 394-400 405-425 452-456 461-490 533-537 542-562 589-593 598-627 670-674 679-691 694-704 709-721 754-768
census_historical_migration/change_record.py 98% :white_check_mark: 30
census_historical_migration/test_federal_awards_xforms.py 99% :white_check_mark: 214-215
census_historical_migration/sac_general_lib/audit_information.py 92% :white_check_mark: 24 78
census_historical_migration/sac_general_lib/cognizant_oversight.py 68% :x: 11
census_historical_migration/sac_general_lib/general_information.py 91% :white_check_mark: 166-167 177-178 186-187 195-200 250 319
census_historical_migration/sac_general_lib/sac_creator.py 90% :white_check_mark: 34
census_historical_migration/sac_general_lib/utils.py 83% :x: 33 60-69
census_historical_migration/transforms/xform_remove_hyphen_and_pad_zip.py 92% :white_check_mark: 18
census_historical_migration/transforms/xform_retrieve_uei.py 67% :x: 10
census_historical_migration/transforms/xform_string_to_bool.py 87% :white_check_mark: 17
census_historical_migration/workbooklib/additional_eins.py 84% :x: 58-60 67-77
census_historical_migration/workbooklib/additional_ueis.py 77% :x: 27-29 36-46
census_historical_migration/workbooklib/corrective_action_plan.py 83% :x: 47-49 91-108
census_historical_migration/workbooklib/excel_creation_utils.py 65% :x: 99 108-113 118-125 129-147 160-164 178-181
census_historical_migration/workbooklib/federal_awards.py 76% :x: 129-132 364 405-413 423-448 676-777
census_historical_migration/workbooklib/findings.py 47% :x: 75-80 148-168 173-193 210-212 219-241
census_historical_migration/workbooklib/findings_text.py 83% :x: 47-48 90-108
census_historical_migration/workbooklib/notes_to_sefa.py 61% :x: 34-38 101-102 104-105 107-108 135-141 149-157 165-167 231-273
census_historical_migration/workbooklib/secondary_auditors.py 90% :white_check_mark: 128-130 162-180
config/error_handlers.py 94% :white_check_mark: 22
config/test_settings.py 92% :white_check_mark: 33-34 49-50
config/urls.py 72% :x: 88
dissemination/file_downloads.py 81% :x: 43-61 91-93
dissemination/forms.py 87% :white_check_mark: 135 144 255
dissemination/search.py 61% :x: 101 108 110 113-121
dissemination/summary_reports.py 78% :x: 274 300-302 306-310 421 438 459 511-575 603 638-640 664-672
dissemination/test_search.py 93% :white_check_mark: 51-66 473-474 579-596 608-632 644-669 677-693
dissemination/test_summary_reports.py 98% :white_check_mark:
dissemination/views.py 76% :x: 134 140-142 159-223 266 296 298 332 383 385 387 465-470
dissemination/migrations/0002_general_fac_accepted_date.py 47% :x: 10-12
dissemination/searchlib/search_alns.py 37% :x: 44-58 78-110 115-177 184-187
dissemination/searchlib/search_direct_funding.py 86% :white_check_mark: 21-22
dissemination/searchlib/search_findings.py 76% :x: 18-24 34 36 38
dissemination/searchlib/search_general.py 96% :white_check_mark: 138
dissemination/searchlib/search_passthrough_name.py 35% :x: 21-31
djangooidc/backends.py 78% :x: 32 57-63
djangooidc/exceptions.py 66% :x: 19 21 23 28
djangooidc/oidc.py 16% :x: 32-35 45-51 64-70 92-149 153-199 203-226 230-275 280-281 286
djangooidc/views.py 81% :x: 22 43 109-110 117
djangooidc/tests/common.py 97% :white_check_mark:
report_submission/forms.py 92% :white_check_mark: 35
report_submission/test_views.py 98% :white_check_mark: 796
report_submission/views.py 77% :x: 90 235 259-260 265-266 306-476 479-489 548 584-586 594-595 598-600
report_submission/templatetags/get_attr.py 76% :x: 8 11-14 18
support/admin.py 88% :white_check_mark: 76 79 84 91-97 100-102
support/cog_over.py 91% :white_check_mark: 30-33 93 145
support/test_admin_api.py 81% :x: 23 147-148 237-238 317-318
support/test_cog_over.py 98% :white_check_mark: 134-135 224
support/management/commands/seed_cog_baseline.py 98% :white_check_mark: 20-21
support/models/cog_over.py 89% :white_check_mark: 103-104
tools/update_program_data.py 89% :white_check_mark: 96
users/admin.py 99% :white_check_mark: 27
users/auth.py 96% :white_check_mark: 58-59
users/models.py 96% :white_check_mark: 18 74-75
users/fixtures/user_fixtures.py 91% :white_check_mark:

Minimum allowed coverage is 85%

Generated by :monkey: cobertura-action against b4b111fe7a28b5f422d110ca5fb9442239a2d2f9