qontract-reconcile 0.10.2.dev30__py3-none-any.whl → 0.10.2.dev32__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.dev30
3
+ Version: 0.10.2.dev32
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
@@ -10,7 +10,7 @@ reconcile/aws_iam_password_reset.py,sha256=q96mwr2KeEQ5bpNniGlgIMZTxiuLSodcYfX-t
10
10
  reconcile/aws_support_cases_sos.py,sha256=hl_9L53yQYRQxKs3IWrd69Cc60XK067g_bJRM9B0udo,2975
11
11
  reconcile/blackbox_exporter_endpoint_monitoring.py,sha256=O1wFp52EyF538c6txaWBs8eMtUIy19gyHZ6VzJ6QXS8,3512
12
12
  reconcile/checkpoint.py,sha256=_JhMxrye5BgkRMxWYuf7Upli6XayPINKSsuo3ynHTRc,5010
13
- reconcile/cli.py,sha256=vHCmBcriMEqwVDj_7wujQFbrYa4b6yiiFTYCByWkbwg,107407
13
+ reconcile/cli.py,sha256=bLfpfCJqlpSOtcpFVJExYY9DYa4n156zj9SOCbPWfPw,107417
14
14
  reconcile/closedbox_endpoint_monitoring_base.py,sha256=MvGKBqH9PdHWdMjhLuptze-dk0Tifhp3-0SZdI-7Fmo,4862
15
15
  reconcile/cluster_deployment_mapper.py,sha256=5gumAaRCcFXsabUJ1dnuUy9WrP_FEEM5JnOnE8ch9sE,2326
16
16
  reconcile/dashdotdb_base.py,sha256=83ZWIf5JJk3P_D69y2TmXRcQr6ELJGlv10OM0h7fJVs,4767
@@ -196,13 +196,13 @@ reconcile/endpoints_discovery/merge_request.py,sha256=_yLb4tnvoZMCko8rta2C_CvOIn
196
196
  reconcile/endpoints_discovery/merge_request_manager.py,sha256=wUMsumxv8RnWaRattax4HfoRlhtVzmgro3GiJJ1C4Vc,6392
197
197
  reconcile/external_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
198
198
  reconcile/external_resources/aws.py,sha256=NSaOeHqFEcMaMxNjJwuQZosolgsJ8XRVvwkEEBj9vrw,7730
199
- reconcile/external_resources/factories.py,sha256=TyJMaijDfPIFYks9i6dhKN7nSR1BoCkoBs1iPExKpcE,5493
199
+ reconcile/external_resources/factories.py,sha256=ldvm3n13IdE899Ei850NSf0RQ35rzsKJBCUkROrbE5Y,5579
200
200
  reconcile/external_resources/integration.py,sha256=JF38M7R0Z4ADUTx57TZqSZH9k_xpPlbAxQAcGyIISuM,6925
201
201
  reconcile/external_resources/integration_secrets_sync.py,sha256=dX09O3r6KURziUYYfiki10orNjOGVma-XojhVqd0ww4,1667
202
- reconcile/external_resources/manager.py,sha256=q7Ezp-g3MhpH_t8zpNMH5wCzHvh-nERpHzvBPA1G1ng,17031
202
+ reconcile/external_resources/manager.py,sha256=DtxjWx34WdPjPR5TzqV4mZpN_Gn20LcNTZHBbPxqzuQ,16953
203
203
  reconcile/external_resources/meta.py,sha256=noaytFzmShpzLA_ebGh7wuP45mOfHIOnnoUxivjDa1I,672
204
204
  reconcile/external_resources/metrics.py,sha256=KiBjMUaN_z0cSkF_7Ar_a8RiuiwVqjyMcVdISlxhzXE,3898
205
- reconcile/external_resources/model.py,sha256=KdB3eYlopWOLQmvL1aICjm-kAPIlY2N_zSikcCFBQpk,11751
205
+ reconcile/external_resources/model.py,sha256=EpgIgVRPUsyfHhgjHv_TLUKjzFiIQt0wUd30K0NJJpI,11826
206
206
  reconcile/external_resources/reconciler.py,sha256=K9QvbQCIOCuOHnPIxQE_P_jFtrkF3dGo8d_cCCh08Ys,8973
207
207
  reconcile/external_resources/secrets_sync.py,sha256=50fK4fzgSz-K8uy5_DQQWA_ju_rTDYAC2HRymgfY7TA,16344
208
208
  reconcile/external_resources/state.py,sha256=ye8yjMoCtTHSRhDH7skFLDIHIuYTjisWYCTJrwnmbEw,9565
@@ -300,7 +300,7 @@ reconcile/gql_definitions/endpoints_discovery/apps.py,sha256=aBWRAwDUJQ32ghJS4cP
300
300
  reconcile/gql_definitions/external_resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
301
301
  reconcile/gql_definitions/external_resources/aws_accounts.py,sha256=XR69j9dpTQ0gv8y-AZN7AJ0dPvO-wbHscyCDgrax6Bk,2046
302
302
  reconcile/gql_definitions/external_resources/external_resources_modules.py,sha256=cbbvGq1Te9DP8XiFg3bp4Y0q6LxpGYov8ugcROPyPLI,2647
303
- reconcile/gql_definitions/external_resources/external_resources_namespaces.py,sha256=XkxcBuIqMcX_Rdb4eU1Fduasz3vgAL7IdmFNcNMxzRw,44220
303
+ reconcile/gql_definitions/external_resources/external_resources_namespaces.py,sha256=iW8zsC0eFULUVBTW9i2OHh3o7BTHiQIdmrJSk4CmjMo,45335
304
304
  reconcile/gql_definitions/external_resources/external_resources_settings.py,sha256=K8m9EKlfIVGP2KyqTduo7MMSKFjVC3yk5ZfO9hgdA7A,3192
305
305
  reconcile/gql_definitions/fragments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
306
306
  reconcile/gql_definitions/fragments/aus_organization.py,sha256=uBKbTuBa3CZmTXR5HOcGhRcu2U9kM93KbYmoWTxcpB0,4767
@@ -773,7 +773,7 @@ tools/saas_promotion_state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
773
773
  tools/saas_promotion_state/saas_promotion_state.py,sha256=UfwwRLS5Ya4_Nh1w5n1dvoYtchQvYE9yj1VANt2IKqI,3925
774
774
  tools/sre_checkpoints/__init__.py,sha256=CDaDaywJnmRCLyl_NCcvxi-Zc0hTi_3OdwKiFOyS39I,145
775
775
  tools/sre_checkpoints/util.py,sha256=zEDbGr18ZeHNQwW8pUsr2JRjuXIPz--WAGJxZo9sv_Y,894
776
- qontract_reconcile-0.10.2.dev30.dist-info/METADATA,sha256=lcgsXp8_BmZEyY13yE0DooDkFbQyUk2k187eueIH4EQ,24665
777
- qontract_reconcile-0.10.2.dev30.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
778
- qontract_reconcile-0.10.2.dev30.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
779
- qontract_reconcile-0.10.2.dev30.dist-info/RECORD,,
776
+ qontract_reconcile-0.10.2.dev32.dist-info/METADATA,sha256=Aj39BfBFhSBY0PanTtlnlcY2FpVeG_k_VWiCOo0Enbc,24665
777
+ qontract_reconcile-0.10.2.dev32.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
778
+ qontract_reconcile-0.10.2.dev32.dist-info/entry_points.txt,sha256=5i9l54La3vQrDLAdwDKQWC0iG4sV9RRfOb1BpvzOWLc,698
779
+ qontract_reconcile-0.10.2.dev32.dist-info/RECORD,,
reconcile/cli.py CHANGED
@@ -47,7 +47,7 @@ from reconcile.utils.unleash import get_feature_toggle_state
47
47
  TERRAFORM_VERSION = ["1.6.6"]
48
48
  TERRAFORM_VERSION_REGEX = r"^Terraform\sv([\d]+\.[\d]+\.[\d]+)$"
49
49
 
50
- OC_VERSIONS = ["4.12.46", "4.10.15"]
50
+ OC_VERSIONS = ["4.16.2", "4.12.46", "4.10.15"]
51
51
  OC_VERSION_REGEX = r"^Client\sVersion:\s([\d]+\.[\d]+\.[\d]+)$"
52
52
 
53
53
  HELM_VERSIONS = ["3.11.1"]
@@ -41,13 +41,15 @@ AWS_DEFAULT_TAGS = [
41
41
 
42
42
 
43
43
  class ObjectFactory(Generic[T]):
44
- def __init__(self) -> None:
45
- self._factories: dict[str, T] = {}
46
-
47
- def register_factory(self, id: str, t: T) -> None:
48
- self._factories[id] = t
44
+ def __init__(
45
+ self, factories: dict[str, T], default_factory: T | None = None
46
+ ) -> None:
47
+ self._factories = factories
48
+ self._default_factory = default_factory
49
49
 
50
50
  def get_factory(self, id: str) -> T:
51
+ if id not in self._factories and self._default_factory:
52
+ return self._default_factory
51
53
  return self._factories[id]
52
54
 
53
55
 
@@ -94,16 +96,14 @@ class TerraformModuleProvisionDataFactory(ModuleProvisionDataFactory):
94
96
  def setup_aws_resource_factories(
95
97
  er_inventory: ExternalResourcesInventory, secret_reader: SecretReaderBase
96
98
  ) -> ObjectFactory[AWSResourceFactory]:
97
- f = ObjectFactory[AWSResourceFactory]()
98
- f.register_factory(
99
- "elasticache", AWSElasticacheFactory(er_inventory, secret_reader)
100
- )
101
- f.register_factory("rds", AWSRdsFactory(er_inventory, secret_reader))
102
- f.register_factory("msk", AWSMskFactory(er_inventory, secret_reader))
103
- f.register_factory(
104
- "default", AWSDefaultResourceFactory(er_inventory, secret_reader)
99
+ return ObjectFactory[AWSResourceFactory](
100
+ factories={
101
+ "elasticache": AWSElasticacheFactory(er_inventory, secret_reader),
102
+ "rds": AWSRdsFactory(er_inventory, secret_reader),
103
+ "msk": AWSMskFactory(er_inventory, secret_reader),
104
+ },
105
+ default_factory=AWSDefaultResourceFactory(er_inventory, secret_reader),
105
106
  )
106
- return f
107
107
 
108
108
 
109
109
  class AWSExternalResourceFactory(ExternalResourceFactory):
@@ -55,24 +55,21 @@ def setup_factories(
55
55
  ) -> ObjectFactory[ExternalResourceFactory]:
56
56
  tf_factory = TerraformModuleProvisionDataFactory(settings=settings)
57
57
 
58
- aws_provision_factories = ObjectFactory[ModuleProvisionDataFactory]()
59
- aws_provision_factories.register_factory("terraform", tf_factory)
60
- aws_provision_factories.register_factory("cdktf", tf_factory)
61
-
62
- of = ObjectFactory[ExternalResourceFactory]()
63
- of.register_factory(
64
- "aws",
65
- AWSExternalResourceFactory(
66
- module_inventory=module_inventory,
67
- er_inventory=er_inventory,
68
- secret_reader=secret_reader,
69
- provision_factories=aws_provision_factories,
70
- resource_factories=setup_aws_resource_factories(
71
- er_inventory, secret_reader
72
- ),
73
- ),
58
+ return ObjectFactory[ExternalResourceFactory](
59
+ factories={
60
+ "aws": AWSExternalResourceFactory(
61
+ module_inventory=module_inventory,
62
+ er_inventory=er_inventory,
63
+ secret_reader=secret_reader,
64
+ provision_factories=ObjectFactory[ModuleProvisionDataFactory](
65
+ factories={"terraform": tf_factory, "cdktf": tf_factory}
66
+ ),
67
+ resource_factories=setup_aws_resource_factories(
68
+ er_inventory, secret_reader
69
+ ),
70
+ )
71
+ }
74
72
  )
75
- return of
76
73
 
77
74
 
78
75
  class ExternalResourceDryRunsValidator:
@@ -21,6 +21,7 @@ from reconcile.gql_definitions.external_resources.external_resources_namespaces
21
21
  ExternalResourcesModuleOverridesV1,
22
22
  NamespaceTerraformProviderResourceAWSV1,
23
23
  NamespaceTerraformResourceElastiCacheV1,
24
+ NamespaceTerraformResourceKMSV1,
24
25
  NamespaceTerraformResourceMskV1,
25
26
  NamespaceTerraformResourceRDSV1,
26
27
  NamespaceV1,
@@ -93,6 +94,7 @@ SUPPORTED_RESOURCE_TYPES = (
93
94
  NamespaceTerraformResourceRDSV1
94
95
  | NamespaceTerraformResourceMskV1
95
96
  | NamespaceTerraformResourceElastiCacheV1
97
+ | NamespaceTerraformResourceKMSV1
96
98
  )
97
99
 
98
100
 
@@ -272,6 +272,16 @@ query ExternalResourcesNamespaces {
272
272
  overrides
273
273
  output_resource_name
274
274
  annotations
275
+ managed_by_erv2
276
+ delete
277
+ module_overrides {
278
+ module_type
279
+ image
280
+ version
281
+ reconcile_timeout_minutes
282
+ outputs_secret_image
283
+ outputs_secret_version
284
+ }
275
285
  }
276
286
  ... on NamespaceTerraformResourceElasticSearch_v1 {
277
287
  region
@@ -773,6 +783,15 @@ class NamespaceTerraformResourceCloudWatchV1(NamespaceTerraformResourceAWSV1):
773
783
  annotations: Optional[str] = Field(..., alias="annotations")
774
784
 
775
785
 
786
+ class NamespaceTerraformResourceKMSV1_ExternalResourcesModuleOverridesV1(ConfiguredBaseModel):
787
+ module_type: Optional[str] = Field(..., alias="module_type")
788
+ image: Optional[str] = Field(..., alias="image")
789
+ version: Optional[str] = Field(..., alias="version")
790
+ reconcile_timeout_minutes: Optional[int] = Field(..., alias="reconcile_timeout_minutes")
791
+ outputs_secret_image: Optional[str] = Field(..., alias="outputs_secret_image")
792
+ outputs_secret_version: Optional[str] = Field(..., alias="outputs_secret_version")
793
+
794
+
776
795
  class NamespaceTerraformResourceKMSV1(NamespaceTerraformResourceAWSV1):
777
796
  region: Optional[str] = Field(..., alias="region")
778
797
  identifier: str = Field(..., alias="identifier")
@@ -780,6 +799,9 @@ class NamespaceTerraformResourceKMSV1(NamespaceTerraformResourceAWSV1):
780
799
  overrides: Optional[str] = Field(..., alias="overrides")
781
800
  output_resource_name: Optional[str] = Field(..., alias="output_resource_name")
782
801
  annotations: Optional[str] = Field(..., alias="annotations")
802
+ managed_by_erv2: Optional[bool] = Field(..., alias="managed_by_erv2")
803
+ delete: Optional[bool] = Field(..., alias="delete")
804
+ module_overrides: Optional[NamespaceTerraformResourceKMSV1_ExternalResourcesModuleOverridesV1] = Field(..., alias="module_overrides")
783
805
 
784
806
 
785
807
  class NamespaceTerraformResourceElasticSearchV1(NamespaceTerraformResourceAWSV1):
@@ -1044,7 +1066,7 @@ class NamespaceTerraformResourceMskV1(NamespaceTerraformResourceAWSV1):
1044
1066
 
1045
1067
  class NamespaceTerraformProviderResourceAWSV1(NamespaceExternalResourceV1):
1046
1068
  provisioner: AWSAccountV1 = Field(..., alias="provisioner")
1047
- resources: list[Union[NamespaceTerraformResourceRDSV1, NamespaceTerraformResourceRosaAuthenticatorV1, NamespaceTerraformResourceALBV1, NamespaceTerraformResourceS3V1, NamespaceTerraformResourceElastiCacheV1, NamespaceTerraformResourceASGV1, NamespaceTerraformResourceMskV1, NamespaceTerraformResourceRoleV1, NamespaceTerraformResourceSNSTopicV1, NamespaceTerraformResourceServiceAccountV1, NamespaceTerraformResourceS3SQSV1, NamespaceTerraformResourceCloudWatchV1, NamespaceTerraformResourceRosaAuthenticatorVPCEV1, NamespaceTerraformResourceS3CloudFrontV1, NamespaceTerraformResourceKMSV1, NamespaceTerraformResourceElasticSearchV1, NamespaceTerraformResourceACMV1, NamespaceTerraformResourceKinesisV1, NamespaceTerraformResourceRoute53ZoneV1, NamespaceTerraformResourceSQSV1, NamespaceTerraformResourceDynamoDBV1, NamespaceTerraformResourceECRV1, NamespaceTerraformResourceS3CloudFrontPublicKeyV1, NamespaceTerraformResourceSecretsManagerV1, NamespaceTerraformResourceSecretsManagerServiceAccountV1, NamespaceTerraformResourceAWSV1]] = Field(..., alias="resources")
1069
+ resources: list[Union[NamespaceTerraformResourceRDSV1, NamespaceTerraformResourceRosaAuthenticatorV1, NamespaceTerraformResourceALBV1, NamespaceTerraformResourceS3V1, NamespaceTerraformResourceElastiCacheV1, NamespaceTerraformResourceASGV1, NamespaceTerraformResourceKMSV1, NamespaceTerraformResourceMskV1, NamespaceTerraformResourceRoleV1, NamespaceTerraformResourceSNSTopicV1, NamespaceTerraformResourceServiceAccountV1, NamespaceTerraformResourceS3SQSV1, NamespaceTerraformResourceCloudWatchV1, NamespaceTerraformResourceRosaAuthenticatorVPCEV1, NamespaceTerraformResourceS3CloudFrontV1, NamespaceTerraformResourceElasticSearchV1, NamespaceTerraformResourceACMV1, NamespaceTerraformResourceKinesisV1, NamespaceTerraformResourceRoute53ZoneV1, NamespaceTerraformResourceSQSV1, NamespaceTerraformResourceDynamoDBV1, NamespaceTerraformResourceECRV1, NamespaceTerraformResourceS3CloudFrontPublicKeyV1, NamespaceTerraformResourceSecretsManagerV1, NamespaceTerraformResourceSecretsManagerServiceAccountV1, NamespaceTerraformResourceAWSV1]] = Field(..., alias="resources")
1048
1070
 
1049
1071
 
1050
1072
  class EnvironmentV1(ConfiguredBaseModel):