qontract-reconcile 0.10.1rc836__py3-none-any.whl → 0.10.1rc838__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.1rc836
3
+ Version: 0.10.1rc838
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
@@ -119,7 +119,7 @@ reconcile/terraform_vpc_peerings.py,sha256=WhGvDHwllM36yTJPE5EzQ1Z0Oc-tT9ksXbBn5
119
119
  reconcile/vault_replication.py,sha256=79GZ_kCimPoQcxkdhkWTQxPOAa46E0mNhf05s_Mk5so,17385
120
120
  reconcile/vpc_peerings_validator.py,sha256=Kv22HJVlTW9l9GB2eXwjPWqdDbr_VuvQBNPttox6s5o,7177
121
121
  reconcile/aus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
- reconcile/aus/advanced_upgrade_service.py,sha256=MPqcWpq1QeYzBsB8rtTlo102h_cR_q83oOYtWAncuAk,22391
122
+ reconcile/aus/advanced_upgrade_service.py,sha256=T0R-TCeMgkehvY0lscEfmnQa3gx8qf2Ki1F6f5PmS80,23135
123
123
  reconcile/aus/aus_label_source.py,sha256=QG3XuKy5tAyJo9ABPHANrDpECxpkzm2LT5C9Xsu42oI,4183
124
124
  reconcile/aus/base.py,sha256=n53ZtW5MpBitN745mymFxcq7LT5X8si8U0-l8hH6AEc,49878
125
125
  reconcile/aus/cluster_version_data.py,sha256=j4UyEBi5mQuvPq5Lo7a_L_0blxvH790wJV07uAiikFU,7126
@@ -443,7 +443,7 @@ reconcile/skupper_network/site_controller.py,sha256=A3K-62BjJ5HiFVydV0ouGoD1NwrO
443
443
  reconcile/statuspage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
444
444
  reconcile/statuspage/atlassian.py,sha256=5awxH9ovbtgis_N4aabBvrlo2ZyLNLaO6ezIYDgVq0Y,18571
445
445
  reconcile/statuspage/integration.py,sha256=hsazrQMceJbr61nEkJLxJbHhudTGtFuH0mlCo66-2ug,711
446
- reconcile/statuspage/page.py,sha256=WHDwV2PXEo4WwI2EgPOkS6j_T7geZEDXTgSaqpDo75U,5101
446
+ reconcile/statuspage/page.py,sha256=vnrifINUNKaBRDauYDjme6sEdTeRMgwsZAifDxlkYec,5248
447
447
  reconcile/statuspage/state.py,sha256=HD9EOoKm_nEqCMLIwW809En3cq5VhyzKJPUbsh-bae8,1617
448
448
  reconcile/statuspage/status.py,sha256=mfRJ_tW7jM4_Vy_1cc8C0fKJEoA2GwrA3gJeV1KImAw,2834
449
449
  reconcile/statuspage/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -820,8 +820,8 @@ tools/test/test_app_interface_metrics_exporter.py,sha256=SX7qL3D1SIRKFo95FoQztvf
820
820
  tools/test/test_qontract_cli.py,sha256=_D61RFGAN5x44CY1tYbouhlGXXABwYfxKSWSQx3Jrss,4941
821
821
  tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
822
822
  tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
823
- qontract_reconcile-0.10.1rc836.dist-info/METADATA,sha256=fRTocO0-MVXWsYrNuAy6iAfhpoeUuiY0oaO78AGMBQ4,2275
824
- qontract_reconcile-0.10.1rc836.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
825
- qontract_reconcile-0.10.1rc836.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
826
- qontract_reconcile-0.10.1rc836.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
827
- qontract_reconcile-0.10.1rc836.dist-info/RECORD,,
823
+ qontract_reconcile-0.10.1rc838.dist-info/METADATA,sha256=E7EKNWOLtL6qDSkQcbJe9jqzBYjff4eZdTXXC04JyQY,2275
824
+ qontract_reconcile-0.10.1rc838.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
825
+ qontract_reconcile-0.10.1rc838.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
826
+ qontract_reconcile-0.10.1rc838.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
827
+ qontract_reconcile-0.10.1rc838.dist-info/RECORD,,
@@ -15,6 +15,7 @@ from reconcile.aus.healthchecks import (
15
15
  AUSClusterHealthCheckProvider,
16
16
  build_cluster_health_providers_for_organization,
17
17
  )
18
+ from reconcile.aus.metrics import AUSOCMEnvironmentError
18
19
  from reconcile.aus.models import (
19
20
  ClusterUpgradeSpec,
20
21
  OrganizationUpgradeSpec,
@@ -37,6 +38,7 @@ from reconcile.gql_definitions.fragments.upgrade_policy import (
37
38
  ClusterUpgradePolicyConditionsV1,
38
39
  ClusterUpgradePolicyV1,
39
40
  )
41
+ from reconcile.utils import metrics
40
42
  from reconcile.utils.clusterhealth.providerbase import ClusterHealthProvider
41
43
  from reconcile.utils.models import (
42
44
  CSV,
@@ -85,14 +87,28 @@ class AdvancedUpgradeServiceIntegration(OCMClusterUpgradeSchedulerOrgIntegration
85
87
 
86
88
  def get_upgrade_specs(self) -> dict[str, dict[str, OrganizationUpgradeSpec]]:
87
89
  inheritance_network = self.init_version_data_network()
88
-
89
- return {
90
- ocm_env.name: self._build_ocm_env_upgrade_specs(
91
- ocm_env=ocm_env,
92
- inheritance_network=inheritance_network,
93
- )
94
- for ocm_env in self.get_ocm_environments()
95
- }
90
+ envs_org_upgrade_specs: dict[str, dict[str, OrganizationUpgradeSpec]] = {}
91
+ for ocm_env in self.get_ocm_environments():
92
+ try:
93
+ envs_org_upgrade_specs[ocm_env.name] = (
94
+ self._build_ocm_env_upgrade_specs(
95
+ ocm_env=ocm_env,
96
+ inheritance_network=inheritance_network,
97
+ )
98
+ )
99
+ except Exception as e:
100
+ logging.exception(
101
+ "Failed to get org upgrade specs for OCM environment %s. Skipping. %s",
102
+ ocm_env.name,
103
+ e,
104
+ )
105
+ metrics.inc_counter(
106
+ AUSOCMEnvironmentError(
107
+ integration=self.name,
108
+ ocm_env=ocm_env.name,
109
+ )
110
+ )
111
+ return envs_org_upgrade_specs
96
112
 
97
113
  def init_version_data_network(self) -> dict["OrgRef", "VersionDataInheritance"]:
98
114
  # collect all version data labels from all OCM environments ...
@@ -145,13 +145,16 @@ class StatusMaintenance(BaseModel):
145
145
  for c in page_components
146
146
  if c.app.name in affected_services
147
147
  ]
148
- statuspage_announcements = [
149
- StatusMaintenanceAnnouncement.init_from_announcement(
150
- cast(MaintenanceStatuspageAnnouncementV1, m)
151
- )
152
- for m in maintenance.announcements or []
153
- if m.provider == PROVIDER_NAME
154
- ]
148
+ if affected_components:
149
+ statuspage_announcements = [
150
+ StatusMaintenanceAnnouncement.init_from_announcement(
151
+ cast(MaintenanceStatuspageAnnouncementV1, m)
152
+ )
153
+ for m in maintenance.announcements or []
154
+ if m.provider == PROVIDER_NAME
155
+ ]
156
+ else:
157
+ statuspage_announcements = [StatusMaintenanceAnnouncement()]
155
158
  if len(statuspage_announcements) != 1:
156
159
  raise ValueError(
157
160
  f"Maintenanace announcements must include exactly one item of provider {PROVIDER_NAME}"