qontract-reconcile 0.10.2.dev192__py3-none-any.whl → 0.10.2.dev193__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.dev192
3
+ Version: 0.10.2.dev193
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
@@ -71,7 +71,7 @@ reconcile/openshift_network_policies.py,sha256=p81ShFK1WSEGiWHVURopDpg8YvtA3RE3O
71
71
  reconcile/openshift_prometheus_rules.py,sha256=onowXab248zmHH8SbYDTc1W1bl7JiqRFU1xdTkZyLFg,1332
72
72
  reconcile/openshift_resourcequotas.py,sha256=yUi56PiOn3inMMfq_x_FEHmaW-reGipzoorjdar372g,2415
73
73
  reconcile/openshift_resources.py,sha256=I2nO_C37mG3rfyGrd4cGwN3mVseVGuTAHAyhFzLyqF4,1518
74
- reconcile/openshift_resources_base.py,sha256=p4jt5R_wmGKWwFQrFz8IH_guz3UoTxnMnW5t-6uLkbw,41483
74
+ reconcile/openshift_resources_base.py,sha256=3HudPdM7EE0HNWUn1eu0O20Ij25fqGisaDBMVvTk1fk,41768
75
75
  reconcile/openshift_rolebindings.py,sha256=9mlJ2FjWUoH-rsjtasreA_hV-K5Z_YR00qR_RR60OZM,6555
76
76
  reconcile/openshift_routes.py,sha256=fXvuPSjcjVw1X3j2EQvUAdbOepmIFdKk-M3qP8QzPiw,1075
77
77
  reconcile/openshift_saas_deploy.py,sha256=T1dvb9zajisaJNjbnR6-AZHU-itscHtr4oCqLj8KCK0,13037
@@ -105,7 +105,7 @@ reconcile/service_dependencies.py,sha256=G2qCuYFc8wQLpRxkdhmibxSAl3nUM3hcan4x50W
105
105
  reconcile/signalfx_endpoint_monitoring.py,sha256=Nqgsg1cflSd2nNnm89y_e8c--7xLUqTrKOHkDs-qADE,2868
106
106
  reconcile/slack_base.py,sha256=I-msunWxfgu5bSwXYulGbtLjxUB_tRmTCAUCU-3nabI,3484
107
107
  reconcile/slack_usergroups.py,sha256=xFkVe67RXSUj8JvpfSFEiRdQzB0TnJJEHW_b5PEwLng,30213
108
- reconcile/sql_query.py,sha256=OEzEZaqgv-kzG3GR2x9w3uMIfSFXP6EdhlW4u5mc1Dg,25895
108
+ reconcile/sql_query.py,sha256=auZCWe6dytsDp83Imfo4zqkpMCLRXU007IUlPeUE3j4,26376
109
109
  reconcile/status.py,sha256=cY4IJFXemhxptRJqR4qaaOWqei9e4jgLXuVSGajMsjg,544
110
110
  reconcile/status_board.py,sha256=kJ0bus_wdyX3zsFJuUPrH4n9BNG_jhDbiQ3waOLVRBE,8538
111
111
  reconcile/terraform_aws_route53.py,sha256=dQzzT46YhwRA902_H6pi-f7WlX4EaH187wXSdmJAUkQ,9958
@@ -809,7 +809,7 @@ tools/saas_promotion_state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
809
809
  tools/saas_promotion_state/saas_promotion_state.py,sha256=UfwwRLS5Ya4_Nh1w5n1dvoYtchQvYE9yj1VANt2IKqI,3925
810
810
  tools/sre_checkpoints/__init__.py,sha256=CDaDaywJnmRCLyl_NCcvxi-Zc0hTi_3OdwKiFOyS39I,145
811
811
  tools/sre_checkpoints/util.py,sha256=zEDbGr18ZeHNQwW8pUsr2JRjuXIPz--WAGJxZo9sv_Y,894
812
- qontract_reconcile-0.10.2.dev192.dist-info/METADATA,sha256=k0G4P25wbsCOkHg4TS0eD_mHgGuihKi2U1BvpwEh8HA,24555
813
- qontract_reconcile-0.10.2.dev192.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
814
- qontract_reconcile-0.10.2.dev192.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
815
- qontract_reconcile-0.10.2.dev192.dist-info/RECORD,,
812
+ qontract_reconcile-0.10.2.dev193.dist-info/METADATA,sha256=RO4qwLdb35AWDUmBLVj6VloYRszUVF6RgCjA2_x4P_w,24555
813
+ qontract_reconcile-0.10.2.dev193.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
814
+ qontract_reconcile-0.10.2.dev193.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
815
+ qontract_reconcile-0.10.2.dev193.dist-info/RECORD,,
@@ -62,7 +62,7 @@ from reconcile.utils.openshift_resource import (
62
62
  )
63
63
  from reconcile.utils.openshift_resource import OpenshiftResource as OR
64
64
  from reconcile.utils.runtime.integration import DesiredStateShardConfig
65
- from reconcile.utils.secret_reader import SecretReader
65
+ from reconcile.utils.secret_reader import SecretReader, SecretReaderBase
66
66
  from reconcile.utils.semver_helper import make_semver
67
67
  from reconcile.utils.sharding import is_in_shard
68
68
  from reconcile.utils.vault import (
@@ -402,9 +402,16 @@ def fetch_provider_vault_secret(
402
402
  validate_alertmanager_config: bool = False,
403
403
  alertmanager_config_key: str = "alertmanager.yaml",
404
404
  settings: Mapping[str, Any] | None = None,
405
+ secret_reader: SecretReaderBase | None = None,
405
406
  ) -> OR:
406
- # get the fields from vault
407
- secret_reader = SecretReader(settings)
407
+ if not secret_reader and not settings:
408
+ raise Exception(
409
+ "Parameter settings or secret_reader must be provided to run fetch_provider_vault_secret."
410
+ )
411
+
412
+ if not secret_reader:
413
+ # get the fields from vault
414
+ secret_reader = SecretReader(settings)
408
415
  raw_data = {
409
416
  k: v
410
417
  for k, v in secret_reader.read_all({"path": path, "version": version}).items()
reconcile/sql_query.py CHANGED
@@ -19,6 +19,9 @@ from reconcile import (
19
19
  )
20
20
  from reconcile import openshift_resources_base as orb
21
21
  from reconcile.status import ExitCodes
22
+ from reconcile.typed_queries.app_interface_vault_settings import (
23
+ get_app_interface_vault_settings,
24
+ )
22
25
  from reconcile.utils.defer import defer
23
26
  from reconcile.utils.external_resources import get_external_resource_specs
24
27
  from reconcile.utils.oc import (
@@ -30,7 +33,10 @@ from reconcile.utils.openshift_resource import (
30
33
  ResourceInventory,
31
34
  )
32
35
  from reconcile.utils.ruamel import create_ruamel_instance
33
- from reconcile.utils.secret_reader import SecretReader
36
+ from reconcile.utils.secret_reader import (
37
+ SecretReaderBase,
38
+ create_secret_reader,
39
+ )
34
40
  from reconcile.utils.semver_helper import make_semver
35
41
  from reconcile.utils.smtp_client import (
36
42
  DEFAULT_SMTP_TIMEOUT,
@@ -187,14 +193,16 @@ def get_tf_resource_info(
187
193
 
188
194
 
189
195
  def collect_queries(
190
- settings: dict[str, Any], smtp_client: SmtpClient, query_name: str | None = None
196
+ secret_reader: SecretReaderBase,
197
+ smtp_client: SmtpClient,
198
+ query_name: str | None = None,
191
199
  ) -> list[dict[str, Any]]:
192
200
  """
193
201
  Consults the app-interface and constructs the list of queries
194
202
  to be executed.
195
203
 
196
204
  :param query_name: (optional) query to look for
197
- :param settings: App Interface settings
205
+ :param secret_reader: SecretReaderBase
198
206
 
199
207
  :return: List of queries dictionaries
200
208
  """
@@ -218,8 +226,8 @@ def collect_queries(
218
226
  "",
219
227
  1,
220
228
  accounts=[],
221
- settings=settings,
222
229
  prefetch_resources_by_schemas=["/aws/rds-defaults-1.yml"],
230
+ secret_reader=secret_reader,
223
231
  )
224
232
 
225
233
  for sql_query in sql_queries:
@@ -499,11 +507,11 @@ def get_service_account(name: str, labels: dict) -> dict[str, Any]:
499
507
  }
500
508
 
501
509
 
502
- def split_long_query(q, size) -> list[str]:
510
+ def split_long_query(q: str, size: int) -> list[str]:
503
511
  return [q[i : i + size] for i in range(0, len(q), size)]
504
512
 
505
513
 
506
- def merge_files_command(directory, file_glob, output_file):
514
+ def merge_files_command(directory: str, file_glob: str, output_file: str) -> str:
507
515
  return f"cat ''{directory}''/{file_glob} > ''{output_file}''"
508
516
 
509
517
 
@@ -582,8 +590,8 @@ def _build_openshift_resources(
582
590
  query: dict[str, Any],
583
591
  image_repository: str,
584
592
  pull_secret: dict[str, Any] | None,
585
- settings: dict[str, Any],
586
- ):
593
+ secret_reader: SecretReaderBase,
594
+ ) -> list[OpenshiftResource]:
587
595
  query_name = query["name"]
588
596
  common_resource_labels = _build_common_resource_labels(query)
589
597
  openshift_resources: list[OpenshiftResource] = []
@@ -600,7 +608,7 @@ def _build_openshift_resources(
600
608
  type=pull_secret["type"],
601
609
  integration=QONTRACT_INTEGRATION,
602
610
  integration_version=QONTRACT_INTEGRATION_VERSION,
603
- settings=settings,
611
+ secret_reader=secret_reader,
604
612
  )
605
613
  openshift_resources.append(secret_resource)
606
614
  # ConfigMap gpg
@@ -696,14 +704,14 @@ def _reconstruct_for_metrics(
696
704
  query: dict[str, Any],
697
705
  image_repository: str,
698
706
  pull_secret: dict[str, Any] | None,
699
- settings: dict[str, Any],
700
707
  ri: ResourceInventory,
708
+ secret_reader: SecretReaderBase,
701
709
  ) -> None:
702
710
  openshift_resources = _build_openshift_resources(
703
711
  query,
704
712
  image_repository,
705
713
  pull_secret,
706
- settings,
714
+ secret_reader,
707
715
  )
708
716
  cluster = query["cluster"]
709
717
  namespace = query["namespace"]["name"]
@@ -762,6 +770,7 @@ def _process_existing_query(
762
770
  image_repository: str,
763
771
  pull_secret: dict[str, Any],
764
772
  ri: ResourceInventory,
773
+ secret_reader: SecretReaderBase,
765
774
  ) -> None:
766
775
  match _get_query_status(query, state):
767
776
  case QueryStatus.ACTIVE:
@@ -769,8 +778,8 @@ def _process_existing_query(
769
778
  query,
770
779
  image_repository,
771
780
  pull_secret,
772
- settings,
773
781
  ri,
782
+ secret_reader,
774
783
  )
775
784
  case QueryStatus.PENDING_DELETION:
776
785
  _delete_query_resources(
@@ -797,12 +806,10 @@ def _process_new_query(
797
806
  image_repository: str,
798
807
  pull_secret: dict[str, Any],
799
808
  ri: ResourceInventory,
800
- ):
809
+ secret_reader: SecretReaderBase,
810
+ ) -> None:
801
811
  openshift_resources = _build_openshift_resources(
802
- query,
803
- image_repository,
804
- pull_secret,
805
- settings,
812
+ query, image_repository, pull_secret, secret_reader
806
813
  )
807
814
 
808
815
  cluster = query["cluster"]
@@ -835,12 +842,14 @@ def run(
835
842
  ) -> None:
836
843
  settings = queries.get_app_interface_settings()
837
844
  state = init_state(integration=QONTRACT_INTEGRATION)
845
+ vault_settings = get_app_interface_vault_settings()
846
+ secret_reader = create_secret_reader(use_vault=vault_settings.vault)
838
847
  if defer:
839
848
  defer(state.cleanup)
840
849
  smtp_settings = typed_queries.smtp.settings()
841
850
  smtp_client = SmtpClient(
842
851
  server=get_smtp_server_connection(
843
- secret_reader=SecretReader(settings=queries.get_secret_reader_settings()),
852
+ secret_reader=secret_reader,
844
853
  secret=smtp_settings.credentials,
845
854
  ),
846
855
  mail_address=smtp_settings.mail_address,
@@ -854,7 +863,7 @@ def run(
854
863
  image_repository = sql_query_settings["imageRepository"]
855
864
  pull_secret = sql_query_settings["pullSecret"]
856
865
 
857
- queries_list = collect_queries(settings=settings, smtp_client=smtp_client)
866
+ queries_list = collect_queries(secret_reader=secret_reader, smtp_client=smtp_client)
858
867
  query_states = {s.lstrip("/") for s in state.ls()}
859
868
  ri = ResourceInventory()
860
869
  for query in queries_list:
@@ -868,6 +877,7 @@ def run(
868
877
  image_repository,
869
878
  pull_secret,
870
879
  ri,
880
+ secret_reader,
871
881
  )
872
882
  else:
873
883
  _process_new_query(
@@ -878,6 +888,7 @@ def run(
878
888
  image_repository,
879
889
  pull_secret,
880
890
  ri,
891
+ secret_reader,
881
892
  )
882
893
  openshift_base.publish_metrics(ri, QONTRACT_INTEGRATION)
883
894