qontract-reconcile 0.10.1rc1175__py3-none-any.whl → 0.10.1rc1177__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.1rc1175
3
+ Version: 0.10.1rc1177
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
@@ -201,7 +201,7 @@ reconcile/external_resources/meta.py,sha256=noaytFzmShpzLA_ebGh7wuP45mOfHIOnnoUx
201
201
  reconcile/external_resources/metrics.py,sha256=nMbyonGZEJDD1lYzpQY2eR9TNwvxYC4ZCcpi6wrExcM,1037
202
202
  reconcile/external_resources/model.py,sha256=H3elpiqehg_jACy28fGV5_77n8gKclVO77-7cfbaMNA,9178
203
203
  reconcile/external_resources/reconciler.py,sha256=K9QvbQCIOCuOHnPIxQE_P_jFtrkF3dGo8d_cCCh08Ys,8973
204
- reconcile/external_resources/secrets_sync.py,sha256=6n0oDPLjd9Ql0lf6zsr1AZw8A6EEe3yCzl20XodtgkE,16229
204
+ reconcile/external_resources/secrets_sync.py,sha256=fxzrNreggWJvASonIPUr3CB5M637M1ljZLZr6dct9xU,16329
205
205
  reconcile/external_resources/state.py,sha256=z086bnIUTOkzFmQvS9rSAhFsM3Aw_9PLKHBACJ-0tQc,9690
206
206
  reconcile/glitchtip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
207
207
  reconcile/glitchtip/integration.py,sha256=XtewM9nfTPLnPSpYebP50GrveYOnhTvKNq3seSvL6u8,8343
@@ -702,7 +702,7 @@ reconcile/utils/oc.py,sha256=AjwQnzLxnMv0ML70GfjTHeYmiNsztI8kgXQF3N0Hvfw,66088
702
702
  reconcile/utils/oc_connection_parameters.py,sha256=7DiEGo--TJelfYoZXJFyTBPeTw9kXL3L58vy2fiJnes,9643
703
703
  reconcile/utils/oc_filters.py,sha256=Tz3OwtbUaYKmxENFls5CtPVzkZDeFXknw53dJe-wbT8,1382
704
704
  reconcile/utils/oc_map.py,sha256=U8cYhiaZsomkofzbIjVrl7E7crRxkS2JKsFpVeeHVE8,8964
705
- reconcile/utils/ocm_base_client.py,sha256=ntBCtm-njkGsI_wMpdLk5iLukbKz1zKNyo4rCWlKxFU,6427
705
+ reconcile/utils/ocm_base_client.py,sha256=DFqm5Z_KqBC3WYzEJH4-Kt6Zow2OLtT0jpHmnhwbSHU,6694
706
706
  reconcile/utils/openshift_resource.py,sha256=ZyQ436YdV80nvKGPuzYyYLLJj8Abjnb3e_PsejxBTNM,24715
707
707
  reconcile/utils/openssl.py,sha256=QVvhzhpChq_4Daf_5wE1qeZJr4thg3DDjJPn4bOPD4E,365
708
708
  reconcile/utils/output.py,sha256=xh2Not-Xm97KeRx_J5nc2PP5tDwpDLZBeCrWI0S-al4,2034
@@ -802,7 +802,7 @@ reconcile/utils/ocm/search_filters.py,sha256=jdj2sMGArcQrZLluzxeypPSbMFX_5zSE3AC
802
802
  reconcile/utils/ocm/service_log.py,sha256=RG1f0MMn6joKaRCAm2xveSJCavdOPP1BVo9FXecDxaI,2018
803
803
  reconcile/utils/ocm/sre_capability_labels.py,sha256=nqh0imrYczNeeeC7ZNX3pEwuAIVkKLTKZf0YHSPZYpE,1537
804
804
  reconcile/utils/ocm/status_board.py,sha256=fOuyzkykxU9Rr7zhW5VaY0Vkn8Ur-GxvElzb8No-DZg,2283
805
- reconcile/utils/ocm/subscriptions.py,sha256=6_blQPcgZYyy19WCFjYiolVk3O1jyNlK1yMqfkwK5sI,2536
805
+ reconcile/utils/ocm/subscriptions.py,sha256=hehKXsDXIhnhqvWOuiYvx6y2FGq3zt0APGYj7WiBIdI,2765
806
806
  reconcile/utils/ocm/syncsets.py,sha256=9IQm1l5BodOVZa2OFbQmow3afmh4nXe5pn-CCJ5LxTI,1169
807
807
  reconcile/utils/ocm/upgrades.py,sha256=VSpW_B3ux7XZjnxV7klW2OjPYW8Wh0rN7snDuiN0q2c,4861
808
808
  reconcile/utils/rosa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -880,8 +880,8 @@ tools/test/test_qontract_cli.py,sha256=iuzKbQ6ahinvjoQmQLBrG4shey0z-1rB6qCgS8T6d
880
880
  tools/test/test_saas_promotion_state.py,sha256=dy4kkSSAQ7bC0Xp2CociETGN-2aABEfL6FU5D9Jl00Y,6056
881
881
  tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
882
882
  tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
883
- qontract_reconcile-0.10.1rc1175.dist-info/METADATA,sha256=W7cOYjf2juRnK6QmkGQqjd_MG3Sft1hMo5imMLED1qo,2213
884
- qontract_reconcile-0.10.1rc1175.dist-info/WHEEL,sha256=bFJAMchF8aTQGUgMZzHJyDDMPTO3ToJ7x23SLJa1SVo,92
885
- qontract_reconcile-0.10.1rc1175.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
886
- qontract_reconcile-0.10.1rc1175.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
887
- qontract_reconcile-0.10.1rc1175.dist-info/RECORD,,
883
+ qontract_reconcile-0.10.1rc1177.dist-info/METADATA,sha256=8O5LR5k-BcwSY1W0Io2-slA90MktSdccM9h4L8Fm2Aw,2213
884
+ qontract_reconcile-0.10.1rc1177.dist-info/WHEEL,sha256=bFJAMchF8aTQGUgMZzHJyDDMPTO3ToJ7x23SLJa1SVo,92
885
+ qontract_reconcile-0.10.1rc1177.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
886
+ qontract_reconcile-0.10.1rc1177.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
887
+ qontract_reconcile-0.10.1rc1177.dist-info/RECORD,,
@@ -195,6 +195,9 @@ class SecretsReconciler:
195
195
  integration=QONTRACT_INTEGRATION,
196
196
  )
197
197
 
198
+ def secret_path(self, vault_path: str, spec: ExternalResourceSpec) -> str:
199
+ return f"{vault_path}/{spec.cluster_name}/{spec.namespace_name}/{spec.output_resource_name}"
200
+
198
201
  def sync_secrets(
199
202
  self, specs: Iterable[ExternalResourceSpec]
200
203
  ) -> list[ExternalResourceSpec]:
@@ -363,10 +366,12 @@ class InClusterSecretsReconciler(SecretsReconciler):
363
366
  self.oc.delete(namespace=self.namespace, kind="Secret", name=secret_name)
364
367
 
365
368
  def _write_secret_to_vault(self, spec: ExternalResourceSpec) -> None:
366
- secret_path = f"{self.vault_path}/{spec.cluster_name}/{spec.namespace_name}/{spec.identifier}"
367
369
  secret = {k: str(v) for k, v in spec.secret.items()}
368
370
  secret[SECRET_UPDATED_AT] = spec.metadata[SECRET_UPDATED_AT]
369
- desired_secret = {"path": secret_path, "data": secret}
371
+ desired_secret = {
372
+ "path": self.secret_path(self.vault_path, spec),
373
+ "data": secret,
374
+ }
370
375
  self.vault_client.write(desired_secret, decode_base64=False) # type: ignore[attr-defined]
371
376
 
372
377
  def sync_secrets(
@@ -447,7 +452,7 @@ class VaultSecretsReconciler(SecretsReconciler):
447
452
  threaded.run(self._read_secret, specs, self.thread_pool_size)
448
453
 
449
454
  def _read_secret(self, spec: ExternalResourceSpec) -> None:
450
- secret_path = f"{self.vault_path}/{spec.cluster_name}/{spec.namespace_name}/{spec.identifier}"
455
+ secret_path = self.secret_path(self.vault_path, spec)
451
456
  try:
452
457
  logging.debug("Reading Secret %s", secret_path)
453
458
  data = self.secrets_reader.read_all({"path": secret_path})
@@ -18,9 +18,12 @@ def get_subscriptions(
18
18
  subscriptions = {}
19
19
  chunk_size = 100
20
20
  for filter_chunk in filter.chunk_by("id", chunk_size, ignore_missing=True):
21
+ # Note, that pagination is currently broken.
22
+ # Each call will return a random order, meaning pages are not consistent.
23
+ # ALWAYS by default use "orderBy: id", as id has an index in the db.
21
24
  for subscription_dict in ocm_api.get_paginated(
22
25
  api_path="/api/accounts_mgmt/v1/subscriptions?fetchCapabilities=true&fetchLabels=true",
23
- params={"search": filter_chunk.render()},
26
+ params={"search": filter_chunk.render(), "orderBy": "id"},
24
27
  max_page_size=chunk_size,
25
28
  ):
26
29
  try:
@@ -84,6 +84,11 @@ class OCMBaseClient:
84
84
  max_page_size: int = 100,
85
85
  max_pages: int | None = None,
86
86
  ) -> Generator[dict[str, Any], None, None]:
87
+ """
88
+ Note, that pagination is currently broken.
89
+ Each call will return a random order, meaning pages are not consistent.
90
+ ALWAYS by default try to use "orderBy: id", as id exists for every resource and has an index in the db.
91
+ """
87
92
  params_copy = {} if not params else params.copy()
88
93
  params_copy["size"] = max_page_size
89
94