dbt-platform-helper 12.2.4__py3-none-any.whl → 12.4.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.
Potentially problematic release.
This version of dbt-platform-helper might be problematic. Click here for more details.
- dbt_platform_helper/COMMANDS.md +6 -1
- dbt_platform_helper/commands/codebase.py +9 -80
- dbt_platform_helper/commands/conduit.py +25 -45
- dbt_platform_helper/commands/config.py +4 -4
- dbt_platform_helper/commands/copilot.py +13 -15
- dbt_platform_helper/commands/database.py +17 -4
- dbt_platform_helper/commands/environment.py +3 -2
- dbt_platform_helper/commands/secrets.py +1 -1
- dbt_platform_helper/domain/codebase.py +81 -63
- dbt_platform_helper/domain/conduit.py +42 -93
- dbt_platform_helper/domain/database_copy.py +48 -42
- dbt_platform_helper/domain/maintenance_page.py +8 -8
- dbt_platform_helper/platform_exception.py +5 -0
- dbt_platform_helper/providers/aws.py +32 -0
- dbt_platform_helper/providers/cloudformation.py +129 -100
- dbt_platform_helper/providers/copilot.py +33 -16
- dbt_platform_helper/providers/ecs.py +97 -74
- dbt_platform_helper/providers/load_balancers.py +11 -5
- dbt_platform_helper/providers/secrets.py +100 -59
- dbt_platform_helper/providers/validation.py +19 -0
- dbt_platform_helper/utils/application.py +14 -2
- dbt_platform_helper/utils/arn_parser.py +1 -1
- dbt_platform_helper/utils/aws.py +38 -12
- dbt_platform_helper/utils/git.py +2 -2
- dbt_platform_helper/utils/validation.py +57 -18
- dbt_platform_helper/utils/versioning.py +8 -8
- {dbt_platform_helper-12.2.4.dist-info → dbt_platform_helper-12.4.0.dist-info}/METADATA +1 -1
- {dbt_platform_helper-12.2.4.dist-info → dbt_platform_helper-12.4.0.dist-info}/RECORD +31 -30
- dbt_platform_helper/addons-template-map.yml +0 -29
- dbt_platform_helper/exceptions.py +0 -81
- {dbt_platform_helper-12.2.4.dist-info → dbt_platform_helper-12.4.0.dist-info}/LICENSE +0 -0
- {dbt_platform_helper-12.2.4.dist-info → dbt_platform_helper-12.4.0.dist-info}/WHEEL +0 -0
- {dbt_platform_helper-12.2.4.dist-info → dbt_platform_helper-12.4.0.dist-info}/entry_points.txt +0 -0
dbt_platform_helper/utils/aws.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import os
|
|
3
|
+
import time
|
|
3
4
|
import urllib.parse
|
|
4
5
|
from configparser import ConfigParser
|
|
5
6
|
from pathlib import Path
|
|
@@ -12,10 +13,12 @@ import click
|
|
|
12
13
|
import yaml
|
|
13
14
|
from boto3 import Session
|
|
14
15
|
|
|
15
|
-
from dbt_platform_helper.
|
|
16
|
-
from dbt_platform_helper.
|
|
17
|
-
from dbt_platform_helper.
|
|
18
|
-
from dbt_platform_helper.
|
|
16
|
+
from dbt_platform_helper.platform_exception import PlatformException
|
|
17
|
+
from dbt_platform_helper.providers.aws import AWSException
|
|
18
|
+
from dbt_platform_helper.providers.aws import CopilotCodebaseNotFoundException
|
|
19
|
+
from dbt_platform_helper.providers.aws import ImageNotFoundException
|
|
20
|
+
from dbt_platform_helper.providers.aws import LogGroupNotFoundException
|
|
21
|
+
from dbt_platform_helper.providers.validation import ValidationException
|
|
19
22
|
from dbt_platform_helper.utils.files import cache_refresh_required
|
|
20
23
|
from dbt_platform_helper.utils.files import read_supported_versions_from_cache
|
|
21
24
|
from dbt_platform_helper.utils.files import write_to_cache
|
|
@@ -93,7 +96,7 @@ def _log_account_info(account_name: list, account_id: str) -> None:
|
|
|
93
96
|
)
|
|
94
97
|
|
|
95
98
|
|
|
96
|
-
class
|
|
99
|
+
class NoProfileForAccountIdException(PlatformException):
|
|
97
100
|
def __init__(self, account_id):
|
|
98
101
|
super().__init__(f"No profile found for account {account_id}")
|
|
99
102
|
|
|
@@ -108,7 +111,7 @@ def get_profile_name_from_account_id(account_id: str):
|
|
|
108
111
|
if account_id == found_account_id:
|
|
109
112
|
return section.removeprefix("profile ")
|
|
110
113
|
|
|
111
|
-
raise
|
|
114
|
+
raise NoProfileForAccountIdException(account_id)
|
|
112
115
|
|
|
113
116
|
|
|
114
117
|
def get_ssm_secret_names(app, env):
|
|
@@ -340,6 +343,7 @@ def get_load_balancer_configuration(
|
|
|
340
343
|
|
|
341
344
|
|
|
342
345
|
def get_postgres_connection_data_updated_with_master_secret(session, parameter_name, secret_arn):
|
|
346
|
+
# Todo: This is pretty much the same as dbt_platform_helper.providers.secrets.Secrets.get_postgres_connection_data_updated_with_master_secret
|
|
343
347
|
ssm_client = session.client("ssm")
|
|
344
348
|
secrets_manager_client = session.client("secretsmanager")
|
|
345
349
|
response = ssm_client.get_parameter(Name=parameter_name, WithDecryption=True)
|
|
@@ -414,7 +418,7 @@ def get_connection_string(
|
|
|
414
418
|
app: str,
|
|
415
419
|
env: str,
|
|
416
420
|
db_identifier: str,
|
|
417
|
-
|
|
421
|
+
connection_data=get_postgres_connection_data_updated_with_master_secret,
|
|
418
422
|
) -> str:
|
|
419
423
|
addon_name = db_identifier.split(f"{app}-{env}-", 1)[1]
|
|
420
424
|
normalised_addon_name = addon_name.replace("-", "_").upper()
|
|
@@ -426,7 +430,7 @@ def get_connection_string(
|
|
|
426
430
|
Name=master_secret_name, WithDecryption=True
|
|
427
431
|
)["Parameter"]["Value"]
|
|
428
432
|
|
|
429
|
-
conn =
|
|
433
|
+
conn = connection_data(session, connection_string_parameter, master_secret_arn)
|
|
430
434
|
|
|
431
435
|
return f"postgres://{conn['username']}:{conn['password']}@{conn['host']}:{conn['port']}/{conn['dbname']}"
|
|
432
436
|
|
|
@@ -485,8 +489,10 @@ def start_build_extraction(codebuild_client, build_options):
|
|
|
485
489
|
return response["build"]["arn"]
|
|
486
490
|
|
|
487
491
|
|
|
492
|
+
# Todo: This should probably be in the AWS Copilot provider
|
|
488
493
|
def check_codebase_exists(session: Session, application, codebase: str):
|
|
489
494
|
try:
|
|
495
|
+
# Todo: Can this leverage dbt_platform_helper.providers.secrets.Secrets.get_connection_secret_arn?
|
|
490
496
|
ssm_client = session.client("ssm")
|
|
491
497
|
json.loads(
|
|
492
498
|
ssm_client.get_parameter(
|
|
@@ -499,7 +505,7 @@ def check_codebase_exists(session: Session, application, codebase: str):
|
|
|
499
505
|
ssm_client.exceptions.ParameterNotFound,
|
|
500
506
|
json.JSONDecodeError,
|
|
501
507
|
):
|
|
502
|
-
raise
|
|
508
|
+
raise CopilotCodebaseNotFoundException(codebase)
|
|
503
509
|
|
|
504
510
|
|
|
505
511
|
def check_image_exists(session, application, codebase, commit):
|
|
@@ -513,7 +519,7 @@ def check_image_exists(session, application, codebase, commit):
|
|
|
513
519
|
ecr_client.exceptions.RepositoryNotFoundException,
|
|
514
520
|
ecr_client.exceptions.ImageNotFoundException,
|
|
515
521
|
):
|
|
516
|
-
raise
|
|
522
|
+
raise ImageNotFoundException(commit)
|
|
517
523
|
|
|
518
524
|
|
|
519
525
|
def get_build_url_from_arn(build_arn: str) -> str:
|
|
@@ -525,7 +531,7 @@ def get_build_url_from_arn(build_arn: str) -> str:
|
|
|
525
531
|
)
|
|
526
532
|
|
|
527
533
|
|
|
528
|
-
def list_latest_images(ecr_client, ecr_repository_name, codebase_repository,
|
|
534
|
+
def list_latest_images(ecr_client, ecr_repository_name, codebase_repository, echo):
|
|
529
535
|
paginator = ecr_client.get_paginator("describe_images")
|
|
530
536
|
describe_images_response_iterator = paginator.paginate(
|
|
531
537
|
repositoryName=ecr_repository_name,
|
|
@@ -550,8 +556,28 @@ def list_latest_images(ecr_client, ecr_repository_name, codebase_repository, ech
|
|
|
550
556
|
continue
|
|
551
557
|
|
|
552
558
|
commit_hash = commit_tag.replace("commit-", "")
|
|
553
|
-
|
|
559
|
+
echo(
|
|
554
560
|
f" - https://github.com/{codebase_repository}/commit/{commit_hash} - published: {image['imagePushedAt']}"
|
|
555
561
|
)
|
|
556
562
|
except StopIteration:
|
|
557
563
|
continue
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
def wait_for_log_group_to_exist(log_client, log_group_name, attempts=30):
|
|
567
|
+
current_attempts = 0
|
|
568
|
+
log_group_exists = False
|
|
569
|
+
|
|
570
|
+
while not log_group_exists and current_attempts < attempts:
|
|
571
|
+
current_attempts += 1
|
|
572
|
+
|
|
573
|
+
log_group_response = log_client.describe_log_groups(logGroupNamePrefix=log_group_name)
|
|
574
|
+
log_groups = log_group_response.get("logGroups", [])
|
|
575
|
+
|
|
576
|
+
for group in log_groups:
|
|
577
|
+
if group["logGroupName"] == log_group_name:
|
|
578
|
+
log_group_exists = True
|
|
579
|
+
|
|
580
|
+
time.sleep(1)
|
|
581
|
+
|
|
582
|
+
if not log_group_exists:
|
|
583
|
+
raise LogGroupNotFoundException(log_group_name)
|
dbt_platform_helper/utils/git.py
CHANGED
|
@@ -2,7 +2,7 @@ import re
|
|
|
2
2
|
import subprocess
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
class
|
|
5
|
+
class CommitNotFoundException(Exception):
|
|
6
6
|
pass
|
|
7
7
|
|
|
8
8
|
|
|
@@ -26,4 +26,4 @@ def check_if_commit_exists(commit):
|
|
|
26
26
|
)
|
|
27
27
|
|
|
28
28
|
if branches_containing_commit.stderr:
|
|
29
|
-
raise
|
|
29
|
+
raise CommitNotFoundException()
|
|
@@ -104,13 +104,13 @@ def validate_addons(addons: dict):
|
|
|
104
104
|
config={"extensions": addons},
|
|
105
105
|
extension_type="redis",
|
|
106
106
|
version_key="engine",
|
|
107
|
-
|
|
107
|
+
get_supported_versions=get_supported_redis_versions,
|
|
108
108
|
)
|
|
109
109
|
_validate_extension_supported_versions(
|
|
110
110
|
config={"extensions": addons},
|
|
111
111
|
extension_type="opensearch",
|
|
112
112
|
version_key="engine",
|
|
113
|
-
|
|
113
|
+
get_supported_versions=get_supported_opensearch_versions,
|
|
114
114
|
)
|
|
115
115
|
|
|
116
116
|
return errors
|
|
@@ -210,7 +210,13 @@ RETENTION_POLICY = Or(
|
|
|
210
210
|
},
|
|
211
211
|
)
|
|
212
212
|
|
|
213
|
-
DATABASE_COPY = {
|
|
213
|
+
DATABASE_COPY = {
|
|
214
|
+
"from": ENV_NAME,
|
|
215
|
+
"to": ENV_NAME,
|
|
216
|
+
Optional("from_account"): str,
|
|
217
|
+
Optional("to_account"): str,
|
|
218
|
+
Optional("pipeline"): {Optional("schedule"): str},
|
|
219
|
+
}
|
|
214
220
|
|
|
215
221
|
POSTGRES_DEFINITION = {
|
|
216
222
|
"type": "postgres",
|
|
@@ -280,9 +286,19 @@ EXTERNAL_ROLE_ACCESS = {
|
|
|
280
286
|
"cyber_sign_off_by": dbt_email_address_regex("cyber_sign_off_by"),
|
|
281
287
|
}
|
|
282
288
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
289
|
+
CROSS_ENVIRONMENT_SERVICE_ACCESS = {
|
|
290
|
+
"application": str,
|
|
291
|
+
"environment": ENV_NAME,
|
|
292
|
+
"account": str,
|
|
293
|
+
"service": str,
|
|
294
|
+
"read": bool,
|
|
295
|
+
"write": bool,
|
|
296
|
+
"cyber_sign_off_by": dbt_email_address_regex("cyber_sign_off_by"),
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
LOWER_ALPHANUMERIC = Regex(
|
|
300
|
+
r"^([a-z][a-zA-Z0-9_-]*|\*)$",
|
|
301
|
+
error="{} is invalid: must only contain lowercase alphanumeric characters separated by hyphen or underscore",
|
|
286
302
|
)
|
|
287
303
|
|
|
288
304
|
DATA_IMPORT = {
|
|
@@ -307,7 +323,10 @@ S3_BASE = {
|
|
|
307
323
|
Optional("versioning"): bool,
|
|
308
324
|
Optional("lifecycle_rules"): [LIFECYCLE_RULE],
|
|
309
325
|
Optional("data_migration"): DATA_MIGRATION,
|
|
310
|
-
Optional("external_role_access"): {
|
|
326
|
+
Optional("external_role_access"): {LOWER_ALPHANUMERIC: EXTERNAL_ROLE_ACCESS},
|
|
327
|
+
Optional("cross_environment_service_access"): {
|
|
328
|
+
LOWER_ALPHANUMERIC: CROSS_ENVIRONMENT_SERVICE_ACCESS
|
|
329
|
+
},
|
|
311
330
|
},
|
|
312
331
|
},
|
|
313
332
|
}
|
|
@@ -558,18 +577,18 @@ def validate_platform_config(config):
|
|
|
558
577
|
config=config,
|
|
559
578
|
extension_type="redis",
|
|
560
579
|
version_key="engine",
|
|
561
|
-
|
|
580
|
+
get_supported_versions=get_supported_redis_versions,
|
|
562
581
|
)
|
|
563
582
|
_validate_extension_supported_versions(
|
|
564
583
|
config=config,
|
|
565
584
|
extension_type="opensearch",
|
|
566
585
|
version_key="engine",
|
|
567
|
-
|
|
586
|
+
get_supported_versions=get_supported_opensearch_versions,
|
|
568
587
|
)
|
|
569
588
|
|
|
570
589
|
|
|
571
590
|
def _validate_extension_supported_versions(
|
|
572
|
-
config, extension_type, version_key,
|
|
591
|
+
config, extension_type, version_key, get_supported_versions
|
|
573
592
|
):
|
|
574
593
|
extensions = config.get("extensions", {})
|
|
575
594
|
if not extensions:
|
|
@@ -581,7 +600,7 @@ def _validate_extension_supported_versions(
|
|
|
581
600
|
if extension.get("type") == extension_type
|
|
582
601
|
]
|
|
583
602
|
|
|
584
|
-
supported_extension_versions =
|
|
603
|
+
supported_extension_versions = get_supported_versions()
|
|
585
604
|
extensions_with_invalid_version = []
|
|
586
605
|
|
|
587
606
|
for extension in extensions_for_type:
|
|
@@ -638,6 +657,9 @@ def validate_database_copy_section(config):
|
|
|
638
657
|
from_env = section["from"]
|
|
639
658
|
to_env = section["to"]
|
|
640
659
|
|
|
660
|
+
from_account = _get_env_deploy_account_info(config, from_env, "id")
|
|
661
|
+
to_account = _get_env_deploy_account_info(config, to_env, "id")
|
|
662
|
+
|
|
641
663
|
if from_env == to_env:
|
|
642
664
|
errors.append(
|
|
643
665
|
f"database_copy 'to' and 'from' cannot be the same environment in extension '{extension_name}'."
|
|
@@ -658,10 +680,33 @@ def validate_database_copy_section(config):
|
|
|
658
680
|
f"database_copy 'to' parameter must be a valid environment ({all_envs_string}) but was '{to_env}' in extension '{extension_name}'."
|
|
659
681
|
)
|
|
660
682
|
|
|
683
|
+
if from_account != to_account:
|
|
684
|
+
if "from_account" not in section:
|
|
685
|
+
errors.append(
|
|
686
|
+
f"Environments '{from_env}' and '{to_env}' are in different AWS accounts. The 'from_account' parameter must be present."
|
|
687
|
+
)
|
|
688
|
+
elif section["from_account"] != from_account:
|
|
689
|
+
errors.append(
|
|
690
|
+
f"Incorrect value for 'from_account' for environment '{from_env}'"
|
|
691
|
+
)
|
|
692
|
+
|
|
693
|
+
if "to_account" not in section:
|
|
694
|
+
errors.append(
|
|
695
|
+
f"Environments '{from_env}' and '{to_env}' are in different AWS accounts. The 'to_account' parameter must be present."
|
|
696
|
+
)
|
|
697
|
+
elif section["to_account"] != to_account:
|
|
698
|
+
errors.append(f"Incorrect value for 'to_account' for environment '{to_env}'")
|
|
699
|
+
|
|
661
700
|
if errors:
|
|
662
701
|
abort_with_error("\n".join(errors))
|
|
663
702
|
|
|
664
703
|
|
|
704
|
+
def _get_env_deploy_account_info(config, env, key):
|
|
705
|
+
return (
|
|
706
|
+
config.get("environments", {}).get(env, {}).get("accounts", {}).get("deploy", {}).get(key)
|
|
707
|
+
)
|
|
708
|
+
|
|
709
|
+
|
|
665
710
|
def _validate_environment_pipelines(config):
|
|
666
711
|
bad_pipelines = {}
|
|
667
712
|
for pipeline_name, pipeline in config.get("environment_pipelines", {}).items():
|
|
@@ -669,13 +714,7 @@ def _validate_environment_pipelines(config):
|
|
|
669
714
|
pipeline_account = pipeline.get("account", None)
|
|
670
715
|
if pipeline_account:
|
|
671
716
|
for env in pipeline.get("environments", {}).keys():
|
|
672
|
-
env_account = (
|
|
673
|
-
config.get("environments", {})
|
|
674
|
-
.get(env, {})
|
|
675
|
-
.get("accounts", {})
|
|
676
|
-
.get("deploy", {})
|
|
677
|
-
.get("name")
|
|
678
|
-
)
|
|
717
|
+
env_account = _get_env_deploy_account_info(config, env, "name")
|
|
679
718
|
if not env_account == pipeline_account:
|
|
680
719
|
bad_envs.append(env)
|
|
681
720
|
if bad_envs:
|
|
@@ -13,9 +13,9 @@ import requests
|
|
|
13
13
|
|
|
14
14
|
from dbt_platform_helper.constants import PLATFORM_CONFIG_FILE
|
|
15
15
|
from dbt_platform_helper.constants import PLATFORM_HELPER_VERSION_FILE
|
|
16
|
-
from dbt_platform_helper.
|
|
17
|
-
from dbt_platform_helper.
|
|
18
|
-
from dbt_platform_helper.
|
|
16
|
+
from dbt_platform_helper.providers.validation import IncompatibleMajorVersionException
|
|
17
|
+
from dbt_platform_helper.providers.validation import IncompatibleMinorVersionException
|
|
18
|
+
from dbt_platform_helper.providers.validation import ValidationException
|
|
19
19
|
from dbt_platform_helper.utils.platform_config import load_unvalidated_config_file
|
|
20
20
|
|
|
21
21
|
VersionTuple = Optional[Tuple[int, int, int]]
|
|
@@ -198,13 +198,13 @@ def validate_version_compatibility(
|
|
|
198
198
|
if (app_major == 0 and check_major == 0) and (
|
|
199
199
|
app_minor != check_minor or app_patch != check_patch
|
|
200
200
|
):
|
|
201
|
-
raise
|
|
201
|
+
raise IncompatibleMajorVersionException(app_version_as_string, check_version_as_string)
|
|
202
202
|
|
|
203
203
|
if app_major != check_major:
|
|
204
|
-
raise
|
|
204
|
+
raise IncompatibleMajorVersionException(app_version_as_string, check_version_as_string)
|
|
205
205
|
|
|
206
206
|
if app_minor != check_minor:
|
|
207
|
-
raise
|
|
207
|
+
raise IncompatibleMinorVersionException(app_version_as_string, check_version_as_string)
|
|
208
208
|
|
|
209
209
|
|
|
210
210
|
def check_version_on_file_compatibility(
|
|
@@ -248,9 +248,9 @@ def check_platform_helper_version_needs_update():
|
|
|
248
248
|
)
|
|
249
249
|
try:
|
|
250
250
|
validate_version_compatibility(local_version, latest_release)
|
|
251
|
-
except
|
|
251
|
+
except IncompatibleMajorVersionException:
|
|
252
252
|
click.secho(message, fg="red")
|
|
253
|
-
except
|
|
253
|
+
except IncompatibleMinorVersionException:
|
|
254
254
|
click.secho(message, fg="yellow")
|
|
255
255
|
|
|
256
256
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dbt-platform-helper
|
|
3
|
-
Version: 12.
|
|
3
|
+
Version: 12.4.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
6
|
Author: Department for Business and Trade Platform Team
|
|
@@ -1,36 +1,37 @@
|
|
|
1
|
-
dbt_platform_helper/COMMANDS.md,sha256=
|
|
1
|
+
dbt_platform_helper/COMMANDS.md,sha256=6VGkyKa_AB1adSlyhWIKrfDckq2n-xxqnBbBpgO5bnc,22207
|
|
2
2
|
dbt_platform_helper/README.md,sha256=B0qN2_u_ASqqgkGDWY2iwNGZt_9tUgMb9XqtaTuzYjw,1530
|
|
3
3
|
dbt_platform_helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
dbt_platform_helper/addon-plans.yml,sha256=O46a_ODsGG9KXmQY_1XbSGqrpSaHSLDe-SdROzHx8Go,4545
|
|
5
|
-
dbt_platform_helper/addons-template-map.yml,sha256=kYv_ZoZGWNeNBCnR_9wSeLhJuWOTHx-vn7ub74MgGb4,546
|
|
6
5
|
dbt_platform_helper/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
6
|
dbt_platform_helper/commands/application.py,sha256=eVwCaYuwBlk0zx0xfA6fW7b-S1pl8gkyT1lHKeeh2R0,10147
|
|
8
|
-
dbt_platform_helper/commands/codebase.py,sha256=
|
|
9
|
-
dbt_platform_helper/commands/conduit.py,sha256=
|
|
10
|
-
dbt_platform_helper/commands/config.py,sha256=
|
|
11
|
-
dbt_platform_helper/commands/copilot.py,sha256=
|
|
12
|
-
dbt_platform_helper/commands/database.py,sha256=
|
|
13
|
-
dbt_platform_helper/commands/environment.py,sha256
|
|
7
|
+
dbt_platform_helper/commands/codebase.py,sha256=KB8irKyFtb6pKn5cQ0MmTywGW7Vd8SSbWjT2mRnh3JA,2270
|
|
8
|
+
dbt_platform_helper/commands/conduit.py,sha256=KqRWiirl5Xl7qcJXOAsirbTLlV1XquOjddsopuj0Kp4,2272
|
|
9
|
+
dbt_platform_helper/commands/config.py,sha256=LKHPBR0xCPiX_oR2Gtl0_KO9WqABNDF5w_dI7WRxhWk,12117
|
|
10
|
+
dbt_platform_helper/commands/copilot.py,sha256=XizScFxONNB3RLecRfEgCv--TwQ1j2rCUKGCx0nPq4I,12883
|
|
11
|
+
dbt_platform_helper/commands/database.py,sha256=aG3zcMHL5PE96b7LSAu0FGCbgcycQej3AGRcd-bpXUo,4115
|
|
12
|
+
dbt_platform_helper/commands/environment.py,sha256=VNIzuCM6RT-jVMk3Km0d88NEhrkTEWNqscEypVwLSWU,9294
|
|
14
13
|
dbt_platform_helper/commands/generate.py,sha256=YLCPb-xcPapGcsLn-7d1Am7BpGp5l0iecIDTOdNGjHk,722
|
|
15
14
|
dbt_platform_helper/commands/notify.py,sha256=kVJ0s78QMiaEWPVKu_bbMko4DW2uJy2fu8-HNJsglyk,3748
|
|
16
15
|
dbt_platform_helper/commands/pipeline.py,sha256=_52bDSDa8DoyOA4VFxFJhwaiKCPHKqPtK2LWDLFaKlA,9452
|
|
17
|
-
dbt_platform_helper/commands/secrets.py,sha256=
|
|
16
|
+
dbt_platform_helper/commands/secrets.py,sha256=QjF9xUChioIr_P0fzqwyEcqLvcN-RNZmNFFlaUPVU9o,3994
|
|
18
17
|
dbt_platform_helper/commands/version.py,sha256=XVfSd53TDti4cceBqTmRfq_yZnvxs14RbrOjNJHW75U,1444
|
|
19
18
|
dbt_platform_helper/constants.py,sha256=HVaaO7hlQB41GrBBxcgk7hHie9tKbeYhJc-cRyYuIE0,453
|
|
20
19
|
dbt_platform_helper/default-extensions.yml,sha256=SU1ZitskbuEBpvE7efc3s56eAUF11j70brhj_XrNMMo,493
|
|
21
20
|
dbt_platform_helper/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
-
dbt_platform_helper/domain/codebase.py,sha256=
|
|
23
|
-
dbt_platform_helper/domain/conduit.py,sha256=
|
|
24
|
-
dbt_platform_helper/domain/database_copy.py,sha256=
|
|
25
|
-
dbt_platform_helper/domain/maintenance_page.py,sha256=
|
|
26
|
-
dbt_platform_helper/exceptions.py,sha256=LMkYMBwtKGIooamJ-2p0snKkP9iqTNenvqdkIUzudU4,1438
|
|
21
|
+
dbt_platform_helper/domain/codebase.py,sha256=vs25ytD0iKwfuX-EoYHwG6qiZAmfvKyQiYT9BeWZ_s4,9688
|
|
22
|
+
dbt_platform_helper/domain/conduit.py,sha256=mvjDzxh-SCUCY5qGL73kG8TT7YqeQR8XtNcHx26SW2w,4344
|
|
23
|
+
dbt_platform_helper/domain/database_copy.py,sha256=m25FA6DkF_yG3lVcbxBEleYxwHA85hQrB5fFeIg6adM,8988
|
|
24
|
+
dbt_platform_helper/domain/maintenance_page.py,sha256=JN1ksJ9viZ8SjPkO48y_GqrqTgR5B3T1aiye0XlUp4I,15740
|
|
27
25
|
dbt_platform_helper/jinja2_tags.py,sha256=jFyN_Sxmko1GSfvrqRIGQ80CCW8EwlCV3su0ahJPfoE,541
|
|
26
|
+
dbt_platform_helper/platform_exception.py,sha256=bheZV9lqGvrCVTNT92349dVntNDEDWTEwciZgC83WzE,187
|
|
28
27
|
dbt_platform_helper/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
-
dbt_platform_helper/providers/
|
|
30
|
-
dbt_platform_helper/providers/
|
|
31
|
-
dbt_platform_helper/providers/
|
|
32
|
-
dbt_platform_helper/providers/
|
|
33
|
-
dbt_platform_helper/providers/
|
|
28
|
+
dbt_platform_helper/providers/aws.py,sha256=KHgySe6cwEw1wePjw6DL7uSyZRk3DN_Aqqi8KnRoB3M,1208
|
|
29
|
+
dbt_platform_helper/providers/cloudformation.py,sha256=YmeofMMxh9hzhU4Osa1vR41s18jNXzsZdEfpQUk1Lc4,4976
|
|
30
|
+
dbt_platform_helper/providers/copilot.py,sha256=2BkQXn17GC1oGfCSCXXapTqT5OEhpEBeNkQ33g-U6wU,5245
|
|
31
|
+
dbt_platform_helper/providers/ecs.py,sha256=XlQHYhZiLGrqR-1ZWMagGH2R2Hy7mCP6676eZL3YbNQ,3842
|
|
32
|
+
dbt_platform_helper/providers/load_balancers.py,sha256=0tPkuQ_jWfan44HrBA5EMLqrZaYQl-Lw5PavZ1a1iag,1615
|
|
33
|
+
dbt_platform_helper/providers/secrets.py,sha256=6cYIR15dLdHmqxtWQpM6R71e0_Xgsg9V291HBG-0LV0,5272
|
|
34
|
+
dbt_platform_helper/providers/validation.py,sha256=d_YzJZVjGNO65pXcPIcFc9I-FRCESeEC7GvUzP8n-As,596
|
|
34
35
|
dbt_platform_helper/templates/.copilot/config.yml,sha256=J_bA9sCtBdCPBRImpCBRnYvhQd4vpLYIXIU-lq9vbkA,158
|
|
35
36
|
dbt_platform_helper/templates/.copilot/image_build_run.sh,sha256=adYucYXEB-kAgZNjTQo0T6EIAY8sh_xCEvVhWKKQ8mw,164
|
|
36
37
|
dbt_platform_helper/templates/.copilot/phases/build.sh,sha256=umKXePcRvx4XyrRY0fAWIyYFtNjqBI2L8vIJk-V7C60,121
|
|
@@ -72,22 +73,22 @@ dbt_platform_helper/templates/svc/manifest-backend.yml,sha256=aAD9ndkbXnF7JBAKS2
|
|
|
72
73
|
dbt_platform_helper/templates/svc/manifest-public.yml,sha256=6NHVR_onBu5hbwynLrB6roDRce7JcylSc0qeYvzlPdI,3664
|
|
73
74
|
dbt_platform_helper/templates/svc/overrides/cfn.patches.yml,sha256=W7-d017akuUq9kda64DQxazavcRcCPDjaAik6t1EZqM,742
|
|
74
75
|
dbt_platform_helper/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
|
-
dbt_platform_helper/utils/application.py,sha256=
|
|
76
|
-
dbt_platform_helper/utils/arn_parser.py,sha256=
|
|
77
|
-
dbt_platform_helper/utils/aws.py,sha256=
|
|
76
|
+
dbt_platform_helper/utils/application.py,sha256=ugY3nbUHRNFvJgaD4446EdSvIyILEN6ouuuk7eoyXe8,4538
|
|
77
|
+
dbt_platform_helper/utils/arn_parser.py,sha256=BaXzIxSOLdFmP_IfAxRq-0j-0Re1iCN7L4j2Zi5-CRQ,1304
|
|
78
|
+
dbt_platform_helper/utils/aws.py,sha256=sO5EHTbjzOYc0aPmpRupbcACwIBCHz8YUZfqz0vXydI,19771
|
|
78
79
|
dbt_platform_helper/utils/click.py,sha256=Fx4y4bbve1zypvog_sgK7tJtCocmzheoEFLBRv1lfdM,2943
|
|
79
80
|
dbt_platform_helper/utils/cloudfoundry.py,sha256=GnQ4fVLnDfOdNSrsJjI6ElZHqpgwINeoPn77cUH2UFY,484
|
|
80
81
|
dbt_platform_helper/utils/files.py,sha256=pa5uwwrEFIAgXZUyH2KEr2Yiu6bKuV4EMlhn9BcUMsY,5296
|
|
81
|
-
dbt_platform_helper/utils/git.py,sha256=
|
|
82
|
+
dbt_platform_helper/utils/git.py,sha256=7JGZMaI8-cU6-GjXIXjOlsYfKu_RppLOGyAicBd4n_8,704
|
|
82
83
|
dbt_platform_helper/utils/manifests.py,sha256=ji3UYHCxq9tTpkm4MlRa2y0-JOYYqq1pWZ2h_zpj0UU,507
|
|
83
84
|
dbt_platform_helper/utils/messages.py,sha256=aLx6s9utt__IqlDdeIYq4n82ERwludu2Zfqy0Q2t-x8,115
|
|
84
85
|
dbt_platform_helper/utils/platform_config.py,sha256=2RfIxBAT5fv7WR4YuP3yomUK7sKZFL77xevuHnUALdg,676
|
|
85
86
|
dbt_platform_helper/utils/template.py,sha256=raRx4QUCVJtKfvJK08Egg6gwWcs3r3V4nPWcJW4xNhA,574
|
|
86
|
-
dbt_platform_helper/utils/validation.py,sha256
|
|
87
|
-
dbt_platform_helper/utils/versioning.py,sha256=
|
|
87
|
+
dbt_platform_helper/utils/validation.py,sha256=ANGIA3k2_ATyZsPs7iqnXMNVjZC6o-rIbONxO9QZ8JU,30701
|
|
88
|
+
dbt_platform_helper/utils/versioning.py,sha256=rLCofLHPXoyc3v9ArDKcjW902p-UX6GCn8n7cjg5I-U,10918
|
|
88
89
|
platform_helper.py,sha256=bly3JkwbfwnWTZSZziu40dbgzQItsK-DIMMvL6ArFDY,1893
|
|
89
|
-
dbt_platform_helper-12.
|
|
90
|
-
dbt_platform_helper-12.
|
|
91
|
-
dbt_platform_helper-12.
|
|
92
|
-
dbt_platform_helper-12.
|
|
93
|
-
dbt_platform_helper-12.
|
|
90
|
+
dbt_platform_helper-12.4.0.dist-info/LICENSE,sha256=dP79lN73--7LMApnankTGLqDbImXg8iYFqWgnExGkGk,1090
|
|
91
|
+
dbt_platform_helper-12.4.0.dist-info/METADATA,sha256=UuLXRBbntAkchMbR3jEaD2FCze0dH-3i54tIcpG49mo,3212
|
|
92
|
+
dbt_platform_helper-12.4.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
93
|
+
dbt_platform_helper-12.4.0.dist-info/entry_points.txt,sha256=QhbY8F434A-onsg0-FsdMd2U6HKh6Q7yCFFZrGUh5-M,67
|
|
94
|
+
dbt_platform_helper-12.4.0.dist-info/RECORD,,
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# This file maps addon types to svc level templates
|
|
2
|
-
|
|
3
|
-
# explanation:
|
|
4
|
-
|
|
5
|
-
# {addons-type}:
|
|
6
|
-
# svc:
|
|
7
|
-
# - template: path/to/template.yml
|
|
8
|
-
|
|
9
|
-
redis: {}
|
|
10
|
-
postgres: {}
|
|
11
|
-
opensearch: {}
|
|
12
|
-
s3:
|
|
13
|
-
svc:
|
|
14
|
-
- template: addons/svc/s3-policy.yml
|
|
15
|
-
s3-policy:
|
|
16
|
-
svc:
|
|
17
|
-
- template: addons/svc/s3-policy.yml
|
|
18
|
-
appconfig-ipfilter:
|
|
19
|
-
svc:
|
|
20
|
-
- template: addons/svc/appconfig-ipfilter.yml
|
|
21
|
-
subscription-filter:
|
|
22
|
-
svc:
|
|
23
|
-
- template: addons/svc/subscription-filter.yml
|
|
24
|
-
monitoring: {}
|
|
25
|
-
vpc: {}
|
|
26
|
-
alb: {}
|
|
27
|
-
prometheus-policy:
|
|
28
|
-
svc:
|
|
29
|
-
- template: addons/svc/prometheus-policy.yml
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
class ValidationException(Exception):
|
|
2
|
-
pass
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class AWSException(Exception):
|
|
6
|
-
pass
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class IncompatibleMajorVersion(ValidationException):
|
|
10
|
-
def __init__(self, app_version: str, check_version: str):
|
|
11
|
-
super().__init__()
|
|
12
|
-
self.app_version = app_version
|
|
13
|
-
self.check_version = check_version
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class IncompatibleMinorVersion(ValidationException):
|
|
17
|
-
def __init__(self, app_version: str, check_version: str):
|
|
18
|
-
super().__init__()
|
|
19
|
-
self.app_version = app_version
|
|
20
|
-
self.check_version = check_version
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class NoClusterError(AWSException):
|
|
24
|
-
pass
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class CreateTaskTimeoutError(AWSException):
|
|
28
|
-
pass
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class ParameterNotFoundError(AWSException):
|
|
32
|
-
pass
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
class AddonNotFoundError(AWSException):
|
|
36
|
-
pass
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class InvalidAddonTypeError(AWSException):
|
|
40
|
-
def __init__(self, addon_type):
|
|
41
|
-
self.addon_type = addon_type
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
class AddonTypeMissingFromConfigError(AWSException):
|
|
45
|
-
pass
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
class CopilotCodebaseNotFoundError(Exception):
|
|
49
|
-
pass
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
class NotInCodeBaseRepositoryError(Exception):
|
|
53
|
-
pass
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
class NoCopilotCodebasesFoundError(Exception):
|
|
57
|
-
pass
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
class ImageNotFoundError(Exception):
|
|
61
|
-
pass
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
class ApplicationDeploymentNotTriggered(Exception):
|
|
65
|
-
pass
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
class ApplicationNotFoundError(Exception):
|
|
69
|
-
pass
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
class ApplicationEnvironmentNotFoundError(Exception):
|
|
73
|
-
pass
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
class SecretNotFoundError(AWSException):
|
|
77
|
-
pass
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
class ECSAgentNotRunning(AWSException):
|
|
81
|
-
pass
|
|
File without changes
|
|
File without changes
|
{dbt_platform_helper-12.2.4.dist-info → dbt_platform_helper-12.4.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|