qontract-reconcile 0.10.2.dev279__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.dev279
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
@@ -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
@@ -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.dev279.dist-info/METADATA,sha256=4VMuEqWlD_8n_w3YF3iolN1wiU0tvQrGBovEfdKuYHE,24501
801
- qontract_reconcile-0.10.2.dev279.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
802
- qontract_reconcile-0.10.2.dev279.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
803
- qontract_reconcile-0.10.2.dev279.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,,
@@ -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):
@@ -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
  ]