qontract-reconcile 0.10.1rc783__py3-none-any.whl → 0.10.1rc785__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.1rc783
3
+ Version: 0.10.1rc785
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
@@ -429,7 +429,7 @@ reconcile/skupper_network/models.py,sha256=DNTI7HZv-rqY42GIIxyRuvroHLvdH6rJerjIq
429
429
  reconcile/skupper_network/reconciler.py,sha256=XS-1oKBr_1l3dYUAVqUH6gCHg1G5ZuOfY_7fgGVAiFA,9996
430
430
  reconcile/skupper_network/site_controller.py,sha256=A3K-62BjJ5HiFVydV0ouGoD1NwrO7XhAH15BHAcS9fk,1550
431
431
  reconcile/statuspage/__init__.py,sha256=o9vR6sp3ARDQFZrbCEShelTxjF1XgfLaElK_QVt_248,261
432
- reconcile/statuspage/atlassian.py,sha256=1qKxdnVezGke2R4u0DYFloUq_feeFAH64fAz_aQkfVM,12748
432
+ reconcile/statuspage/atlassian.py,sha256=zXsO9qx_pqfk2TDSoa1JSv6UvY2nVsJAp6rRWuEcG24,13258
433
433
  reconcile/statuspage/integration.py,sha256=---tzyl381RddAkIhXb7n3ySjUhuX7FBBI152SYsRfk,3654
434
434
  reconcile/statuspage/page.py,sha256=cJH2sDA8jiAmSdaDitQqNjkyDq_UP2w3s7eauCi-yt4,3740
435
435
  reconcile/statuspage/state.py,sha256=HD9EOoKm_nEqCMLIwW809En3cq5VhyzKJPUbsh-bae8,1617
@@ -647,7 +647,7 @@ reconcile/utils/pagerduty_api.py,sha256=fcSAUez6w51woDvbm0plJW2qSw6_NXQs1Fit_KTN
647
647
  reconcile/utils/parse_dhms_duration.py,sha256=TONpLnec5gHeF7k815YNJpQyDjXhkxZIcv9s8ffbTSY,1840
648
648
  reconcile/utils/password_validator.py,sha256=XwuWg-8CPlcuG7dl_oQ1G1h2gSVSnfMym_VkuprpWVg,2183
649
649
  reconcile/utils/prometheus.py,sha256=i5aCQ_I4WOg76iEjglVxxO9-OKby2N80ScErAbDtHE8,3848
650
- reconcile/utils/promotion_state.py,sha256=avYxHUf4zK3dBhXEdUEry79EOSgJ7gfStvvOpcedZnI,2575
650
+ reconcile/utils/promotion_state.py,sha256=Gf58uvBWqGDZtNsnGbi6-K4LC94Mm_bJDs_Ztq1FPSs,2603
651
651
  reconcile/utils/promtool.py,sha256=kT2rFZSBaRqW7SSHAuYzGZzQxM5Dzk8KW1NnEUYZU_s,2896
652
652
  reconcile/utils/quay_api.py,sha256=EuOegpb-7ntEjkKLFwM2Oo4Nw7SyFtmyl3sQ9aXMtrM,8152
653
653
  reconcile/utils/raw_github_api.py,sha256=ZHC-SZuAyRe1zaMoOU7Krt1-zecDxENd9c_NzQYqK9g,2968
@@ -750,7 +750,7 @@ reconcile/utils/runtime/sharding.py,sha256=roCdbnBklhTK_g34zbgQYqzpKPaNQ8J6Xd9XL
750
750
  reconcile/utils/saasherder/__init__.py,sha256=J3MBZBFa5YmhqYm08QsjBXz8mFcVOCiOCkyIcw41t7E,343
751
751
  reconcile/utils/saasherder/interfaces.py,sha256=XXY35h8VWQ66z3LBPxaoUAMkIW50264DQiecrzyV6oA,9076
752
752
  reconcile/utils/saasherder/models.py,sha256=1DKXUmiTS_MejUfSpFCeuBLMTgR4ldv2N1tAz8qHAwc,5547
753
- reconcile/utils/saasherder/saasherder.py,sha256=LHvW9F1sSgCB0zJ9AM-ROsEx96wpDwE78kLMj5LKZnM,86177
753
+ reconcile/utils/saasherder/saasherder.py,sha256=OoDilZnlv_nVDzDkOSXpSozFWp6-ZpEcsXTgqAI8e40,86305
754
754
  reconcile/utils/terraform/__init__.py,sha256=zNbiyTWo35AT1sFTElL2j_AA0jJ_yWE_bfFn-nD2xik,250
755
755
  reconcile/utils/terraform/config.py,sha256=5UVrd563TMcvi4ooa5JvWVDW1I3bIWg484u79evfV_8,164
756
756
  reconcile/utils/terraform/config_client.py,sha256=py-Ree-QUYD6Hvng6bM40VgSuttteehIKNgwOSoJO1o,4706
@@ -785,8 +785,8 @@ tools/test/test_app_interface_metrics_exporter.py,sha256=SX7qL3D1SIRKFo95FoQztvf
785
785
  tools/test/test_qontract_cli.py,sha256=w2l4BHB09k1d-BGJ1jBUNCqDv7zkqYrMHojQXg-21kQ,4155
786
786
  tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
787
787
  tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
788
- qontract_reconcile-0.10.1rc783.dist-info/METADATA,sha256=SwZsjjF0UyVKhYaUdO-pvRDKF2nPhywOgRc0OcA-XLA,2382
789
- qontract_reconcile-0.10.1rc783.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
790
- qontract_reconcile-0.10.1rc783.dist-info/entry_points.txt,sha256=rIxI5zWtHNlfpDeq1a7pZXAPoqf7HG32KMTN3MeWK_8,429
791
- qontract_reconcile-0.10.1rc783.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
792
- qontract_reconcile-0.10.1rc783.dist-info/RECORD,,
788
+ qontract_reconcile-0.10.1rc785.dist-info/METADATA,sha256=jcGIe788oUUhP0wtWIoltMtjwoEzBGev0GFtRAP746M,2382
789
+ qontract_reconcile-0.10.1rc785.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
790
+ qontract_reconcile-0.10.1rc785.dist-info/entry_points.txt,sha256=rIxI5zWtHNlfpDeq1a7pZXAPoqf7HG32KMTN3MeWK_8,429
791
+ qontract_reconcile-0.10.1rc785.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
792
+ qontract_reconcile-0.10.1rc785.dist-info/RECORD,,
@@ -5,6 +5,7 @@ from typing import (
5
5
  Protocol,
6
6
  )
7
7
 
8
+ import requests
8
9
  import statuspageio # type: ignore
9
10
  from pydantic import BaseModel
10
11
 
@@ -64,12 +65,22 @@ class LegacyLibAtlassianAPI:
64
65
  )
65
66
 
66
67
  def list_components(self) -> list[AtlassianRawComponent]:
67
- return [
68
- AtlassianRawComponent(
69
- **c.toDict(),
70
- )
71
- for c in self._client.components.list()
72
- ]
68
+ url = f"{self.api_url}/v1/pages/{self.page_id}/components"
69
+ headers = {"Authorization": f"OAuth {self.token}"}
70
+ all_components: list[AtlassianRawComponent] = []
71
+ page = 1
72
+ per_page = 100
73
+ while True:
74
+ params = {"page": page, "per_page": per_page}
75
+ response = requests.get(url, params=params, headers=headers)
76
+ response.raise_for_status()
77
+ components = [AtlassianRawComponent(**c) for c in response.json()]
78
+ all_components += components
79
+ if len(components) < per_page:
80
+ break
81
+ page += 1
82
+
83
+ return all_components
73
84
 
74
85
  def update_component(self, id: str, data: dict[str, Any]) -> None:
75
86
  self._client.components.update(id, **data)
@@ -22,6 +22,7 @@ class PromotionData(BaseModel):
22
22
  success: bool
23
23
  target_config_hash: Optional[str]
24
24
  saas_file: Optional[str]
25
+ check_in: Optional[str]
25
26
 
26
27
  class Config:
27
28
  smart_union = True
@@ -16,6 +16,7 @@ from collections.abc import (
16
16
  Sequence,
17
17
  )
18
18
  from contextlib import suppress
19
+ from datetime import datetime, timezone
19
20
  from types import TracebackType
20
21
  from typing import (
21
22
  Any,
@@ -1965,6 +1966,7 @@ class SaasHerder: # pylint: disable=too-many-public-methods
1965
1966
  if not (self.state and self._promotion_state):
1966
1967
  raise Exception("state is not initialized")
1967
1968
 
1969
+ now = datetime.now(timezone.utc)
1968
1970
  for promotion in self.promotions:
1969
1971
  if promotion is None:
1970
1972
  continue
@@ -1982,6 +1984,7 @@ class SaasHerder: # pylint: disable=too-many-public-methods
1982
1984
  saas_file=promotion.saas_file,
1983
1985
  success=success,
1984
1986
  target_config_hash=promotion.target_config_hash,
1987
+ check_in=str(now),
1985
1988
  ),
1986
1989
  )
1987
1990
  logging.info(