qontract-reconcile 0.10.1rc1155__py3-none-any.whl → 0.10.1rc1157__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.1rc1155
3
+ Version: 0.10.1rc1157
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
@@ -196,11 +196,11 @@ reconcile/external_resources/aws.py,sha256=309Zui7rE8XFJA1ZBLupl55Vp8Y5KKgXdsKQW
196
196
  reconcile/external_resources/factories.py,sha256=KrJDh52_8PeCEVjwfeVr1jwAJDdhMXRQ_XcBETfnKY4,4988
197
197
  reconcile/external_resources/integration.py,sha256=gBVO5dE8JyZ3xYcYik-MTIp_18oU7_hpYc_oztyfElQ,6753
198
198
  reconcile/external_resources/integration_secrets_sync.py,sha256=dX09O3r6KURziUYYfiki10orNjOGVma-XojhVqd0ww4,1667
199
- reconcile/external_resources/manager.py,sha256=wcqTawNS4qoBHFVfyCfHtWXh4L3AlgcNYx_Ov_vEjNg,17914
199
+ reconcile/external_resources/manager.py,sha256=tgHOFvP-dcPLLIhcjMn6EIELTBCycbXFNAuS-NX7l2s,17929
200
200
  reconcile/external_resources/meta.py,sha256=noaytFzmShpzLA_ebGh7wuP45mOfHIOnnoUxivjDa1I,672
201
201
  reconcile/external_resources/metrics.py,sha256=nMbyonGZEJDD1lYzpQY2eR9TNwvxYC4ZCcpi6wrExcM,1037
202
- reconcile/external_resources/model.py,sha256=Ta8eOJ97RxCgBtWqsF4MWzQhgsOC2PoFfBKM5y3rM6U,8378
203
- reconcile/external_resources/reconciler.py,sha256=3KFmkHsN7YAwJUSBpN1Xd_D2zM9Ea5_c2uMGWsfruZo,9707
202
+ reconcile/external_resources/model.py,sha256=H3elpiqehg_jACy28fGV5_77n8gKclVO77-7cfbaMNA,9178
203
+ reconcile/external_resources/reconciler.py,sha256=Lhzg0O9Sw65KrCae-J14g9PV82xdp29O4jS_T5YNgEY,9661
204
204
  reconcile/external_resources/secrets_sync.py,sha256=6n0oDPLjd9Ql0lf6zsr1AZw8A6EEe3yCzl20XodtgkE,16229
205
205
  reconcile/external_resources/state.py,sha256=UupSa6tl4-73_J6Fhisn-qHal3v3uAUS5s5sk85LGDs,9343
206
206
  reconcile/glitchtip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -291,9 +291,9 @@ reconcile/gql_definitions/endpoints_discovery/__init__.py,sha256=47DEQpj8HBSa-_T
291
291
  reconcile/gql_definitions/endpoints_discovery/namespaces.py,sha256=FqJ0H7NdsIm5BgVnuJV9wLcj7i667VhCN559tWJ-WsA,3054
292
292
  reconcile/gql_definitions/external_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
293
293
  reconcile/gql_definitions/external_resources/aws_accounts.py,sha256=XR69j9dpTQ0gv8y-AZN7AJ0dPvO-wbHscyCDgrax6Bk,2046
294
- reconcile/gql_definitions/external_resources/external_resources_modules.py,sha256=HFOQjmNbNxk0j5nChxppQeCnJjeDsqibJkPgA7R1zRw,2417
295
- reconcile/gql_definitions/external_resources/external_resources_namespaces.py,sha256=KSASnKycr-e5kCUSOkqnS8w7Gvo_nXA_5NQcS8vGeLY,43466
296
- reconcile/gql_definitions/external_resources/external_resources_settings.py,sha256=Hw9n_90BPG6Lnt2PT3mHc6p0KEm2CxKxvSGRFc_Dhus,2982
294
+ reconcile/gql_definitions/external_resources/external_resources_modules.py,sha256=cbbvGq1Te9DP8XiFg3bp4Y0q6LxpGYov8ugcROPyPLI,2647
295
+ reconcile/gql_definitions/external_resources/external_resources_namespaces.py,sha256=XkxcBuIqMcX_Rdb4eU1Fduasz3vgAL7IdmFNcNMxzRw,44220
296
+ reconcile/gql_definitions/external_resources/external_resources_settings.py,sha256=K8m9EKlfIVGP2KyqTduo7MMSKFjVC3yk5ZfO9hgdA7A,3192
297
297
  reconcile/gql_definitions/fragments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
298
298
  reconcile/gql_definitions/fragments/aus_organization.py,sha256=uBKbTuBa3CZmTXR5HOcGhRcu2U9kM93KbYmoWTxcpB0,4767
299
299
  reconcile/gql_definitions/fragments/aws_account_common.py,sha256=3-7ZAP6GSff7Z2Syz2VQCLY4IySqBOSVmceaRiVNQpw,2385
@@ -400,7 +400,7 @@ reconcile/gql_definitions/terraform_repo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5
400
400
  reconcile/gql_definitions/terraform_repo/terraform_repo.py,sha256=nm4CH7Vog4aabdvCKmhVSUvoUb7dxSLx8nwAEJAVqG0,3706
401
401
  reconcile/gql_definitions/terraform_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
402
402
  reconcile/gql_definitions/terraform_resources/database_access_manager.py,sha256=yv0_YC-LmhaKD_gyGG3le1w5BtypBjlsO894-Zgdg4U,4813
403
- reconcile/gql_definitions/terraform_resources/terraform_resources_namespaces.py,sha256=7FErGZ8VZDwT6m5uFhdLHydsgzH5rzsuQE3c-RWfklo,42687
403
+ reconcile/gql_definitions/terraform_resources/terraform_resources_namespaces.py,sha256=_man82NXH9Jw7OvgDiQCKiLDG6Q7aV_ktOAi12QCXbI,42793
404
404
  reconcile/gql_definitions/terraform_tgw_attachments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
405
405
  reconcile/gql_definitions/terraform_tgw_attachments/aws_accounts.py,sha256=FPyPEikpkZ_kvHfXqnkzSUDNmxMMTiUwhI-eLQtuIHM,2616
406
406
  reconcile/gql_definitions/unleash_feature_toggles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -842,7 +842,7 @@ tools/qontract_cli.py,sha256=ndRUc8mjkubajPkZKaoE2IFVT2e4YXYRVtUaeLt3zzE,140496
842
842
  tools/sd_app_sre_alert_report.py,sha256=e9vAdyenUz2f5c8-z-5WY0wv-SJ9aePKDH2r4IwB6pc,5063
843
843
  tools/template_validation.py,sha256=qpKYaTgk0GOPGa2Ct5_5sKdwIHtCAKIBGzsMPuJU5fw,3371
844
844
  tools/cli_commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
845
- tools/cli_commands/erv2.py,sha256=vHYBYkTaS3h2qEStuAE6iThCt54LD2o3-0bJLcYODKY,16393
845
+ tools/cli_commands/erv2.py,sha256=fByRn6D_SBi5YptjAqR49yFedsjyAHBQBaIbsdO1QKQ,16412
846
846
  tools/cli_commands/gpg_encrypt.py,sha256=x02JOMn834z89YSNvr5B-oJky7rR1C0begCkPh45eHk,4958
847
847
  tools/cli_commands/systems_and_tools.py,sha256=EMHOF1AtUDaoSk0bbjl6oUKYAz4rTZjIBaF-6E6GspM,16816
848
848
  tools/cli_commands/cost_report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -880,8 +880,8 @@ tools/test/test_qontract_cli.py,sha256=iuzKbQ6ahinvjoQmQLBrG4shey0z-1rB6qCgS8T6d
880
880
  tools/test/test_saas_promotion_state.py,sha256=dy4kkSSAQ7bC0Xp2CociETGN-2aABEfL6FU5D9Jl00Y,6056
881
881
  tools/test/test_sd_app_sre_alert_report.py,sha256=v363r9zM7__0kR5K6mvJoGFcM9BvE33fWAayrqkpojA,2116
882
882
  tools/test/test_sre_checkpoints.py,sha256=SKqPPTl9ua0RFdSSofnoQX-JZE6dFLO3LRhfQzqtfh8,2607
883
- qontract_reconcile-0.10.1rc1155.dist-info/METADATA,sha256=R8XN1xU4JfYBpQJVZ8l8iWuRWuQ8DpVGaYE-pIpLRwk,2213
884
- qontract_reconcile-0.10.1rc1155.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
885
- qontract_reconcile-0.10.1rc1155.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
886
- qontract_reconcile-0.10.1rc1155.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
887
- qontract_reconcile-0.10.1rc1155.dist-info/RECORD,,
883
+ qontract_reconcile-0.10.1rc1157.dist-info/METADATA,sha256=xO5D-srjk2bIJiQ0wi7YxeO45fY7JKWzpBl4ktpNok8,2213
884
+ qontract_reconcile-0.10.1rc1157.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
885
+ qontract_reconcile-0.10.1rc1157.dist-info/entry_points.txt,sha256=GKQqCl2j2X1BJQ69een6rHcR26PmnxnONLNOQB-nRjY,491
886
+ qontract_reconcile-0.10.1rc1157.dist-info/top_level.txt,sha256=l5ISPoXzt0SdR4jVdkfa7RPSKNc8zAHYWAnR-Dw8Ey8,24
887
+ qontract_reconcile-0.10.1rc1157.dist-info/RECORD,,
@@ -247,7 +247,7 @@ class ExternalResourcesManager:
247
247
  input=self._serialize_resource_input(resource),
248
248
  action=Action.APPLY,
249
249
  module_configuration=ExternalResourceModuleConfiguration.resolve_configuration(
250
- module, spec
250
+ module, spec, self.settings
251
251
  ),
252
252
  )
253
253
  r.add(reconciliation)
@@ -29,6 +29,9 @@ from reconcile.gql_definitions.external_resources.external_resources_namespaces
29
29
  NamespaceTerraformResourceRDSV1,
30
30
  NamespaceV1,
31
31
  )
32
+ from reconcile.gql_definitions.external_resources.external_resources_settings import (
33
+ ExternalResourcesSettingsV1,
34
+ )
32
35
  from reconcile.utils.exceptions import FetchResourceError
33
36
  from reconcile.utils.external_resource_spec import (
34
37
  ExternalResourceSpec,
@@ -199,14 +202,22 @@ class ExternalResourceModuleConfiguration(BaseModel, frozen=True):
199
202
  version: str = ""
200
203
  reconcile_drift_interval_minutes: int = -1000
201
204
  reconcile_timeout_minutes: int = -1000
205
+ outputs_secret_image: str = ""
206
+ outputs_secret_version: str = ""
202
207
 
203
208
  @property
204
209
  def image_version(self) -> str:
205
210
  return f"{self.image}:{self.version}"
206
211
 
212
+ @property
213
+ def outputs_secret_image_version(self) -> str:
214
+ return f"{self.outputs_secret_image}:{self.outputs_secret_version}"
215
+
207
216
  @staticmethod
208
217
  def resolve_configuration(
209
- module: ExternalResourcesModuleV1, spec: ExternalResourceSpec
218
+ module: ExternalResourcesModuleV1,
219
+ spec: ExternalResourceSpec,
220
+ settings: ExternalResourcesSettingsV1,
210
221
  ) -> "ExternalResourceModuleConfiguration":
211
222
  module_overrides = spec.metadata.get(
212
223
  "module_overrides"
@@ -215,6 +226,8 @@ class ExternalResourceModuleConfiguration(BaseModel, frozen=True):
215
226
  image=None,
216
227
  version=None,
217
228
  reconcile_timeout_minutes=None,
229
+ outputs_secret_image=None,
230
+ outputs_secret_version=None,
218
231
  )
219
232
 
220
233
  return ExternalResourceModuleConfiguration(
@@ -223,6 +236,12 @@ class ExternalResourceModuleConfiguration(BaseModel, frozen=True):
223
236
  reconcile_drift_interval_minutes=module.reconcile_drift_interval_minutes,
224
237
  reconcile_timeout_minutes=module_overrides.reconcile_timeout_minutes
225
238
  or module.reconcile_timeout_minutes,
239
+ outputs_secret_image=module_overrides.outputs_secret_image
240
+ or module.outputs_secret_image
241
+ or settings.outputs_secret_image,
242
+ outputs_secret_version=module_overrides.outputs_secret_version
243
+ or module.outputs_secret_version
244
+ or settings.outputs_secret_version,
226
245
  )
227
246
 
228
247
 
@@ -130,8 +130,7 @@ class ReconciliationK8sJob(K8sJob, BaseModel, frozen=True):
130
130
  containers=[
131
131
  V1Container(
132
132
  name="outputs",
133
- image="quay.io/app-sre/er-outputs-secrets:0.0.1",
134
- command=["/bin/bash", "/app/entrypoint.sh"],
133
+ image=self.reconciliation.module_configuration.outputs_secret_image_version,
135
134
  image_pull_policy="Always",
136
135
  env=[
137
136
  V1EnvVar(
@@ -29,6 +29,8 @@ query ExternalResourcesModules {
29
29
  reconcile_drift_interval_minutes
30
30
  reconcile_timeout_minutes
31
31
  outputs_secret_sync
32
+ outputs_secret_image
33
+ outputs_secret_version
32
34
  }
33
35
  }
34
36
  """
@@ -49,6 +51,8 @@ class ExternalResourcesModuleV1(ConfiguredBaseModel):
49
51
  reconcile_drift_interval_minutes: int = Field(..., alias="reconcile_drift_interval_minutes")
50
52
  reconcile_timeout_minutes: int = Field(..., alias="reconcile_timeout_minutes")
51
53
  outputs_secret_sync: bool = Field(..., alias="outputs_secret_sync")
54
+ outputs_secret_image: Optional[str] = Field(..., alias="outputs_secret_image")
55
+ outputs_secret_version: Optional[str] = Field(..., alias="outputs_secret_version")
52
56
 
53
57
 
54
58
  class ExternalResourcesModulesQueryData(ConfiguredBaseModel):
@@ -115,6 +115,8 @@ query ExternalResourcesNamespaces {
115
115
  image
116
116
  version
117
117
  reconcile_timeout_minutes
118
+ outputs_secret_image
119
+ outputs_secret_version
118
120
  }
119
121
  }
120
122
  ... on NamespaceTerraformResourceS3_v1 {
@@ -151,6 +153,8 @@ query ExternalResourcesNamespaces {
151
153
  image
152
154
  version
153
155
  reconcile_timeout_minutes
156
+ outputs_secret_image
157
+ outputs_secret_version
154
158
  }
155
159
  }
156
160
  ... on NamespaceTerraformResourceServiceAccount_v1 {
@@ -482,6 +486,8 @@ query ExternalResourcesNamespaces {
482
486
  image
483
487
  version
484
488
  reconcile_timeout_minutes
489
+ outputs_secret_image
490
+ outputs_secret_version
485
491
  }
486
492
  }
487
493
  }
@@ -564,6 +570,8 @@ class ExternalResourcesModuleOverridesV1(ConfiguredBaseModel):
564
570
  image: Optional[str] = Field(..., alias="image")
565
571
  version: Optional[str] = Field(..., alias="version")
566
572
  reconcile_timeout_minutes: Optional[int] = Field(..., alias="reconcile_timeout_minutes")
573
+ outputs_secret_image: Optional[str] = Field(..., alias="outputs_secret_image")
574
+ outputs_secret_version: Optional[str] = Field(..., alias="outputs_secret_version")
567
575
 
568
576
 
569
577
  class NamespaceTerraformResourceRDSV1(NamespaceTerraformResourceAWSV1):
@@ -615,6 +623,8 @@ class NamespaceTerraformResourceElastiCacheV1_ExternalResourcesModuleOverridesV1
615
623
  image: Optional[str] = Field(..., alias="image")
616
624
  version: Optional[str] = Field(..., alias="version")
617
625
  reconcile_timeout_minutes: Optional[int] = Field(..., alias="reconcile_timeout_minutes")
626
+ outputs_secret_image: Optional[str] = Field(..., alias="outputs_secret_image")
627
+ outputs_secret_version: Optional[str] = Field(..., alias="outputs_secret_version")
618
628
 
619
629
 
620
630
  class NamespaceTerraformResourceElastiCacheV1(NamespaceTerraformResourceAWSV1):
@@ -1016,6 +1026,8 @@ class NamespaceTerraformResourceMskV1_ExternalResourcesModuleOverridesV1(Configu
1016
1026
  image: Optional[str] = Field(..., alias="image")
1017
1027
  version: Optional[str] = Field(..., alias="version")
1018
1028
  reconcile_timeout_minutes: Optional[int] = Field(..., alias="reconcile_timeout_minutes")
1029
+ outputs_secret_image: Optional[str] = Field(..., alias="outputs_secret_image")
1030
+ outputs_secret_version: Optional[str] = Field(..., alias="outputs_secret_version")
1019
1031
 
1020
1032
 
1021
1033
  class NamespaceTerraformResourceMskV1(NamespaceTerraformResourceAWSV1):
@@ -36,6 +36,8 @@ query ExternalResourcesSettings {
36
36
  tf_state_region
37
37
  tf_state_dynamodb_table
38
38
  vault_secrets_path
39
+ outputs_secret_image
40
+ outputs_secret_version
39
41
  }
40
42
  }
41
43
  """
@@ -69,6 +71,8 @@ class ExternalResourcesSettingsV1(ConfiguredBaseModel):
69
71
  tf_state_region: Optional[str] = Field(..., alias="tf_state_region")
70
72
  tf_state_dynamodb_table: Optional[str] = Field(..., alias="tf_state_dynamodb_table")
71
73
  vault_secrets_path: str = Field(..., alias="vault_secrets_path")
74
+ outputs_secret_image: str = Field(..., alias="outputs_secret_image")
75
+ outputs_secret_version: str = Field(..., alias="outputs_secret_version")
72
76
 
73
77
 
74
78
  class ExternalResourcesSettingsQueryData(ConfiguredBaseModel):
@@ -134,6 +134,7 @@ query TerraformResourcesNamespaces {
134
134
  overrides
135
135
  output_resource_name
136
136
  annotations
137
+ managed_by_erv2
137
138
  }
138
139
  ... on NamespaceTerraformResourceServiceAccount_v1 {
139
140
  identifier
@@ -600,6 +601,7 @@ class NamespaceTerraformResourceElastiCacheV1(NamespaceTerraformResourceAWSV1):
600
601
  overrides: Optional[str] = Field(..., alias="overrides")
601
602
  output_resource_name: Optional[str] = Field(..., alias="output_resource_name")
602
603
  annotations: Optional[str] = Field(..., alias="annotations")
604
+ managed_by_erv2: Optional[bool] = Field(..., alias="managed_by_erv2")
603
605
 
604
606
 
605
607
  class ClusterV1(ConfiguredBaseModel):
@@ -1017,7 +1019,7 @@ class NamespaceTerraformResourceMskV1(NamespaceTerraformResourceAWSV1):
1017
1019
 
1018
1020
 
1019
1021
  class NamespaceTerraformProviderResourceAWSV1(NamespaceExternalResourceV1):
1020
- resources: list[Union[NamespaceTerraformResourceRDSV1, NamespaceTerraformResourceRosaAuthenticatorV1, NamespaceTerraformResourceALBV1, NamespaceTerraformResourceS3V1, NamespaceTerraformResourceRoleV1, NamespaceTerraformResourceASGV1, NamespaceTerraformResourceSNSTopicV1, NamespaceTerraformResourceElastiCacheV1, NamespaceTerraformResourceServiceAccountV1, NamespaceTerraformResourceS3SQSV1, NamespaceTerraformResourceCloudWatchV1, NamespaceTerraformResourceRosaAuthenticatorVPCEV1, NamespaceTerraformResourceMskV1, NamespaceTerraformResourceS3CloudFrontV1, NamespaceTerraformResourceKMSV1, NamespaceTerraformResourceElasticSearchV1, NamespaceTerraformResourceACMV1, NamespaceTerraformResourceKinesisV1, NamespaceTerraformResourceRoute53ZoneV1, NamespaceTerraformResourceSQSV1, NamespaceTerraformResourceDynamoDBV1, NamespaceTerraformResourceECRV1, NamespaceTerraformResourceS3CloudFrontPublicKeyV1, NamespaceTerraformResourceSecretsManagerV1, NamespaceTerraformResourceSecretsManagerServiceAccountV1, NamespaceTerraformResourceAWSV1]] = Field(..., alias="resources")
1022
+ resources: list[Union[NamespaceTerraformResourceRDSV1, NamespaceTerraformResourceRosaAuthenticatorV1, NamespaceTerraformResourceALBV1, NamespaceTerraformResourceS3V1, NamespaceTerraformResourceRoleV1, NamespaceTerraformResourceASGV1, NamespaceTerraformResourceElastiCacheV1, NamespaceTerraformResourceSNSTopicV1, NamespaceTerraformResourceServiceAccountV1, NamespaceTerraformResourceS3SQSV1, NamespaceTerraformResourceCloudWatchV1, NamespaceTerraformResourceRosaAuthenticatorVPCEV1, NamespaceTerraformResourceMskV1, NamespaceTerraformResourceS3CloudFrontV1, NamespaceTerraformResourceKMSV1, NamespaceTerraformResourceElasticSearchV1, NamespaceTerraformResourceACMV1, NamespaceTerraformResourceKinesisV1, NamespaceTerraformResourceRoute53ZoneV1, NamespaceTerraformResourceSQSV1, NamespaceTerraformResourceDynamoDBV1, NamespaceTerraformResourceECRV1, NamespaceTerraformResourceS3CloudFrontPublicKeyV1, NamespaceTerraformResourceSecretsManagerV1, NamespaceTerraformResourceSecretsManagerServiceAccountV1, NamespaceTerraformResourceAWSV1]] = Field(..., alias="resources")
1021
1023
 
1022
1024
 
1023
1025
  class EnvironmentV1(ConfiguredBaseModel):
@@ -122,7 +122,7 @@ class Erv2Cli:
122
122
  f.validate_external_resource(self._resource)
123
123
  self._module_configuration = (
124
124
  ExternalResourceModuleConfiguration.resolve_configuration(
125
- m_inventory.get_from_spec(spec), spec
125
+ m_inventory.get_from_spec(spec), spec, self._er_settings
126
126
  )
127
127
  )
128
128