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.
- {qontract_reconcile-0.10.2.dev303.dist-info → qontract_reconcile-0.10.2.dev314.dist-info}/METADATA +1 -1
- {qontract_reconcile-0.10.2.dev303.dist-info → qontract_reconcile-0.10.2.dev314.dist-info}/RECORD +30 -30
- reconcile/gql_definitions/common/aws_vpc_requests.py +4 -1
- reconcile/gql_definitions/fragments/aws_vpc_request.py +3 -0
- reconcile/gql_definitions/introspection.json +36 -12
- reconcile/gql_definitions/status_board/status_board.py +0 -20
- reconcile/prometheus_rules_tester/integration.py +1 -1
- reconcile/rhidp/common.py +2 -0
- reconcile/status_board.py +9 -133
- reconcile/terraform_tgw_attachments.py +1 -1
- reconcile/terraform_users.py +3 -1
- reconcile/terraform_vpc_peerings.py +1 -1
- reconcile/terraform_vpc_resources/integration.py +19 -1
- reconcile/typed_queries/status_board.py +8 -43
- reconcile/utils/ocm/base.py +10 -0
- reconcile/utils/ocm/status_board.py +0 -13
- reconcile/utils/openssl.py +2 -2
- reconcile/utils/repo_owners.py +21 -29
- reconcile/utils/runtime/meta.py +2 -1
- reconcile/utils/sharding.py +1 -1
- reconcile/utils/sqs_gateway.py +14 -10
- reconcile/utils/structs.py +3 -3
- reconcile/utils/terraform_client.py +27 -25
- reconcile/utils/terrascript_aws_client.py +487 -372
- reconcile/utils/throughput.py +1 -1
- reconcile/vpc_peerings_validator.py +2 -2
- tools/qontract_cli.py +1 -1
- tools/sre_checkpoints/util.py +5 -3
- {qontract_reconcile-0.10.2.dev303.dist-info → qontract_reconcile-0.10.2.dev314.dist-info}/WHEEL +0 -0
- {qontract_reconcile-0.10.2.dev303.dist-info → qontract_reconcile-0.10.2.dev314.dist-info}/entry_points.txt +0 -0
{qontract_reconcile-0.10.2.dev303.dist-info → qontract_reconcile-0.10.2.dev314.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: qontract-reconcile
|
3
|
-
Version: 0.10.2.
|
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
|
{qontract_reconcile-0.10.2.dev303.dist-info → qontract_reconcile-0.10.2.dev314.dist-info}/RECORD
RENAMED
@@ -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=
|
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=
|
113
|
-
reconcile/terraform_users.py,sha256=
|
114
|
-
reconcile/terraform_vpc_peerings.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
660
|
-
reconcile/utils/terraform_client.py,sha256=
|
661
|
-
reconcile/utils/terrascript_aws_client.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
799
|
-
qontract_reconcile-0.10.2.
|
800
|
-
qontract_reconcile-0.10.2.
|
801
|
-
qontract_reconcile-0.10.2.
|
802
|
-
qontract_reconcile-0.10.2.
|
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,,
|
@@ -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):
|
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
|
-
|
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
|
-
|
141
|
-
|
142
|
-
|
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:
|
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,
|
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
|
|
reconcile/terraform_users.py
CHANGED
@@ -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
|
-
|
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:
|
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,
|