qontract-reconcile 0.10.2.dev278__py3-none-any.whl → 0.10.2.dev280__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.4
2
2
  Name: qontract-reconcile
3
- Version: 0.10.2.dev278
3
+ Version: 0.10.2.dev280
4
4
  Summary: Collection of tools to reconcile services with their desired state as defined in the app-interface DB.
5
5
  Project-URL: homepage, https://github.com/app-sre/qontract-reconcile
6
6
  Project-URL: repository, https://github.com/app-sre/qontract-reconcile
@@ -93,7 +93,7 @@ reconcile/query_validator.py,sha256=MSh5pKLBksws4AqfuvT8nrIGucIbqX-IOzYyPYTLO7k,
93
93
  reconcile/requests_sender.py,sha256=914iluuF4UVgG3VyxxtnHOu4yf6YKS2fIy6PViSsFTQ,3875
94
94
  reconcile/resource_scraper.py,sha256=znXCHrU7YwPfKuxGBiUrV7T1tYtn4vlz9qmZlfy6Flg,2307
95
95
  reconcile/resource_template_tester.py,sha256=DsKvBuNLPxm4Fa-e1YHHySnhThm5i_j-nF3G4b02Mz0,2416
96
- reconcile/run_integration.py,sha256=brbNFEQpHLeLIEN-sDpIctyrx8aiL5Vu9YLecdwwykk,10221
96
+ reconcile/run_integration.py,sha256=M2rIpcx7k0vGkTHdgm0h1efLOWiJ-O2WbYPHKtvIpWA,10214
97
97
  reconcile/saas_file_validator.py,sha256=tyvFYU6lnkfDYIkAIr5pWqSvO5Yc6TagZ-quJYD2dtI,2547
98
98
  reconcile/sendgrid_teammates.py,sha256=oO8QbLb4s1o8A6CGiCagN9CmS05BSS_WLztuY0Ym9D8,4773
99
99
  reconcile/service_dependencies.py,sha256=KydjllianL0lUwhroBAPui7jrnhHSq7j2PB6CoV2nuU,4349
@@ -117,7 +117,7 @@ reconcile/vpc_peerings_validator.py,sha256=aESqrhm1tpkc2iqSL1UV5to_HjNgjRSffD0cr
117
117
  reconcile/aus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
118
  reconcile/aus/advanced_upgrade_service.py,sha256=Cx-WthkvlcX58PrnnNeo_bQG17Xw3BGNu3f53Jc1VoA,23985
119
119
  reconcile/aus/aus_label_source.py,sha256=o0S2f0qwcII_8nzhHZhRQ83gEZ1DrSXyO4xzSwLebuU,4382
120
- reconcile/aus/base.py,sha256=RAtYkwCM2CIqv37XkgyzFyTiNNnImCD-yMQ698QYgAY,51451
120
+ reconcile/aus/base.py,sha256=Gd76QvSO2PjINjsth7sEeJPrD1a0TLYtpgNzTWIzj2w,50016
121
121
  reconcile/aus/cluster_version_data.py,sha256=VZWbUEIbrDKO-sroMpQtiWCTqDraTMd8tssKV0HyTQ0,7140
122
122
  reconcile/aus/healthchecks.py,sha256=jR9c-syh9impnkV0fd6XW3Bnk7iRN5zv8oCRYM-yIRY,2700
123
123
  reconcile/aus/metrics.py,sha256=BhIvZVTn25fIzijz3xFynJngS2sXDBTxxprUUVWJcFo,4246
@@ -184,17 +184,17 @@ reconcile/endpoints_discovery/integration.py,sha256=P63yx5OPlLEFKMDTk5vR9AX3ve8P
184
184
  reconcile/endpoints_discovery/merge_request.py,sha256=_yLb4tnvoZMCko8rta2C_CvOInJa9pa3HzSmHNtjgGU,2978
185
185
  reconcile/endpoints_discovery/merge_request_manager.py,sha256=a8zTIQIpRrUwXexZClwpQnnkEoS6XNZLJziI9x7ly0s,6389
186
186
  reconcile/external_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
- reconcile/external_resources/aws.py,sha256=0Vjobt0zHcGkPV9C_lXHGV2uSbvU8XX00tLCmEmlKvs,11984
187
+ reconcile/external_resources/aws.py,sha256=kh5p9KsYB7naewVPLPtcCjnIrUECmdR6lUgDrzIlL1k,11985
188
188
  reconcile/external_resources/factories.py,sha256=C0QHT0soEv6z99-ELAAE19S5MaMHhV0t1fSiQn0Coc4,5970
189
189
  reconcile/external_resources/integration.py,sha256=WF6O4rT0oUHbNaWEemjLLzCqdNSQIUaymUuj08VsIl8,7034
190
190
  reconcile/external_resources/integration_secrets_sync.py,sha256=M2uOFi2JXWhiw3hQyE_4NVPQmPIYGHlghRti5eLWhkw,1738
191
191
  reconcile/external_resources/manager.py,sha256=Wb1Qk4aVwag5Godo2OGzRsgHZJ9d3nkwqOzCmqptrXs,18257
192
192
  reconcile/external_resources/meta.py,sha256=noaytFzmShpzLA_ebGh7wuP45mOfHIOnnoUxivjDa1I,672
193
193
  reconcile/external_resources/metrics.py,sha256=KiBjMUaN_z0cSkF_7Ar_a8RiuiwVqjyMcVdISlxhzXE,3898
194
- reconcile/external_resources/model.py,sha256=GJG1-KKAueBvNGRXa6O4YcT1M8xOSHx2OXb3aAoZF2w,14944
194
+ reconcile/external_resources/model.py,sha256=o_39sJPIo0-d-oYHAB97lg6cBnxJX6NA0DvF1Egy0_o,14889
195
195
  reconcile/external_resources/reconciler.py,sha256=wB8cB5pmqDJ1_t5_Aly4mrULGnI3OQaKqUZCB_Z9RWw,9573
196
196
  reconcile/external_resources/secrets_sync.py,sha256=lLhsB5mVJTnumkGVT0tnkCW9VHcUHBG35gziOS2ojSg,16218
197
- reconcile/external_resources/state.py,sha256=Hyc3hszY1NFWg3t9QSXL2F5bRs0vP2FNDWzTGrHJsmE,13387
197
+ reconcile/external_resources/state.py,sha256=xRciI7xgMxhn1f5VzL4h5usXsGkibYQxrMT1h7n03gE,13367
198
198
  reconcile/fleet_labeler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
199
199
  reconcile/fleet_labeler/dependencies.py,sha256=MFiSfT25Ks0X3iQxwayNvFX_l6bQi97f3IiaNR1wtHc,3173
200
200
  reconcile/fleet_labeler/integration.py,sha256=HGlUJe5BCfAgk7YCxxsIteB8LH1pL8led-KfaIVh214,14614
@@ -658,7 +658,7 @@ reconcile/utils/sqs_gateway.py,sha256=XNIf3PY4UCPNufP2Ul0UJj3fKlt5larBba-VTT-41F
658
658
  reconcile/utils/state.py,sha256=h5iAfNf1p_wf79Z09XNZ5C_YVrIqUmhhl_DWqnFrwT0,16364
659
659
  reconcile/utils/structs.py,sha256=LcbLEg8WxfRqM6nW7NhcWN0YeqF7SQzxOgntmLs1SgY,352
660
660
  reconcile/utils/terraform_client.py,sha256=0NCYluGnFooxbgxSHyxoU_Hj3WUVZ-HqpLZI6ZmzJ1E,37301
661
- reconcile/utils/terrascript_aws_client.py,sha256=o5i2j3kf00cC4Gk-UQ0fRgj7fYSwmzvuk70TiQ5Rm3g,292325
661
+ reconcile/utils/terrascript_aws_client.py,sha256=69n4alIE6jFd_J5t_NNzq54I8FCkFVkKT3xTohbWiN0,292495
662
662
  reconcile/utils/three_way_diff_strategy.py,sha256=oQcHXd9LVhirJfoaOBoHUYuZVGfyL2voKr6KVI34zZE,4833
663
663
  reconcile/utils/throughput.py,sha256=iP4UWAe2LVhDo69mPPmgo9nQ7RxHD6_GS8MZe-aSiuM,344
664
664
  reconcile/utils/vault.py,sha256=6V15LByFghp-U3k0N4lum6V7qt2EAlRfcAxjy5e-FAU,15146
@@ -697,7 +697,7 @@ reconcile/utils/jinja2/filters.py,sha256=JfO_14APySBPidsMvHXG-8dULNPddZCE15Umjk_
697
697
  reconcile/utils/jinja2/utils.py,sha256=z20GzZsksQzbcahCwfbffHj6PU-JTifH0JzMZdPP7hU,9138
698
698
  reconcile/utils/jobcontroller/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
699
699
  reconcile/utils/jobcontroller/controller.py,sha256=Vh08lZuCSIIceWGSDhBB00iFwTI9eeKZW1sfHlkAvSo,15373
700
- reconcile/utils/jobcontroller/models.py,sha256=x9YIvWfYOOvXNKToFVx1H7qDrZb0Sa1KI_4Y0gl7rMM,6336
700
+ reconcile/utils/jobcontroller/models.py,sha256=nfJ-w7DtDC5IZ5YD3YX8ytl61rnZUaa-Sbq3IjWEJwI,6296
701
701
  reconcile/utils/membershipsources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
702
702
  reconcile/utils/membershipsources/app_interface_resolver.py,sha256=MqDFvK3aXhmmMuMiIygC-onFVrrIopKHriaYJQ5jnuY,1988
703
703
  reconcile/utils/membershipsources/models.py,sha256=yuEbG4HJ3NOEpSS9EH7OAx1U-uiRW-QmNMAZJe1Rb-U,1898
@@ -737,7 +737,7 @@ reconcile/utils/ocm/sre_capability_labels.py,sha256=nqh0imrYczNeeeC7ZNX3pEwuAIVk
737
737
  reconcile/utils/ocm/status_board.py,sha256=8DYeIrOsW8Bh5PCtKdvGGpaxb9Wugcc5rLxZJ8Z7b_s,4181
738
738
  reconcile/utils/ocm/subscriptions.py,sha256=hehKXsDXIhnhqvWOuiYvx6y2FGq3zt0APGYj7WiBIdI,2765
739
739
  reconcile/utils/ocm/syncsets.py,sha256=9IQm1l5BodOVZa2OFbQmow3afmh4nXe5pn-CCJ5LxTI,1169
740
- reconcile/utils/ocm/upgrades.py,sha256=UEgfSJuC8nH6jW9JjEx91_9QeeHR1UJ_9FVOX_PlvTU,4712
740
+ reconcile/utils/ocm/upgrades.py,sha256=W8-sLgETI_418ftY9vBlXswyjx_KdhJTJO9cwBL3hfY,4162
741
741
  reconcile/utils/rosa/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
742
742
  reconcile/utils/rosa/rosa_cli.py,sha256=zV8kKG5s3oFJwyW3E7xxNzqSE7JydrmBx169Jxm8sew,11331
743
743
  reconcile/utils/rosa/session.py,sha256=CwlQJ7eEfaMjVOt_6KoNJZc4oQj-iC-EOZq8eSGzjuI,6861
@@ -771,7 +771,7 @@ tools/app_sre_tekton_access_reporter.py,sha256=5qmkevJdlb2j_lpGC5Pu1Pmo0eomX5Zxz
771
771
  tools/app_sre_tekton_access_revalidation.py,sha256=vwL1o_j7oSTOhrHNH1znpgjA2LHGzb8yc5iG3aaY4m0,2684
772
772
  tools/glitchtip_access_reporter.py,sha256=wnaiDGW4MkYONV_erltnJ6nGkEj0kQrAiv04NNnOS0k,2859
773
773
  tools/glitchtip_access_revalidation.py,sha256=jjeLO53LTbz_LfQw3G2Cs8lVLO_6xqU39BYyTH3cEPE,2764
774
- tools/qontract_cli.py,sha256=mNo-m6Xd74E_t1znXsW9IlnOd2LE9cEchO5LZpQBTXc,159162
774
+ tools/qontract_cli.py,sha256=JrITQaYuYtJVmfdvwrGtlPHDExSVYYwDOjNBADN6YWc,159332
775
775
  tools/template_validation.py,sha256=Xn9X4sGFznx-rvBDnq9Kq16rfET8V3bqH1EwavsGBac,3335
776
776
  tools/cli_commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
777
777
  tools/cli_commands/container_images_report.py,sha256=8mAjCS6XR0yD7k0mfiVBlt6xbYU47q_ftdYNi5o5VKE,5566
@@ -797,7 +797,7 @@ tools/saas_promotion_state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
797
797
  tools/saas_promotion_state/saas_promotion_state.py,sha256=oF7C4hpIgyMTwTRm3Aun3cDCHIjVar65JoLp6NcJHlU,3909
798
798
  tools/sre_checkpoints/__init__.py,sha256=CDaDaywJnmRCLyl_NCcvxi-Zc0hTi_3OdwKiFOyS39I,145
799
799
  tools/sre_checkpoints/util.py,sha256=zEDbGr18ZeHNQwW8pUsr2JRjuXIPz--WAGJxZo9sv_Y,894
800
- qontract_reconcile-0.10.2.dev278.dist-info/METADATA,sha256=L0l-pOkoslND8UA8-rIGFKDtKTMVu3tRjgBQoFf_b48,24501
801
- qontract_reconcile-0.10.2.dev278.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
802
- qontract_reconcile-0.10.2.dev278.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
803
- qontract_reconcile-0.10.2.dev278.dist-info/RECORD,,
800
+ qontract_reconcile-0.10.2.dev280.dist-info/METADATA,sha256=zKtUMc1Xlh56uTOI7X5kaR83dM12KIhMPQYT7VT7ak4,24501
801
+ qontract_reconcile-0.10.2.dev280.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
802
+ qontract_reconcile-0.10.2.dev280.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
803
+ qontract_reconcile-0.10.2.dev280.dist-info/RECORD,,
reconcile/aus/base.py CHANGED
@@ -83,8 +83,6 @@ from reconcile.utils.ocm.upgrades import (
83
83
  create_control_plane_upgrade_policy,
84
84
  create_node_pool_upgrade_policy,
85
85
  create_upgrade_policy,
86
- delete_control_plane_upgrade_policy,
87
- delete_upgrade_policy,
88
86
  get_control_plane_upgrade_policies,
89
87
  get_node_pool_upgrade_policies,
90
88
  get_upgrade_policies,
@@ -467,7 +465,7 @@ class AddonUpgradePolicy(AbstractUpgradePolicy):
467
465
 
468
466
 
469
467
  class ClusterUpgradePolicy(AbstractUpgradePolicy):
470
- """Class to create and delete ClusterUpgradePolicies in OCM"""
468
+ """Class to create ClusterUpgradePolicies in OCM"""
471
469
 
472
470
  def create(self, ocm_api: OCMBaseClient) -> None:
473
471
  policy = {
@@ -478,11 +476,7 @@ class ClusterUpgradePolicy(AbstractUpgradePolicy):
478
476
  create_upgrade_policy(ocm_api, self.cluster.id, policy)
479
477
 
480
478
  def delete(self, ocm_api: OCMBaseClient) -> None:
481
- if not self.id:
482
- raise ValueError(
483
- "Cannot delete cluster upgrade policy without id (not created yet)"
484
- )
485
- delete_upgrade_policy(ocm_api, self.cluster.id, self.id)
479
+ raise NotImplementedError("ClusterUpgradePolicy.delete() not implemented")
486
480
 
487
481
  def summarize(self) -> str:
488
482
  details = {
@@ -509,11 +503,7 @@ class ControlPlaneUpgradePolicy(AbstractUpgradePolicy):
509
503
  create_control_plane_upgrade_policy(ocm_api, self.cluster.id, policy)
510
504
 
511
505
  def delete(self, ocm_api: OCMBaseClient) -> None:
512
- if not self.id:
513
- raise ValueError(
514
- "Cannot delete controlplane upgrade policy without id (not created yet)"
515
- )
516
- delete_control_plane_upgrade_policy(ocm_api, self.cluster.id, self.id)
506
+ raise NotImplementedError("ControlPlaneUpgradePolicy.delete() not implemented")
517
507
 
518
508
  def summarize(self) -> str:
519
509
  details = {
@@ -527,7 +517,7 @@ class ControlPlaneUpgradePolicy(AbstractUpgradePolicy):
527
517
 
528
518
  class NodePoolUpgradePolicy(AbstractUpgradePolicy):
529
519
  node_pool: str
530
- """Class to create and delete NodePoolUpgradePolicies in OCM"""
520
+ """Class to create NodePoolUpgradePolicies in OCM"""
531
521
 
532
522
  def create(self, ocm_api: OCMBaseClient) -> None:
533
523
  policy = {
@@ -910,38 +900,21 @@ def upgradeable_version(
910
900
  def verify_current_should_skip(
911
901
  current_state: Sequence[AbstractUpgradePolicy],
912
902
  desired: ClusterUpgradeSpec,
913
- now: datetime,
914
- addon_id: str = "",
915
- ) -> tuple[bool, UpgradePolicyHandler | None]:
903
+ ) -> bool:
916
904
  current_policies = [c for c in current_state if c.cluster.id == desired.cluster.id]
917
905
  if not current_policies:
918
- return False, None
906
+ return False
919
907
 
920
908
  # there can only be one upgrade policy per cluster
921
909
  if len(current_policies) != 1:
922
910
  raise ValueError(
923
911
  f"[{desired.org.org_id}/{desired.cluster.name}] expected only one upgrade policy"
924
912
  )
925
- current = current_policies[0]
926
- version = current.version # may not exist in automatic upgrades
927
- if version and not addon_id and desired.version_blocked(version):
928
- next_run = current.next_run
929
- if next_run and datetime.strptime(next_run, "%Y-%m-%dT%H:%M:%SZ") < now:
930
- logging.warning(
931
- f"[{desired.org.org_id}/{desired.org.name}/{desired.cluster.name}] currently upgrading to blocked version '{version}'"
932
- )
933
- return True, None
934
- logging.debug(
935
- f"[{desired.org.org_id}/{desired.org.name}/{desired.cluster.name}] found planned upgrade policy "
936
- + f"with blocked version {version}"
937
- )
938
- return False, UpgradePolicyHandler(action="delete", policy=current)
939
913
 
940
- # else
941
914
  logging.debug(
942
915
  f"[{desired.org.org_id}/{desired.org.name}/{desired.cluster.name}] skipping cluster with existing upgrade policy"
943
916
  )
944
- return True, None
917
+ return True
945
918
 
946
919
 
947
920
  def verify_schedule_should_skip(
@@ -1129,14 +1102,8 @@ def calculate_diff(
1129
1102
  set_upgrading(spec.cluster.id, spec.effective_mutexes, sector_name)
1130
1103
  continue
1131
1104
 
1132
- # ignore clusters with an existing upgrade policy
1133
- skip, delete_policy = verify_current_should_skip(
1134
- current_state, spec, now, addon_id
1135
- )
1136
- if skip:
1105
+ if verify_current_should_skip(current_state, spec):
1137
1106
  continue
1138
- if delete_policy:
1139
- diffs.append(delete_policy)
1140
1107
 
1141
1108
  next_schedule = verify_schedule_should_skip(spec, now, addon_id)
1142
1109
  if not next_schedule:
@@ -189,7 +189,7 @@ class AWSRdsFactory(AWSDefaultResourceFactory):
189
189
  if "availability_zone" in data and "region" not in data:
190
190
  data["region"] = self._get_region_from_az(data["availability_zone"])
191
191
 
192
- kms_key_id: str = data.get("kms_key_id", None)
192
+ kms_key_id: str | None = data.get("kms_key_id")
193
193
  if kms_key_id and not kms_key_id.startswith("arn:"):
194
194
  data["kms_key_id"] = self._get_kms_key_spec(
195
195
  spec.provisioner_name, kms_key_id
@@ -186,8 +186,8 @@ class ExternalResourcesInventory(MutableMapping):
186
186
 
187
187
 
188
188
  class Action(StrEnum):
189
- DESTROY: str = "Destroy"
190
- APPLY: str = "Apply"
189
+ DESTROY = "Destroy"
190
+ APPLY = "Apply"
191
191
 
192
192
 
193
193
  class ExternalResourceModuleKey(BaseModel, frozen=True):
@@ -348,15 +348,15 @@ class ExternalResourceModuleConfiguration(BaseModel, frozen=True):
348
348
 
349
349
 
350
350
  class ResourceStatus(StrEnum):
351
- CREATED: str = "CREATED"
352
- DELETED: str = "DELETED"
353
- ABANDONED: str = "ABANDONED"
354
- NOT_EXISTS: str = "NOT_EXISTS"
355
- IN_PROGRESS: str = "IN_PROGRESS"
356
- DELETE_IN_PROGRESS: str = "DELETE_IN_PROGRESS"
357
- ERROR: str = "ERROR"
358
- PENDING_SECRET_SYNC: str = "PENDING_SECRET_SYNC"
359
- RECONCILIATION_REQUESTED: str = "RECONCILIATION_REQUESTED"
351
+ CREATED = "CREATED"
352
+ DELETED = "DELETED"
353
+ ABANDONED = "ABANDONED"
354
+ NOT_EXISTS = "NOT_EXISTS"
355
+ IN_PROGRESS = "IN_PROGRESS"
356
+ DELETE_IN_PROGRESS = "DELETE_IN_PROGRESS"
357
+ ERROR = "ERROR"
358
+ PENDING_SECRET_SYNC = "PENDING_SECRET_SYNC"
359
+ RECONCILIATION_REQUESTED = "RECONCILIATION_REQUESTED"
360
360
 
361
361
  @property
362
362
  def does_not_exist(self) -> bool:
@@ -25,10 +25,10 @@ class StateNotFoundError(Exception):
25
25
 
26
26
 
27
27
  class ReconcileStatus(StrEnum):
28
- SUCCESS: str = "SUCCESS"
29
- ERROR: str = "ERROR"
30
- IN_PROGRESS: str = "IN_PROGRESS"
31
- NOT_EXISTS: str = "NOT_EXISTS"
28
+ SUCCESS = "SUCCESS"
29
+ ERROR = "ERROR"
30
+ IN_PROGRESS = "IN_PROGRESS"
31
+ NOT_EXISTS = "NOT_EXISTS"
32
32
 
33
33
 
34
34
  class ExternalResourceState(BaseModel):
@@ -120,7 +120,7 @@ def build_entry_point_args(
120
120
  # we add it right before the extra_args
121
121
  if (
122
122
  integration_name
123
- and isinstance(command, click.MultiCommand)
123
+ and isinstance(command, click.Group)
124
124
  and command.get_command(None, integration_name) # type: ignore
125
125
  ):
126
126
  args.append(integration_name)
@@ -20,17 +20,17 @@ from kubernetes.client import (
20
20
 
21
21
 
22
22
  class JobStatus(StrEnum):
23
- SUCCESS: str = "SUCCESS"
24
- ERROR: str = "ERROR"
25
- IN_PROGRESS: str = "IN_PROGRESS"
26
- NOT_EXISTS: str = "NOT_EXISTS"
23
+ SUCCESS = "SUCCESS"
24
+ ERROR = "ERROR"
25
+ IN_PROGRESS = "IN_PROGRESS"
26
+ NOT_EXISTS = "NOT_EXISTS"
27
27
 
28
28
 
29
29
  class JobConcurrencyPolicy(IntFlag):
30
- NO_REPLACE: int = 1
31
- REPLACE_FAILED: int = 2
32
- REPLACE_IN_PROGRESS: int = 4
33
- REPLACE_FINISHED: int = 8
30
+ NO_REPLACE = 1
31
+ REPLACE_FAILED = 2
32
+ REPLACE_IN_PROGRESS = 4
33
+ REPLACE_FINISHED = 8
34
34
 
35
35
 
36
36
  class JobValidationError(Exception):
@@ -77,15 +77,6 @@ def create_upgrade_policy(ocm_api: OCMBaseClient, cluster_id: str, spec: dict) -
77
77
  ocm_api.post(f"{build_cluster_url(cluster_id)}/upgrade_policies", spec)
78
78
 
79
79
 
80
- def delete_upgrade_policy(
81
- ocm_api: OCMBaseClient, cluster_id: str, policy_id: str
82
- ) -> None:
83
- """
84
- Deletes an existing Upgrade Policy
85
- """
86
- ocm_api.delete(f"{build_cluster_url(cluster_id)}/upgrade_policies/{policy_id}")
87
-
88
-
89
80
  #
90
81
  # CONTROL PLANE UPGRADE POLICIES
91
82
  #
@@ -120,17 +111,6 @@ def create_control_plane_upgrade_policy(
120
111
  )
121
112
 
122
113
 
123
- def delete_control_plane_upgrade_policy(
124
- ocm_api: OCMBaseClient, cluster_id: str, upgrade_policy_id: str
125
- ) -> None:
126
- """
127
- Deletes an existing Control Plane Upgrade Policy
128
- """
129
- ocm_api.delete(
130
- f"{build_cluster_url(cluster_id)}/control_plane/upgrade_policies/{upgrade_policy_id}"
131
- )
132
-
133
-
134
114
  #
135
115
  # NODE POOLUPGRADE POLICIES
136
116
  #
@@ -993,9 +993,11 @@ class TerrascriptClient:
993
993
  lifecycle.prevent_destroy = False
994
994
  if lifecycle.ignore_changes is None:
995
995
  lifecycle.ignore_changes = []
996
- if "all" in lifecycle.ignore_changes:
997
- lifecycle.ignore_changes = "all"
998
- return lifecycle.dict(by_alias=True)
996
+ # 'all' must be passed as a string for ignore_changes! stupid terraform aws provider!
997
+ ignore_changes = (
998
+ "all" if "all" in lifecycle.ignore_changes else lifecycle.ignore_changes
999
+ )
1000
+ return lifecycle.dict(by_alias=True) | {"ignore_changes": ignore_changes}
999
1001
  return None
1000
1002
 
1001
1003
  def populate_additional_providers(self, infra_account_name: str, accounts):
tools/qontract_cli.py CHANGED
@@ -1031,6 +1031,9 @@ def clusters_network(ctx: click.Context, name: str) -> None:
1031
1031
  ocm_map.get(cluster_name),
1032
1032
  provided_assume_role=None,
1033
1033
  )
1034
+ assert account is not None, (
1035
+ f"Failed to build assume role for cluster {cluster_name} in account {management_account['name']}"
1036
+ )
1034
1037
  account["resourcesDefaultRegion"] = management_account[
1035
1038
  "resourcesDefaultRegion"
1036
1039
  ]