qontract-reconcile 0.10.1rc1140__py3-none-any.whl → 0.10.1rc1141__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qontract-reconcile
3
- Version: 0.10.1rc1140
3
+ Version: 0.10.1rc1141
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
@@ -46,7 +46,7 @@ reconcile/jenkins_roles.py,sha256=pNNYcnmyDCTVytG2mi3BFhq9A7_3l301oFRQtY_q6S8,44
46
46
  reconcile/jenkins_webhooks.py,sha256=K5h0OlCghoHlpot40IRq4BuezfKB1rj4Xk0dCUvqp3o,1952
47
47
  reconcile/jenkins_webhooks_cleaner.py,sha256=JsN_NVPfZJwv1JtSzZXDIHUqGiefL-DRffFnDGau9aY,1539
48
48
  reconcile/jenkins_worker_fleets.py,sha256=PMNGOX0krubFjInPiFT0za0KCiWBLEcVDuXdKRd1BrE,5378
49
- reconcile/jira_permissions_validator.py,sha256=t0LMolXxlCxiKjPVIEzXPbbxTDNyZ1qRodJC_dHSsPQ,13242
49
+ reconcile/jira_permissions_validator.py,sha256=t8FBjBJniRMODQNXfoHKst6qLDOzlua6hqy7rm7tmzs,13222
50
50
  reconcile/jira_watcher.py,sha256=L_UL2MKm2SoIGNsCLThm28pnqCkoFc154JWsD6bURug,3593
51
51
  reconcile/ldap_users.py,sha256=uEWQ0V41tN9KCZi4ZKPamjrJ6djSpdpvDBo7yJ0e7ZI,3008
52
52
  reconcile/mr_client_gateway.py,sha256=WhjMd-sIXDFCV8-rt8CEjurJ5OYB1pOD0K3o0tZRXQg,1885
@@ -110,7 +110,7 @@ reconcile/status.py,sha256=cY4IJFXemhxptRJqR4qaaOWqei9e4jgLXuVSGajMsjg,544
110
110
  reconcile/status_board.py,sha256=YeoE7kLf1YKpOdN32u3vqhuSI46ep5N_qcVWC1CBCf8,8635
111
111
  reconcile/terraform_aws_route53.py,sha256=dQzzT46YhwRA902_H6pi-f7WlX4EaH187wXSdmJAUkQ,9958
112
112
  reconcile/terraform_cloudflare_dns.py,sha256=-aLEe2QnH5cJPu7HWqs-R9NmQ1NlFbcVUm0v7alVL3I,13431
113
- reconcile/terraform_cloudflare_resources.py,sha256=41Mj1WkuS75slCDpmhG2GGf1nh3BwfxcdNC73-PNadc,15000
113
+ reconcile/terraform_cloudflare_resources.py,sha256=pq8Ieo5NmB-dYQ9X2F0s6iEoINMzhiqGw2yQK4ovok4,14980
114
114
  reconcile/terraform_cloudflare_users.py,sha256=iyTG5sj20Jg4J4qWJ144KVptfIHGOSfH8wQKxu0imq0,13942
115
115
  reconcile/terraform_repo.py,sha256=TKqlodhQGoAtQ6nDm04TNlpx4wpgJ_n4atoUK5Rfd7o,16444
116
116
  reconcile/terraform_resources.py,sha256=-sgMMHDtNvnQyNR05-MKebI_pSiyxSWAg8LmeA2_Ntk,19326
@@ -163,12 +163,12 @@ reconcile/change_owners/approver.py,sha256=Z3_11vnK2WNOxjEEXVDh0224-_-qbt9d6mBeV
163
163
  reconcile/change_owners/bundle.py,sha256=h30fU-JmLH5a-rCAovpzTeTkkkgZztsZ5A2raee0YuU,5355
164
164
  reconcile/change_owners/change_log_tracking.py,sha256=JzUmW6m_qg43r0a6WI__YX8-j_ejt1peIy6CkZJfZTg,9049
165
165
  reconcile/change_owners/change_owners.py,sha256=0HRJhDm0oW3uYJFgzynqA1gA0lbhalhSkmWOiQmr-NM,17062
166
- reconcile/change_owners/change_types.py,sha256=HEsoBduhcczAXZHwT26mr5sVPxtf8J6tsvjSDDI1ceI,32077
166
+ reconcile/change_owners/change_types.py,sha256=YFqykx1I71wcUHEK_eDqPjEeQpPVV4bjqT9W3LgqNFw,32073
167
167
  reconcile/change_owners/changes.py,sha256=YblT-JPFagctTphzd38SjVmj3k1YsgMzN48zGpnLYKM,18222
168
168
  reconcile/change_owners/decision.py,sha256=iUJcIc_N_RqXIAY8D10RZqPMC2OinsHTMcqI6f6uylE,7606
169
169
  reconcile/change_owners/diff.py,sha256=0vyu29xCL24ZhUa7hqBni0NaxoCYRXLwvA-h8V23YQ4,9009
170
170
  reconcile/change_owners/implicit_ownership.py,sha256=6BehZvx4IjrphmOt_LLLk9_02Fl5BY5jd00Wuz_PBZk,4234
171
- reconcile/change_owners/self_service_roles.py,sha256=U-eU7G4YGg7atEKaJ8RpYgLUKden6xwggUHA7xJMowI,9714
171
+ reconcile/change_owners/self_service_roles.py,sha256=oYAdBIYPDAY6u07hne9Y2lhTiRGZMXzBhJoYG0y2Rgo,9568
172
172
  reconcile/change_owners/tester.py,sha256=yY15ABnWx_3g9QeeR38-cQAaql0aq7JIxBv_7KtC91U,8955
173
173
  reconcile/cluster_auth_rhidp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
174
174
  reconcile/cluster_auth_rhidp/integration.py,sha256=KIAiP_XFjsOA2OE8oFJa8lD0T1a7EwOmhct2xbj7tr8,9560
@@ -188,7 +188,7 @@ reconcile/dynatrace_token_provider/model.py,sha256=gkpqo5rRRueBXnIMjp4EEHqBUBuU6
188
188
  reconcile/dynatrace_token_provider/ocm.py,sha256=MwYCZIxW4f-1jzFTxxN__sity6S8O7bbKUdyTFEVO7U,4325
189
189
  reconcile/dynatrace_token_provider/validate.py,sha256=40_9QmHoB3-KBc0k_0D4QO00PpNNPS-gU9Z6cIcWga8,1920
190
190
  reconcile/endpoints_discovery/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
- reconcile/endpoints_discovery/integration.py,sha256=V6uriGAM4Ki9bjTpM2kmRh1UVcyIIFdJK4w0YsorUo8,12704
191
+ reconcile/endpoints_discovery/integration.py,sha256=znfnlm8bZesfcNbQnaR2aaVM-DTBiw1I7FNmZcfyfoQ,12702
192
192
  reconcile/endpoints_discovery/merge_request.py,sha256=_yLb4tnvoZMCko8rta2C_CvOInJa9pa3HzSmHNtjgGU,2978
193
193
  reconcile/endpoints_discovery/merge_request_manager.py,sha256=wUMsumxv8RnWaRattax4HfoRlhtVzmgro3GiJJ1C4Vc,6392
194
194
  reconcile/external_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -495,7 +495,7 @@ reconcile/terraform_vpc_resources/integration.py,sha256=yEMQFNMHDkqIQOIw1XeUY02x
495
495
  reconcile/terraform_vpc_resources/merge_request.py,sha256=loRymUigCIvaaT0s_NzktZchh-DGRQnCICdBSCAcFPY,1503
496
496
  reconcile/terraform_vpc_resources/merge_request_manager.py,sha256=Vj2nuQbQyrL4q_il1My-bLxYNh_r3YXqX45P8fwtP6Q,3259
497
497
  reconcile/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
498
- reconcile/test/conftest.py,sha256=b9jT-KOB351RePdPlN3h_rJFo319cC_eJT290PQoBAw,4324
498
+ reconcile/test/conftest.py,sha256=_uZRPocbt4-BJ8Lsb9BmjeIPjbdu4SH3gxvXpGEdyFc,4284
499
499
  reconcile/test/fixtures.py,sha256=HjcdF4RWMwdXCsmGljFnPjfzqsHG8_3Zas_W7Y5BSDE,586
500
500
  reconcile/test/test_acs_notifiers.py,sha256=xf3WL6q6V7KQdTVSx6YI-pa4yzOX3mkvIJomgPUc3Mw,12746
501
501
  reconcile/test/test_acs_policies.py,sha256=8pwnXpAO-0OI-6oubjf_oPPlpZjVldeZfJJ9uhsNMWM,17579
@@ -632,7 +632,7 @@ reconcile/typed_queries/pagerduty_instances.py,sha256=zxCNxMak4iikryePaRi71lTADV
632
632
  reconcile/typed_queries/quay.py,sha256=3IMy9jjHF2f9t47EXZOQVA3p0nFkWFhaFhxhvib-71o,644
633
633
  reconcile/typed_queries/repos.py,sha256=8A93dKDt6igT4ClqMjt7YUTsoP4qh1Wnm0W3xsMgj48,824
634
634
  reconcile/typed_queries/reserved_networks.py,sha256=-f_CIrTn8u-dotj5VKFlAcD7TX1CSSuR7Ko2zC8OKEM,358
635
- reconcile/typed_queries/saas_files.py,sha256=lPJNh5F2ThJUjW2zvsCKPLm2DVNBnbHFbzWByqTg2uM,14012
635
+ reconcile/typed_queries/saas_files.py,sha256=cIAd8LVvjpiM_BeXPzY7Hg_yKriYx67I6revW72vnWE,14008
636
636
  reconcile/typed_queries/slack.py,sha256=r30lspctHloyygPn8_DVybxPwUWwiBpvBRRXiTVcQYk,251
637
637
  reconcile/typed_queries/slo_documents.py,sha256=l7H6Uq85EcvvWUgmi5c1YHeJGk60KN-TBmi8d0w-XyU,375
638
638
  reconcile/typed_queries/smtp.py,sha256=aSLglYa5bHKmlGwKkxq2RZqyMWuAf0a4S_mOuhDa084,542
@@ -838,7 +838,7 @@ tools/app_interface_metrics_exporter.py,sha256=zkwkxdAUAxjdc-pzx2_oJXG25fo0Fnyd5
838
838
  tools/app_interface_reporter.py,sha256=oZPib4HPq0aZ2Zui1QGJGk6qQdfpeihujGDBnSdKyGE,17627
839
839
  tools/glitchtip_access_reporter.py,sha256=oPBnk_YoDuljU3v0FaChzOwwnk4vap1xEE67QEjzdqs,2948
840
840
  tools/glitchtip_access_revalidation.py,sha256=8kbBJk04mkq28kWoRDDkfCGIF3GRg3pJrFAh1sW0dbk,2821
841
- tools/qontract_cli.py,sha256=3k3cPk2ohxpOipQiV9gcsooYR0DZmnwr6xwiRZ9t2dk,139124
841
+ tools/qontract_cli.py,sha256=OPfTSTyzhWrE1-s0Dl2L57aJ3soYpvAKKQmRlQnc6l0,139114
842
842
  tools/sd_app_sre_alert_report.py,sha256=e9vAdyenUz2f5c8-z-5WY0wv-SJ9aePKDH2r4IwB6pc,5063
843
843
  tools/template_validation.py,sha256=qpKYaTgk0GOPGa2Ct5_5sKdwIHtCAKIBGzsMPuJU5fw,3371
844
844
  tools/cli_commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -864,15 +864,15 @@ tools/saas_promotion_state/saas_promotion_state.py,sha256=5LJ9rygZ304vxfsIuRfuxu
864
864
  tools/sre_checkpoints/__init__.py,sha256=CDaDaywJnmRCLyl_NCcvxi-Zc0hTi_3OdwKiFOyS39I,145
865
865
  tools/sre_checkpoints/util.py,sha256=zEDbGr18ZeHNQwW8pUsr2JRjuXIPz--WAGJxZo9sv_Y,894
866
866
  tools/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
867
- tools/test/conftest.py,sha256=YLtiauk_StNFE-lirLnfG_BpJmlB2NGMZISE9A4zwvk,2421
867
+ tools/test/conftest.py,sha256=CsDbu4otrxb7X7kXKKGyV3ZEzu3pCkgjCoCGiHNx6zc,2401
868
868
  tools/test/test_app_interface_metrics_exporter.py,sha256=SX7qL3D1SIRKFo95FoQztvftCWEEf-g1mfXOtgCog-g,1271
869
869
  tools/test/test_erv2.py,sha256=EAS7QuJkHisRVO9bMGxm662L5B6i66wF_mT9PAjVzrU,3128
870
870
  tools/test/test_qontract_cli.py,sha256=_D61RFGAN5x44CY1tYbouhlGXXABwYfxKSWSQx3Jrss,4941
871
871
  tools/test/test_saas_promotion_state.py,sha256=dy4kkSSAQ7bC0Xp2CociETGN-2aABEfL6FU5D9Jl00Y,6056
872
872
  tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
873
873
  tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
874
- qontract_reconcile-0.10.1rc1140.dist-info/METADATA,sha256=ni5-15CF_5tDAFjlb69EjjEQDKwnhaP6RD6VMA4P2cg,2213
875
- qontract_reconcile-0.10.1rc1140.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
876
- qontract_reconcile-0.10.1rc1140.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
877
- qontract_reconcile-0.10.1rc1140.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
878
- qontract_reconcile-0.10.1rc1140.dist-info/RECORD,,
874
+ qontract_reconcile-0.10.1rc1141.dist-info/METADATA,sha256=foK8V6GtbLPAMwuLj8gmEDIiTLOufXXln60iybfu94s,2213
875
+ qontract_reconcile-0.10.1rc1141.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
876
+ qontract_reconcile-0.10.1rc1141.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
877
+ qontract_reconcile-0.10.1rc1141.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
878
+ qontract_reconcile-0.10.1rc1141.dist-info/RECORD,,
@@ -650,7 +650,7 @@ class ChangeTypeProcessor:
650
650
  file_schema,
651
651
  ) in self._expressions_by_file_type_schema:
652
652
  for change_type_path_expression in self._expressions_by_file_type_schema[
653
- (file_type, file_schema)
653
+ file_type, file_schema
654
654
  ]:
655
655
  paths.extend([
656
656
  p.full_path
@@ -668,7 +668,7 @@ class ChangeTypeProcessor:
668
668
  self._change_detectors.append(detector)
669
669
  change_schema = detector.change_schema or self.context_schema
670
670
  expressions = self._expressions_by_file_type_schema[
671
- (self.context_type, change_schema)
671
+ self.context_type, change_schema
672
672
  ]
673
673
  for path_expression in detector.json_path_expressions:
674
674
  if path_expression not in expressions:
@@ -117,12 +117,12 @@ def change_type_contexts_for_self_service_roles(
117
117
  if ss.datafiles:
118
118
  for df in ss.datafiles:
119
119
  role_lookup[
120
- (BundleFileType.DATAFILE, df.path, ss.change_type.name)
120
+ BundleFileType.DATAFILE, df.path, ss.change_type.name
121
121
  ].append(r)
122
122
  if ss.resources:
123
123
  for res in ss.resources:
124
124
  role_lookup[
125
- (BundleFileType.RESOURCEFILE, res, ss.change_type.name)
125
+ BundleFileType.RESOURCEFILE, res, ss.change_type.name
126
126
  ].append(r)
127
127
  if (
128
128
  ss.change_type.context_schema
@@ -132,7 +132,7 @@ def change_type_contexts_for_self_service_roles(
132
132
  # change types mentioned without datafiels or resources apply
133
133
  # to all datafiles and resources of the given schema
134
134
  schema_role_lookup[
135
- (ss.change_type.context_schema, ss.change_type.name)
135
+ ss.change_type.context_schema, ss.change_type.name
136
136
  ].append(r)
137
137
 
138
138
  # resolve approvers for self-service roles, either directly or via member sources
@@ -161,21 +161,17 @@ def change_type_contexts_for_self_service_roles(
161
161
  owning_roles.update({
162
162
  role.name: role
163
163
  for role in role_lookup[
164
- (
165
- ownership.owned_file_ref.file_type,
166
- ownership.owned_file_ref.path,
167
- ct_lineage,
168
- )
164
+ ownership.owned_file_ref.file_type,
165
+ ownership.owned_file_ref.path,
166
+ ct_lineage,
169
167
  ]
170
168
  })
171
169
  owning_roles.update({
172
170
  role.name: role
173
171
  for role in (
174
172
  schema_role_lookup[
175
- (
176
- ownership.owned_file_ref.schema,
177
- ownership.change_type.name,
178
- )
173
+ ownership.owned_file_ref.schema,
174
+ ownership.change_type.name,
179
175
  ]
180
176
  if ownership.owned_file_ref.schema
181
177
  else []
@@ -143,7 +143,7 @@ class EndpointsDiscoveryIntegration(
143
143
  tls = bool(item["spec"].get("tls"))
144
144
  host = item["spec"]["host"]
145
145
  # group all routes with the same hostname/tls
146
- routes[(host, tls)].append(item["metadata"]["name"])
146
+ routes[host, tls].append(item["metadata"]["name"])
147
147
 
148
148
  # merge all routes with the same hostname into one and combine the names
149
149
  return [
@@ -243,8 +243,7 @@ def validate_boards(
243
243
  if exit_on_permission_errors:
244
244
  error = True
245
245
  case (
246
- ValidationError.PERMISSION_ERROR
247
- | ValidationError.CANT_CREATE_ISSUE
246
+ ValidationError.PERMISSION_ERROR | ValidationError.CANT_CREATE_ISSUE
248
247
  ):
249
248
  # we can't create jira tickets, and we don't have all needed the permissions
250
249
  error = True
@@ -428,12 +428,10 @@ def run(
428
428
  )
429
429
 
430
430
 
431
- def _get_cloudflare_desired_state() -> (
432
- tuple[
433
- TerraformCloudflareAccountsQueryData,
434
- TerraformCloudflareResourcesQueryData,
435
- ]
436
- ):
431
+ def _get_cloudflare_desired_state() -> tuple[
432
+ TerraformCloudflareAccountsQueryData,
433
+ TerraformCloudflareResourcesQueryData,
434
+ ]:
437
435
  query_accounts = terraform_cloudflare_accounts.query(query_func=gql.get_api().query)
438
436
  query_resources = terraform_cloudflare_resources.query(
439
437
  query_func=gql.get_api().query
@@ -91,12 +91,10 @@ def vault_secret():
91
91
 
92
92
 
93
93
  @pytest.fixture
94
- def data_factory() -> (
95
- Callable[
96
- [type[BaseModel], MutableMapping[str, Any] | None],
97
- MutableMapping[str, Any],
98
- ]
99
- ):
94
+ def data_factory() -> Callable[
95
+ [type[BaseModel], MutableMapping[str, Any] | None],
96
+ MutableMapping[str, Any],
97
+ ]:
100
98
  """Set default values to None."""
101
99
 
102
100
  def _data_factory(
@@ -112,12 +110,10 @@ class GQLClassFactoryError(Exception):
112
110
 
113
111
 
114
112
  @pytest.fixture
115
- def gql_class_factory() -> (
116
- Callable[
117
- [type[BaseModel], MutableMapping[str, Any] | None],
118
- BaseModel,
119
- ]
120
- ):
113
+ def gql_class_factory() -> Callable[
114
+ [type[BaseModel], MutableMapping[str, Any] | None],
115
+ BaseModel,
116
+ ]:
121
117
  """Create a GQL class from a fixture and set default values to None."""
122
118
 
123
119
  def _gql_class_factory(
@@ -249,8 +249,8 @@ class SaasFileList:
249
249
  for match in self._matching_namespaces(include):
250
250
  cluster_name = match.value["cluster"]["name"]
251
251
  ns_name = match.value["name"]
252
- filtered_namespaces[(cluster_name, ns_name)] = self.cluster_namespaces[
253
- (cluster_name, ns_name)
252
+ filtered_namespaces[cluster_name, ns_name] = self.cluster_namespaces[
253
+ cluster_name, ns_name
254
254
  ]
255
255
 
256
256
  for exclude in namespace_selector.json_path_selectors.exclude or []:
tools/qontract_cli.py CHANGED
@@ -1930,25 +1930,25 @@ def roles(ctx, org_username):
1930
1930
  if "team" in p:
1931
1931
  r_name += "/" + p["team"]
1932
1932
 
1933
- roles[("permission", p["name"], r_name)].add(role_name)
1933
+ roles["permission", p["name"], r_name].add(role_name)
1934
1934
 
1935
1935
  for aws in role.get("aws_groups") or []:
1936
1936
  for policy in aws["policies"]:
1937
- roles[("aws", policy, aws["account"]["name"])].add(aws["path"])
1937
+ roles["aws", policy, aws["account"]["name"]].add(aws["path"])
1938
1938
 
1939
1939
  for a in role.get("access") or []:
1940
1940
  if a["cluster"]:
1941
1941
  cluster_name = a["cluster"]["name"]
1942
- roles[("cluster", a["clusterRole"], cluster_name)].add(role_name)
1942
+ roles["cluster", a["clusterRole"], cluster_name].add(role_name)
1943
1943
  elif a["namespace"]:
1944
1944
  ns_name = a["namespace"]["name"]
1945
- roles[("namespace", a["role"], ns_name)].add(role_name)
1945
+ roles["namespace", a["role"], ns_name].add(role_name)
1946
1946
 
1947
1947
  for s in role.get("self_service") or []:
1948
1948
  for d in s.get("datafiles") or []:
1949
1949
  name = d.get("name")
1950
1950
  if name:
1951
- roles[("saas_file", "owner", name)].add(role_name)
1951
+ roles["saas_file", "owner", name].add(role_name)
1952
1952
 
1953
1953
  columns = ["type", "name", "resource", "ref"]
1954
1954
  rows = [
tools/test/conftest.py CHANGED
@@ -58,12 +58,10 @@ def fx() -> Callable:
58
58
 
59
59
 
60
60
  @pytest.fixture
61
- def gql_class_factory() -> (
62
- Callable[
63
- [type[BaseModel], MutableMapping[str, Any] | None],
64
- BaseModel,
65
- ]
66
- ):
61
+ def gql_class_factory() -> Callable[
62
+ [type[BaseModel], MutableMapping[str, Any] | None],
63
+ BaseModel,
64
+ ]:
67
65
  """Create a GQL class from a fixture and set default values to None."""
68
66
 
69
67
  def _gql_class_factory(