dbt-platform-helper 13.1.0__py3-none-any.whl → 15.16.0__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.
- dbt_platform_helper/COMMANDS.md +107 -27
- dbt_platform_helper/commands/application.py +5 -6
- dbt_platform_helper/commands/codebase.py +31 -10
- dbt_platform_helper/commands/conduit.py +3 -5
- dbt_platform_helper/commands/config.py +20 -311
- dbt_platform_helper/commands/copilot.py +18 -391
- dbt_platform_helper/commands/database.py +17 -9
- dbt_platform_helper/commands/environment.py +20 -14
- dbt_platform_helper/commands/generate.py +0 -3
- dbt_platform_helper/commands/internal.py +140 -0
- dbt_platform_helper/commands/notify.py +58 -78
- dbt_platform_helper/commands/pipeline.py +23 -19
- dbt_platform_helper/commands/secrets.py +39 -93
- dbt_platform_helper/commands/version.py +7 -12
- dbt_platform_helper/constants.py +52 -7
- dbt_platform_helper/domain/codebase.py +89 -39
- dbt_platform_helper/domain/conduit.py +335 -76
- dbt_platform_helper/domain/config.py +381 -0
- dbt_platform_helper/domain/copilot.py +398 -0
- dbt_platform_helper/domain/copilot_environment.py +8 -8
- dbt_platform_helper/domain/database_copy.py +2 -2
- dbt_platform_helper/domain/maintenance_page.py +254 -430
- dbt_platform_helper/domain/notify.py +64 -0
- dbt_platform_helper/domain/pipelines.py +43 -35
- dbt_platform_helper/domain/plans.py +41 -0
- dbt_platform_helper/domain/secrets.py +279 -0
- dbt_platform_helper/domain/service.py +570 -0
- dbt_platform_helper/domain/terraform_environment.py +14 -13
- dbt_platform_helper/domain/update_alb_rules.py +412 -0
- dbt_platform_helper/domain/versioning.py +249 -0
- dbt_platform_helper/{providers → entities}/platform_config_schema.py +75 -82
- dbt_platform_helper/entities/semantic_version.py +83 -0
- dbt_platform_helper/entities/service.py +339 -0
- dbt_platform_helper/platform_exception.py +4 -0
- dbt_platform_helper/providers/autoscaling.py +24 -0
- dbt_platform_helper/providers/aws/__init__.py +0 -0
- dbt_platform_helper/providers/aws/exceptions.py +70 -0
- dbt_platform_helper/providers/aws/interfaces.py +13 -0
- dbt_platform_helper/providers/aws/opensearch.py +23 -0
- dbt_platform_helper/providers/aws/redis.py +21 -0
- dbt_platform_helper/providers/aws/sso_auth.py +75 -0
- dbt_platform_helper/providers/cache.py +40 -4
- dbt_platform_helper/providers/cloudformation.py +1 -1
- dbt_platform_helper/providers/config.py +137 -19
- dbt_platform_helper/providers/config_validator.py +112 -51
- dbt_platform_helper/providers/copilot.py +24 -16
- dbt_platform_helper/providers/ecr.py +89 -7
- dbt_platform_helper/providers/ecs.py +228 -36
- dbt_platform_helper/providers/environment_variable.py +24 -0
- dbt_platform_helper/providers/files.py +1 -1
- dbt_platform_helper/providers/io.py +36 -4
- dbt_platform_helper/providers/kms.py +22 -0
- dbt_platform_helper/providers/load_balancers.py +402 -42
- dbt_platform_helper/providers/logs.py +72 -0
- dbt_platform_helper/providers/parameter_store.py +134 -0
- dbt_platform_helper/providers/s3.py +21 -0
- dbt_platform_helper/providers/schema_migrations/__init__.py +0 -0
- dbt_platform_helper/providers/schema_migrations/schema_v0_to_v1_migration.py +43 -0
- dbt_platform_helper/providers/schema_migrator.py +77 -0
- dbt_platform_helper/providers/secrets.py +5 -5
- dbt_platform_helper/providers/slack_channel_notifier.py +62 -0
- dbt_platform_helper/providers/terraform_manifest.py +121 -19
- dbt_platform_helper/providers/version.py +106 -23
- dbt_platform_helper/providers/version_status.py +27 -0
- dbt_platform_helper/providers/vpc.py +36 -5
- dbt_platform_helper/providers/yaml_file.py +58 -2
- dbt_platform_helper/templates/environment-pipelines/main.tf +4 -3
- dbt_platform_helper/templates/svc/overrides/cfn.patches.yml +5 -0
- dbt_platform_helper/utilities/decorators.py +103 -0
- dbt_platform_helper/utils/application.py +119 -22
- dbt_platform_helper/utils/aws.py +39 -150
- dbt_platform_helper/utils/deep_merge.py +10 -0
- dbt_platform_helper/utils/git.py +1 -14
- dbt_platform_helper/utils/validation.py +1 -1
- {dbt_platform_helper-13.1.0.dist-info → dbt_platform_helper-15.16.0.dist-info}/METADATA +11 -20
- dbt_platform_helper-15.16.0.dist-info/RECORD +118 -0
- {dbt_platform_helper-13.1.0.dist-info → dbt_platform_helper-15.16.0.dist-info}/WHEEL +1 -1
- platform_helper.py +3 -1
- terraform/elasticache-redis/plans.yml +85 -0
- terraform/opensearch/plans.yml +71 -0
- terraform/postgres/plans.yml +128 -0
- dbt_platform_helper/addon-plans.yml +0 -224
- dbt_platform_helper/providers/aws.py +0 -37
- dbt_platform_helper/providers/opensearch.py +0 -36
- dbt_platform_helper/providers/redis.py +0 -34
- dbt_platform_helper/providers/semantic_version.py +0 -126
- dbt_platform_helper/templates/svc/manifest-backend.yml +0 -69
- dbt_platform_helper/templates/svc/manifest-public.yml +0 -109
- dbt_platform_helper/utils/cloudfoundry.py +0 -14
- dbt_platform_helper/utils/files.py +0 -53
- dbt_platform_helper/utils/manifests.py +0 -18
- dbt_platform_helper/utils/versioning.py +0 -238
- dbt_platform_helper-13.1.0.dist-info/RECORD +0 -96
- {dbt_platform_helper-13.1.0.dist-info → dbt_platform_helper-15.16.0.dist-info}/entry_points.txt +0 -0
- {dbt_platform_helper-13.1.0.dist-info → dbt_platform_helper-15.16.0.dist-info/licenses}/LICENSE +0 -0
dbt_platform_helper/utils/aws.py
CHANGED
|
@@ -4,21 +4,20 @@ import time
|
|
|
4
4
|
import urllib.parse
|
|
5
5
|
from configparser import ConfigParser
|
|
6
6
|
from pathlib import Path
|
|
7
|
-
from typing import Tuple
|
|
8
7
|
|
|
9
8
|
import boto3
|
|
10
9
|
import botocore
|
|
11
10
|
import botocore.exceptions
|
|
12
11
|
import click
|
|
13
|
-
import yaml
|
|
14
12
|
from boto3 import Session
|
|
13
|
+
from botocore.exceptions import ClientError
|
|
15
14
|
|
|
16
15
|
from dbt_platform_helper.constants import REFRESH_TOKEN_MESSAGE
|
|
17
16
|
from dbt_platform_helper.platform_exception import PlatformException
|
|
18
|
-
from dbt_platform_helper.providers.aws import
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
from dbt_platform_helper.providers.aws import
|
|
17
|
+
from dbt_platform_helper.providers.aws.exceptions import (
|
|
18
|
+
CopilotCodebaseNotFoundException,
|
|
19
|
+
)
|
|
20
|
+
from dbt_platform_helper.providers.aws.exceptions import LogGroupNotFoundException
|
|
22
21
|
from dbt_platform_helper.providers.validation import ValidationException
|
|
23
22
|
|
|
24
23
|
SSM_BASE_PATH = "/copilot/{app}/{env}/secrets/"
|
|
@@ -159,7 +158,17 @@ def get_ssm_secrets(app, env, session=None, path=None):
|
|
|
159
158
|
secrets = []
|
|
160
159
|
|
|
161
160
|
while True:
|
|
162
|
-
|
|
161
|
+
try:
|
|
162
|
+
response = client.get_parameters_by_path(**params)
|
|
163
|
+
except ClientError as e:
|
|
164
|
+
if e.response["Error"]["Code"] == "AccessDeniedException":
|
|
165
|
+
click.secho(
|
|
166
|
+
"Access denied on SSM, due to missing permissions. Please update your environment infrastructure.",
|
|
167
|
+
fg="magenta",
|
|
168
|
+
)
|
|
169
|
+
break
|
|
170
|
+
else:
|
|
171
|
+
raise e
|
|
163
172
|
|
|
164
173
|
for secret in response["Parameters"]:
|
|
165
174
|
secrets.append((secret["Name"], secret["Value"]))
|
|
@@ -203,24 +212,6 @@ def set_ssm_param(
|
|
|
203
212
|
client.put_parameter(**parameter_args)
|
|
204
213
|
|
|
205
214
|
|
|
206
|
-
def check_response(response):
|
|
207
|
-
if response["ResponseMetadata"]["HTTPStatusCode"] != 200:
|
|
208
|
-
click.secho(
|
|
209
|
-
f"Unknown response error from AWS.\nStatus Code: {response['ResponseMetadata']['HTTPStatusCode']}",
|
|
210
|
-
fg="red",
|
|
211
|
-
)
|
|
212
|
-
exit()
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
def get_codestar_connection_arn(app_name):
|
|
216
|
-
session = get_aws_session_or_abort()
|
|
217
|
-
response = session.client("codestar-connections").list_connections()
|
|
218
|
-
|
|
219
|
-
for connection in response["Connections"]:
|
|
220
|
-
if connection["ConnectionName"] == app_name:
|
|
221
|
-
return connection["ConnectionArn"]
|
|
222
|
-
|
|
223
|
-
|
|
224
215
|
def get_account_details(sts_client=None):
|
|
225
216
|
if not sts_client:
|
|
226
217
|
sts_client = get_aws_session_or_abort().client("sts")
|
|
@@ -229,116 +220,8 @@ def get_account_details(sts_client=None):
|
|
|
229
220
|
return response["Account"], response["UserId"]
|
|
230
221
|
|
|
231
222
|
|
|
232
|
-
def get_public_repository_arn(repository_uri):
|
|
233
|
-
session = get_aws_session_or_abort()
|
|
234
|
-
response = session.client("ecr-public", region_name="us-east-1").describe_repositories()
|
|
235
|
-
repository = [
|
|
236
|
-
repo for repo in response["repositories"] if repo["repositoryUri"] == repository_uri
|
|
237
|
-
]
|
|
238
|
-
|
|
239
|
-
return repository[0]["repositoryArn"] if repository else None
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
def get_load_balancer_domain_and_configuration(
|
|
243
|
-
project_session: Session, app: str, env: str, svc: str
|
|
244
|
-
) -> Tuple[str, dict]:
|
|
245
|
-
response = get_load_balancer_configuration(project_session, app, env, svc)
|
|
246
|
-
|
|
247
|
-
# Find the domain name
|
|
248
|
-
with open(f"./copilot/{svc}/manifest.yml", "r") as fd:
|
|
249
|
-
conf = yaml.safe_load(fd)
|
|
250
|
-
if "environments" in conf:
|
|
251
|
-
if env in conf["environments"]:
|
|
252
|
-
for domain in conf["environments"].items():
|
|
253
|
-
if domain[0] == env:
|
|
254
|
-
if (
|
|
255
|
-
domain[1] is None
|
|
256
|
-
or domain[1]["http"] is None
|
|
257
|
-
or domain[1]["http"]["alias"] is None
|
|
258
|
-
):
|
|
259
|
-
click.secho(
|
|
260
|
-
f"No domains found, please check the ./copilot/{svc}/manifest.yml file",
|
|
261
|
-
fg="red",
|
|
262
|
-
)
|
|
263
|
-
exit()
|
|
264
|
-
domain_name = domain[1]["http"]["alias"]
|
|
265
|
-
else:
|
|
266
|
-
click.secho(
|
|
267
|
-
f"Environment {env} not found, please check the ./copilot/{svc}/manifest.yml file",
|
|
268
|
-
fg="red",
|
|
269
|
-
)
|
|
270
|
-
exit()
|
|
271
|
-
|
|
272
|
-
return domain_name, response["LoadBalancers"][0]
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
def get_load_balancer_configuration(
|
|
276
|
-
project_session: Session, app: str, env: str, svc: str
|
|
277
|
-
) -> list[Session]:
|
|
278
|
-
proj_client = project_session.client("ecs")
|
|
279
|
-
|
|
280
|
-
response = proj_client.list_clusters()
|
|
281
|
-
check_response(response)
|
|
282
|
-
no_items = True
|
|
283
|
-
for cluster_arn in response["clusterArns"]:
|
|
284
|
-
cluster_name = cluster_arn.split("/")[1]
|
|
285
|
-
if cluster_name.startswith(f"{app}-{env}-Cluster"):
|
|
286
|
-
no_items = False
|
|
287
|
-
break
|
|
288
|
-
|
|
289
|
-
if no_items:
|
|
290
|
-
click.echo(
|
|
291
|
-
click.style("There are no clusters for environment ", fg="red")
|
|
292
|
-
+ click.style(f"{env} ", fg="white", bold=True)
|
|
293
|
-
+ click.style("of application ", fg="red")
|
|
294
|
-
+ click.style(f"{app} ", fg="white", bold=True)
|
|
295
|
-
+ click.style("in AWS account ", fg="red")
|
|
296
|
-
+ click.style(f"{project_session.profile_name}", fg="white", bold=True),
|
|
297
|
-
)
|
|
298
|
-
exit()
|
|
299
|
-
|
|
300
|
-
response = proj_client.list_services(cluster=cluster_name)
|
|
301
|
-
check_response(response)
|
|
302
|
-
no_items = True
|
|
303
|
-
for service_arn in response["serviceArns"]:
|
|
304
|
-
fully_qualified_service_name = service_arn.split("/")[2]
|
|
305
|
-
if fully_qualified_service_name.startswith(f"{app}-{env}-{svc}-Service"):
|
|
306
|
-
no_items = False
|
|
307
|
-
break
|
|
308
|
-
|
|
309
|
-
if no_items:
|
|
310
|
-
click.echo(
|
|
311
|
-
click.style("There are no services called ", fg="red")
|
|
312
|
-
+ click.style(f"{svc} ", fg="white", bold=True)
|
|
313
|
-
+ click.style("for environment ", fg="red")
|
|
314
|
-
+ click.style(f"{env} ", fg="white", bold=True)
|
|
315
|
-
+ click.style("of application ", fg="red")
|
|
316
|
-
+ click.style(f"{app} ", fg="white", bold=True)
|
|
317
|
-
+ click.style("in AWS account ", fg="red")
|
|
318
|
-
+ click.style(f"{project_session.profile_name}", fg="white", bold=True),
|
|
319
|
-
)
|
|
320
|
-
exit()
|
|
321
|
-
|
|
322
|
-
elb_client = project_session.client("elbv2")
|
|
323
|
-
|
|
324
|
-
elb_arn = elb_client.describe_target_groups(
|
|
325
|
-
TargetGroupArns=[
|
|
326
|
-
proj_client.describe_services(
|
|
327
|
-
cluster=cluster_name,
|
|
328
|
-
services=[
|
|
329
|
-
fully_qualified_service_name,
|
|
330
|
-
],
|
|
331
|
-
)["services"][0]["loadBalancers"][0]["targetGroupArn"],
|
|
332
|
-
],
|
|
333
|
-
)["TargetGroups"][0]["LoadBalancerArns"][0]
|
|
334
|
-
|
|
335
|
-
response = elb_client.describe_load_balancers(LoadBalancerArns=[elb_arn])
|
|
336
|
-
check_response(response)
|
|
337
|
-
return response
|
|
338
|
-
|
|
339
|
-
|
|
340
223
|
def get_postgres_connection_data_updated_with_master_secret(session, parameter_name, secret_arn):
|
|
341
|
-
#
|
|
224
|
+
# TODO: DBTP-1968: This is pretty much the same as dbt_platform_helper.providers.secrets.Secrets.get_postgres_connection_data_updated_with_master_secret
|
|
342
225
|
ssm_client = session.client("ssm")
|
|
343
226
|
secrets_manager_client = session.client("secretsmanager")
|
|
344
227
|
response = ssm_client.get_parameter(Name=parameter_name, WithDecryption=True)
|
|
@@ -387,10 +270,10 @@ def start_pipeline_and_return_execution_id(codepipeline_client, build_options):
|
|
|
387
270
|
return response["pipelineExecutionId"]
|
|
388
271
|
|
|
389
272
|
|
|
390
|
-
#
|
|
273
|
+
# TODO: DBTP-1888: This should probably be in the AWS Copilot provider
|
|
391
274
|
def check_codebase_exists(session: Session, application, codebase: str):
|
|
392
275
|
try:
|
|
393
|
-
#
|
|
276
|
+
# TODO: DBTP-1968: Can this leverage dbt_platform_helper.providers.secrets.Secrets.get_connection_secret_arn?
|
|
394
277
|
ssm_client = session.client("ssm")
|
|
395
278
|
json.loads(
|
|
396
279
|
ssm_client.get_parameter(
|
|
@@ -406,20 +289,6 @@ def check_codebase_exists(session: Session, application, codebase: str):
|
|
|
406
289
|
raise CopilotCodebaseNotFoundException(codebase)
|
|
407
290
|
|
|
408
291
|
|
|
409
|
-
def check_image_exists(session, application, codebase, commit):
|
|
410
|
-
ecr_client = session.client("ecr")
|
|
411
|
-
repository = f"{application.name}/{codebase}"
|
|
412
|
-
try:
|
|
413
|
-
ecr_client.describe_images(
|
|
414
|
-
repositoryName=repository,
|
|
415
|
-
imageIds=[{"imageTag": f"commit-{commit}"}],
|
|
416
|
-
)
|
|
417
|
-
except ecr_client.exceptions.ImageNotFoundException:
|
|
418
|
-
raise ImageNotFoundException(commit)
|
|
419
|
-
except ecr_client.exceptions.RepositoryNotFoundException:
|
|
420
|
-
raise RepositoryNotFoundException(repository)
|
|
421
|
-
|
|
422
|
-
|
|
423
292
|
def get_build_url_from_arn(build_arn: str) -> str:
|
|
424
293
|
_, _, _, region, account_id, project_name, build_id = build_arn.split(":")
|
|
425
294
|
project_name = project_name.removeprefix("build/")
|
|
@@ -484,3 +353,23 @@ def wait_for_log_group_to_exist(log_client, log_group_name, attempts=30):
|
|
|
484
353
|
|
|
485
354
|
if not log_group_exists:
|
|
486
355
|
raise LogGroupNotFoundException(log_group_name)
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
def get_image_build_project(codebuild_client, application, codebase):
|
|
359
|
+
project_name = f"{application}-{codebase}-codebase-image-build"
|
|
360
|
+
response = codebuild_client.batch_get_projects(names=[project_name])
|
|
361
|
+
|
|
362
|
+
if bool(response.get("projects")):
|
|
363
|
+
return project_name
|
|
364
|
+
else:
|
|
365
|
+
return f"{application}-{codebase}-codebase-pipeline-image-build"
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
def get_manual_release_pipeline(codepipeline_client, application, codebase):
|
|
369
|
+
pipeline_name = f"{application}-{codebase}-manual-release"
|
|
370
|
+
try:
|
|
371
|
+
codepipeline_client.get_pipeline(name=pipeline_name)
|
|
372
|
+
return pipeline_name
|
|
373
|
+
except ClientError as e:
|
|
374
|
+
if e.response["Error"]["Code"] == "PipelineNotFoundException":
|
|
375
|
+
return f"{pipeline_name}-pipeline"
|
dbt_platform_helper/utils/git.py
CHANGED
|
@@ -2,10 +2,6 @@ import re
|
|
|
2
2
|
import subprocess
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
class CommitNotFoundException(Exception):
|
|
6
|
-
pass
|
|
7
|
-
|
|
8
|
-
|
|
9
5
|
def git_remote():
|
|
10
6
|
git_repo = subprocess.run(
|
|
11
7
|
["git", "remote", "get-url", "origin"], capture_output=True, text=True
|
|
@@ -17,13 +13,4 @@ def extract_repository_name(repository_url):
|
|
|
17
13
|
if not repository_url:
|
|
18
14
|
return
|
|
19
15
|
|
|
20
|
-
return re.search(r"([^/:]*/[^/]
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def check_if_commit_exists(commit):
|
|
24
|
-
branches_containing_commit = subprocess.run(
|
|
25
|
-
["git", "branch", "-r", "--contains", f"{commit}"], capture_output=True, text=True
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
if branches_containing_commit.stderr:
|
|
29
|
-
raise CommitNotFoundException()
|
|
16
|
+
return re.search(r"([^/:]*/[^/]*?)(?:\.git)?$", repository_url).group(1)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from schema import SchemaError
|
|
2
2
|
|
|
3
|
+
from dbt_platform_helper.entities.platform_config_schema import PlatformConfigSchema
|
|
3
4
|
from dbt_platform_helper.providers.config_validator import ConfigValidator
|
|
4
|
-
from dbt_platform_helper.providers.platform_config_schema import PlatformConfigSchema
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
def validate_addons(addons: dict):
|
|
@@ -1,40 +1,31 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: dbt-platform-helper
|
|
3
|
-
Version:
|
|
3
|
+
Version: 15.16.0
|
|
4
4
|
Summary: Set of tools to help transfer applications/services from GOV.UK PaaS to DBT PaaS augmenting AWS Copilot.
|
|
5
5
|
License: MIT
|
|
6
|
+
License-File: LICENSE
|
|
6
7
|
Author: Department for Business and Trade Platform Team
|
|
7
8
|
Author-email: sre-team@digital.trade.gov.uk
|
|
8
|
-
Requires-Python:
|
|
9
|
+
Requires-Python: >3.9.1,<4.0
|
|
9
10
|
Classifier: License :: OSI Approved :: MIT License
|
|
10
11
|
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.10
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
-
|
|
17
|
-
Requires-Dist:
|
|
18
|
-
Requires-Dist:
|
|
19
|
-
Requires-Dist: boto3 (>=1.28.24,<2.0.0)
|
|
20
|
-
Requires-Dist: boto3-stubs (>=1.26.148,<2.0.0)
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Requires-Dist: Jinja2 (==3.1.6)
|
|
18
|
+
Requires-Dist: boto3 (>=1.35.2,<2.0.0)
|
|
21
19
|
Requires-Dist: botocore (>=1.34.85,<2.0.0)
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist: cfn-flip (==1.3.0)
|
|
24
|
-
Requires-Dist: cfn-lint (>=1.4.2,<2.0.0)
|
|
25
|
-
Requires-Dist: checkov (>=3.1.67,<4.0.0)
|
|
20
|
+
Requires-Dist: cfn-flip (>=1.3.0,<2.0.0)
|
|
26
21
|
Requires-Dist: click (>=8.1.3,<9.0.0)
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist: cryptography (>=41.0.3,<44.0.0)
|
|
29
|
-
Requires-Dist: jinja2-simple-tags (>=0.5.0,<0.6.0)
|
|
30
|
-
Requires-Dist: jsonschema (>=4.17.0,<4.18.0)
|
|
31
|
-
Requires-Dist: mypy-boto3-codebuild (>=1.26.0.post1,<2.0.0)
|
|
22
|
+
Requires-Dist: jinja2-simple-tags (>=0.5,<0.7)
|
|
32
23
|
Requires-Dist: prettytable (>=3.9.0,<4.0.0)
|
|
24
|
+
Requires-Dist: psycopg2-binary (>=2.9.9,<3.0.0)
|
|
25
|
+
Requires-Dist: pydantic (>=2.11.7,<3.0.0)
|
|
33
26
|
Requires-Dist: requests (>=2.31.0,<3.0.0)
|
|
34
27
|
Requires-Dist: schema (==0.7.5)
|
|
35
|
-
Requires-Dist: semver (>=3.0.2,<4.0.0)
|
|
36
28
|
Requires-Dist: slack-sdk (>=3.27.1,<4.0.0)
|
|
37
|
-
Requires-Dist: tomlkit (>=0.12.2,<0.13.0)
|
|
38
29
|
Requires-Dist: yamllint (>=1.35.1,<2.0.0)
|
|
39
30
|
Description-Content-Type: text/markdown
|
|
40
31
|
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
dbt_platform_helper/COMMANDS.md,sha256=RdSHUelcM4TsBpVQJQ5WYcVhYMDjOaVJekWQLcH7v5Y,24617
|
|
2
|
+
dbt_platform_helper/README.md,sha256=B0qN2_u_ASqqgkGDWY2iwNGZt_9tUgMb9XqtaTuzYjw,1530
|
|
3
|
+
dbt_platform_helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
dbt_platform_helper/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
dbt_platform_helper/commands/application.py,sha256=GefE6MHuIdERUvd39K_3a-2v6VZUFQIS6F1U0GMXdAc,10156
|
|
6
|
+
dbt_platform_helper/commands/codebase.py,sha256=oNlZcP2w3XE5YP-JVl0rdqoJuXUrfe1ELZ5xAdgPvBk,3166
|
|
7
|
+
dbt_platform_helper/commands/conduit.py,sha256=GVDX2QjeGCxgN0otWOPivo0jyoE0CjnBz3VCDx9s-po,2313
|
|
8
|
+
dbt_platform_helper/commands/config.py,sha256=4pgGgaH7Mp93UWdVoqZDc2eAmjsP7Yw1jjsviNWXsks,1442
|
|
9
|
+
dbt_platform_helper/commands/copilot.py,sha256=L9UUuqD62q0aFrTTEUla3A1WJBz-vFBfVi6p455TTgQ,1458
|
|
10
|
+
dbt_platform_helper/commands/database.py,sha256=2RJZEzaSqcNtDG1M2mZw-nB6agAd3GNAJsg2pjFF7vc,4407
|
|
11
|
+
dbt_platform_helper/commands/environment.py,sha256=y6RYaYPIeeAAac0c34sdhCT3YFcN4p_IeC4AgJ4X4LY,4059
|
|
12
|
+
dbt_platform_helper/commands/generate.py,sha256=Ix3hkfE6xvtTupfszcLB5HQBlN9aAAfDUihTQLtLNZE,588
|
|
13
|
+
dbt_platform_helper/commands/internal.py,sha256=F-Am1v7V4GGJIJAho68-LKWRuSuyolnkLVrUyOcoIuI,5042
|
|
14
|
+
dbt_platform_helper/commands/notify.py,sha256=DMXA0AHot6-7CMzmY0PXPMMBVnLgvQgXr6np6OnSQh4,3401
|
|
15
|
+
dbt_platform_helper/commands/pipeline.py,sha256=16h4OioqP-0IhW5fITyjKOwFC8FzY5ex_b3L0y_yPrw,2944
|
|
16
|
+
dbt_platform_helper/commands/secrets.py,sha256=A_mKgJhIrDCrMB7bFq008Btbj2gOUFXCEtfFrHDhPVk,2244
|
|
17
|
+
dbt_platform_helper/commands/version.py,sha256=obKl3D5noQfIN4jyM_Y1QD5yJ5jzsgWF0iThWtRJrZ8,1118
|
|
18
|
+
dbt_platform_helper/constants.py,sha256=zkemUFHYAQCteVwCxhMIPtPiAUFO9tfnnuRlLZk6KEs,3019
|
|
19
|
+
dbt_platform_helper/default-extensions.yml,sha256=SU1ZitskbuEBpvE7efc3s56eAUF11j70brhj_XrNMMo,493
|
|
20
|
+
dbt_platform_helper/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
+
dbt_platform_helper/domain/codebase.py,sha256=2hJoBiDB2ciOudT_YUR44XV0ZQPWUJld_UIuds4XOt8,12481
|
|
22
|
+
dbt_platform_helper/domain/conduit.py,sha256=AlGk4V4GhJ-d-MKTSwjBAeqjjakb6qesuSqB561Btwo,13042
|
|
23
|
+
dbt_platform_helper/domain/config.py,sha256=tLDX3oDMicduN0MH3RZxiK7aBG1U1-BXyG8y6U1pbqI,14877
|
|
24
|
+
dbt_platform_helper/domain/copilot.py,sha256=g8W2LaskyhOvtNoCoNbwucGTrfdAzj-AJ0J98tgLbhA,15138
|
|
25
|
+
dbt_platform_helper/domain/copilot_environment.py,sha256=fL3XJCOfO0BJRCrCoBPFCcshrQoX1FeSYNTziOEaH4A,9093
|
|
26
|
+
dbt_platform_helper/domain/database_copy.py,sha256=4A84xqj3c_VjYlXb81B8Kt8us8IcCQVVF6GyPAAmwyo,9638
|
|
27
|
+
dbt_platform_helper/domain/maintenance_page.py,sha256=FtDQ43Wye_z8MlkT7pGButwHRPFJX9nfVOPr6BDRfJk,15958
|
|
28
|
+
dbt_platform_helper/domain/notify.py,sha256=_BWj5znDWtrSdJ5xzDBgnao4ukliBA5wiUZGobIDyiI,1894
|
|
29
|
+
dbt_platform_helper/domain/pipelines.py,sha256=QIPjCwhylKZ08Orw_IjTRoVNlSaXV0e1Xjpfc7rBMRE,6841
|
|
30
|
+
dbt_platform_helper/domain/plans.py,sha256=X5-jKGiJDVWn0CRH1k5aV74fTH0E41HqFQcCo5kB4hI,1160
|
|
31
|
+
dbt_platform_helper/domain/secrets.py,sha256=NyEsJcCg6vDcpblUp9ijsSC8ySy4O0f37KkRPZH2EKk,11637
|
|
32
|
+
dbt_platform_helper/domain/service.py,sha256=ev1I_QTFUL_HCa9Vwxf0UoSsIiVM-WRb8LXYfsn8cJE,26747
|
|
33
|
+
dbt_platform_helper/domain/terraform_environment.py,sha256=kolfakum9DvnOC5xcLMfZSxvXrqc1AsS5fyP0qagpGY,1663
|
|
34
|
+
dbt_platform_helper/domain/update_alb_rules.py,sha256=hOg0qJrQVXI5NZl8UdVq3S46r0yAB3Wn-sufXr116ms,17366
|
|
35
|
+
dbt_platform_helper/domain/versioning.py,sha256=dl8iD-I3DnHGvPrrr1mxrqwfgxA4oO9j2OATA-GgZfc,10450
|
|
36
|
+
dbt_platform_helper/entities/platform_config_schema.py,sha256=OJlPMBkV2h8HbxSui-c6CXoqAAg2UN-V2Lq5qn5SwxY,27533
|
|
37
|
+
dbt_platform_helper/entities/semantic_version.py,sha256=9vV44HoPltkWPq9_1C5SbfvcVRlXFi1aUftHsYgqEcA,2735
|
|
38
|
+
dbt_platform_helper/entities/service.py,sha256=B7yNjcRkKLG3tcZiAP0CcfdcKCVsZxmWyt2Tk4CNkME,14016
|
|
39
|
+
dbt_platform_helper/jinja2_tags.py,sha256=hKG6RS3zlxJHQ-Op9r2U2-MhWp4s3lZir4Ihe24ApJ0,540
|
|
40
|
+
dbt_platform_helper/platform_exception.py,sha256=HGfCYRD20REsynqMKmyZndTfdkMd5dLSIEB2qGGCeP8,244
|
|
41
|
+
dbt_platform_helper/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
|
+
dbt_platform_helper/providers/autoscaling.py,sha256=ZUBFRJ1ed7N_pckXb0rvvn5ZvylEUt1bf05Pkgr9s_s,824
|
|
43
|
+
dbt_platform_helper/providers/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
+
dbt_platform_helper/providers/aws/exceptions.py,sha256=88EA__k0Rg3PrHw_Oq2ZiPfA34vcQO_mqN2Cbg2I7s0,2528
|
|
45
|
+
dbt_platform_helper/providers/aws/interfaces.py,sha256=0JFggcUTJ8zERdxNVVpIiKvaaZeT2c-VECDG--MOi8E,285
|
|
46
|
+
dbt_platform_helper/providers/aws/opensearch.py,sha256=Qne2SoPllmacVSc7AxtjBlEbSBsRMbR_ySEkEymSF9k,581
|
|
47
|
+
dbt_platform_helper/providers/aws/redis.py,sha256=i3Kb00_BdqssjQg1wgZ-8GRXcEWQiORWnIEq6qkAXjQ,551
|
|
48
|
+
dbt_platform_helper/providers/aws/sso_auth.py,sha256=fl1WSmhpyt8WZAe6EY5WDA33nEPrIIQzO-DVuWlFjsA,2844
|
|
49
|
+
dbt_platform_helper/providers/cache.py,sha256=1hEwp0y9WYbEfgsp-RU9MyzIgCt1-4BxApgd_0uVweE,3615
|
|
50
|
+
dbt_platform_helper/providers/cloudformation.py,sha256=syMH6xc-ALRbsYQvlw9RcjX7c1MufFzwEdEzp_ucWig,5359
|
|
51
|
+
dbt_platform_helper/providers/config.py,sha256=8MDDIx4WreVFvDGPW5or2CcM19B_pYlzppGz42tydfw,10461
|
|
52
|
+
dbt_platform_helper/providers/config_validator.py,sha256=LVuELR3L0xxh1gHgXDmM5XZwpKJxhLzmA_43nEWOQu8,14170
|
|
53
|
+
dbt_platform_helper/providers/copilot.py,sha256=voFVGhvtOElulx6Cgd1KQGkybrg8v4oGkJTr_xRpF18,5582
|
|
54
|
+
dbt_platform_helper/providers/ecr.py,sha256=eYXSY1-pFN6F3Es1WSZgv3dmvX2oD-baqhHDO-QzgVg,4382
|
|
55
|
+
dbt_platform_helper/providers/ecs.py,sha256=H_Pq7_mgSKsTbW3OS8-mPLPDmFTDOPL91GAcIhKoEmE,10974
|
|
56
|
+
dbt_platform_helper/providers/environment_variable.py,sha256=PopMLKnWcoObQrgg7xSEb-pzVT54_QGFsb_HtL_9YU8,794
|
|
57
|
+
dbt_platform_helper/providers/files.py,sha256=sH02Ka_WaDBFtN4Y0i9kuo9YQoKn2rhUy0Dn8LPMrEw,857
|
|
58
|
+
dbt_platform_helper/providers/io.py,sha256=Xal6Moq-Lg9x2udW_hLFynondMYM3GTp-WQkTPAkres,1997
|
|
59
|
+
dbt_platform_helper/providers/kms.py,sha256=JR2EU3icXePoJCtr7QnqDPj1wWbyn5Uf9CRFq3_4lRs,647
|
|
60
|
+
dbt_platform_helper/providers/load_balancers.py,sha256=E6XWs6D3Y0AJjGwH0kFMbhhs9sI48p5m3BIF2dXF6rs,15792
|
|
61
|
+
dbt_platform_helper/providers/logs.py,sha256=C4lEnct-dgC6tdZGNdC8S0To8W0BErWqBX5fztjy1Zw,2684
|
|
62
|
+
dbt_platform_helper/providers/parameter_store.py,sha256=q-BZKMQIqerea_lB-jZtycHwweSzehx7tca8Gv9IfFM,4238
|
|
63
|
+
dbt_platform_helper/providers/s3.py,sha256=A-0sfQuHBbfRJ1txNQ_NXTrqNRrvw4LTZVaxK08q8I4,661
|
|
64
|
+
dbt_platform_helper/providers/schema_migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
|
+
dbt_platform_helper/providers/schema_migrations/schema_v0_to_v1_migration.py,sha256=dplbvEAc8l8F4dEAy3JwLP1Phjkt4QVuQYNX_EKe_Ls,2036
|
|
66
|
+
dbt_platform_helper/providers/schema_migrator.py,sha256=qk14k3hMz1av9VrxHyJw2OKJLQnCBv_ugOoxZr3tFXQ,2854
|
|
67
|
+
dbt_platform_helper/providers/secrets.py,sha256=mOTIrcRRxxV2tS40U8onAjWekfPS3NzCvvyCMjr_yrU,5327
|
|
68
|
+
dbt_platform_helper/providers/slack_channel_notifier.py,sha256=G8etEcaBQSNHg8BnyC5UPv6l3vUB14cYWjcaAQksaEk,2135
|
|
69
|
+
dbt_platform_helper/providers/terraform_manifest.py,sha256=4dH1AATmuAVMY-RHX8b9PI1uYRSWYw7h7jkuJAeZO6g,14160
|
|
70
|
+
dbt_platform_helper/providers/validation.py,sha256=i2g-Mrd4hy_fGIfGa6ZQy4vTJ40OM44Fe_XpEifGWxs,126
|
|
71
|
+
dbt_platform_helper/providers/version.py,sha256=QNGrV5nyJi0JysXowYUU4OrXGDn27WmFezlV8benpdY,4251
|
|
72
|
+
dbt_platform_helper/providers/version_status.py,sha256=qafnhZrEc9k1cvXJpvJhkGj6WtkzcsoQhqS_Y6JXy48,929
|
|
73
|
+
dbt_platform_helper/providers/vpc.py,sha256=KdgwyHv2RwNpq16Sa2FtWm7DMJlTNmsPbXkbMNMYiQo,4082
|
|
74
|
+
dbt_platform_helper/providers/yaml_file.py,sha256=zd0j7bDow4xI0dPGugiT11xa1reSc9xkf1ms0ZKLlCU,4300
|
|
75
|
+
dbt_platform_helper/templates/.copilot/config.yml,sha256=J_bA9sCtBdCPBRImpCBRnYvhQd4vpLYIXIU-lq9vbkA,158
|
|
76
|
+
dbt_platform_helper/templates/.copilot/image_build_run.sh,sha256=adYucYXEB-kAgZNjTQo0T6EIAY8sh_xCEvVhWKKQ8mw,164
|
|
77
|
+
dbt_platform_helper/templates/.copilot/phases/build.sh,sha256=umKXePcRvx4XyrRY0fAWIyYFtNjqBI2L8vIJk-V7C60,121
|
|
78
|
+
dbt_platform_helper/templates/.copilot/phases/install.sh,sha256=pNkEnZBnM4-n1MBzLdPC86YG4Sgj3X7yeQt-swwCunc,123
|
|
79
|
+
dbt_platform_helper/templates/.copilot/phases/post_build.sh,sha256=qdfaViaaPpnjHxI2Uap9DffM0OcV-FYXk7slT51b_vU,126
|
|
80
|
+
dbt_platform_helper/templates/.copilot/phases/pre_build.sh,sha256=rzyjyf7Y7LHH7h-Vv_J--QaR7-dTS_5G-R4iE_9mpQI,836
|
|
81
|
+
dbt_platform_helper/templates/COMMANDS.md.jinja,sha256=8ja7ZGuy1lCP_SWlYrWie---oeO5ucyxfLJkkgwEJ_M,1138
|
|
82
|
+
dbt_platform_helper/templates/addon-instructions.txt,sha256=Dhd1xDbFKnX7xjfCz0W52P6PqPI9M8dyoxoSHAY2fao,597
|
|
83
|
+
dbt_platform_helper/templates/addons/README.md,sha256=UdVydY2ocm1OLKecZ8MAiXet3rKsMiq0PpBrmi0Xrns,412
|
|
84
|
+
dbt_platform_helper/templates/addons/svc/appconfig-ipfilter.yml,sha256=nBIXV4um4jIvXs3Q5QycHqVpJODK5yg_M-xJT6AOBKE,977
|
|
85
|
+
dbt_platform_helper/templates/addons/svc/prometheus-policy.yml,sha256=PwkGwri6IUuullXjEu17RZWYdoJR45Eb7BdUb2_AdOA,1074
|
|
86
|
+
dbt_platform_helper/templates/addons/svc/s3-cross-account-policy.yml,sha256=tZQ5XNIMPxv55Ilu0fIcc1I57dzDaQIQImhfsrijpQY,2211
|
|
87
|
+
dbt_platform_helper/templates/addons/svc/s3-policy.yml,sha256=jwTpFNmm8CaP0c6VXXBJvEm_YLA17Nf-S1xyU1ahLJ8,2164
|
|
88
|
+
dbt_platform_helper/templates/addons/svc/subscription-filter.yml,sha256=irD0AjPc38xTRzEday2Ko-KrjK4hPlyLxUFvUITjMkU,914
|
|
89
|
+
dbt_platform_helper/templates/ci-codebuild-role-policy.json,sha256=hNE-wGrraWxsJAWE9ahtL7Bkw7PEz-CXBQnM3DR70vQ,1836
|
|
90
|
+
dbt_platform_helper/templates/create-codebuild-role.json,sha256=THJgIKi8rWwDzhg5ZxT8a0UkXKBfXZ-zsXm8St_ixPg,197
|
|
91
|
+
dbt_platform_helper/templates/custom-codebuild-role-policy.json,sha256=8xyCofilPhV1Yjt3OnQLcI2kZ35mk2c07GcqYrKxuoI,1180
|
|
92
|
+
dbt_platform_helper/templates/env/manifest.yml,sha256=VCEj_y3jdfnPYi6gmyrwiEqzHYjpaJDANbvswmkiLA0,802
|
|
93
|
+
dbt_platform_helper/templates/env/terraform-overrides/cfn.patches.yml,sha256=cFlg69fvi9kzpz13ZAeY1asseZ6TuUex-6s76jG3oL4,259
|
|
94
|
+
dbt_platform_helper/templates/environment-pipelines/main.tf,sha256=ZjYx-gvXuQ5lOgg3imJj6NmMKpxdjxrKgGK0VYu_VLE,1883
|
|
95
|
+
dbt_platform_helper/templates/svc/maintenance_pages/default.html,sha256=OTZ-qwwSXu7PFbsgp4kppdm1lsg_iHK7FCFqhPnvrEs,741
|
|
96
|
+
dbt_platform_helper/templates/svc/maintenance_pages/dmas-migration.html,sha256=qvI6tHuI0UQbMBCuvPgK1a_zLANB6w7KVo9N5d8r-i0,829
|
|
97
|
+
dbt_platform_helper/templates/svc/maintenance_pages/migration.html,sha256=GiQsOiuaMFb7jG5_wU3V7BMcByHBl9fOBgrNf8quYlw,783
|
|
98
|
+
dbt_platform_helper/templates/svc/overrides/cfn.patches.yml,sha256=EdzEo-utytsye4Ck3bVSK8SuKdwUhX7HtQGdvTvHfps,824
|
|
99
|
+
dbt_platform_helper/utilities/decorators.py,sha256=rS6ohsuo0bc6fkZP98Qwaeh0c_v2MDqn9hCvqfoz2w8,3548
|
|
100
|
+
dbt_platform_helper/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
101
|
+
dbt_platform_helper/utils/application.py,sha256=DGRSuF0eYs8sf5e6thb7yXFCaQZCeVpB0vODPAVQc7w,8416
|
|
102
|
+
dbt_platform_helper/utils/arn_parser.py,sha256=BaXzIxSOLdFmP_IfAxRq-0j-0Re1iCN7L4j2Zi5-CRQ,1304
|
|
103
|
+
dbt_platform_helper/utils/aws.py,sha256=5jjIx7Qo3GO4cUe_J9uLLr4lMF8ZTplyFABZoVW8lPU,12789
|
|
104
|
+
dbt_platform_helper/utils/click.py,sha256=Fx4y4bbve1zypvog_sgK7tJtCocmzheoEFLBRv1lfdM,2943
|
|
105
|
+
dbt_platform_helper/utils/deep_merge.py,sha256=2N0Gg2SsFHzwyNNLFm2Q8d4C9PPFsDsaWYzjDO1OpaI,280
|
|
106
|
+
dbt_platform_helper/utils/git.py,sha256=oRgp2xNTbyANoowXLdV4mUjaB8tpwItxVVCEepJ6G8E,391
|
|
107
|
+
dbt_platform_helper/utils/messages.py,sha256=nWA7BWLb7ND0WH5TejDN4OQUJSKYBxU4tyCzteCrfT0,142
|
|
108
|
+
dbt_platform_helper/utils/template.py,sha256=g-Db-0I6a6diOHkgK1nYA0IxJSO4TRrjqOvlyeOR32o,950
|
|
109
|
+
dbt_platform_helper/utils/validation.py,sha256=W5jKC2zp5Q7cJ0PT57GB-s9FkJXrNt1jmWojXRFymcY,1187
|
|
110
|
+
platform_helper.py,sha256=JKfXj2lptIc2CRHxo8u79kDKQH_IRV3jwPaL8T-1aAs,2052
|
|
111
|
+
terraform/elasticache-redis/plans.yml,sha256=efJfkLuLC_5TwhLb9DalKHOuZFO79y6iei6Dg_tqKjI,1831
|
|
112
|
+
terraform/opensearch/plans.yml,sha256=lQbUSNMGfvUeDMcGx8mSwzGQhMJU3EZ4J4tPzPKaq6c,1471
|
|
113
|
+
terraform/postgres/plans.yml,sha256=plwCklW1VB_tNJFyUduRMZx9UANgiWH_7TGLWUaUEus,2553
|
|
114
|
+
dbt_platform_helper-15.16.0.dist-info/METADATA,sha256=EMaT0-gjUxfg_lnAlA2PoWtFFJe37Z6akVz08RIimMA,2802
|
|
115
|
+
dbt_platform_helper-15.16.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
116
|
+
dbt_platform_helper-15.16.0.dist-info/entry_points.txt,sha256=QhbY8F434A-onsg0-FsdMd2U6HKh6Q7yCFFZrGUh5-M,67
|
|
117
|
+
dbt_platform_helper-15.16.0.dist-info/licenses/LICENSE,sha256=dP79lN73--7LMApnankTGLqDbImXg8iYFqWgnExGkGk,1090
|
|
118
|
+
dbt_platform_helper-15.16.0.dist-info/RECORD,,
|
platform_helper.py
CHANGED
|
@@ -12,6 +12,7 @@ from dbt_platform_helper.commands.copilot import copilot as copilot_commands
|
|
|
12
12
|
from dbt_platform_helper.commands.database import database as database_commands
|
|
13
13
|
from dbt_platform_helper.commands.environment import environment as environment_commands
|
|
14
14
|
from dbt_platform_helper.commands.generate import generate as generate_commands
|
|
15
|
+
from dbt_platform_helper.commands.internal import internal as internal_commands
|
|
15
16
|
from dbt_platform_helper.commands.notify import notify as notify_commands
|
|
16
17
|
from dbt_platform_helper.commands.pipeline import pipeline as pipeline_commands
|
|
17
18
|
from dbt_platform_helper.commands.secrets import secrets as secrets_commands
|
|
@@ -35,6 +36,7 @@ platform_helper.add_command(config_commands)
|
|
|
35
36
|
platform_helper.add_command(copilot_commands)
|
|
36
37
|
platform_helper.add_command(environment_commands)
|
|
37
38
|
platform_helper.add_command(generate_commands)
|
|
39
|
+
platform_helper.add_command(internal_commands)
|
|
38
40
|
platform_helper.add_command(pipeline_commands)
|
|
39
41
|
platform_helper.add_command(secrets_commands)
|
|
40
42
|
platform_helper.add_command(notify_commands)
|
|
@@ -42,4 +44,4 @@ platform_helper.add_command(database_commands)
|
|
|
42
44
|
platform_helper.add_command(version_commands)
|
|
43
45
|
|
|
44
46
|
if __name__ == "__main__":
|
|
45
|
-
platform_helper()
|
|
47
|
+
platform_helper(auto_envvar_prefix="DBT_PLATFORM")
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# t-shirt sizes for ElastiCache Redis
|
|
2
|
+
|
|
3
|
+
# 0.5GB RAM, single node, no failover.
|
|
4
|
+
micro:
|
|
5
|
+
replicas: 0
|
|
6
|
+
instance: cache.t4g.micro
|
|
7
|
+
automatic_failover_enabled: false
|
|
8
|
+
multi_az_enabled: false
|
|
9
|
+
|
|
10
|
+
# 0.5GB RAM, highly-available.
|
|
11
|
+
micro-ha:
|
|
12
|
+
replicas: 2
|
|
13
|
+
instance: cache.t4g.micro
|
|
14
|
+
automatic_failover_enabled: true
|
|
15
|
+
multi_az_enabled: true
|
|
16
|
+
|
|
17
|
+
# 1.37GB RAM, single node, no failover.
|
|
18
|
+
tiny:
|
|
19
|
+
replicas: 0
|
|
20
|
+
instance: cache.t4g.small
|
|
21
|
+
automatic_failover_enabled: false
|
|
22
|
+
multi_az_enabled: false
|
|
23
|
+
|
|
24
|
+
# 1.37GB RAM, highly-available
|
|
25
|
+
tiny-ha:
|
|
26
|
+
replicas: 2
|
|
27
|
+
instance: cache.t4g.small
|
|
28
|
+
automatic_failover_enabled: true
|
|
29
|
+
multi_az_enabled: true
|
|
30
|
+
|
|
31
|
+
# 3.09GB RAM, single node, no failover.
|
|
32
|
+
small:
|
|
33
|
+
replicas: 0
|
|
34
|
+
instance: cache.t4g.medium
|
|
35
|
+
automatic_failover_enabled: false
|
|
36
|
+
multi_az_enabled: false
|
|
37
|
+
|
|
38
|
+
# 3.09GB RAM, highly-available
|
|
39
|
+
small-ha:
|
|
40
|
+
replicas: 2
|
|
41
|
+
instance: cache.t4g.medium
|
|
42
|
+
automatic_failover_enabled: true
|
|
43
|
+
multi_az_enabled: true
|
|
44
|
+
|
|
45
|
+
# 6.38GB RAM, single node, no failover.
|
|
46
|
+
medium:
|
|
47
|
+
replicas: 0
|
|
48
|
+
instance: cache.m6g.large
|
|
49
|
+
automatic_failover_enabled: false
|
|
50
|
+
multi_az_enabled: false
|
|
51
|
+
|
|
52
|
+
# 6.38GB RAM, highly-available
|
|
53
|
+
medium-ha:
|
|
54
|
+
replicas: 2
|
|
55
|
+
instance: 'cache.m6g.large'
|
|
56
|
+
automatic_failover_enabled: true
|
|
57
|
+
multi_az_enabled: true
|
|
58
|
+
|
|
59
|
+
# 12.93GB RAM, single node, no failover.
|
|
60
|
+
large:
|
|
61
|
+
replicas: 0
|
|
62
|
+
instance: cache.m6g.xlarge
|
|
63
|
+
automatic_failover_enabled: false
|
|
64
|
+
multi_az_enabled: false
|
|
65
|
+
|
|
66
|
+
# 12.93GB RAM, highly-available
|
|
67
|
+
large-ha:
|
|
68
|
+
replicas: 2
|
|
69
|
+
instance: cache.m6g.xlarge
|
|
70
|
+
automatic_failover_enabled: true
|
|
71
|
+
multi_az_enabled: true
|
|
72
|
+
|
|
73
|
+
# 26.04GB RAM, single node, no failover.
|
|
74
|
+
x-large:
|
|
75
|
+
replicas: 0
|
|
76
|
+
instance: cache.m6g.2xlarge
|
|
77
|
+
automatic_failover_enabled: false
|
|
78
|
+
multi_az_enabled: false
|
|
79
|
+
|
|
80
|
+
# 26.04GB RAM, highly-available
|
|
81
|
+
x-large-ha:
|
|
82
|
+
replicas: 2
|
|
83
|
+
instance: cache.m6g.2xlarge
|
|
84
|
+
automatic_failover_enabled: true
|
|
85
|
+
multi_az_enabled: true
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# t-shirt sizes for OpenSearch
|
|
2
|
+
|
|
3
|
+
# 2 vCPU, 2GB RAM, volume size range 10-100GB
|
|
4
|
+
tiny:
|
|
5
|
+
volume_size: 80
|
|
6
|
+
instances: 1
|
|
7
|
+
instance: t3.small.search
|
|
8
|
+
enable_ha: false
|
|
9
|
+
|
|
10
|
+
# 2 vCPU, 2GB RAM, volume size range 10-100GB
|
|
11
|
+
tiny-ha:
|
|
12
|
+
volume_size: 80
|
|
13
|
+
instances: 2
|
|
14
|
+
instance: t3.small.search
|
|
15
|
+
enable_ha: true
|
|
16
|
+
|
|
17
|
+
# 2 vCPU, 4GB RAM, volume size range 10-200GB
|
|
18
|
+
small:
|
|
19
|
+
volume_size: 200
|
|
20
|
+
instances: 1
|
|
21
|
+
instance: t3.medium.search
|
|
22
|
+
enable_ha: false
|
|
23
|
+
|
|
24
|
+
# 2 nodes with 2 vCPU, 4GB RAM, volume size range 10-200GB
|
|
25
|
+
small-ha:
|
|
26
|
+
volume_size: 200
|
|
27
|
+
instances: 2
|
|
28
|
+
instance: t3.medium.search
|
|
29
|
+
enable_ha: true
|
|
30
|
+
|
|
31
|
+
# 2 vCPU, 8GB RAM, volume size range 10-512GB
|
|
32
|
+
medium:
|
|
33
|
+
volume_size: 512
|
|
34
|
+
instances: 1
|
|
35
|
+
instance: m6g.large.search
|
|
36
|
+
enable_ha: false
|
|
37
|
+
|
|
38
|
+
# 2 nodes with 2 vCPU, 8GB RAM, volume size range 10-512GB
|
|
39
|
+
medium-ha:
|
|
40
|
+
volume_size: 512
|
|
41
|
+
instances: 2
|
|
42
|
+
instance: m6g.large.search
|
|
43
|
+
enable_ha: true
|
|
44
|
+
|
|
45
|
+
# 4 vCPU, 16GB RAM, volume size range 10-1000GB
|
|
46
|
+
large:
|
|
47
|
+
volume_size: 1000
|
|
48
|
+
instances: 1
|
|
49
|
+
instance: m6g.xlarge.search
|
|
50
|
+
enable_ha: false
|
|
51
|
+
|
|
52
|
+
# 2 nodes with 4 vCPU, 16GB RAM, volume size range 10-1000GB
|
|
53
|
+
large-ha:
|
|
54
|
+
volume_size: 1000
|
|
55
|
+
instances: 2
|
|
56
|
+
instance: m6g.xlarge.search
|
|
57
|
+
enable_ha: true
|
|
58
|
+
|
|
59
|
+
# 8 vCPU, 32GB RAM, volume size range 10-1500GB
|
|
60
|
+
x-large:
|
|
61
|
+
volume_size: 1500
|
|
62
|
+
instances: 1
|
|
63
|
+
instance: m6g.2xlarge.search
|
|
64
|
+
enable_ha: false
|
|
65
|
+
|
|
66
|
+
# 2 nodes with 8 vCPU, 32GB RAM, volume size range 10-1500GB
|
|
67
|
+
x-large-ha:
|
|
68
|
+
volume_size: 1500
|
|
69
|
+
instances: 2
|
|
70
|
+
instance: m6g.2xlarge.search
|
|
71
|
+
enable_ha: true
|