qontract-reconcile 0.10.1rc1054__py3-none-any.whl → 0.10.1rc1056__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.1rc1054
3
+ Version: 0.10.1rc1056
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
@@ -269,7 +269,7 @@ reconcile/gql_definitions/common/pipeline_providers.py,sha256=JJgmmghqLIwjKOdcWY
269
269
  reconcile/gql_definitions/common/quay_instances.py,sha256=toBkdYYVTmEafezAHZKgaW-mQ29xEW6jeronzsAlNyI,1786
270
270
  reconcile/gql_definitions/common/quay_orgs.py,sha256=NhA8kqvVUDbrsryEvEL5mlIv5R3T4XNhSRXtfL_yptY,1788
271
271
  reconcile/gql_definitions/common/reserved_networks.py,sha256=yP9qSQCaSQcva-ZgTnZp09qH27ur5_qK080ToIs04MY,2560
272
- reconcile/gql_definitions/common/saas_files.py,sha256=i0U0Ot4DwE3LjigD4ex_ASOPWfSZEpX_4ZrRaWlUhW8,16854
272
+ reconcile/gql_definitions/common/saas_files.py,sha256=JZdFKBygaZVxGwBUYMki9EbnsGdmfmxuAreMZ3dchwo,16702
273
273
  reconcile/gql_definitions/common/saas_target_namespaces.py,sha256=4VYP2VbwY8WVwtSFk2-jsUNhSmRD3X4FWKxetOKvmd0,2835
274
274
  reconcile/gql_definitions/common/saasherder_settings.py,sha256=nqQLcMwYxLseqq0BEcVvmrpIj2eQq0h8XDSpLN6GGCw,1793
275
275
  reconcile/gql_definitions/common/slack_workspaces.py,sha256=2o0kgi4QiaRuNmZJnc_By4F6NsKIdRaXkrufRQw7Nok,1753
@@ -443,8 +443,8 @@ reconcile/rhidp/sso_client/metrics.py,sha256=Tq7tSOsqL3XdcPUdozxqzSPIodUeOV87UCT
443
443
  reconcile/saas_auto_promotions_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
444
444
  reconcile/saas_auto_promotions_manager/integration.py,sha256=haXTpwi0rEQtN9-MadBzFvSNtbxw5QQuFpMQLg3bZlQ,6707
445
445
  reconcile/saas_auto_promotions_manager/meta.py,sha256=76Jp50r6Y_KyJoXFfSjrt5YrCtXyg_A4FXXxHYiS3TE,161
446
- reconcile/saas_auto_promotions_manager/publisher.py,sha256=_VdmCTiPpOBQBkGRpD6528TGdOV90wRme1q8ep_qo48,2993
447
- reconcile/saas_auto_promotions_manager/s3_exporter.py,sha256=Y-r5R6viiAzglUHbYKItYSjT_axmLlPEJVmu_H6N170,2682
446
+ reconcile/saas_auto_promotions_manager/publisher.py,sha256=IZGu-PMffyk3fNL8QcZ2VBmYTZ5zigoCwNJ4_Ak6-C8,2966
447
+ reconcile/saas_auto_promotions_manager/s3_exporter.py,sha256=IKlVWZmiPnvl7sKeF6JgAlhXZe5CovKTxQc0SNkNSx4,2583
448
448
  reconcile/saas_auto_promotions_manager/subscriber.py,sha256=kIJKT1Xg5FF7EGT5ayK5ROyu_S7FbsYK91WBqrtYjfA,10030
449
449
  reconcile/saas_auto_promotions_manager/merge_request_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
450
450
  reconcile/saas_auto_promotions_manager/merge_request_manager/batcher.py,sha256=R2CRtjdOggY5lSqt-A5qz2ymqomx4opVeVV_oqBAW0A,7804
@@ -456,7 +456,7 @@ reconcile/saas_auto_promotions_manager/merge_request_manager/mr_parser.py,sha256
456
456
  reconcile/saas_auto_promotions_manager/merge_request_manager/open_merge_requests.py,sha256=-qGQOh6Jdp4lomNDij3zWVC0pl6uPHFWS5Woqcp5HQk,410
457
457
  reconcile/saas_auto_promotions_manager/merge_request_manager/renderer.py,sha256=rnY9CR_0ONDJdJhGaGOQ9yBlKV0bPXQKh9Ped-NA2To,7245
458
458
  reconcile/saas_auto_promotions_manager/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
459
- reconcile/saas_auto_promotions_manager/utils/saas_files_inventory.py,sha256=wj7x3DIoetLX5QeaorTH0i8QC5GWsqahbUOrUb0AzJk,8830
459
+ reconcile/saas_auto_promotions_manager/utils/saas_files_inventory.py,sha256=DZOT8jvM9tmLnipY884XN5T4ViJljAlcEz6XKdNCK5w,8860
460
460
  reconcile/skupper_network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
461
461
  reconcile/skupper_network/integration.py,sha256=oZIVDBRcQPC-lWxNFiJhGbtCM7Yj7fjwAzYZ8JvVe3I,10789
462
462
  reconcile/skupper_network/models.py,sha256=HEwlVKsbmMaKaaBGvITIiSYNEVdjwXVhLaOJgLSZ2xQ,6604
@@ -553,7 +553,7 @@ reconcile/test/test_quay_repos.py,sha256=TdkcRF_a8PLp01Kti9eZZN-vGup2yPBT4Iba3k0
553
553
  reconcile/test/test_queries.py,sha256=SpH3RmNpBjEr_ne3VjAMCgKK8RE1z1zo7bypkT5uoO4,1946
554
554
  reconcile/test/test_repo_owners.py,sha256=uRYMLbMmh-9usF0TerabZTZV-Z1CS4I6ybT-LQqCLe8,1423
555
555
  reconcile/test/test_requests_sender.py,sha256=7fd9C2kEFS0-CYtlsif66N1kO9c44pzuBPAJKR9igqU,5385
556
- reconcile/test/test_saasherder.py,sha256=-WGgAsrTm_SJ0OQDLXd4JwEu1Mc6i4AePJqjZQTaRew,58114
556
+ reconcile/test/test_saasherder.py,sha256=SXhjDhpmWNM3xWtOGWn5j6BeznuXDwlttVcUtp9drpo,58014
557
557
  reconcile/test/test_saasherder_allowed_secret_paths.py,sha256=5NHQwNJO66at6HiyMZ5sVRTQDwxdvlOQo0KmkBWCw5Q,4853
558
558
  reconcile/test/test_secret_reader.py,sha256=kz7nzcPjvA08cytnvcA_PMA98AEyqJWsESkYeRn5xCk,4994
559
559
  reconcile/test/test_slack_base.py,sha256=pTUGvJ2S2wF3PhJyGWmiNXG52QtXKy2cbu-G8Ymrv6I,5019
@@ -578,7 +578,7 @@ reconcile/test/test_version_bump.py,sha256=q6-3Y1roriI6YWpFwaHOMN7emEP3yL33sh_0V
578
578
  reconcile/test/test_vpc_peerings_validator.py,sha256=dFSmjc_dMN2GqMbntCFpa7PUZmyYuQ9DKffh-T5wmxM,6639
579
579
  reconcile/test/test_wrong_region.py,sha256=7KzL7OaICQ9Z3DW27zt_ykMN7_87owAFC-2CYjvGoyA,2138
580
580
  reconcile/test/saas_auto_promotions_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
581
- reconcile/test/saas_auto_promotions_manager/conftest.py,sha256=m4gOYQIOO9Br9r26erJLXxO6b1IfVKO-QQPm8k2qD5Y,6094
581
+ reconcile/test/saas_auto_promotions_manager/conftest.py,sha256=oRnwwFbL00TNwY1uacjPl0cwU3o064YpDhNkeoerGzE,6085
582
582
  reconcile/test/saas_auto_promotions_manager/test_integration_test.py,sha256=S30eXJSy2Vc3YLbCP7AfLkOiFGUVoKhEvEBL5vwnbfg,1848
583
583
  reconcile/test/saas_auto_promotions_manager/merge_request_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
584
584
  reconcile/test/saas_auto_promotions_manager/merge_request_manager/merge_request_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -696,7 +696,7 @@ reconcile/utils/make.py,sha256=QaEwucrzbl8-VHS66Wfdjfo0ubmAcvt_hZGpiGsKU50,231
696
696
  reconcile/utils/metrics.py,sha256=QN37XJDajWt-FdVGgqqDUkhemwTj0srfb-rhkIBxvsE,18591
697
697
  reconcile/utils/models.py,sha256=BYsgjWyuwO7obMhqADsqEQ-_YJrmy8LmFKHSLMFbo1g,4645
698
698
  reconcile/utils/oauth2_backend_application_session.py,sha256=6W16sMpnWEPFDUX7qi5Cui2yOnmLfpgUxWtB3Ii35D0,4177
699
- reconcile/utils/oc.py,sha256=h_p9lk8YNU-PZZuyPrXd677Wj3HrfZebfk9bgoqk1e4,65534
699
+ reconcile/utils/oc.py,sha256=RuVXqvjofz8Vvf_eisvOxOEK1A6KrOq8FQI2YUAAYoM,65796
700
700
  reconcile/utils/oc_connection_parameters.py,sha256=7DiEGo--TJelfYoZXJFyTBPeTw9kXL3L58vy2fiJnes,9643
701
701
  reconcile/utils/oc_filters.py,sha256=Tz3OwtbUaYKmxENFls5CtPVzkZDeFXknw53dJe-wbT8,1382
702
702
  reconcile/utils/oc_map.py,sha256=U8cYhiaZsomkofzbIjVrl7E7crRxkS2JKsFpVeeHVE8,8964
@@ -867,8 +867,8 @@ tools/test/test_qontract_cli.py,sha256=_D61RFGAN5x44CY1tYbouhlGXXABwYfxKSWSQx3Jr
867
867
  tools/test/test_saas_promotion_state.py,sha256=dy4kkSSAQ7bC0Xp2CociETGN-2aABEfL6FU5D9Jl00Y,6056
868
868
  tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
869
869
  tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
870
- qontract_reconcile-0.10.1rc1054.dist-info/METADATA,sha256=964pbKmbJyE8OC_hM19ZLF0So2_dQGW_zoQNeh6ar7U,2213
871
- qontract_reconcile-0.10.1rc1054.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
872
- qontract_reconcile-0.10.1rc1054.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
873
- qontract_reconcile-0.10.1rc1054.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
874
- qontract_reconcile-0.10.1rc1054.dist-info/RECORD,,
870
+ qontract_reconcile-0.10.1rc1056.dist-info/METADATA,sha256=CHSafj5u2wG1ldpLxEZLbYfSHBq4_mbszb1qawE6bEk,2213
871
+ qontract_reconcile-0.10.1rc1056.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
872
+ qontract_reconcile-0.10.1rc1056.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
873
+ qontract_reconcile-0.10.1rc1056.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
874
+ qontract_reconcile-0.10.1rc1056.dist-info/RECORD,,
@@ -265,7 +265,6 @@ query SaasFiles {
265
265
  auto
266
266
  publish
267
267
  subscribe
268
- redeployOnPublisherConfigChange
269
268
  soakDays
270
269
  schedule
271
270
  promotion_data {
@@ -473,7 +472,6 @@ class SaasResourceTemplateTargetPromotionV1(ConfiguredBaseModel):
473
472
  auto: Optional[bool] = Field(..., alias="auto")
474
473
  publish: Optional[list[str]] = Field(..., alias="publish")
475
474
  subscribe: Optional[list[str]] = Field(..., alias="subscribe")
476
- redeploy_on_publisher_config_change: Optional[bool] = Field(..., alias="redeployOnPublisherConfigChange")
477
475
  soak_days: Optional[int] = Field(..., alias="soakDays")
478
476
  schedule: Optional[str] = Field(..., alias="schedule")
479
477
  promotion_data: Optional[list[PromotionDataV1]] = Field(..., alias="promotion_data")
@@ -39,7 +39,7 @@ class Publisher:
39
39
  target_name: str | None,
40
40
  cluster_name: str,
41
41
  auth_code: HasSecret | None,
42
- redeploy_on_config_change: bool | None,
42
+ publish_job_logs: bool | None,
43
43
  has_subscriber: bool = True,
44
44
  ):
45
45
  self._ref = ref
@@ -56,7 +56,7 @@ class Publisher:
56
56
  self.resource_template_name = resource_template_name
57
57
  self.target_name = target_name if target_name else "None"
58
58
  self.cluster_name = cluster_name
59
- self.redeploy_on_config_change = bool(redeploy_on_config_change)
59
+ self.publish_job_logs = bool(publish_job_logs)
60
60
  self.has_subscriber = has_subscriber
61
61
 
62
62
  def fetch_commit_shas_and_deployment_info(
@@ -62,8 +62,7 @@ class S3Exporter:
62
62
  data: dict[str, dict] = {}
63
63
  for publisher in publishers:
64
64
  publisher_data = PublisherData.from_publisher(publisher)
65
- # Note, redeploy_on_config_change indicates that this publisher is a test job
66
- key = f"{publisher.app_name}/{publisher.saas_name}/{publisher.resource_template_name}/{publisher.target_name}/{publisher.cluster_name}/{publisher.namespace_name}/{publisher.redeploy_on_config_change}"
65
+ key = f"{publisher.app_name}/{publisher.saas_name}/{publisher.resource_template_name}/{publisher.target_name}/{publisher.cluster_name}/{publisher.namespace_name}/{publisher.publish_job_logs}"
67
66
  data[key] = {
68
67
  "commit_sha": publisher_data.commit_sha,
69
68
  "deployment_state": publisher_data.deployment_state.value,
@@ -65,8 +65,8 @@ class SaasFilesInventory:
65
65
  cluster_name=target.namespace.cluster.name,
66
66
  resource_template_name=resource_template.name,
67
67
  target_name=target.name,
68
+ publish_job_logs=saas_file.publish_job_logs,
68
69
  auth_code=auth_code,
69
- redeploy_on_config_change=target.promotion.redeploy_on_publisher_config_change,
70
70
  )
71
71
 
72
72
  has_subscriber = False
@@ -122,9 +122,9 @@ class SaasFilesInventory:
122
122
  blocked_versions=blocked_versions.get(
123
123
  resource_template.url, set()
124
124
  ),
125
- use_target_config_hash=bool(
126
- target.promotion.redeploy_on_publisher_config_change
127
- ),
125
+ # Note: this will be refactored at a later point.
126
+ # https://issues.redhat.com/browse/APPSRE-7516
127
+ use_target_config_hash=bool(saas_file.publish_job_logs),
128
128
  )
129
129
  self.subscribers.append(subscriber)
130
130
  for prom_data in target.promotion.promotion_data or []:
@@ -131,7 +131,7 @@ def subscriber_builder(
131
131
  app_name="",
132
132
  resource_template_name="",
133
133
  target_name=None,
134
- redeploy_on_config_change=True,
134
+ publish_job_logs=True,
135
135
  has_subscriber=True,
136
136
  auth_code=None,
137
137
  )
@@ -164,7 +164,6 @@ class TestSaasFileValid(TestCase):
164
164
  auto=True,
165
165
  publish=None,
166
166
  subscribe=None,
167
- redeployOnPublisherConfigChange=None,
168
167
  promotion_data=None,
169
168
  soakDays=0,
170
169
  schedule="* * * * *",
@@ -191,7 +190,6 @@ class TestSaasFileValid(TestCase):
191
190
  publish=None,
192
191
  subscribe=None,
193
192
  promotion_data=None,
194
- redeployOnPublisherConfigChange=None,
195
193
  soakDays=0,
196
194
  schedule="* * * * *",
197
195
  )
reconcile/utils/oc.py CHANGED
@@ -63,6 +63,13 @@ urllib3.disable_warnings()
63
63
  GET_REPLICASET_MAX_ATTEMPTS = 20
64
64
 
65
65
 
66
+ oc_run_execution_counter = Counter(
67
+ name="oc_run_execution_counter",
68
+ documentation="Counts _run method executions per integration",
69
+ labelnames=["integration"],
70
+ )
71
+
72
+
66
73
  class StatusCodeError(Exception):
67
74
  pass
68
75
 
@@ -1079,6 +1086,7 @@ class OCCli: # pylint: disable=too-many-public-methods
1079
1086
 
1080
1087
  @retry(exceptions=(StatusCodeError, NoOutputError), max_attempts=10)
1081
1088
  def _run(self, cmd, **kwargs) -> bytes:
1089
+ oc_run_execution_counter.labels(integration=RunningState().integration).inc()
1082
1090
  stdin = kwargs.get("stdin")
1083
1091
  stdin_text = stdin.encode() if stdin else None
1084
1092
  result = subprocess.run(