qontract-reconcile 0.10.1rc1031__py3-none-any.whl → 0.10.1rc1033__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.1rc1031.dist-info → qontract_reconcile-0.10.1rc1033.dist-info}/METADATA +1 -1
- {qontract_reconcile-0.10.1rc1031.dist-info → qontract_reconcile-0.10.1rc1033.dist-info}/RECORD +45 -45
- reconcile/aws_support_cases_sos.py +1 -1
- reconcile/cli.py +1 -1
- reconcile/dynatrace_token_provider/integration.py +2 -2
- reconcile/endpoints_discovery/integration.py +1 -2
- reconcile/endpoints_discovery/merge_request.py +10 -6
- reconcile/endpoints_discovery/merge_request_manager.py +3 -0
- reconcile/github_org.py +1 -1
- reconcile/ocm_aws_infrastructure_access.py +2 -2
- reconcile/openshift_base.py +2 -2
- reconcile/openshift_cluster_bots.py +1 -1
- reconcile/openshift_namespaces.py +1 -1
- reconcile/openshift_resources_base.py +2 -2
- reconcile/openshift_saas_deploy_change_tester.py +1 -1
- reconcile/openshift_saas_deploy_trigger_base.py +1 -1
- reconcile/query_validator.py +2 -2
- reconcile/terraform_aws_route53.py +2 -2
- reconcile/test/test_closedbox_endpoint_monitoring.py +5 -5
- reconcile/test/test_openshift_resource.py +2 -2
- reconcile/test/test_openshift_resources_base.py +7 -7
- reconcile/test/test_openshift_serviceaccount_tokens.py +7 -5
- reconcile/test/test_terraform_vpc_peerings.py +2 -2
- reconcile/utils/acs/base.py +1 -1
- reconcile/utils/acs/notifiers.py +1 -1
- reconcile/utils/aws_api.py +1 -1
- reconcile/utils/config.py +2 -4
- reconcile/utils/external_resources.py +1 -1
- reconcile/utils/gql.py +1 -1
- reconcile/utils/jinja2/utils.py +1 -1
- reconcile/utils/jobcontroller/controller.py +3 -3
- reconcile/utils/mr/__init__.py +8 -8
- reconcile/utils/ocm/__init__.py +2 -2
- reconcile/utils/saasherder/__init__.py +1 -1
- reconcile/utils/saasherder/saasherder.py +5 -5
- reconcile/utils/state.py +2 -2
- reconcile/utils/terraform_client.py +1 -1
- reconcile/utils/terrascript_aws_client.py +1 -1
- reconcile/utils/unleash/__init__.py +2 -2
- reconcile/utils/vcs.py +2 -2
- tools/app_interface_reporter.py +7 -7
- tools/qontract_cli.py +21 -45
- {qontract_reconcile-0.10.1rc1031.dist-info → qontract_reconcile-0.10.1rc1033.dist-info}/WHEEL +0 -0
- {qontract_reconcile-0.10.1rc1031.dist-info → qontract_reconcile-0.10.1rc1033.dist-info}/entry_points.txt +0 -0
- {qontract_reconcile-0.10.1rc1031.dist-info → qontract_reconcile-0.10.1rc1033.dist-info}/top_level.txt +0 -0
{qontract_reconcile-0.10.1rc1031.dist-info → qontract_reconcile-0.10.1rc1033.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: qontract-reconcile
|
3
|
-
Version: 0.10.
|
3
|
+
Version: 0.10.1rc1033
|
4
4
|
Summary: Collection of tools to reconcile services with their desired state as defined in the app-interface DB.
|
5
5
|
Home-page: https://github.com/app-sre/qontract-reconcile
|
6
6
|
Author: Red Hat App-SRE Team
|
{qontract_reconcile-0.10.1rc1031.dist-info → qontract_reconcile-0.10.1rc1033.dist-info}/RECORD
RENAMED
@@ -7,10 +7,10 @@ reconcile/aws_ecr_image_pull_secrets.py,sha256=TGEc_0nv8oxV2HqA8VdcM4HHP-B1YqmNO
|
|
7
7
|
reconcile/aws_garbage_collector.py,sha256=ddwU8IKTueAJc0TzymcREr7hcoVui9kOGvdH1B2EcuM,450
|
8
8
|
reconcile/aws_iam_keys.py,sha256=GpxZR_A4ZQFlOQG1jpNiYhL5GMxdeTJ05aAYgUwWveE,3633
|
9
9
|
reconcile/aws_iam_password_reset.py,sha256=q96mwr2KeEQ5bpNniGlgIMZTxiuLSodcYfX-tSaZPjA,3108
|
10
|
-
reconcile/aws_support_cases_sos.py,sha256=
|
10
|
+
reconcile/aws_support_cases_sos.py,sha256=hl_9L53yQYRQxKs3IWrd69Cc60XK067g_bJRM9B0udo,2975
|
11
11
|
reconcile/blackbox_exporter_endpoint_monitoring.py,sha256=O1wFp52EyF538c6txaWBs8eMtUIy19gyHZ6VzJ6QXS8,3512
|
12
12
|
reconcile/checkpoint.py,sha256=_JhMxrye5BgkRMxWYuf7Upli6XayPINKSsuo3ynHTRc,5010
|
13
|
-
reconcile/cli.py,sha256=
|
13
|
+
reconcile/cli.py,sha256=2hjHLQED4DR41EHoov3uHiURb8dfAbDpaTwxnEvrVhk,107388
|
14
14
|
reconcile/closedbox_endpoint_monitoring_base.py,sha256=rLh16BOlBOxTmJ8Si3wWyyEpmMlhh4Znx1Gc36qsmOc,4865
|
15
15
|
reconcile/cluster_deployment_mapper.py,sha256=5gumAaRCcFXsabUJ1dnuUy9WrP_FEEM5JnOnE8ch9sE,2326
|
16
16
|
reconcile/dashdotdb_base.py,sha256=l34QDu1G96_Ctnh7ZXdxXgSeCE93GQMdLAkWxmN6vDA,4775
|
@@ -23,7 +23,7 @@ reconcile/deadmanssnitch.py,sha256=n-5W-djUgwzpmdDM4eQIZpkkDmHY0vndt-42LJXI4Y8,7
|
|
23
23
|
reconcile/email_sender.py,sha256=-5L-Ag_jaEYSzYRoMr52KQBRXz1E8yx9GqLbg2X4XFU,3533
|
24
24
|
reconcile/gabi_authorized_users.py,sha256=rmvJN1TKZbDT0eOYObUeshKpl7uGhPam_r3U5j1eHX4,4854
|
25
25
|
reconcile/gcr_mirror.py,sha256=dXMPHBx_Rdr7HQPfctz7tmBrJHAFG0wos1f4nZe4jRo,8742
|
26
|
-
reconcile/github_org.py,sha256=
|
26
|
+
reconcile/github_org.py,sha256=Bjxtin6Qlosb7BOVdjPbcQc2QALbEsqnDfYjHAl7OIA,13458
|
27
27
|
reconcile/github_owners.py,sha256=s9NDIqTbaqgGE5lj89eh3Sr52B-6SCUWQILzQlzGyxw,2949
|
28
28
|
reconcile/github_repo_invites.py,sha256=3GOBGZq1DKMIuyYsDxHqXDnMTWlJfeu248-m3ajfV8Y,2672
|
29
29
|
reconcile/github_repo_permissions_validator.py,sha256=dcbXdUx6imjNchjp3pg9-z1i7lFEGOr_28GvsiwO5Xw,1734
|
@@ -53,7 +53,7 @@ reconcile/mr_client_gateway.py,sha256=WhjMd-sIXDFCV8-rt8CEjurJ5OYB1pOD0K3o0tZRXQ
|
|
53
53
|
reconcile/ocm_additional_routers.py,sha256=KfcFDVbNoc6n5dHWjYdAf1_DiVqVG6Tw23WLKoV8cdg,3306
|
54
54
|
reconcile/ocm_addons.py,sha256=qqAyqRBRbdZQvAcjb-QlSVyRAyQBZk6iVlgnI4jyi7s,3353
|
55
55
|
reconcile/ocm_addons_upgrade_tests_trigger.py,sha256=A9zXeYG-_52DsS1dz47yDSnHz62du5XpPBlaeRa6zxY,3975
|
56
|
-
reconcile/ocm_aws_infrastructure_access.py,sha256=
|
56
|
+
reconcile/ocm_aws_infrastructure_access.py,sha256=rrlcQxvRTmKyYOUR1C-Nlxj_o_iCDSxc7PNoELUDiew,6892
|
57
57
|
reconcile/ocm_clusters.py,sha256=0AlqFrUoxxB8rsOgobvnwiBI2Zal8BK2TI2cpWa0Qqg,16895
|
58
58
|
reconcile/ocm_external_configuration_labels.py,sha256=imEpDv1RBpCSj8tHDv0R76hmNCFtcUzVNgS1yOVl8vs,3870
|
59
59
|
reconcile/ocm_github_idp.py,sha256=glwXMsIBcl38-OmDDQCpe0YoLLXfoRgVQmqwXMEXjds,3946
|
@@ -61,23 +61,23 @@ reconcile/ocm_groups.py,sha256=-rTPMewkdyo1De6gs4u-294p3z34oUbGfuNi8ov56Sk,3424
|
|
61
61
|
reconcile/ocm_machine_pools.py,sha256=poGfITOCJEMwYAJpiuL8SytgTcBmGIKEZPgNGld80TY,16563
|
62
62
|
reconcile/ocm_update_recommended_version.py,sha256=IYkfLXIprOW1jguZeELcGP1iBPuj-b53R-FTqKulMl8,4204
|
63
63
|
reconcile/ocm_upgrade_scheduler_org_updater.py,sha256=aLgyInt9oIWAg0XtCiwJRUSwdPx3masKV8kHzkyEEOQ,4282
|
64
|
-
reconcile/openshift_base.py,sha256=
|
65
|
-
reconcile/openshift_cluster_bots.py,sha256=
|
64
|
+
reconcile/openshift_base.py,sha256=l3stMLbjRj3Z18orwyRv8ZN5IqVRaEwQ9tgiQJjDI5w,52641
|
65
|
+
reconcile/openshift_cluster_bots.py,sha256=AmCLCrlsZ_Wd5qMPzlv-O01i47WGJuojEc-Jgt2n77c,10942
|
66
66
|
reconcile/openshift_clusterrolebindings.py,sha256=sDgHi_t2ayE3O6zZ5CLao7uBmihxRK8K70w2GSADz-w,5822
|
67
67
|
reconcile/openshift_groups.py,sha256=sK2wLWwNupztbfyFPl32VH42s_s8Mu3g-URdlisnwJc,9382
|
68
68
|
reconcile/openshift_limitranges.py,sha256=UvCGo_OQ4XoDK55TJmn55qEhhlkhLzhU12tX8nT5kPQ,3442
|
69
69
|
reconcile/openshift_namespace_labels.py,sha256=97qZl0MlYCUGP5Uu3zwMoU-qt0Drbhafb2NHy4CZWLo,15619
|
70
|
-
reconcile/openshift_namespaces.py,sha256=
|
70
|
+
reconcile/openshift_namespaces.py,sha256=ju6G46odndwQlaMMV6Y6RjcDmtjAAFP4oEEaDuLAbLg,5806
|
71
71
|
reconcile/openshift_network_policies.py,sha256=DyjaeJvSFHmslbM8nyHCxpF9EtU2m-MJokMrAv6Nwoo,4171
|
72
72
|
reconcile/openshift_prometheus_rules.py,sha256=onowXab248zmHH8SbYDTc1W1bl7JiqRFU1xdTkZyLFg,1332
|
73
73
|
reconcile/openshift_resourcequotas.py,sha256=yUi56PiOn3inMMfq_x_FEHmaW-reGipzoorjdar372g,2415
|
74
74
|
reconcile/openshift_resources.py,sha256=I2nO_C37mG3rfyGrd4cGwN3mVseVGuTAHAyhFzLyqF4,1518
|
75
|
-
reconcile/openshift_resources_base.py,sha256=
|
75
|
+
reconcile/openshift_resources_base.py,sha256=SKlJffnYjnc7AHIOvi7Ui9TmDA93_t81d5t54wnqCOA,40745
|
76
76
|
reconcile/openshift_rolebindings.py,sha256=9mlJ2FjWUoH-rsjtasreA_hV-K5Z_YR00qR_RR60OZM,6555
|
77
77
|
reconcile/openshift_routes.py,sha256=fXvuPSjcjVw1X3j2EQvUAdbOepmIFdKk-M3qP8QzPiw,1075
|
78
78
|
reconcile/openshift_saas_deploy.py,sha256=UZlm29JujJVS3MzSm6uehlC3y-jZxl6WVwMeKRdN11U,12773
|
79
|
-
reconcile/openshift_saas_deploy_change_tester.py,sha256=
|
80
|
-
reconcile/openshift_saas_deploy_trigger_base.py,sha256=
|
79
|
+
reconcile/openshift_saas_deploy_change_tester.py,sha256=12uyBwaeMka1C3_pejmQPIBPAx2V1sJ4dJkScq-2e2M,8793
|
80
|
+
reconcile/openshift_saas_deploy_trigger_base.py,sha256=Ss_FE31d8jR2f3lbSiU0ROBMVI1kg-Y_8nxLavFPFko,14036
|
81
81
|
reconcile/openshift_saas_deploy_trigger_cleaner.py,sha256=roLyVAVntaQptKaZbnN1LyLvCA8fyvqELfjU6M8xfeY,3511
|
82
82
|
reconcile/openshift_saas_deploy_trigger_configs.py,sha256=eUejMGWuaQabZTLuvPLLvROfN5HOFyYZOpH4YEsiU_g,928
|
83
83
|
reconcile/openshift_saas_deploy_trigger_images.py,sha256=iUsiBGJf-CyFw7tSLWo59rXmSvsVnN6TTaAObbsVpNg,936
|
@@ -95,7 +95,7 @@ reconcile/quay_mirror_org.py,sha256=utrJpJaKCs7U6WX6DODdfCeB0EmX-lUC8Y5fkmpgFSs,
|
|
95
95
|
reconcile/quay_permissions.py,sha256=9KOutS1w4RFQqkvMSy54VtsKNx56-phzP6yI_rEW-B8,4244
|
96
96
|
reconcile/quay_repos.py,sha256=cuEYG0HUe0ut5yvLdEwOF5-CmccpXQHRb_wDazvDrvQ,6895
|
97
97
|
reconcile/queries.py,sha256=-mwZ0V89Tik0zB585ID0jEqC4VSuUVaAPlaSXaNAR-E,50180
|
98
|
-
reconcile/query_validator.py,sha256=
|
98
|
+
reconcile/query_validator.py,sha256=MSh5pKLBksws4AqfuvT8nrIGucIbqX-IOzYyPYTLO7k,1491
|
99
99
|
reconcile/requests_sender.py,sha256=914iluuF4UVgG3VyxxtnHOu4yf6YKS2fIy6PViSsFTQ,3875
|
100
100
|
reconcile/resource_scraper.py,sha256=znXCHrU7YwPfKuxGBiUrV7T1tYtn4vlz9qmZlfy6Flg,2307
|
101
101
|
reconcile/resource_template_tester.py,sha256=DsKvBuNLPxm4Fa-e1YHHySnhThm5i_j-nF3G4b02Mz0,2416
|
@@ -108,7 +108,7 @@ reconcile/slack_usergroups.py,sha256=tZIpxbCmS8M4A15tYdtgCMEJ1Q6hcrkF9j_5-CZ6Yjs
|
|
108
108
|
reconcile/sql_query.py,sha256=pH-EHkXiDknn8ZNXVqRZeqFc3sKhu2nhsaykgSytbS8,25895
|
109
109
|
reconcile/status.py,sha256=cY4IJFXemhxptRJqR4qaaOWqei9e4jgLXuVSGajMsjg,544
|
110
110
|
reconcile/status_board.py,sha256=YeoE7kLf1YKpOdN32u3vqhuSI46ep5N_qcVWC1CBCf8,8635
|
111
|
-
reconcile/terraform_aws_route53.py,sha256=
|
111
|
+
reconcile/terraform_aws_route53.py,sha256=dQzzT46YhwRA902_H6pi-f7WlX4EaH187wXSdmJAUkQ,9958
|
112
112
|
reconcile/terraform_cloudflare_dns.py,sha256=-aLEe2QnH5cJPu7HWqs-R9NmQ1NlFbcVUm0v7alVL3I,13431
|
113
113
|
reconcile/terraform_cloudflare_resources.py,sha256=41Mj1WkuS75slCDpmhG2GGf1nh3BwfxcdNC73-PNadc,15000
|
114
114
|
reconcile/terraform_cloudflare_users.py,sha256=iyTG5sj20Jg4J4qWJ144KVptfIHGOSfH8wQKxu0imq0,13942
|
@@ -181,14 +181,14 @@ reconcile/cna/assets/asset_factory.py,sha256=7T7X_J6xIsoGETqBRI45_EyIKEdQcnRPt_G
|
|
181
181
|
reconcile/cna/assets/null.py,sha256=85mVh97atCoC0aLuX47poTZiyOthmziJeBsUw0c924w,1658
|
182
182
|
reconcile/dynatrace_token_provider/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
183
183
|
reconcile/dynatrace_token_provider/dependencies.py,sha256=41q05A4C_eS3E8-MR4veeMxtQNsPoGdxmEa3d-OKxq4,2814
|
184
|
-
reconcile/dynatrace_token_provider/integration.py,sha256
|
184
|
+
reconcile/dynatrace_token_provider/integration.py,sha256=-oAZ40IHLbY99PZB9THtH2FnS5LHCKpQMIYFdy1bp4Q,22997
|
185
185
|
reconcile/dynatrace_token_provider/metrics.py,sha256=xiKkl8fTEBQaXJelGCPNTZhHAWdO1M3pCXNr_Tei63c,1285
|
186
186
|
reconcile/dynatrace_token_provider/model.py,sha256=gkpqo5rRRueBXnIMjp4EEHqBUBuU65TRI8zpdb8GJ0A,241
|
187
187
|
reconcile/dynatrace_token_provider/ocm.py,sha256=iHMsgbsLs-dlrB9UXmWNDF7E4UDe49JOsLa9rnowKfo,4282
|
188
188
|
reconcile/endpoints_discovery/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
189
|
-
reconcile/endpoints_discovery/integration.py,sha256=
|
190
|
-
reconcile/endpoints_discovery/merge_request.py,sha256=
|
191
|
-
reconcile/endpoints_discovery/merge_request_manager.py,sha256=
|
189
|
+
reconcile/endpoints_discovery/integration.py,sha256=q01DJgCv1YiDY-VUWDfQ5kfGm67BUhP-YP7c0JQObj8,12333
|
190
|
+
reconcile/endpoints_discovery/merge_request.py,sha256=_yLb4tnvoZMCko8rta2C_CvOInJa9pa3HzSmHNtjgGU,2978
|
191
|
+
reconcile/endpoints_discovery/merge_request_manager.py,sha256=wUMsumxv8RnWaRattax4HfoRlhtVzmgro3GiJJ1C4Vc,6392
|
192
192
|
reconcile/external_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
193
193
|
reconcile/external_resources/aws.py,sha256=JvjKaABy2Pg8u8Lq82Acv4zMvpE3_qGKes7OG-zlHOM,2956
|
194
194
|
reconcile/external_resources/factories.py,sha256=DXgaLxoO87zZ76VOpRpu2GeYGhsbfOnOx5mrzgo4Gf4,4767
|
@@ -507,7 +507,7 @@ reconcile/test/test_aws_iam_password_reset.py,sha256=fnkqB90adR7W4L4saNdrtIiwnQB
|
|
507
507
|
reconcile/test/test_aws_support_cases_sos.py,sha256=MLgPHTv8uZhh2iINoBV38jiweEqFhqGg7WYOveXkIXY,837
|
508
508
|
reconcile/test/test_checkpoint.py,sha256=sbDtqTbfw5yMZ_mCltMXxkyyGueVLGUjTDtcWhPP7yA,5340
|
509
509
|
reconcile/test/test_cli.py,sha256=qx_iBwh4Z-YkK3sbjK1wEziPTgn060EN-baf9DNvR3k,1096
|
510
|
-
reconcile/test/test_closedbox_endpoint_monitoring.py,sha256=
|
510
|
+
reconcile/test/test_closedbox_endpoint_monitoring.py,sha256=I0lSFOUQ5dBxjKeq1Dg3E4gWqoZ9d26d5pQmsLqWLPc,7166
|
511
511
|
reconcile/test/test_dashdotdb_dora.py,sha256=MfHGAsX2eSQSvBVt9_1Sah3aQKNJBXA9Iu86X0NWD6c,7705
|
512
512
|
reconcile/test/test_database_access_manager.py,sha256=n37cNan0dcMymWJbpsKN9HaCQ0vzXDn5PZencEH7e98,19592
|
513
513
|
reconcile/test/test_deadmanssnitch.py,sha256=YAf8wlZoEC60Ul7UA6Y6XqwnZ1yqf07J15ABqeLpqW4,9835
|
@@ -536,12 +536,12 @@ reconcile/test/test_openshift_base.py,sha256=SX8URKF8Kn21nA-qcmICSUaZKHuc5YTgPzf
|
|
536
536
|
reconcile/test/test_openshift_cluster_bots.py,sha256=sSGLgxnXO82xcfTFVNJzsrDuNfObwAR_-AkDe4B_4WE,7983
|
537
537
|
reconcile/test/test_openshift_namespace_labels.py,sha256=i4S5QJFxMRjLkwi3iO6A-uhjgZ1QZb4jYXwB696m82Y,12070
|
538
538
|
reconcile/test/test_openshift_namespaces.py,sha256=HmRnCE5EnFt3MYceVEFHmk8wWRtCrxu2AFGFkY9pdyA,9214
|
539
|
-
reconcile/test/test_openshift_resource.py,sha256=
|
540
|
-
reconcile/test/test_openshift_resources_base.py,sha256=
|
539
|
+
reconcile/test/test_openshift_resource.py,sha256=0HlknH5SR3H6YXyoaKuk-4Trii04LSowM_pbsGsucjA,13001
|
540
|
+
reconcile/test/test_openshift_resources_base.py,sha256=GOMYGG6yFACXpDWwPMBBIOR0v0ikjefEDON1DPQfdkk,14374
|
541
541
|
reconcile/test/test_openshift_saas_deploy.py,sha256=3QXMrN9dXIiR0JktVDNQ7yJSexMTjZLb1tbRrB3-7uU,5991
|
542
542
|
reconcile/test/test_openshift_saas_deploy_change_tester.py,sha256=1yVe54Hx9YdVjn6qdnKge5Sa_s732c-8uZqCnuT1gGI,12871
|
543
543
|
reconcile/test/test_openshift_saas_deploy_trigger_cleaner.py,sha256=UQx1iJ21rsMa2whG-rtUIuTXbUzc0Ngr7jRLKXZCCCI,2838
|
544
|
-
reconcile/test/test_openshift_serviceaccount_tokens.py,sha256=
|
544
|
+
reconcile/test/test_openshift_serviceaccount_tokens.py,sha256=VvVXDCS94KFvSLOhK8ScKjvmns5k1B6QgWr691AXiKc,8991
|
545
545
|
reconcile/test/test_openshift_tekton_resources.py,sha256=O6-qPQwSiPHQKm1a1iqRU2V8eabc4uiG4mNxPSUBg88,11212
|
546
546
|
reconcile/test/test_openshift_upgrade_watcher.py,sha256=0GDQ_YFHIX8DbkbDYSuLv9uZeeg4NwP1vlOqvSaZvN4,7183
|
547
547
|
reconcile/test/test_prometheus_rules_tester.py,sha256=cgVkPM3KcAw69bOkJ6iR2Lfog_WgblyoqVRtXv4ly7o,5685
|
@@ -567,7 +567,7 @@ reconcile/test/test_terraform_repo.py,sha256=INfl-VlUtpV87J0neQt4wliptnX7PKvxLPF
|
|
567
567
|
reconcile/test/test_terraform_resources.py,sha256=8C97yXIEihaQ3DZrtjxLNt4y4G12IOhD01ydm7JjliY,15359
|
568
568
|
reconcile/test/test_terraform_tgw_attachments.py,sha256=SM6QwogMZNLh0BkUyaxzFafuOLp23-hBtYTu_F53C4I,40922
|
569
569
|
reconcile/test/test_terraform_users.py,sha256=XOAfGvITCJPI1LTlISmHbA4ONMQMkxYUMTsny7pQCFw,4319
|
570
|
-
reconcile/test/test_terraform_vpc_peerings.py,sha256=
|
570
|
+
reconcile/test/test_terraform_vpc_peerings.py,sha256=bpjCjhmic07cw3XKSHf-2JvmLuWlyQG8laXlC-H7qtI,20796
|
571
571
|
reconcile/test/test_terraform_vpc_peerings_build_desired_state.py,sha256=7VAFVbjlnnUJoOkZ4ApDc1lHFj38Zj4yrbDKvWkqWXE,49545
|
572
572
|
reconcile/test/test_three_way_diff_strategy.py,sha256=v3rNkQFNy5e1uyfeNSlNBA07fvrPGD0aXD91Lgv8oxc,4062
|
573
573
|
reconcile/test/test_utils_jinja2.py,sha256=TpzQlpFnLGzNEZp5WOh0o7AuBiGEktqO4MuwiiJW2YY,3895
|
@@ -650,11 +650,11 @@ reconcile/unleash_feature_toggles/integration.py,sha256=nx7BhtzCsTfPbOp60vI5MkNw
|
|
650
650
|
reconcile/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
651
651
|
reconcile/utils/aggregated_list.py,sha256=km0xadW0jO4G_CqZPsXmoBURQ8c90FaTu5x4X1K1cZs,3357
|
652
652
|
reconcile/utils/amtool.py,sha256=ngtBuVPETH6oAy5RnKzvreVbjwQCaATS_PYYwBprzjQ,2288
|
653
|
-
reconcile/utils/aws_api.py,sha256=
|
653
|
+
reconcile/utils/aws_api.py,sha256=tYjTEW1uSkWsMWNFxwavJsI9xtq1dEeJ2HPlN5LAHzA,66861
|
654
654
|
reconcile/utils/aws_helper.py,sha256=MDbv5jrNdqqJ5pfBxniGdJXBBO_EYc2_Uf2w9ZzeMNs,2854
|
655
655
|
reconcile/utils/batches.py,sha256=TtEm64a8lWhFuNbUVpFEmXVdU2Q0sTBrP_I0Cjbgh7g,320
|
656
656
|
reconcile/utils/binary.py,sha256=7MaAFBpzuBUTJ_aA6G6-eult_BPMVyiXbBLD0Y6F-DM,2301
|
657
|
-
reconcile/utils/config.py,sha256=
|
657
|
+
reconcile/utils/config.py,sha256=kwaAaNBQ9z-fsDJu2-WZFgTnL6HKd3FPjiu0mbriHkg,1004
|
658
658
|
reconcile/utils/constants.py,sha256=pOUd97bqZdsAu5RWJ8NUs9cwCY7K9y0eW9VVeJ4fZIU,138
|
659
659
|
reconcile/utils/data_structures.py,sha256=VyKfnlNJTiRvZKNpfgIrjESQ2YgmEpWuPQXT14WA1vI,311
|
660
660
|
reconcile/utils/deadmanssnitch_api.py,sha256=0uajXxRNUEyF8CPTYPFNV4G-_3KB_hDF9L8OtTy2zCk,2476
|
@@ -669,14 +669,14 @@ reconcile/utils/exceptions.py,sha256=DwfnWUpVOotpP79RWZ2pycmG6nKCL00RBIeZLYkQPW4
|
|
669
669
|
reconcile/utils/expiration.py,sha256=3JaXH4psksR7z262k7FmdyREjCLqm66OpVMEbcfdWRo,1213
|
670
670
|
reconcile/utils/extended_early_exit.py,sha256=QSktrmfw37zSRMNk930tDbQsVeKxaPPPD43e79DGwZw,6754
|
671
671
|
reconcile/utils/external_resource_spec.py,sha256=bhH_xneFwATdFumTPkiQmcVKYI0gcaWuqV6FpFdf_P0,7006
|
672
|
-
reconcile/utils/external_resources.py,sha256=
|
672
|
+
reconcile/utils/external_resources.py,sha256=GC4wYuSXwk2ifr3aDEwnEiumaYqWhzgKK-hXp6pXemA,7516
|
673
673
|
reconcile/utils/filtering.py,sha256=S4PbMHuFr3ED0P2Q_ea5CAaB7FimI62B-F5YTaKrphA,402
|
674
674
|
reconcile/utils/git.py,sha256=JkpbUO10oBTtNHZ1IhjyG6dTOUizc7I5H0vm7NvDVNw,1409
|
675
675
|
reconcile/utils/git_secrets.py,sha256=y1rEhwA8DyDpBSAEuhMS7Y2X3mpxT2zQ4zyDFkhLe_g,1936
|
676
676
|
reconcile/utils/github_api.py,sha256=R8OvqyPdnRqvP-Efnv9RvIcbBlb4M0KC4RlbnJMD0Tg,2426
|
677
677
|
reconcile/utils/gitlab_api.py,sha256=WfhLhOp3-cOwgptiCNPhWja74Lo41ZIlJ6HFSWaIDRw,30512
|
678
678
|
reconcile/utils/gpg.py,sha256=EKG7_fdMv8BMlV5yUdPiqoTx-KrzmVSEAl2sLkaKwWI,1123
|
679
|
-
reconcile/utils/gql.py,sha256=
|
679
|
+
reconcile/utils/gql.py,sha256=C0thIm_k9MBldfqwHzyqtYZk9sIvMdm9IbbnXLGwjD8,14158
|
680
680
|
reconcile/utils/grouping.py,sha256=vr9SFHZ7bqmHYrvYcEZt-Er3-yQYfAAdq5sHLZVmXPY,456
|
681
681
|
reconcile/utils/helm.py,sha256=Zmh9shdcUNJmiHIbBDkuUlk9T_Cg7uvWfw9c4St2n8E,3775
|
682
682
|
reconcile/utils/helpers.py,sha256=k9svgFFZG7H5FvHYY0g5jJyvgvh2UDZxf0Ib221teag,1179
|
@@ -719,19 +719,19 @@ reconcile/utils/sharding.py,sha256=gkYf0lD3IUKQPEmdRJZ70mdDT1c9qWjbdP7evRsUis4,8
|
|
719
719
|
reconcile/utils/slack_api.py,sha256=iaOFzv3wiZRhcgYK2NB4lsG6ymNsGk2MEuj0PgZVp7w,17355
|
720
720
|
reconcile/utils/smtp_client.py,sha256=ee8FHnCMt_uhDBJOvIfFtyutbToq-Ni5MECC_c8DXnA,2769
|
721
721
|
reconcile/utils/sqs_gateway.py,sha256=XNIf3PY4UCPNufP2Ul0UJj3fKlt5larBba-VTT-41Fg,2265
|
722
|
-
reconcile/utils/state.py,sha256=
|
722
|
+
reconcile/utils/state.py,sha256=W0_awkLAPX18hNOF_60o73tkPxDUylqbzYNHfl_sDsk,16386
|
723
723
|
reconcile/utils/structs.py,sha256=LcbLEg8WxfRqM6nW7NhcWN0YeqF7SQzxOgntmLs1SgY,352
|
724
724
|
reconcile/utils/template.py,sha256=wTvRU4AnAV_o042tD4Mwls2dwWMuk7MKnde3MaCjaYg,331
|
725
|
-
reconcile/utils/terraform_client.py,sha256=
|
726
|
-
reconcile/utils/terrascript_aws_client.py,sha256=
|
725
|
+
reconcile/utils/terraform_client.py,sha256=jHTkqqJk1HQh2vZP1FkEeDOiMlO-SKmX8oYuS7lzO_o,34672
|
726
|
+
reconcile/utils/terrascript_aws_client.py,sha256=eshIGXo9HQkAAANhO_mdL3a7M7A6NbMMlc8nj61k6Lk,278034
|
727
727
|
reconcile/utils/three_way_diff_strategy.py,sha256=oQcHXd9LVhirJfoaOBoHUYuZVGfyL2voKr6KVI34zZE,4833
|
728
728
|
reconcile/utils/throughput.py,sha256=iP4UWAe2LVhDo69mPPmgo9nQ7RxHD6_GS8MZe-aSiuM,344
|
729
729
|
reconcile/utils/vault.py,sha256=9GSNHku8tw5KM2LKpZ1myWYDLtLGUJgpSnD0DxbzeO0,14956
|
730
730
|
reconcile/utils/vaultsecretref.py,sha256=0KUSzuvTRxPyKY919TO3-B_eYg4_76fzKvMF8j5s1G0,911
|
731
|
-
reconcile/utils/vcs.py,sha256=
|
731
|
+
reconcile/utils/vcs.py,sha256=98SLBpqy-j_foE6NRwsyMCiPpNQtM6ujspnk6_qOURI,8881
|
732
732
|
reconcile/utils/acs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
733
|
-
reconcile/utils/acs/base.py,sha256=
|
734
|
-
reconcile/utils/acs/notifiers.py,sha256=
|
733
|
+
reconcile/utils/acs/base.py,sha256=4UsDrCpAOuddL3PKNuIQYoJP1BtZQNNB8_KEX0lXneg,2532
|
734
|
+
reconcile/utils/acs/notifiers.py,sha256=nHVw9C_2-K4nv5zq26jlOTSw1roY6TKlovi1sOfpxpI,4998
|
735
735
|
reconcile/utils/acs/policies.py,sha256=jpbi3qpGkBD_X6MfzsX12dPajUbmACmhIOz_0rDvYzs,5489
|
736
736
|
reconcile/utils/acs/rbac.py,sha256=ugsLM9Pb7FbUbdq85E3VzXGMaB9ZovXob7tdWCxwqZ8,8808
|
737
737
|
reconcile/utils/aws_api_typed/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -760,9 +760,9 @@ reconcile/utils/internal_groups/models.py,sha256=y_IqBVqfGqNXiu0VudvBWFrm_-uafVm
|
|
760
760
|
reconcile/utils/jinja2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
761
761
|
reconcile/utils/jinja2/extensions.py,sha256=7K-uo6G2eCWa98MHT8fRPYIKCLQB_5D2keqQ_LyAfHM,1293
|
762
762
|
reconcile/utils/jinja2/filters.py,sha256=tmiaYMhji5fv4B66YtR7zc-mE3wQLyj5I5SeX0WA2l4,4754
|
763
|
-
reconcile/utils/jinja2/utils.py,sha256=
|
763
|
+
reconcile/utils/jinja2/utils.py,sha256=a4vpt8f0UHerPAZs5zFESkVzZdEZRJjZ4mzJ19nubjI,8048
|
764
764
|
reconcile/utils/jobcontroller/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
765
|
-
reconcile/utils/jobcontroller/controller.py,sha256=
|
765
|
+
reconcile/utils/jobcontroller/controller.py,sha256=n9twSH_xZtp5vknM3qByp0eWCn9ED4U1a6yOFBS-GTg,14488
|
766
766
|
reconcile/utils/jobcontroller/models.py,sha256=x9YIvWfYOOvXNKToFVx1H7qDrZb0Sa1KI_4Y0gl7rMM,6336
|
767
767
|
reconcile/utils/membershipsources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
768
768
|
reconcile/utils/membershipsources/app_interface_resolver.py,sha256=MqDFvK3aXhmmMuMiIygC-onFVrrIopKHriaYJQ5jnuY,1988
|
@@ -771,7 +771,7 @@ reconcile/utils/membershipsources/resolver.py,sha256=meERrCZqeVJZR2lHdZEznaZDsCs
|
|
771
771
|
reconcile/utils/merge_request_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
772
772
|
reconcile/utils/merge_request_manager/merge_request_manager.py,sha256=3EP6Yw_zB7nY0OkU8D_32nDqta1TITgtRI0cSmOlNQg,3332
|
773
773
|
reconcile/utils/merge_request_manager/parser.py,sha256=5pGoz8Q6EuYXlUc1z-D0FahdRP2YLO8CpACoa9HcgtQ,2098
|
774
|
-
reconcile/utils/mr/__init__.py,sha256=
|
774
|
+
reconcile/utils/mr/__init__.py,sha256=hcfHDIIIsJT4C0BnzDnyeZEfZdamrqHzMLcBzIT1ibI,2578
|
775
775
|
reconcile/utils/mr/app_interface_reporter.py,sha256=6Kpg93V9FvcOke9Jimkva359MQ-ZyBIkUpf8QIA6-to,1793
|
776
776
|
reconcile/utils/mr/aws_access.py,sha256=w-UJutB_OfBJOvr-gsPzhtBPkDfKcNZZWGGuI9cN3HI,2605
|
777
777
|
reconcile/utils/mr/base.py,sha256=TP6xaxznxsF_v2KcC_D3ut1cX_4KCcx4pjIC1-4eZUY,7307
|
@@ -783,7 +783,7 @@ reconcile/utils/mr/ocm_update_recommended_version.py,sha256=p_aVP0TGrlKk9WBwgQnY
|
|
783
783
|
reconcile/utils/mr/ocm_upgrade_scheduler_org_updates.py,sha256=ojnIjw-8vRnmCCxOGBOEgPZLH4nC1hcuef74LWw2Rpk,3004
|
784
784
|
reconcile/utils/mr/promote_qontract.py,sha256=3o_Lpn3gQc8HP3kSJRB1d7TvaDoIAKWLap5bhagQRaM,5945
|
785
785
|
reconcile/utils/mr/user_maintenance.py,sha256=cHPBn8zrReWLHalyk-EFdkFJe9zjVjRoZhT4t2zZfGE,3956
|
786
|
-
reconcile/utils/ocm/__init__.py,sha256=
|
786
|
+
reconcile/utils/ocm/__init__.py,sha256=Y-bp8GomMpyCo0tFW6kJ78-ZG1UIupYRtBzbMWU0kwM,798
|
787
787
|
reconcile/utils/ocm/addons.py,sha256=_LDdJ-gapM3s5exKlIUt-MlXZTAUoHezbYBU0QmvfWQ,7335
|
788
788
|
reconcile/utils/ocm/base.py,sha256=iL_uMN03URDisWHpsaGGto_pLx652epUkuld_9ctx5o,14555
|
789
789
|
reconcile/utils/ocm/cluster_groups.py,sha256=F8oqVqN_4QUnGL0K61zZhoYIzJeP57EcmZpwmoV0mr4,1751
|
@@ -811,10 +811,10 @@ reconcile/utils/runtime/integration.py,sha256=H3kDfbc4IKrhubSDCWHs0W9oxM7FoCiPax
|
|
811
811
|
reconcile/utils/runtime/meta.py,sha256=dWdKS9eHVuowFkTK4lgXJ723vS1y9giOMzePUKnHnDI,214
|
812
812
|
reconcile/utils/runtime/runner.py,sha256=I30KRrX1UQbHc_Ir1cIZX3OfNSdoHKdnDSPAEB69Ilk,7944
|
813
813
|
reconcile/utils/runtime/sharding.py,sha256=r0ieUtNed7NvknSw6qQrCkKpVXE1shuHGnfFcnpA_k4,16142
|
814
|
-
reconcile/utils/saasherder/__init__.py,sha256=
|
814
|
+
reconcile/utils/saasherder/__init__.py,sha256=3U8plqMAPRE1kjwZ5YnIsYsggTf4_gS7flRUEuXVBAs,343
|
815
815
|
reconcile/utils/saasherder/interfaces.py,sha256=C2wrw34OXypshVocAsPrVZsSHptgw4g9u7Haa2wulZQ,9087
|
816
816
|
reconcile/utils/saasherder/models.py,sha256=z8ln03zi2a8cu716NcNUDHp8Dv1VcVbhqdWVxCl7x9A,10148
|
817
|
-
reconcile/utils/saasherder/saasherder.py,sha256=
|
817
|
+
reconcile/utils/saasherder/saasherder.py,sha256=qYnVoBydM0lMMW0J4xvMWFi6kBZzpvguqEbQgm2c1QM,85683
|
818
818
|
reconcile/utils/terraform/__init__.py,sha256=zNbiyTWo35AT1sFTElL2j_AA0jJ_yWE_bfFn-nD2xik,250
|
819
819
|
reconcile/utils/terraform/config.py,sha256=5UVrd563TMcvi4ooa5JvWVDW1I3bIWg484u79evfV_8,164
|
820
820
|
reconcile/utils/terraform/config_client.py,sha256=gRL1rQ0AqvShei_rcGqC3HDYGskOFKE1nPrJyJE9yno,4676
|
@@ -823,7 +823,7 @@ reconcile/utils/terrascript/cloudflare_client.py,sha256=HPmWBF6X2yZ4_Yly5IdMmEwx
|
|
823
823
|
reconcile/utils/terrascript/cloudflare_resources.py,sha256=AXI0NddGSwn5rro1GvKdL7CAbiobPnb_0KpDUZVpIGk,15973
|
824
824
|
reconcile/utils/terrascript/models.py,sha256=DZfSEqyaZh8fCE_g7toa9TUCzcn3MHnuumoWCdzACh0,441
|
825
825
|
reconcile/utils/terrascript/resources.py,sha256=ucuudrCjmJYeSleklXTlmeSEwZOqVtEfzWFEiDZydxM,1361
|
826
|
-
reconcile/utils/unleash/__init__.py,sha256=
|
826
|
+
reconcile/utils/unleash/__init__.py,sha256=2PsN3GlLU8DOyWSvv5q9uzwuFn_vYtfEo-mmVaIFtpA,219
|
827
827
|
reconcile/utils/unleash/client.py,sha256=YrJnauxjcy1ml7W2AHg7dzIH_fVK_GugoRu7IFmk6e0,3505
|
828
828
|
reconcile/utils/unleash/server.py,sha256=907gDh9Ee8UxLqusnfpzE-7LUnttB38D4xhVJ0vMf_M,4439
|
829
829
|
release/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -831,10 +831,10 @@ release/test_version.py,sha256=4DKxDZkT0aoS6ibZFsH2fd_wNETij1qfn2pCgQtVCGo,2093
|
|
831
831
|
release/version.py,sha256=hLSW-Ai13atY9yBcUkEPEOr-drkZdRC4VcFIm1n5Y8o,4103
|
832
832
|
tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
833
833
|
tools/app_interface_metrics_exporter.py,sha256=zkwkxdAUAxjdc-pzx2_oJXG25fo0Fnyd5JXPk-iPcOQ,1619
|
834
|
-
tools/app_interface_reporter.py,sha256=
|
834
|
+
tools/app_interface_reporter.py,sha256=oZPib4HPq0aZ2Zui1QGJGk6qQdfpeihujGDBnSdKyGE,17627
|
835
835
|
tools/glitchtip_access_reporter.py,sha256=oPBnk_YoDuljU3v0FaChzOwwnk4vap1xEE67QEjzdqs,2948
|
836
836
|
tools/glitchtip_access_revalidation.py,sha256=8kbBJk04mkq28kWoRDDkfCGIF3GRg3pJrFAh1sW0dbk,2821
|
837
|
-
tools/qontract_cli.py,sha256=
|
837
|
+
tools/qontract_cli.py,sha256=LDQgwmAg3kzgtPuODqhGgPeVfD_9g8dgiOOVRsJ3YRA,128234
|
838
838
|
tools/sd_app_sre_alert_report.py,sha256=e9vAdyenUz2f5c8-z-5WY0wv-SJ9aePKDH2r4IwB6pc,5063
|
839
839
|
tools/template_validation.py,sha256=qpKYaTgk0GOPGa2Ct5_5sKdwIHtCAKIBGzsMPuJU5fw,3371
|
840
840
|
tools/cli_commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -865,8 +865,8 @@ tools/test/test_qontract_cli.py,sha256=_D61RFGAN5x44CY1tYbouhlGXXABwYfxKSWSQx3Jr
|
|
865
865
|
tools/test/test_saas_promotion_state.py,sha256=dy4kkSSAQ7bC0Xp2CociETGN-2aABEfL6FU5D9Jl00Y,6056
|
866
866
|
tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
|
867
867
|
tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
|
868
|
-
qontract_reconcile-0.10.
|
869
|
-
qontract_reconcile-0.10.
|
870
|
-
qontract_reconcile-0.10.
|
871
|
-
qontract_reconcile-0.10.
|
872
|
-
qontract_reconcile-0.10.
|
868
|
+
qontract_reconcile-0.10.1rc1033.dist-info/METADATA,sha256=UgXHDzIBXemPFdpTK2uj033p1---CqacT8xzomQxMxI,2213
|
869
|
+
qontract_reconcile-0.10.1rc1033.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
870
|
+
qontract_reconcile-0.10.1rc1033.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
|
871
|
+
qontract_reconcile-0.10.1rc1033.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
|
872
|
+
qontract_reconcile-0.10.1rc1033.dist-info/RECORD,,
|
@@ -53,7 +53,7 @@ def act(dry_run, gitlab_project_id, accounts, keys_to_delete, defer=None):
|
|
53
53
|
key = k["key"]
|
54
54
|
logging.info(["delete_aws_access_key", account, key])
|
55
55
|
if not dry_run:
|
56
|
-
path = "data" +
|
56
|
+
path = "data" + next(a["path"] for a in accounts if a["name"] == account)
|
57
57
|
|
58
58
|
mr = CreateDeleteAwsAccessKey(account, path, key)
|
59
59
|
mr.submit(cli=mr_cli)
|
reconcile/cli.py
CHANGED
@@ -1003,7 +1003,7 @@ def aws_saml_roles(
|
|
1003
1003
|
"--initial-user-secret-vault-path",
|
1004
1004
|
help="The path in Vault to store the initial user secret. Python format string with access to 'account_name' attribute.",
|
1005
1005
|
required=True,
|
1006
|
-
default="app-sre-v2/creds/terraform/{account_name}/config",
|
1006
|
+
default="app-sre-v2/creds/terraform/{account_name}/config", # noqa: RUF027
|
1007
1007
|
)
|
1008
1008
|
@click.option(
|
1009
1009
|
"--account-tmpl-resource",
|
@@ -218,7 +218,7 @@ class DynatraceTokenProviderIntegration(
|
|
218
218
|
_expose_errors_as_service_log(
|
219
219
|
ocm_client,
|
220
220
|
cluster.external_id,
|
221
|
-
f"DTP can't create {token_spec.name=} {
|
221
|
+
f"DTP can't create {token_spec.name=} {e.args!s}",
|
222
222
|
)
|
223
223
|
logging.info(
|
224
224
|
f"{token_spec.name=} created in {dt_api_url} for {cluster.external_id=}."
|
@@ -271,7 +271,7 @@ class DynatraceTokenProviderIntegration(
|
|
271
271
|
_expose_errors_as_service_log(
|
272
272
|
ocm_client,
|
273
273
|
cluster.external_id,
|
274
|
-
f"DTP can't patch {token_spec.name=} for {SYNCSET_AND_MANIFEST_ID} due to {
|
274
|
+
f"DTP can't patch {token_spec.name=} for {SYNCSET_AND_MANIFEST_ID} due to {e.args!s}",
|
275
275
|
)
|
276
276
|
logging.info(
|
277
277
|
f"Patched {token_spec.name=} for {SYNCSET_AND_MANIFEST_ID} in {cluster.external_id=}."
|
@@ -261,8 +261,7 @@ class EndpointsDiscoveryIntegration(
|
|
261
261
|
) -> ExtendedEarlyExitRunnerResult:
|
262
262
|
"""Reconcile the endpoints for all namespaces."""
|
263
263
|
apps = self.get_apps(oc_map, endpoint_template, namespaces)
|
264
|
-
|
265
|
-
merge_request_manager.create_merge_request(apps=apps)
|
264
|
+
merge_request_manager.create_merge_request(apps=apps)
|
266
265
|
return ExtendedEarlyExitRunnerResult(payload={}, applied_count=len(apps))
|
267
266
|
|
268
267
|
@defer
|
@@ -72,13 +72,17 @@ class Renderer:
|
|
72
72
|
"""Update the app-interface app file for a merge request."""
|
73
73
|
yml = create_ruamel_instance(explicit_start=True)
|
74
74
|
content = yml.load(current_content)
|
75
|
-
|
76
|
-
for
|
75
|
+
new_endpoints = []
|
76
|
+
for app_endpoint in content.setdefault("endPoints", []):
|
77
77
|
if app_endpoint["name"] in endpoints_to_delete:
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
78
|
+
continue
|
79
|
+
elif app_endpoint["name"] in endpoints_to_change:
|
80
|
+
new_endpoints.append(endpoints_to_change[app_endpoint["name"]])
|
81
|
+
else:
|
82
|
+
new_endpoints.append(app_endpoint)
|
83
|
+
|
84
|
+
new_endpoints.extend(endpoints_to_add)
|
85
|
+
content["endPoints"] = new_endpoints
|
82
86
|
with StringIO() as stream:
|
83
87
|
yml.dump(content, stream)
|
84
88
|
return stream.getvalue()
|
@@ -139,6 +139,9 @@ class MergeRequestManager(MergeRequestManagerBase[EPDInfo]):
|
|
139
139
|
# same external resource.
|
140
140
|
return None
|
141
141
|
|
142
|
+
if not apps:
|
143
|
+
return None
|
144
|
+
|
142
145
|
endpoints_discovery_mr = EndpointsDiscoveryMR(
|
143
146
|
title=self._renderer.render_title(),
|
144
147
|
description=self._renderer.render_description(hash=apps_hash),
|
reconcile/github_org.py
CHANGED
@@ -113,9 +113,9 @@ def fetch_desired_state(clusters):
|
|
113
113
|
continue
|
114
114
|
if aws_infrastructure_access.get("assume_role"):
|
115
115
|
continue
|
116
|
-
aws_account_uid =
|
116
|
+
aws_account_uid = next(
|
117
117
|
a["uid"] for a in aws_accounts if a["name"] == spec.provisioner_name
|
118
|
-
|
118
|
+
)
|
119
119
|
cluster = aws_infrastructure_access["cluster"]["name"]
|
120
120
|
access_level = aws_infrastructure_access["access_level"]
|
121
121
|
item = {
|
reconcile/openshift_base.py
CHANGED
@@ -316,7 +316,7 @@ def populate_current_state(
|
|
316
316
|
)
|
317
317
|
except StatusCodeError as e:
|
318
318
|
ri.register_error(cluster=spec.cluster)
|
319
|
-
logging.error(f"[{spec.cluster}/{spec.namespace}] {
|
319
|
+
logging.error(f"[{spec.cluster}/{spec.namespace}] {e!s}")
|
320
320
|
|
321
321
|
|
322
322
|
def fetch_current_state(
|
@@ -907,7 +907,7 @@ def delete_action(
|
|
907
907
|
)
|
908
908
|
except StatusCodeError as e:
|
909
909
|
ri.register_error()
|
910
|
-
msg = f"[{cluster}/{namespace}] {
|
910
|
+
msg = f"[{cluster}/{namespace}] {e!s}"
|
911
911
|
logging.error(msg)
|
912
912
|
|
913
913
|
|
@@ -91,7 +91,7 @@ def oc(
|
|
91
91
|
kubeconfig: str, namespace: str, command: list[str], stdin: bytes | None = None
|
92
92
|
) -> dict | None:
|
93
93
|
ret = subprocess.run(
|
94
|
-
["oc", "--kubeconfig", kubeconfig, "-n", namespace, "-o", "json"
|
94
|
+
["oc", "--kubeconfig", kubeconfig, "-n", namespace, "-o", "json", *command],
|
95
95
|
input=stdin,
|
96
96
|
check=True,
|
97
97
|
capture_output=True,
|
@@ -680,7 +680,7 @@ def fetch_desired_state(
|
|
680
680
|
UnknownProviderError,
|
681
681
|
) as e:
|
682
682
|
ri.register_error()
|
683
|
-
msg = f"[{cluster}/{namespace}] {
|
683
|
+
msg = f"[{cluster}/{namespace}] {e!s}"
|
684
684
|
_locked_error_log(msg)
|
685
685
|
return
|
686
686
|
|
@@ -747,7 +747,7 @@ def fetch_states(
|
|
747
747
|
|
748
748
|
except StatusCodeError as e:
|
749
749
|
ri.register_error(cluster=spec.cluster)
|
750
|
-
logging.error(f"{spec} - exception: {
|
750
|
+
logging.error(f"{spec} - exception: {e!s}")
|
751
751
|
|
752
752
|
|
753
753
|
def fetch_data(
|
@@ -147,7 +147,7 @@ def collect_compare_diffs(
|
|
147
147
|
# that changes another saas file was merged but is not yet
|
148
148
|
# reflected in the baseline graphql endpoint.
|
149
149
|
# https://issues.redhat.com/browse/APPSRE-3029
|
150
|
-
logging.debug(f"Diff not found in changed paths, skipping: {
|
150
|
+
logging.debug(f"Diff not found in changed paths, skipping: {d!s}")
|
151
151
|
continue
|
152
152
|
for c in current_state:
|
153
153
|
if d.saas_file_name != c.saas_file_name:
|
reconcile/query_validator.py
CHANGED
@@ -42,13 +42,13 @@ def run(dry_run):
|
|
42
42
|
gqlapi.query(gql.get_resource(q["path"])["content"])
|
43
43
|
except (gql.GqlGetResourceError, gql.GqlApiError) as e:
|
44
44
|
error = True
|
45
|
-
logging.error(f"query validation error in {qv_name}: {
|
45
|
+
logging.error(f"query validation error in {qv_name}: {e!s}")
|
46
46
|
for r in qv.get("resources") or []:
|
47
47
|
try:
|
48
48
|
fetch_openshift_resource(r, qv, settings=settings, skip_validation=True)
|
49
49
|
except Exception as e:
|
50
50
|
error = True
|
51
|
-
logging.error(f"query validation error in {qv_name}: {
|
51
|
+
logging.error(f"query validation error in {qv_name}: {e!s}")
|
52
52
|
|
53
53
|
if error:
|
54
54
|
sys.exit(ExitCodes.ERROR)
|
@@ -147,9 +147,9 @@ def build_desired_state(
|
|
147
147
|
sys.exit(ExitCodes.ERROR)
|
148
148
|
tf_zone_spec = tf_zone_specs[0]
|
149
149
|
tf_zone_account_name = tf_zone_spec.provisioner_name
|
150
|
-
zone_account =
|
150
|
+
zone_account = next(
|
151
151
|
a for a in all_accounts if a["name"] == tf_zone_account_name
|
152
|
-
|
152
|
+
)
|
153
153
|
tf_zone_region = (
|
154
154
|
tf_zone_spec.resource.get("region")
|
155
155
|
or zone_account["resourcesDefaultRegion"]
|
@@ -43,7 +43,7 @@ def test_blackbox_exporter_endpoint_loading(mocker):
|
|
43
43
|
assert endpoints is not None
|
44
44
|
assert len(endpoints) == 1
|
45
45
|
|
46
|
-
provider =
|
46
|
+
provider = next(iter(endpoints.keys()))
|
47
47
|
assert provider.provider == BLACKBOX_EXPORTER_PROVIDER
|
48
48
|
provider_endpoints = endpoints.get(provider)
|
49
49
|
assert provider_endpoints is not None
|
@@ -74,7 +74,7 @@ def test_blackbox_exporter_probe_building(mocker):
|
|
74
74
|
endpoints = get_endpoints(BLACKBOX_EXPORTER_PROVIDER)
|
75
75
|
assert len(endpoints) == 1
|
76
76
|
|
77
|
-
provider =
|
77
|
+
provider = next(iter(endpoints.keys()))
|
78
78
|
provider_endpoints = endpoints.get(provider)
|
79
79
|
assert provider_endpoints is not None
|
80
80
|
probe_resource = blackbox_exporter_probe_builder(provider, provider_endpoints)
|
@@ -108,7 +108,7 @@ def test_signalfx_probe_building(mocker):
|
|
108
108
|
endpoints = get_endpoints(SIGNALFX_PROVIDER)
|
109
109
|
assert len(endpoints) == 1
|
110
110
|
|
111
|
-
provider =
|
111
|
+
provider = next(iter(endpoints.keys()))
|
112
112
|
provider_endpoints = endpoints.get(provider)
|
113
113
|
assert provider_endpoints is not None
|
114
114
|
probe_resource = signalfx_probe_builder(provider, provider_endpoints)
|
@@ -157,7 +157,7 @@ def test_blackbox_exporter_filling_desired_state(mocker):
|
|
157
157
|
add_desired_mock = mocker.patch.object(ResourceInventory, "add_desired")
|
158
158
|
|
159
159
|
endpoints = get_endpoints(BLACKBOX_EXPORTER_PROVIDER)
|
160
|
-
provider =
|
160
|
+
provider = next(iter(endpoints.keys()))
|
161
161
|
probe = blackbox_exporter_probe_builder(provider, endpoints[provider])
|
162
162
|
assert probe is not None
|
163
163
|
fill_desired_state(provider, probe, ResourceInventory())
|
@@ -178,7 +178,7 @@ def test_signalfx_filling_desired_state(mocker):
|
|
178
178
|
add_desired_mock = mocker.patch.object(ResourceInventory, "add_desired")
|
179
179
|
|
180
180
|
endpoints = get_endpoints(SIGNALFX_PROVIDER)
|
181
|
-
provider =
|
181
|
+
provider = next(iter(endpoints.keys()))
|
182
182
|
probe = signalfx_probe_builder(provider, endpoints[provider])
|
183
183
|
assert probe is not None
|
184
184
|
fill_desired_state(provider, probe, ResourceInventory())
|
@@ -391,7 +391,7 @@ def test_resource_inventory_add_desired_resource_short_kind():
|
|
391
391
|
|
392
392
|
assert len(list(ri)) == 1
|
393
393
|
|
394
|
-
cluster_name, namespace_name, resource_type, resource =
|
394
|
+
cluster_name, namespace_name, resource_type, resource = next(iter(ri))
|
395
395
|
assert cluster_name == "cl"
|
396
396
|
assert namespace_name == "ns"
|
397
397
|
assert resource_type == "Deployment"
|
@@ -412,7 +412,7 @@ def test_resource_inventory_add_desired_resource_long_kind():
|
|
412
412
|
|
413
413
|
assert len(list(ri)) == 1
|
414
414
|
|
415
|
-
cluster_name, namespace_name, resource_type, resource =
|
415
|
+
cluster_name, namespace_name, resource_type, resource = next(iter(ri))
|
416
416
|
assert cluster_name == "cl"
|
417
417
|
assert namespace_name == "ns"
|
418
418
|
assert resource_type == "Deployment.apps"
|
@@ -155,7 +155,7 @@ def test_fetch_current_state_ri_initialized(oc_cs1: oc.OCClient, tmpl1: dict[str
|
|
155
155
|
resource_names=[],
|
156
156
|
)
|
157
157
|
|
158
|
-
_, _, _, resource =
|
158
|
+
_, _, _, resource = next(iter(ri))
|
159
159
|
assert len(resource["current"]) == 1
|
160
160
|
assert "tmpl1" in resource["current"]
|
161
161
|
assert resource["current"]["tmpl1"].kind == "Template"
|
@@ -178,7 +178,7 @@ def test_fetch_current_state_kind_not_supported(
|
|
178
178
|
resource_names=[],
|
179
179
|
)
|
180
180
|
|
181
|
-
_, _, _, resource =
|
181
|
+
_, _, _, resource = next(iter(ri))
|
182
182
|
assert len(resource["current"]) == 0
|
183
183
|
|
184
184
|
|
@@ -195,7 +195,7 @@ def test_fetch_current_state_long_kind(oc_cs1: oc.OCClient, tmpl1: dict[str, Any
|
|
195
195
|
resource_names=[],
|
196
196
|
)
|
197
197
|
|
198
|
-
_, _, _, resource =
|
198
|
+
_, _, _, resource = next(iter(ri))
|
199
199
|
assert len(resource["current"]) == 1
|
200
200
|
assert "tmpl1" in resource["current"]
|
201
201
|
assert resource["current"]["tmpl1"].kind == "Template"
|
@@ -218,7 +218,7 @@ def test_fetch_current_state_long_kind_not_supported(
|
|
218
218
|
resource_names=[],
|
219
219
|
)
|
220
220
|
|
221
|
-
_, _, _, resource =
|
221
|
+
_, _, _, resource = next(iter(ri))
|
222
222
|
assert len(resource["current"]) == 0
|
223
223
|
|
224
224
|
|
@@ -227,7 +227,7 @@ def test_fetch_states(current_state_spec: CurrentStateSpec, tmpl1: dict[str, Any
|
|
227
227
|
ri.initialize_resource_type("cs1", "ns1", "Template")
|
228
228
|
current_state_spec.oc.get_items = lambda kind, **kwargs: [tmpl1] # type: ignore[method-assign]
|
229
229
|
orb.fetch_states(ri=ri, spec=current_state_spec)
|
230
|
-
_, _, _, resource =
|
230
|
+
_, _, _, resource = next(iter(ri))
|
231
231
|
assert len(resource["current"]) == 1
|
232
232
|
assert "tmpl1" in resource["current"]
|
233
233
|
assert resource["current"]["tmpl1"].kind == "Template"
|
@@ -238,7 +238,7 @@ def test_fetch_states_unknown_kind(current_state_spec: CurrentStateSpec):
|
|
238
238
|
ri = ResourceInventory()
|
239
239
|
ri.initialize_resource_type("cs1", "ns1", "UnknownKind")
|
240
240
|
orb.fetch_states(ri=ri, spec=current_state_spec)
|
241
|
-
_, _, _, resource =
|
241
|
+
_, _, _, resource = next(iter(ri))
|
242
242
|
assert len(resource["current"]) == 0
|
243
243
|
|
244
244
|
|
@@ -250,7 +250,7 @@ def test_fetch_states_oc_error(current_state_spec: CurrentStateSpec):
|
|
250
250
|
ri.initialize_resource_type("cs1", "ns1", "Template")
|
251
251
|
orb.fetch_states(ri=ri, spec=current_state_spec)
|
252
252
|
assert ri.has_error_registered("cs1")
|
253
|
-
_, _, _, resource =
|
253
|
+
_, _, _, resource = next(iter(ri))
|
254
254
|
assert len(resource["current"]) == 0
|
255
255
|
|
256
256
|
|
@@ -264,11 +264,13 @@ def test_openshift_serviceaccount_tokens__fetch_desired_state_create_token(
|
|
264
264
|
)
|
265
265
|
== 1
|
266
266
|
)
|
267
|
-
r =
|
268
|
-
|
269
|
-
"
|
270
|
-
|
271
|
-
|
267
|
+
r = next(
|
268
|
+
iter(
|
269
|
+
ri._clusters["cluster"]["with-openshift-serviceaccount-tokens"]["Secret"][
|
270
|
+
"desired"
|
271
|
+
].values()
|
272
|
+
)
|
273
|
+
)
|
272
274
|
assert r.body["type"] == "kubernetes.io/service-account-token"
|
273
275
|
|
274
276
|
|
@@ -117,7 +117,7 @@ def build_cluster(
|
|
117
117
|
cluster["awsInfrastructureManagementAccounts"] = []
|
118
118
|
if read_only_accounts:
|
119
119
|
for acc in read_only_accounts:
|
120
|
-
cluster["awsInfrastructureManagementAccounts"].append( # type: ignore
|
120
|
+
cluster["awsInfrastructureManagementAccounts"].append( # type: ignore
|
121
121
|
{
|
122
122
|
"account": {
|
123
123
|
"name": acc,
|
@@ -131,7 +131,7 @@ def build_cluster(
|
|
131
131
|
)
|
132
132
|
if network_mgmt_accounts:
|
133
133
|
for idx, acc in enumerate(network_mgmt_accounts):
|
134
|
-
cluster["awsInfrastructureManagementAccounts"].append( # type: ignore
|
134
|
+
cluster["awsInfrastructureManagementAccounts"].append( # type: ignore
|
135
135
|
{
|
136
136
|
"account": {
|
137
137
|
"name": acc,
|
reconcile/utils/acs/base.py
CHANGED
reconcile/utils/acs/notifiers.py
CHANGED
@@ -123,7 +123,7 @@ class AcsNotifiersApi(AcsBaseApi):
|
|
123
123
|
]
|
124
124
|
|
125
125
|
def get_notifier_id_by_name(self, name: str) -> str:
|
126
|
-
return
|
126
|
+
return next(n["id"] for n in self.get_notifiers() if n["name"] == name)
|
127
127
|
|
128
128
|
def update_jira_notifier(
|
129
129
|
self, jira_notifier: JiraNotifier, jira_credentials: JiraCredentials
|
reconcile/utils/aws_api.py
CHANGED
@@ -738,7 +738,7 @@ class AWSApi: # pylint: disable=too-many-public-methods
|
|
738
738
|
|
739
739
|
def get_user_key_status(self, iam: IAMClient, user: str, key: str) -> KeyStatus:
|
740
740
|
key_list = self._get_user_key_list(iam, user)
|
741
|
-
return
|
741
|
+
return next(k["Status"] for k in key_list if k["AccessKeyId"] == key)
|
742
742
|
|
743
743
|
def get_support_cases(self):
|
744
744
|
all_support_cases = {}
|
reconcile/utils/config.py
CHANGED
@@ -35,7 +35,7 @@ def read(secret):
|
|
35
35
|
config = config[t]
|
36
36
|
return config[field]
|
37
37
|
except Exception as e:
|
38
|
-
raise SecretNotFound(f"key not found in config file {path}: {
|
38
|
+
raise SecretNotFound(f"key not found in config file {path}: {e!s}") from None
|
39
39
|
|
40
40
|
|
41
41
|
def read_all(secret):
|
@@ -47,6 +47,4 @@ def read_all(secret):
|
|
47
47
|
config = config[t]
|
48
48
|
return config
|
49
49
|
except Exception as e:
|
50
|
-
raise SecretNotFound(
|
51
|
-
f"secret {path} not found in config file: {str(e)}"
|
52
|
-
) from None
|
50
|
+
raise SecretNotFound(f"secret {path} not found in config file: {e!s}") from None
|
@@ -33,7 +33,7 @@ def get_external_resource_specs(
|
|
33
33
|
external_resources = namespace_info.get("externalResources") or []
|
34
34
|
for e in external_resources:
|
35
35
|
for r in e.get("resources", []):
|
36
|
-
if
|
36
|
+
if r.get("managed_by_erv2"):
|
37
37
|
continue
|
38
38
|
spec = ExternalResourceSpec(
|
39
39
|
provision_provider=e["provider"],
|
reconcile/utils/gql.py
CHANGED
@@ -77,7 +77,7 @@ class GqlApiErrorForbiddenSchema(Exception):
|
|
77
77
|
|
78
78
|
class GqlGetResourceError(Exception):
|
79
79
|
def __init__(self, path, msg):
|
80
|
-
super().__init__(f"Error getting resource from path {path}: {
|
80
|
+
super().__init__(f"Error getting resource from path {path}: {msg!s}")
|
81
81
|
|
82
82
|
|
83
83
|
class GqlApi:
|
reconcile/utils/jinja2/utils.py
CHANGED
@@ -122,7 +122,7 @@ def lookup_graphql_query_results(query: str, **kwargs: dict[str, Any]) -> list[A
|
|
122
122
|
gqlapi = gql.get_api()
|
123
123
|
resource = gqlapi.get_resource(query)["content"]
|
124
124
|
rendered_resource = jinja2.Template(resource).render(**kwargs)
|
125
|
-
results =
|
125
|
+
results = next(iter(gqlapi.query(rendered_resource).values()))
|
126
126
|
return results
|
127
127
|
|
128
128
|
|
@@ -158,9 +158,9 @@ class K8sJobController:
|
|
158
158
|
the function will wait indefinitely. If a timeout occures, a TimeoutError will be raised.
|
159
159
|
"""
|
160
160
|
jobs_left = job_names.copy()
|
161
|
-
job_statuses: dict[str, JobStatus] =
|
162
|
-
|
163
|
-
|
161
|
+
job_statuses: dict[str, JobStatus] = dict.fromkeys(
|
162
|
+
job_names, JobStatus.NOT_EXISTS
|
163
|
+
)
|
164
164
|
|
165
165
|
start_time = self.time_module.time()
|
166
166
|
while jobs_left:
|
reconcile/utils/mr/__init__.py
CHANGED
@@ -22,19 +22,19 @@ from reconcile.utils.mr.user_maintenance import (
|
|
22
22
|
)
|
23
23
|
|
24
24
|
__all__ = [
|
25
|
-
"
|
26
|
-
"UnknownMergeRequestType",
|
27
|
-
"MergeRequestProcessingError",
|
25
|
+
"CreateAppInterfaceNotificator",
|
28
26
|
"CreateAppInterfaceReporter",
|
29
|
-
"CreateDeleteAwsAccessKey",
|
30
27
|
"CreateClustersUpdates",
|
31
|
-
"
|
32
|
-
"CreateOCMUpdateRecommendedVersion",
|
33
|
-
"CreateAppInterfaceNotificator",
|
28
|
+
"CreateDeleteAwsAccessKey",
|
34
29
|
"CreateDeleteUserAppInterface",
|
35
30
|
"CreateDeleteUserInfra",
|
36
|
-
"
|
31
|
+
"CreateOCMUpdateRecommendedVersion",
|
32
|
+
"CreateOCMUpgradeSchedulerOrgUpdates",
|
33
|
+
"MergeRequestProcessingError",
|
37
34
|
"PromoteQontractReconcileCommercial",
|
35
|
+
"PromoteQontractSchemas",
|
36
|
+
"UnknownMergeRequestType",
|
37
|
+
"init_from_sqs_message",
|
38
38
|
]
|
39
39
|
|
40
40
|
|
reconcile/utils/ocm/__init__.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
from reconcile.utils.ocm.ocm import * # noqa:
|
2
|
-
from reconcile.utils.ocm.products import ( # noqa: F401
|
1
|
+
from reconcile.utils.ocm.ocm import * # noqa: F403
|
2
|
+
from reconcile.utils.ocm.products import ( # noqa: F401
|
3
3
|
BYTES_IN_GIGABYTE,
|
4
4
|
CS_API_BASE,
|
5
5
|
DEFAULT_OCM_MACHINE_POOL_ID,
|
@@ -888,7 +888,7 @@ class SaasHerder: # pylint: disable=too-many-public-methods
|
|
888
888
|
url=url, path=path, ref=ref, github=github
|
889
889
|
)
|
890
890
|
except Exception as e:
|
891
|
-
logging.error(f"{error_prefix} error fetching template: {
|
891
|
+
logging.error(f"{error_prefix} error fetching template: {e!s}")
|
892
892
|
raise
|
893
893
|
|
894
894
|
# add COMMIT_SHA only if it is unspecified
|
@@ -930,7 +930,7 @@ class SaasHerder: # pylint: disable=too-many-public-methods
|
|
930
930
|
logging.error(
|
931
931
|
f"{error_prefix} error generating REPO_DIGEST. "
|
932
932
|
+ "Is REGISTRY_IMG missing? "
|
933
|
-
+ f"{
|
933
|
+
+ f"{e!s}"
|
934
934
|
)
|
935
935
|
raise
|
936
936
|
|
@@ -955,7 +955,7 @@ class SaasHerder: # pylint: disable=too-many-public-methods
|
|
955
955
|
try:
|
956
956
|
resources = oc.process(template, consolidated_parameters)
|
957
957
|
except StatusCodeError as e:
|
958
|
-
logging.error(f"{error_prefix} error processing template: {
|
958
|
+
logging.error(f"{error_prefix} error processing template: {e!s}")
|
959
959
|
|
960
960
|
elif provider == "directory":
|
961
961
|
try:
|
@@ -964,7 +964,7 @@ class SaasHerder: # pylint: disable=too-many-public-methods
|
|
964
964
|
)
|
965
965
|
except Exception as e:
|
966
966
|
logging.error(
|
967
|
-
f"{error_prefix} error fetching directory: {
|
967
|
+
f"{error_prefix} error fetching directory: {e!s} "
|
968
968
|
+ "(We do not support nested directories. Do you by chance have subdirectories?)"
|
969
969
|
)
|
970
970
|
raise
|
@@ -1141,7 +1141,7 @@ class SaasHerder: # pylint: disable=too-many-public-methods
|
|
1141
1141
|
)
|
1142
1142
|
except Exception as e:
|
1143
1143
|
logging.error(
|
1144
|
-
f"{error_prefix} Image is invalid: {image}. " + f"details: {
|
1144
|
+
f"{error_prefix} Image is invalid: {image}. " + f"details: {e!s}"
|
1145
1145
|
)
|
1146
1146
|
|
1147
1147
|
return None
|
reconcile/utils/state.py
CHANGED
@@ -250,7 +250,7 @@ class State:
|
|
250
250
|
self.client.head_bucket(Bucket=self.bucket)
|
251
251
|
except ClientError as details:
|
252
252
|
raise StateInaccessibleException(
|
253
|
-
f"Bucket {self.bucket} is not accessible - {
|
253
|
+
f"Bucket {self.bucket} is not accessible - {details!s}"
|
254
254
|
) from None
|
255
255
|
|
256
256
|
def __enter__(self) -> Self:
|
@@ -301,7 +301,7 @@ class State:
|
|
301
301
|
|
302
302
|
raise StateInaccessibleException(
|
303
303
|
f"Can not access state key {key_path} "
|
304
|
-
f"in bucket {self.bucket} - {
|
304
|
+
f"in bucket {self.bucket} - {details!s}"
|
305
305
|
) from None
|
306
306
|
|
307
307
|
def ls(self) -> list[str]:
|
@@ -523,7 +523,7 @@ class TerraformClient: # pylint: disable=too-many-public-methods
|
|
523
523
|
self.OUTPUT_TYPE_PASSWORDS,
|
524
524
|
self.OUTPUT_TYPE_CONSOLEURLS,
|
525
525
|
}:
|
526
|
-
return data[
|
526
|
+
return data[next(iter(data.keys()))]
|
527
527
|
return data
|
528
528
|
|
529
529
|
def populate_terraform_output_secrets(
|
@@ -5734,7 +5734,7 @@ class TerrascriptClient: # pylint: disable=too-many-public-methods
|
|
5734
5734
|
s3_client.head_bucket(Bucket=bucket_name)
|
5735
5735
|
except ClientError as details:
|
5736
5736
|
raise StateInaccessibleException(
|
5737
|
-
f"Bucket {bucket_name} is not accessible - {
|
5737
|
+
f"Bucket {bucket_name} is not accessible - {details!s}"
|
5738
5738
|
) from None
|
5739
5739
|
|
5740
5740
|
# todo: probably remove 'RedHat' from the object/variable/filepath
|
reconcile/utils/vcs.py
CHANGED
@@ -129,7 +129,7 @@ class VCS:
|
|
129
129
|
gitlab_instances: Iterable[GitlabInstanceV1],
|
130
130
|
) -> GitLabApi:
|
131
131
|
return GitLabApi(
|
132
|
-
|
132
|
+
next(iter(gitlab_instances)).dict(by_alias=True),
|
133
133
|
secret_reader=self._secret_reader,
|
134
134
|
)
|
135
135
|
|
@@ -139,7 +139,7 @@ class VCS:
|
|
139
139
|
app_interface_repo_url: str,
|
140
140
|
) -> GitLabApi:
|
141
141
|
return GitLabApi(
|
142
|
-
|
142
|
+
next(iter(gitlab_instances)).dict(by_alias=True),
|
143
143
|
secret_reader=self._secret_reader,
|
144
144
|
project_url=app_interface_repo_url,
|
145
145
|
)
|
tools/app_interface_reporter.py
CHANGED
@@ -338,10 +338,10 @@ def get_apps_data(date, month_delta=1, thread_pool_size=10):
|
|
338
338
|
validt_mx[cluster][namespace] = {}
|
339
339
|
if validation not in validt_mx[cluster][namespace]:
|
340
340
|
validt_mx[cluster][namespace][validation] = {}
|
341
|
-
if status not in validt_mx[cluster][namespace][validation]:
|
342
|
-
validt_mx[cluster][namespace][validation][status] = {}
|
341
|
+
if status not in validt_mx[cluster][namespace][validation]:
|
342
|
+
validt_mx[cluster][namespace][validation][status] = {}
|
343
343
|
value = int(sample.value)
|
344
|
-
validt_mx[cluster][namespace][validation][status] = value
|
344
|
+
validt_mx[cluster][namespace][validation][status] = value
|
345
345
|
for family in text_string_to_metric_families(slo_metrics):
|
346
346
|
for sample in family.samples:
|
347
347
|
if sample.name == "serviceslometrics":
|
@@ -358,14 +358,14 @@ def get_apps_data(date, month_delta=1, thread_pool_size=10):
|
|
358
358
|
slo_mx[cluster] = {}
|
359
359
|
if namespace not in slo_mx[cluster]:
|
360
360
|
slo_mx[cluster][namespace] = {}
|
361
|
-
if slo_doc_name not in slo_mx[cluster][namespace]: # pylint: disable=line-too-long
|
361
|
+
if slo_doc_name not in slo_mx[cluster][namespace]: # pylint: disable=line-too-long
|
362
362
|
slo_mx[cluster][namespace][slo_doc_name] = {}
|
363
|
-
if slo_name not in slo_mx[cluster][namespace][slo_doc_name]:
|
364
|
-
slo_mx[cluster][namespace][slo_doc_name][slo_name] = {
|
363
|
+
if slo_name not in slo_mx[cluster][namespace][slo_doc_name]:
|
364
|
+
slo_mx[cluster][namespace][slo_doc_name][slo_name] = {
|
365
365
|
sample.labels["type"]: sample.value
|
366
366
|
}
|
367
367
|
else:
|
368
|
-
slo_mx[cluster][namespace][slo_doc_name][slo_name].update({ # pylint: disable=line-too-long
|
368
|
+
slo_mx[cluster][namespace][slo_doc_name][slo_name].update({ # pylint: disable=line-too-long
|
369
369
|
sample.labels["type"]: sample.value
|
370
370
|
})
|
371
371
|
app["container_vulnerabilities"] = vuln_mx
|
tools/qontract_cli.py
CHANGED
@@ -1124,14 +1124,14 @@ def cidr_blocks(ctx, for_cluster: int, mask: int) -> None:
|
|
1124
1124
|
|
1125
1125
|
avail_addr = ipaddress.ip_address(latest_cluster_cidr["to"]) + 1
|
1126
1126
|
|
1127
|
-
print(f"INFO: Latest available network address: {
|
1127
|
+
print(f"INFO: Latest available network address: {avail_addr!s}")
|
1128
1128
|
try:
|
1129
1129
|
result_cidr_block = str(ipaddress.ip_network((avail_addr, mask)))
|
1130
1130
|
except ValueError:
|
1131
1131
|
print(f"ERROR: Invalid CIDR Mask {mask} Provided.")
|
1132
1132
|
sys.exit(1)
|
1133
|
-
print(f"INFO: You are reserving {
|
1134
|
-
print(f"\nYou can use: {
|
1133
|
+
print(f"INFO: You are reserving {2 ** (32 - mask)!s} network addresses.")
|
1134
|
+
print(f"\nYou can use: {result_cidr_block!s}")
|
1135
1135
|
else:
|
1136
1136
|
ctx.obj["options"]["sort"] = False
|
1137
1137
|
print_output(ctx.obj["options"], cidrs, columns)
|
@@ -1744,17 +1744,8 @@ def roles(ctx, org_username):
|
|
1744
1744
|
|
1745
1745
|
user = users[0]
|
1746
1746
|
|
1747
|
-
|
1748
|
-
|
1749
|
-
def add(d):
|
1750
|
-
for i, r in enumerate(roles):
|
1751
|
-
if all(d[k] == r[k] for k in ("type", "name", "resource")):
|
1752
|
-
roles.insert(
|
1753
|
-
i + 1, {"type": "", "name": "", "resource": "", "ref": d["ref"]}
|
1754
|
-
)
|
1755
|
-
return
|
1756
|
-
|
1757
|
-
roles.append(d)
|
1747
|
+
# type, name, resource, [ref]
|
1748
|
+
roles: dict[(str, str, str), set] = defaultdict(set)
|
1758
1749
|
|
1759
1750
|
for role in user["roles"]:
|
1760
1751
|
role_name = role["path"]
|
@@ -1771,53 +1762,38 @@ def roles(ctx, org_username):
|
|
1771
1762
|
if "team" in p:
|
1772
1763
|
r_name += "/" + p["team"]
|
1773
1764
|
|
1774
|
-
add(
|
1775
|
-
"type": "permission",
|
1776
|
-
"name": p["name"],
|
1777
|
-
"resource": r_name,
|
1778
|
-
"ref": role_name,
|
1779
|
-
})
|
1765
|
+
roles[("permission", p["name"], r_name)].add(role_name)
|
1780
1766
|
|
1781
1767
|
for aws in role.get("aws_groups") or []:
|
1782
1768
|
for policy in aws["policies"]:
|
1783
|
-
add(
|
1784
|
-
"type": "aws",
|
1785
|
-
"name": policy,
|
1786
|
-
"resource": aws["account"]["name"],
|
1787
|
-
"ref": aws["path"],
|
1788
|
-
})
|
1769
|
+
roles[("aws", policy, aws["account"]["name"])].add(aws["path"])
|
1789
1770
|
|
1790
1771
|
for a in role.get("access") or []:
|
1791
1772
|
if a["cluster"]:
|
1792
1773
|
cluster_name = a["cluster"]["name"]
|
1793
|
-
add(
|
1794
|
-
"type": "cluster",
|
1795
|
-
"name": a["clusterRole"],
|
1796
|
-
"resource": cluster_name,
|
1797
|
-
"ref": role_name,
|
1798
|
-
})
|
1774
|
+
roles[("cluster", a["clusterRole"], cluster_name)].add(role_name)
|
1799
1775
|
elif a["namespace"]:
|
1800
1776
|
ns_name = a["namespace"]["name"]
|
1801
|
-
add(
|
1802
|
-
"type": "namespace",
|
1803
|
-
"name": a["role"],
|
1804
|
-
"resource": ns_name,
|
1805
|
-
"ref": role_name,
|
1806
|
-
})
|
1777
|
+
roles[("namespace", a["role"], ns_name)].add(role_name)
|
1807
1778
|
|
1808
1779
|
for s in role.get("self_service") or []:
|
1809
1780
|
for d in s.get("datafiles") or []:
|
1810
1781
|
name = d.get("name")
|
1811
1782
|
if name:
|
1812
|
-
add(
|
1813
|
-
"type": "saas_file",
|
1814
|
-
"name": "owner",
|
1815
|
-
"resource": name,
|
1816
|
-
"ref": role_name,
|
1817
|
-
})
|
1783
|
+
roles[("saas_file", "owner", name)].add(role_name)
|
1818
1784
|
|
1819
1785
|
columns = ["type", "name", "resource", "ref"]
|
1820
|
-
|
1786
|
+
rows = [
|
1787
|
+
{
|
1788
|
+
"type": k[0],
|
1789
|
+
"name": k[1],
|
1790
|
+
"resource": k[2],
|
1791
|
+
"ref": ref,
|
1792
|
+
}
|
1793
|
+
for k, v in roles.items()
|
1794
|
+
for ref in v
|
1795
|
+
]
|
1796
|
+
print_output(ctx.obj["options"], rows, columns)
|
1821
1797
|
|
1822
1798
|
|
1823
1799
|
@get.command()
|
{qontract_reconcile-0.10.1rc1031.dist-info → qontract_reconcile-0.10.1rc1033.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|