qontract-reconcile 0.10.2.dev303__py3-none-any.whl → 0.10.2.dev314__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. {qontract_reconcile-0.10.2.dev303.dist-info → qontract_reconcile-0.10.2.dev314.dist-info}/METADATA +1 -1
  2. {qontract_reconcile-0.10.2.dev303.dist-info → qontract_reconcile-0.10.2.dev314.dist-info}/RECORD +30 -30
  3. reconcile/gql_definitions/common/aws_vpc_requests.py +4 -1
  4. reconcile/gql_definitions/fragments/aws_vpc_request.py +3 -0
  5. reconcile/gql_definitions/introspection.json +36 -12
  6. reconcile/gql_definitions/status_board/status_board.py +0 -20
  7. reconcile/prometheus_rules_tester/integration.py +1 -1
  8. reconcile/rhidp/common.py +2 -0
  9. reconcile/status_board.py +9 -133
  10. reconcile/terraform_tgw_attachments.py +1 -1
  11. reconcile/terraform_users.py +3 -1
  12. reconcile/terraform_vpc_peerings.py +1 -1
  13. reconcile/terraform_vpc_resources/integration.py +19 -1
  14. reconcile/typed_queries/status_board.py +8 -43
  15. reconcile/utils/ocm/base.py +10 -0
  16. reconcile/utils/ocm/status_board.py +0 -13
  17. reconcile/utils/openssl.py +2 -2
  18. reconcile/utils/repo_owners.py +21 -29
  19. reconcile/utils/runtime/meta.py +2 -1
  20. reconcile/utils/sharding.py +1 -1
  21. reconcile/utils/sqs_gateway.py +14 -10
  22. reconcile/utils/structs.py +3 -3
  23. reconcile/utils/terraform_client.py +27 -25
  24. reconcile/utils/terrascript_aws_client.py +487 -372
  25. reconcile/utils/throughput.py +1 -1
  26. reconcile/vpc_peerings_validator.py +2 -2
  27. tools/qontract_cli.py +1 -1
  28. tools/sre_checkpoints/util.py +5 -3
  29. {qontract_reconcile-0.10.2.dev303.dist-info → qontract_reconcile-0.10.2.dev314.dist-info}/WHEEL +0 -0
  30. {qontract_reconcile-0.10.2.dev303.dist-info → qontract_reconcile-0.10.2.dev314.dist-info}/entry_points.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qontract-reconcile
3
- Version: 0.10.2.dev303
3
+ Version: 0.10.2.dev314
4
4
  Summary: Collection of tools to reconcile services with their desired state as defined in the app-interface DB.
5
5
  Project-URL: homepage, https://github.com/app-sre/qontract-reconcile
6
6
  Project-URL: repository, https://github.com/app-sre/qontract-reconcile
@@ -102,18 +102,18 @@ reconcile/slack_base.py,sha256=I-msunWxfgu5bSwXYulGbtLjxUB_tRmTCAUCU-3nabI,3484
102
102
  reconcile/slack_usergroups.py,sha256=3uQVZK0WeZfvE1g7xQwciKCcC3LifDa3NuE1ygQ0cRk,30174
103
103
  reconcile/sql_query.py,sha256=FVwANLPWjkUHqN2OXJ-vnX5hqqcO6rTdyLEO4HkmAgM,26397
104
104
  reconcile/status.py,sha256=cY4IJFXemhxptRJqR4qaaOWqei9e4jgLXuVSGajMsjg,544
105
- reconcile/status_board.py,sha256=Wt8aqCmhTbKxRa9GUj5U_aoqif18z9XL5hRK3zy8too,20091
105
+ reconcile/status_board.py,sha256=0vTQzxrFPTmJtzNOC-iaJG_BmXbDe2vgBUe0LMUyfDE,15313
106
106
  reconcile/terraform_aws_route53.py,sha256=CWp5bE3ddUrJGNNvG8YmkSPyNHCWtOc1GEDVLnbOY9Q,10043
107
107
  reconcile/terraform_cloudflare_dns.py,sha256=0Eu46o_BBEEq-B-CCvKop9VTbwrvliCKGSS9gLBSJE4,13456
108
108
  reconcile/terraform_cloudflare_resources.py,sha256=tK-BxQeNdZjf59deKd51Roz868e7UXe52XvcHsffJK0,14982
109
109
  reconcile/terraform_cloudflare_users.py,sha256=mlSYNktRetBvw8mi2TUSdKSZw0aQ821VeU6OQ1WcV3U,13516
110
110
  reconcile/terraform_repo.py,sha256=vVJfaCV9775FGMMTHfoobaPetSlJMiQ4arNudL2pvh8,15607
111
111
  reconcile/terraform_resources.py,sha256=AXO3_Ehcg3I6ao7qiKzXC4Mk6BqwMoNooXU50c2zSTA,19555
112
- reconcile/terraform_tgw_attachments.py,sha256=uls0GlTVeSMTZtUGXpqDW8ovKqXV-6036AhmxYOmFbM,18923
113
- reconcile/terraform_users.py,sha256=F-OgRfVV6_MoSvL0oZBtbFtNVS4V48baOWN157IoGEE,10321
114
- reconcile/terraform_vpc_peerings.py,sha256=v1GPiluuPLwpQWrp1j5xT9_QuQw07F_Lj2uL3RX9PZE,27788
112
+ reconcile/terraform_tgw_attachments.py,sha256=P2HivCjT5AlyODy-fu1qAK5355nDEArE8E4NQlIlF7U,18933
113
+ reconcile/terraform_users.py,sha256=lzLco8t0_XQ4gWkZdvfOJIckDQpDUqTKqxGcT2P3W_k,10334
114
+ reconcile/terraform_vpc_peerings.py,sha256=rMotDHy3Fd5QTxrOGjCJ3f2vICk3fmxrKYVCIU8p_y4,27787
115
115
  reconcile/vault_replication.py,sha256=trtbB-jDwca822J5I_s0zlwFtlyaiAtqgbPeqp7Cggc,17714
116
- reconcile/vpc_peerings_validator.py,sha256=lZyJP6zaUbp1tqiwJ6HWDu1g0-6aU8L37eMY3U_179g,7085
116
+ reconcile/vpc_peerings_validator.py,sha256=_77eu6DSy6VjTE5mhV-sOIVOGIiBvDEEDCdwwRdrgVQ,7101
117
117
  reconcile/aus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
118
  reconcile/aus/advanced_upgrade_service.py,sha256=Cx-WthkvlcX58PrnnNeo_bQG17Xw3BGNu3f53Jc1VoA,23985
119
119
  reconcile/aus/aus_label_source.py,sha256=o0S2f0qwcII_8nzhHZhRQ83gEZ1DrSXyO4xzSwLebuU,4382
@@ -213,7 +213,7 @@ reconcile/glitchtip_project_alerts/integration.py,sha256=d3PMy-mQSbSZdIGAVaZCA2U
213
213
  reconcile/glitchtip_project_dsn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
214
214
  reconcile/glitchtip_project_dsn/integration.py,sha256=3GgcqUM6hWhLpo9Yx5Xr9vrdexF-WNevVCNL9bJ0Upc,8162
215
215
  reconcile/gql_definitions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
216
- reconcile/gql_definitions/introspection.json,sha256=jJN4kUVnrBkb39pHZ0lwt_0ZuIyrhjyzsL17pQuGwXo,2358826
216
+ reconcile/gql_definitions/introspection.json,sha256=iXV6SKgNQpvwFvnRTqJsXVPN70Pv4pFTrbNQ-nADp6Y,2359857
217
217
  reconcile/gql_definitions/acs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
218
  reconcile/gql_definitions/acs/acs_instances.py,sha256=L91WW9LbhJbBSrECqShQpFtjoBOsmNIYLRpMbx1io5o,2181
219
219
  reconcile/gql_definitions/acs/acs_policies.py,sha256=Ygpfl2-VkYLSlJvHgp_dJBfb66K_Rwfdfpsa18w1v1s,4338
@@ -258,7 +258,7 @@ reconcile/gql_definitions/common/app_interface_state_settings.py,sha256=VXIK0Hmy
258
258
  reconcile/gql_definitions/common/app_interface_vault_settings.py,sha256=w8quvdG0cSq71ZyJokPPp7MyMpoDb6-HLQ3o9JHVGRQ,1771
259
259
  reconcile/gql_definitions/common/app_quay_repos_escalation_policies.py,sha256=ckdoGse7O5uAWdZdNinkWicA2EflUb5pe8jWEBtflE8,3236
260
260
  reconcile/gql_definitions/common/apps.py,sha256=lC7uZjyHAvJXhCDPJJ-dQJInBJkUCNZoe129XMa67wo,1868
261
- reconcile/gql_definitions/common/aws_vpc_requests.py,sha256=2lpyy-QSfHPSTvV_zbnqzqUoFzVNl-CJDmoqd_zVSX4,2366
261
+ reconcile/gql_definitions/common/aws_vpc_requests.py,sha256=_KhmxOfUhSWdUMGxFzrwlIq5mZHzNqvDBZv5Hgku8mU,2423
262
262
  reconcile/gql_definitions/common/aws_vpcs.py,sha256=Dss9dQ3xagnz3Ltg1e9mtG2PAmQGBbUzKCmmzvuN28s,1892
263
263
  reconcile/gql_definitions/common/clusters.py,sha256=j646LA-vlHbA131OrCF13g8rPPrBPWL3PLrvqWLZs58,21979
264
264
  reconcile/gql_definitions/common/clusters_minimal.py,sha256=JYrJV_aStmryiiGKyiXhj47qpF_8KilCqy-d9CofBCo,4635
@@ -318,7 +318,7 @@ reconcile/gql_definitions/fragments/aws_account_managed.py,sha256=V_9pH0wVza2sPy
318
318
  reconcile/gql_definitions/fragments/aws_account_sso.py,sha256=ITR3PLz4Iq1SiWAoYGWPDuHJnAmTyZ0QQqs2Zsi8pxA,979
319
319
  reconcile/gql_definitions/fragments/aws_infra_management_account.py,sha256=uAmALVRF2gBM3p_Dmez_ew6KVAtetamwOPkRIPZAlGc,1254
320
320
  reconcile/gql_definitions/fragments/aws_vpc.py,sha256=T2egTwi2Rb0IRBBmsyag8xKpu_m6GbIAy80fhZNZwk8,1434
321
- reconcile/gql_definitions/fragments/aws_vpc_request.py,sha256=o0qUsPrFXs8GAbtgMXQmIJxc1mw5skSIzCcidE857g8,2460
321
+ reconcile/gql_definitions/fragments/aws_vpc_request.py,sha256=RJRNicxHzwrIqPUSjDvtIt9JGu9lov4n3xOVRx8AlVY,2682
322
322
  reconcile/gql_definitions/fragments/aws_vpc_request_subnet.py,sha256=qaTFT8cGzEslw51nUeb45Nfnv6kFxUm4CWrRR3xfBvA,760
323
323
  reconcile/gql_definitions/fragments/container_image_mirror.py,sha256=qyfQlnKUCzFEPgUJ9VGmDYFmiGHR7VZ_YJNd4KeoolM,968
324
324
  reconcile/gql_definitions/fragments/deploy_resources.py,sha256=0u3xYqL5NpMf149BJLfPhHqAOWu06aLULdNk_2Mulxg,1089
@@ -405,7 +405,7 @@ reconcile/gql_definitions/slack_usergroups/users.py,sha256=0KFLYHYXL_bGIKf5LAJSY
405
405
  reconcile/gql_definitions/slo_documents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
406
406
  reconcile/gql_definitions/slo_documents/slo_documents.py,sha256=pOrm9NXAonlo6Lxq6NkD3mHkZ53ZeBnZOZMkDvOEwds,3746
407
407
  reconcile/gql_definitions/status_board/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
408
- reconcile/gql_definitions/status_board/status_board.py,sha256=qm7TkvvBvkMvf_9SQ50wz8ke8LEvwZYQjMkUDrN-BV0,5370
408
+ reconcile/gql_definitions/status_board/status_board.py,sha256=BYq-1g_-AjNKHIKmY2rQT8l3ql4Mcwa_CIxN_FS4F6M,4690
409
409
  reconcile/gql_definitions/statuspage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
410
410
  reconcile/gql_definitions/statuspage/statuspages.py,sha256=CTRzjiR9k41LqlkgyoNHwC2JERsoD_Run_aK7jw_Ono,5299
411
411
  reconcile/gql_definitions/templating/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -456,9 +456,9 @@ reconcile/oum/models.py,sha256=teH0bJTCMTzbdbYD9CU4yXDuMr34ceLcM0KuoIPU8gI,1712
456
456
  reconcile/oum/providers.py,sha256=lfG6d7YV-A4Lte45EMv1Gx4A346piJ_jAkrU5AHJZ_g,1834
457
457
  reconcile/oum/standalone.py,sha256=EN5y1S-3DwUZYzSRqRMtf63mI2slvBHKiU9zOTjYvWM,7334
458
458
  reconcile/prometheus_rules_tester/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
459
- reconcile/prometheus_rules_tester/integration.py,sha256=TWsVBUeRLH3lUCf47sWWVgq4Rpkrq0i_eu2vkqQniP0,9619
459
+ reconcile/prometheus_rules_tester/integration.py,sha256=qa1OrD1gCR1PUrHNFc2AL3J01SdBYfMOX8fHcOUh1T8,9618
460
460
  reconcile/rhidp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
461
- reconcile/rhidp/common.py,sha256=M5UP7_tNWh2LEJ-fMp1SnrNECGHJ0z873tANJK1dpWc,6889
461
+ reconcile/rhidp/common.py,sha256=MIOzjObdvDtZuLvrYBp2GhvPfRp6p-Lohbr_hgEsNYM,7025
462
462
  reconcile/rhidp/metrics.py,sha256=Yp0GtpjhieEdru0qkG3osBTJiKUzg6CAjwPoFTQDnCg,417
463
463
  reconcile/rhidp/ocm_oidc_idp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
464
464
  reconcile/rhidp/ocm_oidc_idp/base.py,sha256=gcrQEmHQ2GF2MtSxBcxTRsK-I19rsfIn9NZvyx8ZbyQ,7133
@@ -518,7 +518,7 @@ reconcile/terraform_init/integration.py,sha256=pPi4YAjbEE8vDaaRizGf-d-PewqqSJmjc
518
518
  reconcile/terraform_init/merge_request.py,sha256=3CYtgSd7Q9zjKg4wsDz437EPCRfGeZZ8fZ0Y-ChKXJY,1475
519
519
  reconcile/terraform_init/merge_request_manager.py,sha256=TQmtHq4DH-xgyYvuRyGu7VEgjPU2Yjj-uexIy-L7i88,3098
520
520
  reconcile/terraform_vpc_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
521
- reconcile/terraform_vpc_resources/integration.py,sha256=8pmcr0YTrW2QynenMCfaaXT4SV8SbH_eXx1OCyh0anA,8181
521
+ reconcile/terraform_vpc_resources/integration.py,sha256=Gn98Gt1YqghnkxX2Bs6Q4GAT2H8KhRJsLFf-NnALs8o,8995
522
522
  reconcile/terraform_vpc_resources/merge_request.py,sha256=loRymUigCIvaaT0s_NzktZchh-DGRQnCICdBSCAcFPY,1503
523
523
  reconcile/terraform_vpc_resources/merge_request_manager.py,sha256=6jfwgbqXEFQlgLM6zmModpOkQX8wqddpoE0pZJL1Acc,3256
524
524
  reconcile/typed_queries/__init__.py,sha256=rRk4CyslLsBr4vAh1pIPgt6s3P4R1M9NSEPLnyQgBpk,61
@@ -563,7 +563,7 @@ reconcile/typed_queries/saas_files.py,sha256=SOE36sWPBcuaRmEaNxXCQZMQdJiUZX8_A92
563
563
  reconcile/typed_queries/slack.py,sha256=r30lspctHloyygPn8_DVybxPwUWwiBpvBRRXiTVcQYk,251
564
564
  reconcile/typed_queries/slo_documents.py,sha256=YMdox_-lBRqrdxamPhdnUlRTY_Ro35ptsupq7OaynUQ,362
565
565
  reconcile/typed_queries/smtp.py,sha256=aSLglYa5bHKmlGwKkxq2RZqyMWuAf0a4S_mOuhDa084,542
566
- reconcile/typed_queries/status_board.py,sha256=ghu3jRJVzEPm5qHQUJWSCGLUdQzBcrtxU4mEeCCdXjo,3091
566
+ reconcile/typed_queries/status_board.py,sha256=XB8kn3qh2cIqGTPCImS5eUyZOaolvSNfWss5kUkARYg,1826
567
567
  reconcile/typed_queries/tekton_pipeline_providers.py,sha256=LtoSnSRkuckYsXIU64L1Mf-o3iuUjaN-5O-ARzIROZA,515
568
568
  reconcile/typed_queries/terraform_namespaces.py,sha256=4H9WE90jN_BVYBAt1DxJITS4vkL-vykbXZIS1H4EKNM,413
569
569
  reconcile/typed_queries/unleash.py,sha256=7HDc4owF044xM9Thx4WsXV7DZgETxJjy4lbpwmqz1vU,282
@@ -633,7 +633,7 @@ reconcile/utils/oc_filters.py,sha256=Tz3OwtbUaYKmxENFls5CtPVzkZDeFXknw53dJe-wbT8
633
633
  reconcile/utils/oc_map.py,sha256=ougQ-Wlsa8ymoE_lPQ7g2LlpsUOsHVeRCLYW_6fjeWU,8976
634
634
  reconcile/utils/ocm_base_client.py,sha256=t5kxhklEqOpenXPkXiwQIk8d3D7hIUndBm5qGusS0bc,6681
635
635
  reconcile/utils/openshift_resource.py,sha256=Nbte4oCzxL27Hrt2vNs2ybV3X3pV4vGJEnErEsiA6UY,24810
636
- reconcile/utils/openssl.py,sha256=QVvhzhpChq_4Daf_5wE1qeZJr4thg3DDjJPn4bOPD4E,365
636
+ reconcile/utils/openssl.py,sha256=qdEdSmNXDgx_hhj2psEea6O12cmn3pb4GNhQJtI5l_E,399
637
637
  reconcile/utils/output.py,sha256=wvsyf8NsFTaFHNkc8to75ta8f474Y4TMO4cHyAHEePk,2209
638
638
  reconcile/utils/pagerduty_api.py,sha256=6Ae-KjcmA6Bf328UhTdQ2VwYjh4uFIW1NdZW6PUgT-c,7607
639
639
  reconcile/utils/parse_dhms_duration.py,sha256=TONpLnec5gHeF7k815YNJpQyDjXhkxZIcv9s8ffbTSY,1840
@@ -644,23 +644,23 @@ reconcile/utils/promtool.py,sha256=YnqwMAzsQVGuBZ1j9zy3UcVPFQVJgBMLzQkxhK_KFkU,3
644
644
  reconcile/utils/quay_api.py,sha256=ZWjfjzFnIsbKRDcdAnP9tWQezclf53I7VWZJ0gbF2kE,8260
645
645
  reconcile/utils/quay_mirror.py,sha256=dpWCNv5lITwIk6Q9RkmqaQKHNk_JPy27UQEribJ7E-U,1324
646
646
  reconcile/utils/raw_github_api.py,sha256=2WKtE8ABYYB9UGOAh9N_kLkksBWL3320Z2_scteZddI,2805
647
- reconcile/utils/repo_owners.py,sha256=P0QX6F0oB8wYA08yiyzhYUiBtU57iIK_PsxbzKENbKM,6571
647
+ reconcile/utils/repo_owners.py,sha256=c6Z-U5TkiRPvuhr_zYWvZG9HZGzoT-l-d2PJ33lGflE,6507
648
648
  reconcile/utils/rest_api_base.py,sha256=MT7tp6CQO2S5aKfVOzw_hipWg7wAGoOqkm4qurI1hEU,4342
649
649
  reconcile/utils/rhcsv2_certs.py,sha256=ZnlUlEI2k6UrljGarkm1ey0znMlQtjeZB7VEfCH1A64,2545
650
650
  reconcile/utils/ruamel.py,sha256=FzL4_L0FnMOUZmgThrZSMJs5MTdXwiy-E9MZWfk8bh8,397
651
651
  reconcile/utils/secret_reader.py,sha256=vCU-g7q1Fbd5qOUMn7TAeE5yWhlmXme0OzZgyxk7tkY,10306
652
652
  reconcile/utils/semver_helper.py,sha256=-WfPOMSA2v1h7hT3PwVf-Htg7wOsoKlQC1JdmDX2Ars,1268
653
- reconcile/utils/sharding.py,sha256=CNyU9mkSbt7FRANEhOOZpWJl7L-YliHhaxr898gmX8c,573
653
+ reconcile/utils/sharding.py,sha256=_0AsDQ_fi9lYjI8MJABP1FaMjJQ3L93xBUDWx5e3DDw,586
654
654
  reconcile/utils/slack_api.py,sha256=fcqdi9cKRpibT5FlaeOY5iBQ3Dnni55u1Va9HcQC3Ls,17863
655
655
  reconcile/utils/slo_document_manager.py,sha256=YqiCYA_kRq5_oNc_VTYipjbph4k0XHDcjwbbcdaW1ag,9563
656
656
  reconcile/utils/smtp_client.py,sha256=0xefB4I9E5eBB-FlxFJYjvz3Kvuqi_K3Ma_Wk0NAQKM,2779
657
- reconcile/utils/sqs_gateway.py,sha256=XNIf3PY4UCPNufP2Ul0UJj3fKlt5larBba-VTT-41Fg,2265
657
+ reconcile/utils/sqs_gateway.py,sha256=x0dGIJeuMTsIKhHyosVPqi_POX0IJ9OWVqAHRa55dxI,2551
658
658
  reconcile/utils/state.py,sha256=vCHYIfrWLfPyIWEHSaADWlc4OqhwcOiqM3Egqvw-lfo,16372
659
- reconcile/utils/structs.py,sha256=LcbLEg8WxfRqM6nW7NhcWN0YeqF7SQzxOgntmLs1SgY,352
660
- reconcile/utils/terraform_client.py,sha256=GoLbfs4d4YItNCeV3NZnrth4sD8ziNYgY2IszruRDpg,37303
661
- reconcile/utils/terrascript_aws_client.py,sha256=o5-K61gEbQN48IRfdHVDfgt0sW-sYN9WYho4ZZ7j7io,295917
659
+ reconcile/utils/structs.py,sha256=P57POzpEntu8ZoZDnsOdni9qUuBDWknmw0iinznxXoY,386
660
+ reconcile/utils/terraform_client.py,sha256=zF_F31WzDA3fjNPj_Jl6mQJMfI3wEQ0gsurtrjqh4Ds,37684
661
+ reconcile/utils/terrascript_aws_client.py,sha256=KxraVMhv_RcolHthAxucQeb3x0zFD2CCk3gVMjQ_ero,302090
662
662
  reconcile/utils/three_way_diff_strategy.py,sha256=oQcHXd9LVhirJfoaOBoHUYuZVGfyL2voKr6KVI34zZE,4833
663
- reconcile/utils/throughput.py,sha256=iP4UWAe2LVhDo69mPPmgo9nQ7RxHD6_GS8MZe-aSiuM,344
663
+ reconcile/utils/throughput.py,sha256=KNDCVsCLSp89V4pO3sEUd7bJUuh6gNfsxsc_18rEv_Y,357
664
664
  reconcile/utils/vault.py,sha256=6V15LByFghp-U3k0N4lum6V7qt2EAlRfcAxjy5e-FAU,15146
665
665
  reconcile/utils/vcs.py,sha256=2bDk8oYnCP7QMITwOG63LUTzDgqQPEao6trF8gQKtmI,10294
666
666
  reconcile/utils/acs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -721,7 +721,7 @@ reconcile/utils/mr/update_access_report_base.py,sha256=LOXTIonpfxXrvZI9nPqkszW3O
721
721
  reconcile/utils/mr/user_maintenance.py,sha256=OC9-3YkpXsYKZGsdOdx-NLq7AkjgrhDR2JL7hov7BV8,5669
722
722
  reconcile/utils/ocm/__init__.py,sha256=Y-bp8GomMpyCo0tFW6kJ78-ZG1UIupYRtBzbMWU0kwM,798
723
723
  reconcile/utils/ocm/addons.py,sha256=_LDdJ-gapM3s5exKlIUt-MlXZTAUoHezbYBU0QmvfWQ,7335
724
- reconcile/utils/ocm/base.py,sha256=fMzojq4aR_MWASp7QUWoyPOOgjqJoc_15uiJ3G7uRbw,14618
724
+ reconcile/utils/ocm/base.py,sha256=sy8mD9srj5dJjRIk8u8RRmj_D7h4MnpxtZwm4S4BWf8,14883
725
725
  reconcile/utils/ocm/cluster_groups.py,sha256=F8oqVqN_4QUnGL0K61zZhoYIzJeP57EcmZpwmoV0mr4,1751
726
726
  reconcile/utils/ocm/clusters.py,sha256=ev-sT247P3qFs9wzxOs_xFj1vKGpdRYm4INgxTR3Fb0,7792
727
727
  reconcile/utils/ocm/identity_providers.py,sha256=dKed09N8iWmn39tI_MpwgVe47x23eLsknGbjMUxtwr4,2175
@@ -733,7 +733,7 @@ reconcile/utils/ocm/products.py,sha256=UtWpkAvSMCxPOulEB7aV5ZY8ej_rmErlE_HVdm9Gn
733
733
  reconcile/utils/ocm/search_filters.py,sha256=09p4Wq1d1HGrDiinf1dmLJ46VtFhkkRCOL4V-N-zwjY,14808
734
734
  reconcile/utils/ocm/service_log.py,sha256=RG1f0MMn6joKaRCAm2xveSJCavdOPP1BVo9FXecDxaI,2018
735
735
  reconcile/utils/ocm/sre_capability_labels.py,sha256=nqh0imrYczNeeeC7ZNX3pEwuAIVkKLTKZf0YHSPZYpE,1537
736
- reconcile/utils/ocm/status_board.py,sha256=1T9iD3DxWiVlY_8sK94twH01j_WrUbh-A2FC9dpXYPE,4548
736
+ reconcile/utils/ocm/status_board.py,sha256=8DYeIrOsW8Bh5PCtKdvGGpaxb9Wugcc5rLxZJ8Z7b_s,4181
737
737
  reconcile/utils/ocm/subscriptions.py,sha256=hehKXsDXIhnhqvWOuiYvx6y2FGq3zt0APGYj7WiBIdI,2765
738
738
  reconcile/utils/ocm/syncsets.py,sha256=9IQm1l5BodOVZa2OFbQmow3afmh4nXe5pn-CCJ5LxTI,1169
739
739
  reconcile/utils/ocm/upgrades.py,sha256=W8-sLgETI_418ftY9vBlXswyjx_KdhJTJO9cwBL3hfY,4162
@@ -744,7 +744,7 @@ reconcile/utils/runtime/__init__.py,sha256=sfk92MGfsBh9tKYHl_FH17NdEsrGBwgDFTb7K
744
744
  reconcile/utils/runtime/desired_state_diff.py,sha256=Bw4zqel-klXCMZGqD1gyh8zkFq4h5qzv8rJn7K6WTXs,8132
745
745
  reconcile/utils/runtime/environment.py,sha256=h-CFKLK1qRl_gfOVIUwjqVNOmukIPzUG7AiqpJGrjHA,2038
746
746
  reconcile/utils/runtime/integration.py,sha256=I74KlnsNKd7Hf8rBRug6blXkGKidSDQEjqHRLAfgTXI,10973
747
- reconcile/utils/runtime/meta.py,sha256=dWdKS9eHVuowFkTK4lgXJ723vS1y9giOMzePUKnHnDI,214
747
+ reconcile/utils/runtime/meta.py,sha256=M_EOxrb0KhQA4TwpHekbog2jOZqaBPVTIijXyRuMjn0,255
748
748
  reconcile/utils/runtime/runner.py,sha256=OGT57aCwspAjdjGXtpbQnTmJeeWnRh9a2N73TLp4jnM,7880
749
749
  reconcile/utils/runtime/sharding.py,sha256=r0ieUtNed7NvknSw6qQrCkKpVXE1shuHGnfFcnpA_k4,16142
750
750
  reconcile/utils/saasherder/__init__.py,sha256=3U8plqMAPRE1kjwZ5YnIsYsggTf4_gS7flRUEuXVBAs,343
@@ -770,7 +770,7 @@ tools/app_sre_tekton_access_reporter.py,sha256=5qmkevJdlb2j_lpGC5Pu1Pmo0eomX5Zxz
770
770
  tools/app_sre_tekton_access_revalidation.py,sha256=vwL1o_j7oSTOhrHNH1znpgjA2LHGzb8yc5iG3aaY4m0,2684
771
771
  tools/glitchtip_access_reporter.py,sha256=wnaiDGW4MkYONV_erltnJ6nGkEj0kQrAiv04NNnOS0k,2859
772
772
  tools/glitchtip_access_revalidation.py,sha256=jjeLO53LTbz_LfQw3G2Cs8lVLO_6xqU39BYyTH3cEPE,2764
773
- tools/qontract_cli.py,sha256=oOyvoY5-9UzLZbl7iUhENVs8DSH4bORbG90Dxww8GrQ,159925
773
+ tools/qontract_cli.py,sha256=KyK2iCSh68cPolZygQtYb18ZtjIUlFw4aZT9D5p91kw,159892
774
774
  tools/template_validation.py,sha256=Xn9X4sGFznx-rvBDnq9Kq16rfET8V3bqH1EwavsGBac,3335
775
775
  tools/cli_commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
776
776
  tools/cli_commands/container_images_report.py,sha256=8mAjCS6XR0yD7k0mfiVBlt6xbYU47q_ftdYNi5o5VKE,5566
@@ -795,8 +795,8 @@ tools/saas_metrics_exporter/commit_distance/metrics.py,sha256=5-y6n-sGACAS3eJ5nd
795
795
  tools/saas_promotion_state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
796
796
  tools/saas_promotion_state/saas_promotion_state.py,sha256=uQv2QJAmUXP1g2GPIH30WTlvL9soY6m9lefpZEVDM5w,3965
797
797
  tools/sre_checkpoints/__init__.py,sha256=CDaDaywJnmRCLyl_NCcvxi-Zc0hTi_3OdwKiFOyS39I,145
798
- tools/sre_checkpoints/util.py,sha256=zEDbGr18ZeHNQwW8pUsr2JRjuXIPz--WAGJxZo9sv_Y,894
799
- qontract_reconcile-0.10.2.dev303.dist-info/METADATA,sha256=-71qdSLUInk-owzDEw5ShwjQ96x3W206KgjWZ2E4VxQ,24916
800
- qontract_reconcile-0.10.2.dev303.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
801
- qontract_reconcile-0.10.2.dev303.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
802
- qontract_reconcile-0.10.2.dev303.dist-info/RECORD,,
798
+ tools/sre_checkpoints/util.py,sha256=KcYVfa3UmJHVP_ocgrKe8NkrO5IDB9aWEDydSokPcRk,975
799
+ qontract_reconcile-0.10.2.dev314.dist-info/METADATA,sha256=FQlklTqmyArlTeakJ4eRZC7EB_SBoTf-tZy1jMd9EAk,24916
800
+ qontract_reconcile-0.10.2.dev314.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
801
+ qontract_reconcile-0.10.2.dev314.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
802
+ qontract_reconcile-0.10.2.dev314.dist-info/RECORD,,
@@ -58,10 +58,13 @@ fragment VPCRequest on VPCRequest_v1 {
58
58
  cidr_block {
59
59
  networkAddress
60
60
  }
61
+ vpc_tags
61
62
  subnets {
62
- private
63
+ private
63
64
  public
64
65
  availability_zones
66
+ private_subnet_tags
67
+ public_subnet_tags
65
68
  }
66
69
  }
67
70
 
@@ -54,6 +54,8 @@ class VPCRequestSubnetsListsV1(ConfiguredBaseModel):
54
54
  private: Optional[list[str]] = Field(..., alias="private")
55
55
  public: Optional[list[str]] = Field(..., alias="public")
56
56
  availability_zones: Optional[list[str]] = Field(..., alias="availability_zones")
57
+ private_subnet_tags: Optional[Json] = Field(..., alias="private_subnet_tags")
58
+ public_subnet_tags: Optional[Json] = Field(..., alias="public_subnet_tags")
57
59
 
58
60
 
59
61
  class VPCRequest(ConfiguredBaseModel):
@@ -62,4 +64,5 @@ class VPCRequest(ConfiguredBaseModel):
62
64
  account: AWSAccountV1 = Field(..., alias="account")
63
65
  region: str = Field(..., alias="region")
64
66
  cidr_block: NetworkV1 = Field(..., alias="cidr_block")
67
+ vpc_tags: Optional[Json] = Field(..., alias="vpc_tags")
65
68
  subnets: Optional[VPCRequestSubnetsListsV1] = Field(..., alias="subnets")
@@ -10948,18 +10948,6 @@
10948
10948
  "isDeprecated": false,
10949
10949
  "deprecationReason": null
10950
10950
  },
10951
- {
10952
- "name": "slack_username",
10953
- "description": null,
10954
- "args": [],
10955
- "type": {
10956
- "kind": "SCALAR",
10957
- "name": "String",
10958
- "ofType": null
10959
- },
10960
- "isDeprecated": false,
10961
- "deprecationReason": null
10962
- },
10963
10951
  {
10964
10952
  "name": "pagerduty_username",
10965
10953
  "description": null,
@@ -27860,6 +27848,18 @@
27860
27848
  },
27861
27849
  "isDeprecated": false,
27862
27850
  "deprecationReason": null
27851
+ },
27852
+ {
27853
+ "name": "vpc_tags",
27854
+ "description": null,
27855
+ "args": [],
27856
+ "type": {
27857
+ "kind": "SCALAR",
27858
+ "name": "JSON",
27859
+ "ofType": null
27860
+ },
27861
+ "isDeprecated": false,
27862
+ "deprecationReason": null
27863
27863
  }
27864
27864
  ],
27865
27865
  "inputFields": null,
@@ -28089,6 +28089,30 @@
28089
28089
  },
28090
28090
  "isDeprecated": false,
28091
28091
  "deprecationReason": null
28092
+ },
28093
+ {
28094
+ "name": "private_subnet_tags",
28095
+ "description": null,
28096
+ "args": [],
28097
+ "type": {
28098
+ "kind": "SCALAR",
28099
+ "name": "JSON",
28100
+ "ofType": null
28101
+ },
28102
+ "isDeprecated": false,
28103
+ "deprecationReason": null
28104
+ },
28105
+ {
28106
+ "name": "public_subnet_tags",
28107
+ "description": null,
28108
+ "args": [],
28109
+ "type": {
28110
+ "kind": "SCALAR",
28111
+ "name": "JSON",
28112
+ "ofType": null
28113
+ },
28114
+ "isDeprecated": false,
28115
+ "deprecationReason": null
28092
28116
  }
28093
28117
  ],
28094
28118
  "inputFields": null,
@@ -51,19 +51,11 @@ query StatusBoard {
51
51
  childrenApps {
52
52
  name
53
53
  onboardingStatus
54
- saasFiles {
55
- name
56
- managedResourceTypes
57
- }
58
54
  }
59
55
  parentApp {
60
56
  name
61
57
  onboardingStatus
62
58
  }
63
- saasFiles {
64
- name
65
- managedResourceTypes
66
- }
67
59
  }
68
60
  }
69
61
  }
@@ -104,15 +96,9 @@ class ProductV1(ConfiguredBaseModel):
104
96
  name: str = Field(..., alias="name")
105
97
 
106
98
 
107
- class SaasFileV2(ConfiguredBaseModel):
108
- name: str = Field(..., alias="name")
109
- managed_resource_types: list[str] = Field(..., alias="managedResourceTypes")
110
-
111
-
112
99
  class AppV1_AppV1(ConfiguredBaseModel):
113
100
  name: str = Field(..., alias="name")
114
101
  onboarding_status: str = Field(..., alias="onboardingStatus")
115
- saas_files: Optional[list[SaasFileV2]] = Field(..., alias="saasFiles")
116
102
 
117
103
 
118
104
  class NamespaceV1_AppV1_AppV1(ConfiguredBaseModel):
@@ -120,17 +106,11 @@ class NamespaceV1_AppV1_AppV1(ConfiguredBaseModel):
120
106
  onboarding_status: str = Field(..., alias="onboardingStatus")
121
107
 
122
108
 
123
- class AppV1_SaasFileV2(ConfiguredBaseModel):
124
- name: str = Field(..., alias="name")
125
- managed_resource_types: list[str] = Field(..., alias="managedResourceTypes")
126
-
127
-
128
109
  class AppV1(ConfiguredBaseModel):
129
110
  name: str = Field(..., alias="name")
130
111
  onboarding_status: str = Field(..., alias="onboardingStatus")
131
112
  children_apps: Optional[list[AppV1_AppV1]] = Field(..., alias="childrenApps")
132
113
  parent_app: Optional[NamespaceV1_AppV1_AppV1] = Field(..., alias="parentApp")
133
- saas_files: Optional[list[AppV1_SaasFileV2]] = Field(..., alias="saasFiles")
134
114
 
135
115
 
136
116
  class NamespaceV1(ConfiguredBaseModel):
@@ -42,7 +42,7 @@ QONTRACT_INTEGRATION_VERSION = make_semver(0, 1, 0)
42
42
  PROVIDERS = ["prometheus-rule"]
43
43
 
44
44
  NAMESPACE_NAME = "openshift-customer-monitoring"
45
- DEFAULT_PROMTOOL_VERSION = "2.55.1"
45
+ DEFAULT_PROMTOOL_VERSION = "3.2.1"
46
46
 
47
47
 
48
48
  class TestContent(BaseModel):
reconcile/rhidp/common.py CHANGED
@@ -140,6 +140,8 @@ def build_cluster_objects(
140
140
  for cluster in cluster_details
141
141
  # we can't calculate the redirect url w/o a console url
142
142
  if cluster.ocm_cluster.console
143
+ # we can't configure an identity provider if external auth is enabled
144
+ and not cluster.ocm_cluster.external_auth_enabled
143
145
  ]
144
146
 
145
147
 
reconcile/status_board.py CHANGED
@@ -6,9 +6,6 @@ from abc import (
6
6
  from collections.abc import Iterable, Mapping
7
7
  from enum import Enum
8
8
  from itertools import chain
9
- from typing import (
10
- Any,
11
- )
12
9
 
13
10
  from pydantic import BaseModel
14
11
 
@@ -16,7 +13,7 @@ from reconcile.gql_definitions.slo_documents.slo_documents import SLODocumentV1
16
13
  from reconcile.gql_definitions.status_board.status_board import StatusBoardV1
17
14
  from reconcile.typed_queries.slo_documents import get_slo_documents
18
15
  from reconcile.typed_queries.status_board import (
19
- get_selected_app_data,
16
+ get_selected_app_names,
20
17
  get_status_board,
21
18
  )
22
19
  from reconcile.utils.differ import diff_mappings
@@ -34,7 +31,6 @@ from reconcile.utils.ocm.status_board import (
34
31
  get_application_services,
35
32
  get_managed_products,
36
33
  get_product_applications,
37
- update_application,
38
34
  update_service,
39
35
  )
40
36
  from reconcile.utils.ocm_base_client import (
@@ -59,7 +55,6 @@ class AbstractStatusBoard(ABC, BaseModel):
59
55
  id: str | None
60
56
  name: str
61
57
  fullname: str
62
- metadata: dict[str, Any] | ServiceMetadataSpec | None
63
58
 
64
59
  @abstractmethod
65
60
  def create(self, ocm: OCMBaseClient) -> None:
@@ -127,7 +122,6 @@ class Product(AbstractStatusBoard):
127
122
  class Application(AbstractStatusBoard):
128
123
  product: Product
129
124
  services: list["Service"] | None
130
- metadata: dict[str, Any]
131
125
 
132
126
  def create(self, ocm: OCMBaseClient) -> None:
133
127
  if self.product.id:
@@ -137,11 +131,9 @@ class Application(AbstractStatusBoard):
137
131
  logging.warning("Missing product id for application")
138
132
 
139
133
  def update(self, ocm: OCMBaseClient) -> None:
140
- if not self.id:
141
- logging.error(f'Trying to update Application "{self.name}" without id')
142
- return
143
- spec = self.to_ocm_spec()
144
- update_application(ocm, self.id, spec)
134
+ err_msg = "Called update on StatusBoardHandler that doesn't have update method"
135
+ logging.error(err_msg)
136
+ raise UpdateNotSupportedError(err_msg)
145
137
 
146
138
  def delete(self, ocm: OCMBaseClient) -> None:
147
139
  if not self.id:
@@ -157,7 +149,6 @@ class Application(AbstractStatusBoard):
157
149
  return {
158
150
  "name": self.name,
159
151
  "fullname": self.fullname,
160
- "metadata": self.metadata,
161
152
  "product": {"id": product_id},
162
153
  }
163
154
 
@@ -257,14 +248,12 @@ class StatusBoardExporterIntegration(QontractReconcileIntegration):
257
248
  return QONTRACT_INTEGRATION
258
249
 
259
250
  @staticmethod
260
- def get_product_apps(
261
- sb: StatusBoardV1,
262
- ) -> dict[str, dict[str, dict[str, dict[str, set[str]]]]]:
251
+ def get_product_apps(sb: StatusBoardV1) -> dict[str, set[str]]:
263
252
  global_selectors = (
264
253
  sb.global_app_selectors.exclude or [] if sb.global_app_selectors else []
265
254
  )
266
255
  return {
267
- p.product_environment.product.name: get_selected_app_data(
256
+ p.product_environment.product.name: get_selected_app_names(
268
257
  global_selectors, p
269
258
  )
270
259
  for p in sb.products
@@ -298,7 +287,7 @@ class StatusBoardExporterIntegration(QontractReconcileIntegration):
298
287
 
299
288
  @staticmethod
300
289
  def desired_abstract_status_board_map(
301
- desired_product_apps: Mapping[str, dict[str, dict[str, dict[str, set[str]]]]],
290
+ desired_product_apps: Mapping[str, set[str]],
302
291
  slodocs: list[SLODocumentV1],
303
292
  ) -> dict[str, AbstractStatusBoard]:
304
293
  """
@@ -310,11 +299,7 @@ class StatusBoardExporterIntegration(QontractReconcileIntegration):
310
299
  desired_abstract_status_board_map: dict[str, AbstractStatusBoard] = {}
311
300
  for product_name, apps in desired_product_apps.items():
312
301
  product = Product(
313
- id=None,
314
- name=product_name,
315
- fullname=product_name,
316
- applications=[],
317
- metadata={},
302
+ id=None, name=product_name, fullname=product_name, applications=[]
318
303
  )
319
304
  desired_abstract_status_board_map[product_name] = product
320
305
  for a in apps:
@@ -325,7 +310,6 @@ class StatusBoardExporterIntegration(QontractReconcileIntegration):
325
310
  fullname=key,
326
311
  services=[],
327
312
  product=product,
328
- metadata=apps[a]["metadata"],
329
313
  )
330
314
  for slodoc in slodocs:
331
315
  products = [
@@ -389,99 +373,6 @@ class StatusBoardExporterIntegration(QontractReconcileIntegration):
389
373
 
390
374
  return return_value
391
375
 
392
- @staticmethod
393
- def _compare_metadata(
394
- current_metadata: dict[str, Any] | ServiceMetadataSpec,
395
- desired_metadata: dict[str, Any] | ServiceMetadataSpec,
396
- ) -> bool:
397
- """
398
- Compare metadata dictionaries with deep equality checking for nested structures.
399
-
400
- :param current_metadata: The current metadata dictionary
401
- :param desired_metadata: The desired metadata dictionary
402
- :return: True if metadata are equal, False otherwise
403
- """
404
- # Convert TypedDict to regular dict to allow variable key access
405
- current_dict = dict(current_metadata)
406
- desired_dict = dict(desired_metadata)
407
-
408
- if current_dict.keys() != desired_dict.keys():
409
- return False
410
-
411
- for key, current_value in current_dict.items():
412
- desired_value = desired_dict[key]
413
-
414
- # Handle None values
415
- if current_value is None or desired_value is None:
416
- if current_value is not desired_value:
417
- return False
418
- continue
419
-
420
- # Handle sets
421
- if isinstance(current_value, set) and isinstance(desired_value, set):
422
- if current_value != desired_value:
423
- return False
424
- # Handle lists and tuples
425
- elif isinstance(current_value, (list, tuple)) and isinstance(
426
- desired_value, (list, tuple)
427
- ):
428
- if len(current_value) != len(desired_value):
429
- return False
430
-
431
- try:
432
- sorted_current = sorted(current_value, key=repr)
433
- sorted_desired = sorted(desired_value, key=repr)
434
- except Exception:
435
- # Fallback: compare without sorting
436
- sorted_current = list(current_value)
437
- sorted_desired = list(desired_value)
438
-
439
- for c, d in zip(sorted_current, sorted_desired, strict=True):
440
- if isinstance(c, dict) and isinstance(d, dict):
441
- if not StatusBoardExporterIntegration._compare_metadata(c, d):
442
- return False
443
- elif isinstance(c, (list, tuple)) and isinstance(d, (list, tuple)):
444
- if not StatusBoardExporterIntegration._compare_metadata(
445
- {"x": c}, {"x": d}
446
- ):
447
- return False
448
- elif c != d:
449
- return False
450
- # Handle nested dictionaries
451
- elif isinstance(current_value, dict) and isinstance(desired_value, dict):
452
- if not StatusBoardExporterIntegration._compare_metadata(
453
- current_value, desired_value
454
- ):
455
- return False
456
- # Handle primitive types
457
- elif current_value != desired_value:
458
- return False
459
-
460
- return True
461
-
462
- @staticmethod
463
- def _status_board_objects_equal(
464
- current: AbstractStatusBoard, desired: AbstractStatusBoard
465
- ) -> bool:
466
- """
467
- Check if two AbstractStatusBoard objects are equal, including metadata comparison.
468
-
469
- :param current: The current AbstractStatusBoard object
470
- :param desired: The desired AbstractStatusBoard object
471
- :return: True if objects are equal, False otherwise
472
- """
473
- # Check basic equality first (name, fullname)
474
- if current.name != desired.name or current.fullname != desired.fullname:
475
- return False
476
-
477
- # Compare metadata with deep equality
478
- if current.metadata and desired.metadata:
479
- return StatusBoardExporterIntegration._compare_metadata(
480
- current.metadata, desired.metadata
481
- )
482
- else:
483
- return True
484
-
485
376
  @staticmethod
486
377
  def get_diff(
487
378
  desired_abstract_status_board_map: Mapping[str, AbstractStatusBoard],
@@ -492,7 +383,6 @@ class StatusBoardExporterIntegration(QontractReconcileIntegration):
492
383
  diff_result = diff_mappings(
493
384
  current_abstract_status_board_map,
494
385
  desired_abstract_status_board_map,
495
- equal=StatusBoardExporterIntegration._status_board_objects_equal,
496
386
  )
497
387
 
498
388
  for pair in chain(diff_result.identical.values(), diff_result.change.values()):
@@ -508,18 +398,6 @@ class StatusBoardExporterIntegration(QontractReconcileIntegration):
508
398
  for o in diff_result.delete.values()
509
399
  )
510
400
 
511
- # Handle Applications that need updates (metadata changes)
512
- applications_to_update = [
513
- a.desired
514
- for _, a in diff_result.change.items()
515
- if isinstance(a.desired, Application)
516
- ]
517
-
518
- return_list.extend(
519
- StatusBoardHandler(action=Action.update, status_board_object=a)
520
- for a in applications_to_update
521
- )
522
-
523
401
  services_to_update = [
524
402
  s.desired
525
403
  for _, s in diff_result.change.items()
@@ -567,9 +445,7 @@ class StatusBoardExporterIntegration(QontractReconcileIntegration):
567
445
  ocm_api = init_ocm_base_client(sb.ocm, self.secret_reader)
568
446
 
569
447
  # Desired state
570
- desired_product_apps: dict[
571
- str, dict[str, dict[str, dict[str, set[str]]]]
572
- ] = self.get_product_apps(sb)
448
+ desired_product_apps: dict[str, set[str]] = self.get_product_apps(sb)
573
449
  desired_abstract_status_board_map = self.desired_abstract_status_board_map(
574
450
  desired_product_apps, slodocs
575
451
  )
@@ -93,7 +93,7 @@ class Accepter(BaseModel):
93
93
  region: str
94
94
  vpc_id: str | None
95
95
  route_table_ids: list[str] | None
96
- subnets_id_az: list[dict] | None
96
+ subnets_id_az: list[dict[str, str]] | None
97
97
  account: ClusterAccountProviderInfo
98
98
  api_security_group_id: str | None
99
99
 
@@ -81,8 +81,10 @@ QONTRACT_INTEGRATION = "terraform_users"
81
81
  QONTRACT_INTEGRATION_VERSION = make_semver(0, 4, 2)
82
82
  QONTRACT_TF_PREFIX = "qrtf"
83
83
 
84
+ Role = dict[str, Any]
84
85
 
85
- def get_tf_roles() -> list[dict[str, Any]]:
86
+
87
+ def get_tf_roles() -> list[Role]:
86
88
  gqlapi = gql.get_api()
87
89
  roles: list[dict] = expiration.filter(gqlapi.query(TF_QUERY)["roles"])
88
90
  return [
@@ -565,7 +565,7 @@ def build_desired_state_vpc(
565
565
  @defer
566
566
  def run(
567
567
  dry_run: bool,
568
- print_to_file: bool | None = None,
568
+ print_to_file: str | None = None,
569
569
  enable_deletion: bool = False,
570
570
  thread_pool_size: int = DEFAULT_THREAD_POOL_SIZE,
571
571
  account_name: str | None = None,