Skip to content

Commit 8a66b84

Browse files
committed
APPSRE-11637 ERv2 SQS module
1 parent b1b33cd commit 8a66b84

File tree

6 files changed

+70
-1
lines changed

6 files changed

+70
-1
lines changed

reconcile/external_resources/aws.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,3 +319,19 @@ def validate(
319319
raise ValueError(
320320
f"MSK user '{user}' secret must contain only 'username' and 'password' keys!"
321321
)
322+
323+
324+
class AWSSQSFactory(AWSDefaultResourceFactory):
325+
def resolve(
326+
self,
327+
spec: ExternalResourceSpec,
328+
module_conf: ExternalResourceModuleConfiguration,
329+
) -> dict[str, Any]:
330+
rvr = ResourceValueResolver(spec=spec, identifier_as_value=True)
331+
data = rvr.resolve()
332+
all_queues = {
333+
queue.pop("key"): queue | {"defaults": spec.get("defaults")}
334+
for spec in data.get("specs", [])
335+
for queue in spec.pop("queues")
336+
}
337+
return {"identifier": data["identifier"], "queues": all_queues}

reconcile/external_resources/factories.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
AWSMskFactory,
1111
AWSRdsFactory,
1212
AWSResourceFactory,
13+
AWSSQSFactory,
1314
)
1415
from reconcile.external_resources.meta import QONTRACT_INTEGRATION
1516
from reconcile.external_resources.model import (
@@ -102,6 +103,7 @@ def setup_aws_resource_factories(
102103
"elasticache": AWSElasticacheFactory(er_inventory, secret_reader),
103104
"rds": AWSRdsFactory(er_inventory, secret_reader),
104105
"msk": AWSMskFactory(er_inventory, secret_reader),
106+
"sqs": AWSSQSFactory(er_inventory, secret_reader),
105107
},
106108
default_factory=AWSDefaultResourceFactory(er_inventory, secret_reader),
107109
)

reconcile/external_resources/model.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
NamespaceTerraformResourceKMSV1,
2424
NamespaceTerraformResourceMskV1,
2525
NamespaceTerraformResourceRDSV1,
26+
NamespaceTerraformResourceSQSV1,
2627
NamespaceV1,
2728
)
2829
from reconcile.gql_definitions.external_resources.external_resources_settings import (
@@ -102,6 +103,7 @@ def state_path(self) -> str:
102103
| NamespaceTerraformResourceElastiCacheV1
103104
| NamespaceTerraformResourceKMSV1
104105
| NamespaceTerraformResourceCloudWatchV1
106+
| NamespaceTerraformResourceSQSV1
105107
)
106108

107109

reconcile/gql_definitions/external_resources/external_resources_namespaces.gql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,11 @@ query ExternalResourcesNamespaces {
156156
output_resource_name
157157
annotations
158158
tags
159+
managed_by_erv2
160+
delete
161+
module_overrides {
162+
...ExternalResourcesModuleOverrides
163+
}
159164
specs {
160165
defaults
161166
queues {

reconcile/gql_definitions/external_resources/external_resources_namespaces.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,11 @@
238238
output_resource_name
239239
annotations
240240
tags
241+
managed_by_erv2
242+
delete
243+
module_overrides {
244+
...ExternalResourcesModuleOverrides
245+
}
241246
specs {
242247
defaults
243248
queues {
@@ -780,6 +785,9 @@ class NamespaceTerraformResourceSQSV1(NamespaceTerraformResourceAWSV1):
780785
output_resource_name: Optional[str] = Field(..., alias="output_resource_name")
781786
annotations: Optional[str] = Field(..., alias="annotations")
782787
tags: Optional[str] = Field(..., alias="tags")
788+
managed_by_erv2: Optional[bool] = Field(..., alias="managed_by_erv2")
789+
delete: Optional[bool] = Field(..., alias="delete")
790+
module_overrides: Optional[ExternalResourcesModuleOverrides] = Field(..., alias="module_overrides")
783791
specs: list[SQSQueuesSpecsV1] = Field(..., alias="specs")
784792

785793

@@ -1140,7 +1148,7 @@ class NamespaceTerraformResourceMskV1(NamespaceTerraformResourceAWSV1):
11401148

11411149
class NamespaceTerraformProviderResourceAWSV1(NamespaceExternalResourceV1):
11421150
provisioner: AWSAccountV1 = Field(..., alias="provisioner")
1143-
resources: list[Union[NamespaceTerraformResourceRDSV1, NamespaceTerraformResourceRosaAuthenticatorV1, NamespaceTerraformResourceALBV1, NamespaceTerraformResourceS3V1, NamespaceTerraformResourceElastiCacheV1, NamespaceTerraformResourceCloudWatchV1, NamespaceTerraformResourceASGV1, NamespaceTerraformResourceRoleV1, NamespaceTerraformResourceKMSV1, NamespaceTerraformResourceMskV1, NamespaceTerraformResourceSNSTopicV1, NamespaceTerraformResourceServiceAccountV1, NamespaceTerraformResourceS3SQSV1, NamespaceTerraformResourceRosaAuthenticatorVPCEV1, NamespaceTerraformResourceS3CloudFrontV1, NamespaceTerraformResourceElasticSearchV1, NamespaceTerraformResourceACMV1, NamespaceTerraformResourceKinesisV1, NamespaceTerraformResourceRoute53ZoneV1, NamespaceTerraformResourceSQSV1, NamespaceTerraformResourceDynamoDBV1, NamespaceTerraformResourceECRV1, NamespaceTerraformResourceS3CloudFrontPublicKeyV1, NamespaceTerraformResourceSecretsManagerV1, NamespaceTerraformResourceSecretsManagerServiceAccountV1, NamespaceTerraformResourceAWSV1]] = Field(..., alias="resources")
1151+
resources: list[Union[NamespaceTerraformResourceRDSV1, NamespaceTerraformResourceRosaAuthenticatorV1, NamespaceTerraformResourceALBV1, NamespaceTerraformResourceS3V1, NamespaceTerraformResourceElastiCacheV1, NamespaceTerraformResourceCloudWatchV1, NamespaceTerraformResourceASGV1, NamespaceTerraformResourceRoleV1, NamespaceTerraformResourceKMSV1, NamespaceTerraformResourceMskV1, NamespaceTerraformResourceSQSV1, NamespaceTerraformResourceSNSTopicV1, NamespaceTerraformResourceServiceAccountV1, NamespaceTerraformResourceS3SQSV1, NamespaceTerraformResourceRosaAuthenticatorVPCEV1, NamespaceTerraformResourceS3CloudFrontV1, NamespaceTerraformResourceElasticSearchV1, NamespaceTerraformResourceACMV1, NamespaceTerraformResourceKinesisV1, NamespaceTerraformResourceRoute53ZoneV1, NamespaceTerraformResourceDynamoDBV1, NamespaceTerraformResourceECRV1, NamespaceTerraformResourceS3CloudFrontPublicKeyV1, NamespaceTerraformResourceSecretsManagerV1, NamespaceTerraformResourceSecretsManagerServiceAccountV1, NamespaceTerraformResourceAWSV1]] = Field(..., alias="resources")
11441152

11451153

11461154
class EnvironmentV1(ConfiguredBaseModel):

reconcile/gql_definitions/introspection.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46779,6 +46779,42 @@
4677946779
},
4678046780
"isDeprecated": false,
4678146781
"deprecationReason": null
46782+
},
46783+
{
46784+
"name": "managed_by_erv2",
46785+
"description": null,
46786+
"args": [],
46787+
"type": {
46788+
"kind": "SCALAR",
46789+
"name": "Boolean",
46790+
"ofType": null
46791+
},
46792+
"isDeprecated": false,
46793+
"deprecationReason": null
46794+
},
46795+
{
46796+
"name": "delete",
46797+
"description": null,
46798+
"args": [],
46799+
"type": {
46800+
"kind": "SCALAR",
46801+
"name": "Boolean",
46802+
"ofType": null
46803+
},
46804+
"isDeprecated": false,
46805+
"deprecationReason": null
46806+
},
46807+
{
46808+
"name": "module_overrides",
46809+
"description": null,
46810+
"args": [],
46811+
"type": {
46812+
"kind": "OBJECT",
46813+
"name": "ExternalResourcesModuleOverrides_v1",
46814+
"ofType": null
46815+
},
46816+
"isDeprecated": false,
46817+
"deprecationReason": null
4678246818
}
4678346819
],
4678446820
"inputFields": null,

0 commit comments

Comments
 (0)