qontract-reconcile 0.10.1rc962__py3-none-any.whl → 0.10.1rc964__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.1rc962
3
+ Version: 0.10.1rc964
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
@@ -448,14 +448,14 @@ reconcile/skupper_network/models.py,sha256=HEwlVKsbmMaKaaBGvITIiSYNEVdjwXVhLaOJg
448
448
  reconcile/skupper_network/reconciler.py,sha256=XS-1oKBr_1l3dYUAVqUH6gCHg1G5ZuOfY_7fgGVAiFA,9996
449
449
  reconcile/skupper_network/site_controller.py,sha256=A3K-62BjJ5HiFVydV0ouGoD1NwrO7XhAH15BHAcS9fk,1550
450
450
  reconcile/statuspage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
451
- reconcile/statuspage/atlassian.py,sha256=G43HG5Y9FdYu_oEG9-yRpSwH4d2UtAqL26mrarWsN94,18515
451
+ reconcile/statuspage/atlassian.py,sha256=41uE77ZeV0M98k_xVmrXUQ33iVG8Lb3TwrWq2pRc84U,18617
452
452
  reconcile/statuspage/integration.py,sha256=hsazrQMceJbr61nEkJLxJbHhudTGtFuH0mlCo66-2ug,711
453
- reconcile/statuspage/page.py,sha256=tMXVnajU0r5V5_KGp3cL04eMLiDD2Kf4sIkao-L5puM,5217
453
+ reconcile/statuspage/page.py,sha256=k2CeosPG3EhTMSD_OFGm7AfDNX7zqWiibhraYqIIklg,5257
454
454
  reconcile/statuspage/state.py,sha256=wjX9by5Yy7nobxiE-xNhf6GyNwMVATd0O37jBckJm5M,1591
455
455
  reconcile/statuspage/status.py,sha256=ZKagwWqv-_Xsr97cQGCkbtd2U7ipA_iPKdnoj6Z-Jpw,2777
456
456
  reconcile/statuspage/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
457
457
  reconcile/statuspage/integrations/components.py,sha256=49KHd_E9AdRvcEA6n75q1McZv2LfN-hRsW-WA7dgw9g,2651
458
- reconcile/statuspage/integrations/maintenances.py,sha256=gL8mn1SbCNMveoD0nmqc5b_gS9XxPsqLtqBxJeRAvbY,4202
458
+ reconcile/statuspage/integrations/maintenances.py,sha256=lLhiVlSrVZONUxM8Cen-HJg1LcVILLGc1TaqjBhTuBc,4178
459
459
  reconcile/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
460
460
  reconcile/templates/aws_access_key_email.j2,sha256=2MUr1ERmyISzKgHqsWYLd-1Wbl-peUa-FsGUS-JLUFc,238
461
461
  reconcile/templates/email.yml.j2,sha256=OZgczNRgXPj2gVYTgwQyHAQrMGu7xp-e4W1rX19GcrU,690
@@ -661,7 +661,7 @@ reconcile/utils/gitlab_api.py,sha256=6ZU77wzwYKVbJcuXrG0ZMvAsB-_N9On84LQiT_yZdeE
661
661
  reconcile/utils/gpg.py,sha256=EKG7_fdMv8BMlV5yUdPiqoTx-KrzmVSEAl2sLkaKwWI,1123
662
662
  reconcile/utils/gql.py,sha256=IGhxzBcuebbapDKLseevEThSsxa_eDCPNpo3A4VnOS4,14066
663
663
  reconcile/utils/grouping.py,sha256=vr9SFHZ7bqmHYrvYcEZt-Er3-yQYfAAdq5sHLZVmXPY,456
664
- reconcile/utils/helm.py,sha256=qnXtw3nyKJqobSG4d6PtvulqToqiEGuXK5PbgfwSFHI,1942
664
+ reconcile/utils/helm.py,sha256=d4WFxf6NFcNj0I2YWDvWxN5gK80o2Y12Ve05ky73FCc,2763
665
665
  reconcile/utils/helpers.py,sha256=k9svgFFZG7H5FvHYY0g5jJyvgvh2UDZxf0Ib221teag,1179
666
666
  reconcile/utils/imap_client.py,sha256=PMsX8UjJ2F59fXbbqREjLVdapYWznYTB8svFmpt39qA,1949
667
667
  reconcile/utils/instrumented_wrappers.py,sha256=eVwMoa6FCrYxLv3RML3WpZF9qKVfCTjMxphgVXG03OM,1073
@@ -847,8 +847,8 @@ tools/test/test_qontract_cli.py,sha256=_D61RFGAN5x44CY1tYbouhlGXXABwYfxKSWSQx3Jr
847
847
  tools/test/test_saas_promotion_state.py,sha256=dy4kkSSAQ7bC0Xp2CociETGN-2aABEfL6FU5D9Jl00Y,6056
848
848
  tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
849
849
  tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
850
- qontract_reconcile-0.10.1rc962.dist-info/METADATA,sha256=H2k1Pegpt_fHDM6NwGFWQasYZYX9bZodCUN6DNMAuoE,2262
851
- qontract_reconcile-0.10.1rc962.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
852
- qontract_reconcile-0.10.1rc962.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
853
- qontract_reconcile-0.10.1rc962.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
854
- qontract_reconcile-0.10.1rc962.dist-info/RECORD,,
850
+ qontract_reconcile-0.10.1rc964.dist-info/METADATA,sha256=367Imo6Q12SFdMZIV639dRVY_wRabOcjCwrlsaDthWo,2262
851
+ qontract_reconcile-0.10.1rc964.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
852
+ qontract_reconcile-0.10.1rc964.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
853
+ qontract_reconcile-0.10.1rc964.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
854
+ qontract_reconcile-0.10.1rc964.dist-info/RECORD,,
@@ -1,5 +1,6 @@
1
1
  import logging
2
2
  import time
3
+ from datetime import datetime
3
4
  from typing import (
4
5
  Any,
5
6
  Self,
@@ -414,8 +415,8 @@ class AtlassianStatusPageProvider:
414
415
  return StatusMaintenance(
415
416
  name=name_override or raw_maintenance.name,
416
417
  message=raw_maintenance.incident_updates[0].body,
417
- schedule_start=raw_maintenance.scheduled_for,
418
- schedule_end=raw_maintenance.scheduled_until,
418
+ schedule_start=datetime.fromisoformat(raw_maintenance.scheduled_for),
419
+ schedule_end=datetime.fromisoformat(raw_maintenance.scheduled_until),
419
420
  components=[
420
421
  self._raw_component_to_status_component(c)
421
422
  for c in raw_maintenance.components
@@ -470,8 +471,8 @@ class AtlassianStatusPageProvider:
470
471
  data = {
471
472
  "name": maintenance.name,
472
473
  "status": "scheduled",
473
- "scheduled_for": maintenance.schedule_start,
474
- "scheduled_until": maintenance.schedule_end,
474
+ "scheduled_for": maintenance.schedule_start.isoformat(),
475
+ "scheduled_until": maintenance.schedule_end.isoformat(),
475
476
  "body": maintenance.message,
476
477
  "scheduled_remind_prior": maintenance.announcements.remind_subscribers,
477
478
  "scheduled_auto_transition": True,
@@ -55,7 +55,7 @@ class StatusPageMaintenancesIntegration(QontractReconcileIntegration[NoParams]):
55
55
  now = datetime.now(UTC)
56
56
  slack = slackapi_from_queries(QONTRACT_INTEGRATION, init_usergroups=False)
57
57
  for m in desired_state:
58
- scheduled_start = datetime.fromisoformat(m.schedule_start)
58
+ scheduled_start = m.schedule_start
59
59
  if now <= scheduled_start <= now + timedelta(hours=1):
60
60
  state_key = f"notifications/{m.name}"
61
61
  if binding_state.state.exists(state_key):
@@ -1,3 +1,4 @@
1
+ from datetime import datetime
1
2
  from typing import Self, cast
2
3
 
3
4
  from pydantic import BaseModel
@@ -128,8 +129,8 @@ class StatusMaintenance(BaseModel):
128
129
 
129
130
  name: str
130
131
  message: str
131
- schedule_start: str
132
- schedule_end: str
132
+ schedule_start: datetime
133
+ schedule_end: datetime
133
134
  components: list[StatusComponent]
134
135
  announcements: StatusMaintenanceAnnouncement
135
136
 
reconcile/utils/helm.py CHANGED
@@ -1,4 +1,5 @@
1
1
  import json
2
+ import os
2
3
  import tempfile
3
4
  from collections.abc import Iterable, Mapping
4
5
  from subprocess import (
@@ -30,6 +31,26 @@ def do_template(
30
31
  name: str,
31
32
  ) -> str:
32
33
  try:
34
+ with open(os.path.join(path, "Chart.yaml"), encoding="locale") as chart_file:
35
+ chart = yaml.safe_load(chart_file)
36
+ if dependencies := chart.get("dependencies"):
37
+ for dep in dependencies:
38
+ if repo := dep.get("repository"):
39
+ cmd = [
40
+ "helm",
41
+ "repo",
42
+ "add",
43
+ dep["name"],
44
+ repo,
45
+ ]
46
+ run(cmd, capture_output=False, check=True)
47
+ cmd = [
48
+ "helm",
49
+ "dependency",
50
+ "build",
51
+ path,
52
+ ]
53
+ run(cmd, capture_output=False, check=True)
33
54
  with tempfile.NamedTemporaryFile(mode="w+", encoding="locale") as values_file:
34
55
  values_file.write(json.dumps(values, cls=JSONEncoder))
35
56
  values_file.flush()