qontract-reconcile 0.10.1rc592__py3-none-any.whl → 0.10.1rc594__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.1rc592
3
+ Version: 0.10.1rc594
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
@@ -111,15 +111,15 @@ reconcile/terraform_cloudflare_dns.py,sha256=auU4bzeLwd4S8D8oqpqJbrCUoEdELXrgi7v
111
111
  reconcile/terraform_cloudflare_resources.py,sha256=EbQQaoDnZ7brvRCpbFtwlD7KLk2hDVNcjhrJGaAywEk,15023
112
112
  reconcile/terraform_cloudflare_users.py,sha256=1EbTHwJgiPkJpMP-Ag340QNgGK3mXn3dcC3DpLakudM,13987
113
113
  reconcile/terraform_repo.py,sha256=c0GZFuY3rCm6VHjHqYbsgOHrEkRWKF_1LrMThsn2XDw,16127
114
- reconcile/terraform_resources.py,sha256=UJfygWCnLJAouAXU7EYpF-GBtqujeypMsWq04HZTE-A,18981
114
+ reconcile/terraform_resources.py,sha256=hnW_C8i8am1rAojIOyoDG2FZofeBxK3GxH1S281eSqo,19278
115
115
  reconcile/terraform_tgw_attachments.py,sha256=_g7QSHM03YZzTU7O189S4HYtUn7WmwOBq67G4AieU24,15298
116
116
  reconcile/terraform_users.py,sha256=kXRUxCUchKCP2dbXXOzctynqMii4oyCP6bYZHQTrlTg,10202
117
117
  reconcile/terraform_vpc_peerings.py,sha256=rnDH1u93OyzrBM8Hib0HwSnlxZtx4ScRQaZAcn3mx-k,25402
118
118
  reconcile/vault_replication.py,sha256=79GZ_kCimPoQcxkdhkWTQxPOAa46E0mNhf05s_Mk5so,17385
119
119
  reconcile/vpc_peerings_validator.py,sha256=Kv22HJVlTW9l9GB2eXwjPWqdDbr_VuvQBNPttox6s5o,7177
120
120
  reconcile/aus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
- reconcile/aus/advanced_upgrade_service.py,sha256=DQ9FrphzhKsKaXbXeA2v3Qsg1ABXXEtPhD-R-FwUsBA,21007
122
- reconcile/aus/aus_label_source.py,sha256=X6FD4NYcX27llMUSmmBcCh-pG7U5FnBd0zl-0zwCj2U,4118
121
+ reconcile/aus/advanced_upgrade_service.py,sha256=PkVcXBMrveW5euvqjEBO4e5-9KDb_6hszLI2GrWpx2w,21378
122
+ reconcile/aus/aus_label_source.py,sha256=qoP8Fgxuu1tCuhG6ixCWve7Ll-KD6a79E2uLAmC0ifw,4184
123
123
  reconcile/aus/base.py,sha256=Qdktz7W7J9TWVCYJZHwyKoIf4sVI7W9o_WwzsOBxLfQ,44912
124
124
  reconcile/aus/cluster_version_data.py,sha256=j4UyEBi5mQuvPq5Lo7a_L_0blxvH790wJV07uAiikFU,7126
125
125
  reconcile/aus/metrics.py,sha256=fIew-rzi_kYuI5Gxn3-4bQVIr2oNibiKPyGnhB-xKU4,3538
@@ -174,8 +174,8 @@ reconcile/gql_definitions/acs/acs_instances.py,sha256=L91WW9LbhJbBSrECqShQpFtjoB
174
174
  reconcile/gql_definitions/acs/acs_policies.py,sha256=Z6Z7duvS9W4cbciBED4oK40Vg9QyYti3zXvoEXM-fak,4422
175
175
  reconcile/gql_definitions/acs/acs_rbac.py,sha256=cZsIlCWliPQdQHgmBsIMx54fJNOtkdRXLzmOKZmJNHk,3009
176
176
  reconcile/gql_definitions/advanced_upgrade_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
- reconcile/gql_definitions/advanced_upgrade_service/aus_clusters.py,sha256=2-OnknXDUI2pnZknEmjzMPBXUpWStoE32lpQQStobao,4221
178
- reconcile/gql_definitions/advanced_upgrade_service/aus_organization.py,sha256=0gcgv4CoKJ_5DJoIIj0JuytFOyq8HVn4wJyG_iEMH_Q,3219
177
+ reconcile/gql_definitions/advanced_upgrade_service/aus_clusters.py,sha256=z-duZbkMLU1B7P7PSzjUQYVOr2ccP6rvpQLjgzHCj-4,4244
178
+ reconcile/gql_definitions/advanced_upgrade_service/aus_organization.py,sha256=_H8jhf_kzFj5AWa8auawXIwFmrQw3a1RK6MOi4qQ6zA,3242
179
179
  reconcile/gql_definitions/app_interface_metrics_exporter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
180
  reconcile/gql_definitions/app_interface_metrics_exporter/onboarding_status.py,sha256=uVEEqU6YYmKsNTo6EWlFnoVmqha2rvBDx-wiD64VmG0,1679
181
181
  reconcile/gql_definitions/aws_ami_cleanup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -204,7 +204,7 @@ reconcile/gql_definitions/common/app_interface_repo_settings.py,sha256=rud0rz9NI
204
204
  reconcile/gql_definitions/common/app_interface_state_settings.py,sha256=VXIK0Hmyv6GTShI86IGkjxyHGwufqUBAh617XKUAKaI,2507
205
205
  reconcile/gql_definitions/common/app_interface_vault_settings.py,sha256=w8quvdG0cSq71ZyJokPPp7MyMpoDb6-HLQ3o9JHVGRQ,1771
206
206
  reconcile/gql_definitions/common/aws_vpcs.py,sha256=Dss9dQ3xagnz3Ltg1e9mtG2PAmQGBbUzKCmmzvuN28s,1892
207
- reconcile/gql_definitions/common/clusters.py,sha256=tJpXdOYFpJ5D-fE_ELrc2vHicoamwXkrtWUcuCS1sFo,23178
207
+ reconcile/gql_definitions/common/clusters.py,sha256=b9RLeV4H-y1aAPotySaid6IMT6-jPNE1smu70eSDYH4,23201
208
208
  reconcile/gql_definitions/common/clusters_minimal.py,sha256=yZpjS9qWyusCEiWtD8wzf0tak298uQyxiN4lC6KNo4s,4475
209
209
  reconcile/gql_definitions/common/clusters_with_peering.py,sha256=7ORLr469qEmsqescriARsZrJyQaB0JOFP6UVVlFWfk0,11548
210
210
  reconcile/gql_definitions/common/github_orgs.py,sha256=rZ0pDAA2_9hF9N-ykRZIxPtEmczTSjuA_k3nkp0k1W0,2039
@@ -243,7 +243,7 @@ reconcile/gql_definitions/fragments/resource_requests_requirements.py,sha256=TFK
243
243
  reconcile/gql_definitions/fragments/resource_values.py,sha256=-N2lNRhWp8PgocmIeX3U9f3l90Q97N2lXoq1pXdb_LE,742
244
244
  reconcile/gql_definitions/fragments/saas_target_namespace.py,sha256=y4hA73Vchi3I1UW94r7CmecZe6KoHkCMEVuoiAF2xnc,3660
245
245
  reconcile/gql_definitions/fragments/terraform_state.py,sha256=S5QuTR9YlvUObiU7hevS9ybxZEssWoRGqCR9YtGwePs,1024
246
- reconcile/gql_definitions/fragments/upgrade_policy.py,sha256=QrHCYqeBX8I9FrRK78KIlTAIYo9ijJZtdQn4ODiuWW4,1155
246
+ reconcile/gql_definitions/fragments/upgrade_policy.py,sha256=cVza8zfra1E3yBsHiS-hKbys17fvv572GFnKshJjluE,1246
247
247
  reconcile/gql_definitions/fragments/user.py,sha256=84RGYYSYnZmyrwHlCX89-EgAu7UaLFOTMQXobmHCfz8,939
248
248
  reconcile/gql_definitions/fragments/vault_secret.py,sha256=8xoQJNx1jKw_1yradq1iLEYWzuOHra1bEHHU7WHKxqo,833
249
249
  reconcile/gql_definitions/gitlab_members/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -437,7 +437,7 @@ reconcile/test/test_openshift_resources_base.py,sha256=LtlR9x3o7KkSEw0JN0fZhinFe
437
437
  reconcile/test/test_openshift_saas_deploy.py,sha256=YLJGkc--u5aP0UkQ-b9ZGEFGS2gw25jjcSgknQdI3Ic,5892
438
438
  reconcile/test/test_openshift_saas_deploy_change_tester.py,sha256=1yVe54Hx9YdVjn6qdnKge5Sa_s732c-8uZqCnuT1gGI,12871
439
439
  reconcile/test/test_openshift_tekton_resources.py,sha256=RtRWsdm51S13OSkENC9nY_rOH0QELSCaO5tjF0XqIDI,11222
440
- reconcile/test/test_openshift_upgrade_watcher.py,sha256=na5Q5l88c0ZHMh82gvNpYheoMOAzEZRG0ZvzzDhafYE,7100
440
+ reconcile/test/test_openshift_upgrade_watcher.py,sha256=0GDQ_YFHIX8DbkbDYSuLv9uZeeg4NwP1vlOqvSaZvN4,7183
441
441
  reconcile/test/test_prometheus_rules_tester.py,sha256=Qc9J4k0lSVie361lGr_cOy0EaBTD5LDqGZf7CYVFKr8,5677
442
442
  reconcile/test/test_quay_membership.py,sha256=e29Giz5S9ckFgjpTO8PBo8qVPocIQmy4WqsRhgTFd9A,2643
443
443
  reconcile/test/test_quay_mirror.py,sha256=UBLQDtet5WkWnh98ev5cI3yAflQl07awg2dXTefqoUk,6311
@@ -458,7 +458,7 @@ reconcile/test/test_terraform_cloudflare_dns.py,sha256=aQTXX8Vr4h9aWvJZTnpZEhMGY
458
458
  reconcile/test/test_terraform_cloudflare_resources.py,sha256=NK_uktyWihkQ3gMN4bCaKerpi43CXAVYGIKTfcz05rY,13550
459
459
  reconcile/test/test_terraform_cloudflare_users.py,sha256=RAFtMMdqZha3jNnNNsqbNQQUDSqUzdoM63rCw7fs4Fo,27456
460
460
  reconcile/test/test_terraform_repo.py,sha256=soKFJfF8tWIimDs39RQl3Hnh-Od-bR4PfnEA2s1UprM,11552
461
- reconcile/test/test_terraform_resources.py,sha256=mLXzBids3clL_P9ObMgFoXnw3IDxhF8GiVLLMhCOFH4,15101
461
+ reconcile/test/test_terraform_resources.py,sha256=VQ9nCJfEWEaO7WonUmwgLYc5Sf6ansVRDJngtkL5qLg,15268
462
462
  reconcile/test/test_terraform_tgw_attachments.py,sha256=cAq6exc-K-jtLla1CZUZQzVnBkyDnIlL7jybnddhLKc,36861
463
463
  reconcile/test/test_terraform_users.py,sha256=Xn4y6EcxnNQb6XcPoOhz_Ikxmh9Nrsu88OM1scN9hzY,5434
464
464
  reconcile/test/test_terraform_vpc_peerings.py,sha256=ubcsKh0TrUIwuI1-W3ETIgzsFvzAyeoFmEJFC-IK6JY,20538
@@ -693,8 +693,8 @@ tools/test/test_app_interface_metrics_exporter.py,sha256=SX7qL3D1SIRKFo95FoQztvf
693
693
  tools/test/test_qontract_cli.py,sha256=OvalpVRfY4pNmpMaWHHYqBjV68b1eGQjX8SCyTAXb1w,3501
694
694
  tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
695
695
  tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
696
- qontract_reconcile-0.10.1rc592.dist-info/METADATA,sha256=YH4fVqMLNuIOaJXFIENYjkNdOQ9-kH1z7Lpt-FJYhxA,2349
697
- qontract_reconcile-0.10.1rc592.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
698
- qontract_reconcile-0.10.1rc592.dist-info/entry_points.txt,sha256=rTjAv28I_CHLM8ID3OPqMI_suoQ9s7tFbim4aYjn9kk,376
699
- qontract_reconcile-0.10.1rc592.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
700
- qontract_reconcile-0.10.1rc592.dist-info/RECORD,,
696
+ qontract_reconcile-0.10.1rc594.dist-info/METADATA,sha256=FbIwYOHtBj7VdEK0G9r1zv9lIlu9_bLSKp1d03lWs3c,2349
697
+ qontract_reconcile-0.10.1rc594.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
698
+ qontract_reconcile-0.10.1rc594.dist-info/entry_points.txt,sha256=rTjAv28I_CHLM8ID3OPqMI_suoQ9s7tFbim4aYjn9kk,376
699
+ qontract_reconcile-0.10.1rc594.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
700
+ qontract_reconcile-0.10.1rc594.dist-info/RECORD,,
@@ -364,6 +364,9 @@ class ClusterUpgradePolicyLabelSet(BaseModel):
364
364
  mutexes: Optional[CSV] = Field(alias=aus_label_key("mutexes"))
365
365
  sector: Optional[str] = Field(alias=aus_label_key("sector"))
366
366
  blocked_versions: Optional[CSV] = Field(alias=aus_label_key("blocked-versions"))
367
+ version_gate_approvals: Optional[CSV] = Field(
368
+ alias=aus_label_key("version-gate-approvals")
369
+ )
367
370
  _schedule_validator = validator("schedule", allow_reuse=True)(cron_validator)
368
371
 
369
372
  def build_labels_dict(self) -> dict[str, str]:
@@ -388,6 +391,7 @@ def build_cluster_upgrade_policy_label_set(
388
391
  mutexes: Optional[list[str]] = None,
389
392
  sector: Optional[str] = None,
390
393
  blocked_versions: Optional[list[str]] = None,
394
+ version_gate_approvals: Optional[list[str]] = None,
391
395
  ) -> ClusterUpgradePolicyLabelSet:
392
396
  return ClusterUpgradePolicyLabelSet(**{
393
397
  aus_label_key("workloads"): ",".join(workloads),
@@ -398,6 +402,9 @@ def build_cluster_upgrade_policy_label_set(
398
402
  aus_label_key("blocked-versions"): ",".join(blocked_versions)
399
403
  if blocked_versions
400
404
  else None,
405
+ aus_label_key("version-gate-approvals"): ",".join(version_gate_approvals)
406
+ if version_gate_approvals
407
+ else None,
401
408
  })
402
409
 
403
410
 
@@ -410,6 +417,7 @@ def _build_policy_from_labels(labels: LabelContainer) -> ClusterUpgradePolicyV1:
410
417
  policy_labelset = build_labelset(labels, ClusterUpgradePolicyLabelSet)
411
418
  return ClusterUpgradePolicyV1(
412
419
  workloads=policy_labelset.workloads,
420
+ versionGateApprovals=policy_labelset.version_gate_approvals,
413
421
  schedule=policy_labelset.schedule,
414
422
  conditions=ClusterUpgradePolicyConditionsV1(
415
423
  soakDays=policy_labelset.soak_days,
@@ -52,6 +52,7 @@ class AUSClusterUpgradePolicyLabelSource(LabelSource):
52
52
  mutexes=policy.conditions.mutexes,
53
53
  sector=policy.conditions.sector,
54
54
  blocked_versions=policy.conditions.blocked_versions,
55
+ version_gate_approvals=policy.version_gate_approvals,
55
56
  ).build_labels_dict()
56
57
 
57
58
 
@@ -84,6 +84,7 @@ fragment AUSOCMOrganization on OpenShiftClusterManager_v1 {
84
84
  fragment ClusterUpgradePolicyV1 on ClusterUpgradePolicy_v1 {
85
85
  workloads
86
86
  schedule
87
+ versionGateApprovals
87
88
  conditions {
88
89
  mutexes
89
90
  soakDays
@@ -83,6 +83,7 @@ fragment AUSOCMOrganization on OpenShiftClusterManager_v1 {
83
83
  fragment ClusterUpgradePolicyV1 on ClusterUpgradePolicy_v1 {
84
84
  workloads
85
85
  schedule
86
+ versionGateApprovals
86
87
  conditions {
87
88
  mutexes
88
89
  soakDays
@@ -62,6 +62,7 @@ fragment AWSVPC on AWSVPC_v1 {
62
62
  fragment ClusterUpgradePolicyV1 on ClusterUpgradePolicy_v1 {
63
63
  workloads
64
64
  schedule
65
+ versionGateApprovals
65
66
  conditions {
66
67
  mutexes
67
68
  soakDays
@@ -34,4 +34,5 @@ class ClusterUpgradePolicyConditionsV1(ConfiguredBaseModel):
34
34
  class ClusterUpgradePolicyV1(ConfiguredBaseModel):
35
35
  workloads: list[str] = Field(..., alias="workloads")
36
36
  schedule: str = Field(..., alias="schedule")
37
+ version_gate_approvals: Optional[list[str]] = Field(..., alias="versionGateApprovals")
37
38
  conditions: ClusterUpgradePolicyConditionsV1 = Field(..., alias="conditions")
@@ -67,7 +67,7 @@ from reconcile.utils.vault import (
67
67
  )
68
68
 
69
69
  QONTRACT_INTEGRATION = "terraform_resources"
70
- QONTRACT_INTEGRATION_VERSION = make_semver(0, 5, 2)
70
+ QONTRACT_INTEGRATION_VERSION = make_semver(0, 5, 3)
71
71
  QONTRACT_TF_PREFIX = "qrtf"
72
72
 
73
73
 
@@ -350,6 +350,11 @@ class MultipleAccountNamesInDryRunException(Exception):
350
350
  pass
351
351
 
352
352
 
353
+ class CacheSource(TypedDict):
354
+ terraform_configurations: dict[str, str]
355
+ resource_spec_inventory: ExternalResourceSpecInventory
356
+
357
+
353
358
  @defer
354
359
  def run(
355
360
  dry_run: bool,
@@ -414,11 +419,15 @@ def run(
414
419
  "terraform-resources-extended-early-exit",
415
420
  default=False,
416
421
  ):
422
+ cache_source = CacheSource(
423
+ terraform_configurations=ts.terraform_configurations(),
424
+ resource_spec_inventory=ts.resource_spec_inventory,
425
+ )
417
426
  extended_early_exit_run(
418
427
  integration=QONTRACT_INTEGRATION,
419
428
  integration_version=QONTRACT_INTEGRATION_VERSION,
420
429
  dry_run=dry_run,
421
- cache_source=ts.terraform_configurations(),
430
+ cache_source=cache_source,
422
431
  shard="_".join(account_name) if account_name else "",
423
432
  ttl_seconds=extended_early_exit_cache_ttl_seconds,
424
433
  logger=logging.getLogger(),
@@ -8,13 +8,14 @@ import pytest
8
8
  from reconcile import openshift_upgrade_watcher as ouw
9
9
  from reconcile.gql_definitions.common.clusters import ClusterV1
10
10
  from reconcile.test.fixtures import Fixtures
11
+ from reconcile.utils.models import data_default_none
11
12
 
12
13
  fxt = Fixtures("openshift_upgrade_watcher")
13
14
 
14
15
 
15
16
  def load_cluster(path: str) -> ClusterV1:
16
17
  content = fxt.get_anymarkup(path)
17
- return ClusterV1(**content)
18
+ return ClusterV1(**data_default_none(ClusterV1, content))
18
19
 
19
20
 
20
21
  @pytest.fixture
@@ -370,12 +370,16 @@ def test_run_with_extended_early_exit_run_enabled(
370
370
  log_cached_log_output=True,
371
371
  defer=defer,
372
372
  )
373
+ expected_cache_source = {
374
+ "terraform_configurations": mocks["ts"].terraform_configurations.return_value,
375
+ "resource_spec_inventory": mocks["ts"].resource_spec_inventory,
376
+ }
373
377
 
374
378
  mocks["extended_early_exit_run"].assert_called_once_with(
375
379
  integration=integ.QONTRACT_INTEGRATION,
376
380
  integration_version=integ.QONTRACT_INTEGRATION_VERSION,
377
381
  dry_run=True,
378
- cache_source=mocks["ts"].terraform_configurations.return_value,
382
+ cache_source=expected_cache_source,
379
383
  shard="a",
380
384
  ttl_seconds=60,
381
385
  logger=mocks["logging"].getLogger.return_value,