dbt-platform-helper 12.4.1__py3-none-any.whl → 12.5.1__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 +1 -6
- dbt_platform_helper/commands/config.py +2 -2
- dbt_platform_helper/commands/copilot.py +51 -30
- dbt_platform_helper/commands/environment.py +25 -185
- dbt_platform_helper/commands/pipeline.py +10 -173
- dbt_platform_helper/constants.py +10 -0
- dbt_platform_helper/domain/codebase.py +8 -4
- dbt_platform_helper/domain/config_validator.py +242 -0
- dbt_platform_helper/domain/copilot_environment.py +204 -0
- dbt_platform_helper/domain/database_copy.py +16 -12
- dbt_platform_helper/domain/maintenance_page.py +44 -20
- dbt_platform_helper/domain/pipelines.py +213 -0
- dbt_platform_helper/domain/terraform_environment.py +86 -0
- dbt_platform_helper/domain/test_platform_terraform_manifest_generator.py +100 -0
- dbt_platform_helper/jinja2_tags.py +1 -1
- dbt_platform_helper/providers/cache.py +14 -21
- dbt_platform_helper/providers/cloudformation.py +0 -1
- dbt_platform_helper/providers/config.py +100 -0
- dbt_platform_helper/providers/copilot.py +2 -0
- dbt_platform_helper/providers/files.py +26 -0
- dbt_platform_helper/providers/opensearch.py +36 -0
- dbt_platform_helper/providers/platform_config_schema.py +589 -527
- dbt_platform_helper/providers/redis.py +34 -0
- dbt_platform_helper/providers/vpc.py +57 -0
- dbt_platform_helper/providers/yaml_file.py +72 -0
- dbt_platform_helper/templates/addons/svc/s3-cross-account-policy.yml +67 -0
- dbt_platform_helper/utils/application.py +32 -34
- dbt_platform_helper/utils/aws.py +1 -107
- dbt_platform_helper/utils/files.py +8 -59
- dbt_platform_helper/utils/platform_config.py +0 -7
- dbt_platform_helper/utils/template.py +10 -0
- dbt_platform_helper/utils/validation.py +5 -327
- dbt_platform_helper/utils/versioning.py +12 -0
- {dbt_platform_helper-12.4.1.dist-info → dbt_platform_helper-12.5.1.dist-info}/METADATA +2 -2
- {dbt_platform_helper-12.4.1.dist-info → dbt_platform_helper-12.5.1.dist-info}/RECORD +38 -26
- {dbt_platform_helper-12.4.1.dist-info → dbt_platform_helper-12.5.1.dist-info}/WHEEL +1 -1
- {dbt_platform_helper-12.4.1.dist-info → dbt_platform_helper-12.5.1.dist-info}/LICENSE +0 -0
- {dbt_platform_helper-12.4.1.dist-info → dbt_platform_helper-12.5.1.dist-info}/entry_points.txt +0 -0
|
@@ -1,24 +1,7 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import re
|
|
3
|
-
from pathlib import Path
|
|
4
|
-
|
|
5
|
-
import click
|
|
6
|
-
import yaml
|
|
7
1
|
from schema import SchemaError
|
|
8
|
-
from yaml.parser import ParserError
|
|
9
|
-
from yamllint import config
|
|
10
|
-
from yamllint import linter
|
|
11
2
|
|
|
12
|
-
from dbt_platform_helper.
|
|
13
|
-
from dbt_platform_helper.
|
|
14
|
-
from dbt_platform_helper.constants import PLATFORM_CONFIG_FILE
|
|
15
|
-
from dbt_platform_helper.constants import PLATFORM_HELPER_VERSION_FILE
|
|
16
|
-
from dbt_platform_helper.providers.platform_config_schema import EXTENSION_SCHEMAS
|
|
17
|
-
from dbt_platform_helper.providers.platform_config_schema import PLATFORM_CONFIG_SCHEMA
|
|
18
|
-
from dbt_platform_helper.utils.aws import get_supported_opensearch_versions
|
|
19
|
-
from dbt_platform_helper.utils.aws import get_supported_redis_versions
|
|
20
|
-
from dbt_platform_helper.utils.files import apply_environment_defaults
|
|
21
|
-
from dbt_platform_helper.utils.messages import abort_with_error
|
|
3
|
+
from dbt_platform_helper.domain.config_validator import ConfigValidator
|
|
4
|
+
from dbt_platform_helper.providers.platform_config_schema import PlatformConfigSchema
|
|
22
5
|
|
|
23
6
|
|
|
24
7
|
def validate_addons(addons: dict):
|
|
@@ -33,7 +16,7 @@ def validate_addons(addons: dict):
|
|
|
33
16
|
if not addon_type:
|
|
34
17
|
errors[addon_name] = f"Missing addon type in addon '{addon_name}'"
|
|
35
18
|
continue
|
|
36
|
-
schema =
|
|
19
|
+
schema = PlatformConfigSchema.extension_schemas().get(addon_type, None)
|
|
37
20
|
if not schema:
|
|
38
21
|
errors[addon_name] = (
|
|
39
22
|
f"Unsupported addon type '{addon_type}' in addon '{addon_name}'"
|
|
@@ -43,312 +26,7 @@ def validate_addons(addons: dict):
|
|
|
43
26
|
except SchemaError as ex:
|
|
44
27
|
errors[addon_name] = f"Error in {addon_name}: {ex.code}"
|
|
45
28
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
extension_type="redis",
|
|
49
|
-
version_key="engine",
|
|
50
|
-
get_supported_versions=get_supported_redis_versions,
|
|
51
|
-
)
|
|
52
|
-
_validate_extension_supported_versions(
|
|
53
|
-
config={"extensions": addons},
|
|
54
|
-
extension_type="opensearch",
|
|
55
|
-
version_key="engine",
|
|
56
|
-
get_supported_versions=get_supported_opensearch_versions,
|
|
57
|
-
)
|
|
29
|
+
ConfigValidator().validate_supported_redis_versions({"extensions": addons})
|
|
30
|
+
ConfigValidator().validate_supported_opensearch_versions({"extensions": addons})
|
|
58
31
|
|
|
59
32
|
return errors
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
def float_between_with_halfstep(lower, upper):
|
|
63
|
-
def is_between(value):
|
|
64
|
-
is_number = isinstance(value, int) or isinstance(value, float)
|
|
65
|
-
is_half_step = re.match(r"^\d+(\.[05])?$", str(value))
|
|
66
|
-
|
|
67
|
-
if is_number and is_half_step and lower <= value <= upper:
|
|
68
|
-
return True
|
|
69
|
-
raise SchemaError(f"should be a number between {lower} and {upper} in increments of 0.5")
|
|
70
|
-
|
|
71
|
-
return is_between
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
def validate_platform_config(config):
|
|
75
|
-
PLATFORM_CONFIG_SCHEMA.validate(config)
|
|
76
|
-
enriched_config = apply_environment_defaults(config)
|
|
77
|
-
_validate_environment_pipelines(enriched_config)
|
|
78
|
-
_validate_environment_pipelines_triggers(enriched_config)
|
|
79
|
-
_validate_codebase_pipelines(enriched_config)
|
|
80
|
-
validate_database_copy_section(enriched_config)
|
|
81
|
-
|
|
82
|
-
_validate_extension_supported_versions(
|
|
83
|
-
config=config,
|
|
84
|
-
extension_type="redis",
|
|
85
|
-
version_key="engine",
|
|
86
|
-
get_supported_versions=get_supported_redis_versions,
|
|
87
|
-
)
|
|
88
|
-
_validate_extension_supported_versions(
|
|
89
|
-
config=config,
|
|
90
|
-
extension_type="opensearch",
|
|
91
|
-
version_key="engine",
|
|
92
|
-
get_supported_versions=get_supported_opensearch_versions,
|
|
93
|
-
)
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
def _validate_extension_supported_versions(
|
|
97
|
-
config, extension_type, version_key, get_supported_versions
|
|
98
|
-
):
|
|
99
|
-
extensions = config.get("extensions", {})
|
|
100
|
-
if not extensions:
|
|
101
|
-
return
|
|
102
|
-
|
|
103
|
-
extensions_for_type = [
|
|
104
|
-
extension
|
|
105
|
-
for extension in config.get("extensions", {}).values()
|
|
106
|
-
if extension.get("type") == extension_type
|
|
107
|
-
]
|
|
108
|
-
|
|
109
|
-
supported_extension_versions = get_supported_versions()
|
|
110
|
-
extensions_with_invalid_version = []
|
|
111
|
-
|
|
112
|
-
for extension in extensions_for_type:
|
|
113
|
-
|
|
114
|
-
environments = extension.get("environments", {})
|
|
115
|
-
|
|
116
|
-
if not isinstance(environments, dict):
|
|
117
|
-
click.secho(
|
|
118
|
-
f"Error: {extension_type} extension definition is invalid type, expected dictionary",
|
|
119
|
-
fg="red",
|
|
120
|
-
)
|
|
121
|
-
continue
|
|
122
|
-
for environment, env_config in environments.items():
|
|
123
|
-
|
|
124
|
-
# An extension version doesn't need to be specified for all environments, provided one is specified under "*".
|
|
125
|
-
# So check if the version is set before checking if it's supported
|
|
126
|
-
extension_version = env_config.get(version_key)
|
|
127
|
-
if extension_version and extension_version not in supported_extension_versions:
|
|
128
|
-
extensions_with_invalid_version.append(
|
|
129
|
-
{"environment": environment, "version": extension_version}
|
|
130
|
-
)
|
|
131
|
-
|
|
132
|
-
for version_failure in extensions_with_invalid_version:
|
|
133
|
-
click.secho(
|
|
134
|
-
f"{extension_type} version for environment {version_failure['environment']} is not in the list of supported {extension_type} versions: {supported_extension_versions}. Provided Version: {version_failure['version']}",
|
|
135
|
-
fg="red",
|
|
136
|
-
)
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
def validate_database_copy_section(config):
|
|
140
|
-
extensions = config.get("extensions", {})
|
|
141
|
-
if not extensions:
|
|
142
|
-
return
|
|
143
|
-
|
|
144
|
-
postgres_extensions = {
|
|
145
|
-
key: ext for key, ext in extensions.items() if ext.get("type", None) == "postgres"
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
if not postgres_extensions:
|
|
149
|
-
return
|
|
150
|
-
|
|
151
|
-
errors = []
|
|
152
|
-
|
|
153
|
-
for extension_name, extension in postgres_extensions.items():
|
|
154
|
-
database_copy_sections = extension.get("database_copy", [])
|
|
155
|
-
|
|
156
|
-
if not database_copy_sections:
|
|
157
|
-
return
|
|
158
|
-
|
|
159
|
-
all_environments = [env for env in config.get("environments", {}).keys() if not env == "*"]
|
|
160
|
-
all_envs_string = ", ".join(all_environments)
|
|
161
|
-
|
|
162
|
-
for section in database_copy_sections:
|
|
163
|
-
from_env = section["from"]
|
|
164
|
-
to_env = section["to"]
|
|
165
|
-
|
|
166
|
-
from_account = _get_env_deploy_account_info(config, from_env, "id")
|
|
167
|
-
to_account = _get_env_deploy_account_info(config, to_env, "id")
|
|
168
|
-
|
|
169
|
-
if from_env == to_env:
|
|
170
|
-
errors.append(
|
|
171
|
-
f"database_copy 'to' and 'from' cannot be the same environment in extension '{extension_name}'."
|
|
172
|
-
)
|
|
173
|
-
|
|
174
|
-
if "prod" in to_env:
|
|
175
|
-
errors.append(
|
|
176
|
-
f"Copying to a prod environment is not supported: database_copy 'to' cannot be '{to_env}' in extension '{extension_name}'."
|
|
177
|
-
)
|
|
178
|
-
|
|
179
|
-
if from_env not in all_environments:
|
|
180
|
-
errors.append(
|
|
181
|
-
f"database_copy 'from' parameter must be a valid environment ({all_envs_string}) but was '{from_env}' in extension '{extension_name}'."
|
|
182
|
-
)
|
|
183
|
-
|
|
184
|
-
if to_env not in all_environments:
|
|
185
|
-
errors.append(
|
|
186
|
-
f"database_copy 'to' parameter must be a valid environment ({all_envs_string}) but was '{to_env}' in extension '{extension_name}'."
|
|
187
|
-
)
|
|
188
|
-
|
|
189
|
-
if from_account != to_account:
|
|
190
|
-
if "from_account" not in section:
|
|
191
|
-
errors.append(
|
|
192
|
-
f"Environments '{from_env}' and '{to_env}' are in different AWS accounts. The 'from_account' parameter must be present."
|
|
193
|
-
)
|
|
194
|
-
elif section["from_account"] != from_account:
|
|
195
|
-
errors.append(
|
|
196
|
-
f"Incorrect value for 'from_account' for environment '{from_env}'"
|
|
197
|
-
)
|
|
198
|
-
|
|
199
|
-
if "to_account" not in section:
|
|
200
|
-
errors.append(
|
|
201
|
-
f"Environments '{from_env}' and '{to_env}' are in different AWS accounts. The 'to_account' parameter must be present."
|
|
202
|
-
)
|
|
203
|
-
elif section["to_account"] != to_account:
|
|
204
|
-
errors.append(f"Incorrect value for 'to_account' for environment '{to_env}'")
|
|
205
|
-
|
|
206
|
-
if errors:
|
|
207
|
-
abort_with_error("\n".join(errors))
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
def _get_env_deploy_account_info(config, env, key):
|
|
211
|
-
return (
|
|
212
|
-
config.get("environments", {}).get(env, {}).get("accounts", {}).get("deploy", {}).get(key)
|
|
213
|
-
)
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
def _validate_environment_pipelines(config):
|
|
217
|
-
bad_pipelines = {}
|
|
218
|
-
for pipeline_name, pipeline in config.get("environment_pipelines", {}).items():
|
|
219
|
-
bad_envs = []
|
|
220
|
-
pipeline_account = pipeline.get("account", None)
|
|
221
|
-
if pipeline_account:
|
|
222
|
-
for env in pipeline.get("environments", {}).keys():
|
|
223
|
-
env_account = _get_env_deploy_account_info(config, env, "name")
|
|
224
|
-
if not env_account == pipeline_account:
|
|
225
|
-
bad_envs.append(env)
|
|
226
|
-
if bad_envs:
|
|
227
|
-
bad_pipelines[pipeline_name] = {"account": pipeline_account, "bad_envs": bad_envs}
|
|
228
|
-
if bad_pipelines:
|
|
229
|
-
message = "The following pipelines are misconfigured:"
|
|
230
|
-
for pipeline, detail in bad_pipelines.items():
|
|
231
|
-
envs = detail["bad_envs"]
|
|
232
|
-
acc = detail["account"]
|
|
233
|
-
message += f" '{pipeline}' - these environments are not in the '{acc}' account: {', '.join(envs)}\n"
|
|
234
|
-
abort_with_error(message)
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
def _validate_codebase_pipelines(config):
|
|
238
|
-
if CODEBASE_PIPELINES_KEY in config:
|
|
239
|
-
for codebase in config[CODEBASE_PIPELINES_KEY]:
|
|
240
|
-
codebase_environments = []
|
|
241
|
-
|
|
242
|
-
for pipeline in codebase["pipelines"]:
|
|
243
|
-
codebase_environments += [e["name"] for e in pipeline[ENVIRONMENTS_KEY]]
|
|
244
|
-
|
|
245
|
-
unique_codebase_environments = sorted(list(set(codebase_environments)))
|
|
246
|
-
|
|
247
|
-
if sorted(codebase_environments) != sorted(unique_codebase_environments):
|
|
248
|
-
abort_with_error(
|
|
249
|
-
f"The {PLATFORM_CONFIG_FILE} file is invalid, each environment can only be "
|
|
250
|
-
"listed in a single pipeline per codebase"
|
|
251
|
-
)
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
def _validate_environment_pipelines_triggers(config):
|
|
255
|
-
errors = []
|
|
256
|
-
pipelines_with_triggers = {
|
|
257
|
-
pipeline_name: pipeline
|
|
258
|
-
for pipeline_name, pipeline in config.get("environment_pipelines", {}).items()
|
|
259
|
-
if "pipeline_to_trigger" in pipeline
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
for pipeline_name, pipeline in pipelines_with_triggers.items():
|
|
263
|
-
pipeline_to_trigger = pipeline["pipeline_to_trigger"]
|
|
264
|
-
if pipeline_to_trigger not in config.get("environment_pipelines", {}):
|
|
265
|
-
message = f" '{pipeline_name}' - '{pipeline_to_trigger}' is not a valid target pipeline to trigger"
|
|
266
|
-
|
|
267
|
-
errors.append(message)
|
|
268
|
-
continue
|
|
269
|
-
|
|
270
|
-
if pipeline_to_trigger == pipeline_name:
|
|
271
|
-
message = f" '{pipeline_name}' - pipelines cannot trigger themselves"
|
|
272
|
-
errors.append(message)
|
|
273
|
-
|
|
274
|
-
if errors:
|
|
275
|
-
error_message = "The following pipelines are misconfigured: \n"
|
|
276
|
-
abort_with_error(error_message + "\n ".join(errors))
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
def lint_yaml_for_duplicate_keys(file_path):
|
|
280
|
-
lint_yaml_config = """
|
|
281
|
-
rules:
|
|
282
|
-
key-duplicates: enable
|
|
283
|
-
"""
|
|
284
|
-
yaml_config = config.YamlLintConfig(lint_yaml_config)
|
|
285
|
-
|
|
286
|
-
with open(file_path, "r") as yaml_file:
|
|
287
|
-
file_contents = yaml_file.read()
|
|
288
|
-
results = linter.run(file_contents, yaml_config)
|
|
289
|
-
|
|
290
|
-
parsed_results = [
|
|
291
|
-
"\t" + f"Line {result.line}: {result.message}".replace(" in mapping (key-duplicates)", "")
|
|
292
|
-
for result in results
|
|
293
|
-
]
|
|
294
|
-
|
|
295
|
-
return parsed_results
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
def load_and_validate_platform_config(path=PLATFORM_CONFIG_FILE, disable_file_check=False):
|
|
299
|
-
if not disable_file_check:
|
|
300
|
-
config_file_check(path)
|
|
301
|
-
try:
|
|
302
|
-
conf = yaml.safe_load(Path(path).read_text())
|
|
303
|
-
duplicate_keys = lint_yaml_for_duplicate_keys(path)
|
|
304
|
-
if duplicate_keys:
|
|
305
|
-
abort_with_error(
|
|
306
|
-
"Duplicate keys found in platform-config:"
|
|
307
|
-
+ os.linesep
|
|
308
|
-
+ os.linesep.join(duplicate_keys)
|
|
309
|
-
)
|
|
310
|
-
validate_platform_config(conf)
|
|
311
|
-
return conf
|
|
312
|
-
except ParserError:
|
|
313
|
-
abort_with_error(f"{PLATFORM_CONFIG_FILE} is not valid YAML")
|
|
314
|
-
except SchemaError as e:
|
|
315
|
-
abort_with_error(f"Schema error in {PLATFORM_CONFIG_FILE}. {e}")
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
def config_file_check(path=PLATFORM_CONFIG_FILE):
|
|
319
|
-
platform_config_exists = Path(path).exists()
|
|
320
|
-
errors = []
|
|
321
|
-
warnings = []
|
|
322
|
-
|
|
323
|
-
messages = {
|
|
324
|
-
"storage.yml": {"instruction": " under the key 'extensions'", "type": errors},
|
|
325
|
-
"extensions.yml": {"instruction": " under the key 'extensions'", "type": errors},
|
|
326
|
-
"pipelines.yml": {
|
|
327
|
-
"instruction": ", change the key 'codebases' to 'codebase_pipelines'",
|
|
328
|
-
"type": errors,
|
|
329
|
-
},
|
|
330
|
-
PLATFORM_HELPER_VERSION_FILE: {
|
|
331
|
-
"instruction": ", under the key `default_versions: platform-helper:`",
|
|
332
|
-
"type": warnings,
|
|
333
|
-
},
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
for file in messages.keys():
|
|
337
|
-
if Path(file).exists():
|
|
338
|
-
message = (
|
|
339
|
-
f"`{file}` is no longer supported. Please move its contents into the "
|
|
340
|
-
f"`{PLATFORM_CONFIG_FILE}` file{messages[file]['instruction']} and delete `{file}`."
|
|
341
|
-
)
|
|
342
|
-
messages[file]["type"].append(message)
|
|
343
|
-
|
|
344
|
-
if not errors and not warnings and not platform_config_exists:
|
|
345
|
-
errors.append(
|
|
346
|
-
f"`{PLATFORM_CONFIG_FILE}` is missing. "
|
|
347
|
-
"Please check it exists and you are in the root directory of your deployment project."
|
|
348
|
-
)
|
|
349
|
-
|
|
350
|
-
if warnings:
|
|
351
|
-
click.secho("\n".join(warnings), bg="yellow", fg="black")
|
|
352
|
-
if errors:
|
|
353
|
-
click.secho("\n".join(errors), bg="red", fg="white")
|
|
354
|
-
exit(1)
|
|
@@ -11,6 +11,7 @@ from typing import Union
|
|
|
11
11
|
import click
|
|
12
12
|
import requests
|
|
13
13
|
|
|
14
|
+
from dbt_platform_helper.constants import DEFAULT_TERRAFORM_PLATFORM_MODULES_VERSION
|
|
14
15
|
from dbt_platform_helper.constants import PLATFORM_CONFIG_FILE
|
|
15
16
|
from dbt_platform_helper.constants import PLATFORM_HELPER_VERSION_FILE
|
|
16
17
|
from dbt_platform_helper.providers.validation import IncompatibleMajorVersionException
|
|
@@ -297,3 +298,14 @@ def get_required_platform_helper_version(
|
|
|
297
298
|
raise SystemExit(1)
|
|
298
299
|
|
|
299
300
|
return out
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
def get_required_terraform_platform_modules_version(
|
|
304
|
+
cli_terraform_platform_modules_version, platform_config_terraform_modules_default_version
|
|
305
|
+
):
|
|
306
|
+
version_preference_order = [
|
|
307
|
+
cli_terraform_platform_modules_version,
|
|
308
|
+
platform_config_terraform_modules_default_version,
|
|
309
|
+
DEFAULT_TERRAFORM_PLATFORM_MODULES_VERSION,
|
|
310
|
+
]
|
|
311
|
+
return [version for version in version_preference_order if version][0]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: dbt-platform-helper
|
|
3
|
-
Version: 12.
|
|
3
|
+
Version: 12.5.1
|
|
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,4 +1,4 @@
|
|
|
1
|
-
dbt_platform_helper/COMMANDS.md,sha256=
|
|
1
|
+
dbt_platform_helper/COMMANDS.md,sha256=Sm_rxHiEtdoRjmEnWAYpaEgOyCddWbV_PVP8aXrH_3g,21981
|
|
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
|
|
@@ -6,34 +6,45 @@ dbt_platform_helper/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
|
6
6
|
dbt_platform_helper/commands/application.py,sha256=eVwCaYuwBlk0zx0xfA6fW7b-S1pl8gkyT1lHKeeh2R0,10147
|
|
7
7
|
dbt_platform_helper/commands/codebase.py,sha256=KB8irKyFtb6pKn5cQ0MmTywGW7Vd8SSbWjT2mRnh3JA,2270
|
|
8
8
|
dbt_platform_helper/commands/conduit.py,sha256=KqRWiirl5Xl7qcJXOAsirbTLlV1XquOjddsopuj0Kp4,2272
|
|
9
|
-
dbt_platform_helper/commands/config.py,sha256=
|
|
10
|
-
dbt_platform_helper/commands/copilot.py,sha256=
|
|
9
|
+
dbt_platform_helper/commands/config.py,sha256=vIJh1piAqxRgxr4t68okPLfo-inkPiSoRNUFGPQBChg,12129
|
|
10
|
+
dbt_platform_helper/commands/copilot.py,sha256=1CTyAkTQBF_i6zkqYzOIUo5wq9UYWfj-G1W8D2oRjmE,13623
|
|
11
11
|
dbt_platform_helper/commands/database.py,sha256=aG3zcMHL5PE96b7LSAu0FGCbgcycQej3AGRcd-bpXUo,4115
|
|
12
|
-
dbt_platform_helper/commands/environment.py,sha256=
|
|
12
|
+
dbt_platform_helper/commands/environment.py,sha256=NyzvKnhPTklwg5ycC6KYc254avYvPiuVRYnaQ9doxgI,3356
|
|
13
13
|
dbt_platform_helper/commands/generate.py,sha256=YLCPb-xcPapGcsLn-7d1Am7BpGp5l0iecIDTOdNGjHk,722
|
|
14
14
|
dbt_platform_helper/commands/notify.py,sha256=kVJ0s78QMiaEWPVKu_bbMko4DW2uJy2fu8-HNJsglyk,3748
|
|
15
|
-
dbt_platform_helper/commands/pipeline.py,sha256=
|
|
15
|
+
dbt_platform_helper/commands/pipeline.py,sha256=tdLgcOOzPFbECKYN9UUHwK6tiwPvrMx3c4Q8ghRe1no,2685
|
|
16
16
|
dbt_platform_helper/commands/secrets.py,sha256=QjF9xUChioIr_P0fzqwyEcqLvcN-RNZmNFFlaUPVU9o,3994
|
|
17
17
|
dbt_platform_helper/commands/version.py,sha256=XVfSd53TDti4cceBqTmRfq_yZnvxs14RbrOjNJHW75U,1444
|
|
18
|
-
dbt_platform_helper/constants.py,sha256=
|
|
18
|
+
dbt_platform_helper/constants.py,sha256=f1zl5PJoauUxWOirXBJ8bdAGxOAQVLqNeCs6hldaq2I,971
|
|
19
19
|
dbt_platform_helper/default-extensions.yml,sha256=SU1ZitskbuEBpvE7efc3s56eAUF11j70brhj_XrNMMo,493
|
|
20
20
|
dbt_platform_helper/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
-
dbt_platform_helper/domain/codebase.py,sha256=
|
|
21
|
+
dbt_platform_helper/domain/codebase.py,sha256=oaRyztqIVy3-3t9ChP4DEWN7DOhZJrr0xMY_LLm4GzI,9797
|
|
22
22
|
dbt_platform_helper/domain/conduit.py,sha256=mvjDzxh-SCUCY5qGL73kG8TT7YqeQR8XtNcHx26SW2w,4344
|
|
23
|
-
dbt_platform_helper/domain/
|
|
24
|
-
dbt_platform_helper/domain/
|
|
25
|
-
dbt_platform_helper/
|
|
23
|
+
dbt_platform_helper/domain/config_validator.py,sha256=7te6L6zJrb-soVB5TKm4UwJyhCdONmNvE0TbqXb5U60,10177
|
|
24
|
+
dbt_platform_helper/domain/copilot_environment.py,sha256=UJw08KWIXspXMJEgbsO0f8RLlUWhmyAfVA6eUZa9X10,8143
|
|
25
|
+
dbt_platform_helper/domain/database_copy.py,sha256=OqxEARb2yIgoqu8LHp90IcW3gkNlNbPHUR5P9om5Sx4,9315
|
|
26
|
+
dbt_platform_helper/domain/maintenance_page.py,sha256=evj50GqmcgOtduQN20JJ6-M6zGubCW48DRa2V4yvy8o,16767
|
|
27
|
+
dbt_platform_helper/domain/pipelines.py,sha256=Woo1I_ceiNV53zOv1XdljfIsEAD65DgmEpr3_VyCRxI,8076
|
|
28
|
+
dbt_platform_helper/domain/terraform_environment.py,sha256=P1LlkMScIzzsoQFiLOTqidnagP9RCz-HRkd8z_JkvwQ,3056
|
|
29
|
+
dbt_platform_helper/domain/test_platform_terraform_manifest_generator.py,sha256=DvDlTeLGJfiAJKshBJKe9SZm4uMSOR7MMUPy37rUwKE,4325
|
|
30
|
+
dbt_platform_helper/jinja2_tags.py,sha256=hKG6RS3zlxJHQ-Op9r2U2-MhWp4s3lZir4Ihe24ApJ0,540
|
|
26
31
|
dbt_platform_helper/platform_exception.py,sha256=bheZV9lqGvrCVTNT92349dVntNDEDWTEwciZgC83WzE,187
|
|
27
32
|
dbt_platform_helper/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
33
|
dbt_platform_helper/providers/aws.py,sha256=KHgySe6cwEw1wePjw6DL7uSyZRk3DN_Aqqi8KnRoB3M,1208
|
|
29
|
-
dbt_platform_helper/providers/cache.py,sha256=
|
|
30
|
-
dbt_platform_helper/providers/cloudformation.py,sha256=
|
|
31
|
-
dbt_platform_helper/providers/
|
|
34
|
+
dbt_platform_helper/providers/cache.py,sha256=GIFVdpfXVnVgf2POQvBvZDP6pvYeUFjEuAdAQLbhJXs,2563
|
|
35
|
+
dbt_platform_helper/providers/cloudformation.py,sha256=AMUuhHqjjyYwraFKdkVLgcHs7XZShNHkQFZWHBOMeGg,4877
|
|
36
|
+
dbt_platform_helper/providers/config.py,sha256=arJ01kcbBxkarE2bGO-VKraBkYOborZqGBklmt0ckTk,3663
|
|
37
|
+
dbt_platform_helper/providers/copilot.py,sha256=nBbt-PoGXVkmb9njJti6Et8dq1W9GytW3jGBydNNYYU,5317
|
|
32
38
|
dbt_platform_helper/providers/ecs.py,sha256=XlQHYhZiLGrqR-1ZWMagGH2R2Hy7mCP6676eZL3YbNQ,3842
|
|
39
|
+
dbt_platform_helper/providers/files.py,sha256=E4PAHjGlAFEgbU9ntvHJguKKJf5gwrZF6H1LY054QG0,683
|
|
33
40
|
dbt_platform_helper/providers/load_balancers.py,sha256=0tPkuQ_jWfan44HrBA5EMLqrZaYQl-Lw5PavZ1a1iag,1615
|
|
34
|
-
dbt_platform_helper/providers/
|
|
41
|
+
dbt_platform_helper/providers/opensearch.py,sha256=tp64jTzHlutleqMpi2h_ZKH1iakZPJnUODebX6i2mfA,1335
|
|
42
|
+
dbt_platform_helper/providers/platform_config_schema.py,sha256=vKyk32tMJU99RZMnpqV9phS5-8N4tduSPZJOJBObYss,26513
|
|
43
|
+
dbt_platform_helper/providers/redis.py,sha256=aj8pitxG9IKrMkL3fIYayQhcHPPzApdaXq0Uq_0yblg,1217
|
|
35
44
|
dbt_platform_helper/providers/secrets.py,sha256=6cYIR15dLdHmqxtWQpM6R71e0_Xgsg9V291HBG-0LV0,5272
|
|
36
45
|
dbt_platform_helper/providers/validation.py,sha256=d_YzJZVjGNO65pXcPIcFc9I-FRCESeEC7GvUzP8n-As,596
|
|
46
|
+
dbt_platform_helper/providers/vpc.py,sha256=AtXW1qNQhmraeYAf7b04lLplcSvUG18EMrX_hPRIHiw,1905
|
|
47
|
+
dbt_platform_helper/providers/yaml_file.py,sha256=7jMLsDWetBBHWUvcaW652LaYUqICnf0n1H9eS6kNT5o,1990
|
|
37
48
|
dbt_platform_helper/templates/.copilot/config.yml,sha256=J_bA9sCtBdCPBRImpCBRnYvhQd4vpLYIXIU-lq9vbkA,158
|
|
38
49
|
dbt_platform_helper/templates/.copilot/image_build_run.sh,sha256=adYucYXEB-kAgZNjTQo0T6EIAY8sh_xCEvVhWKKQ8mw,164
|
|
39
50
|
dbt_platform_helper/templates/.copilot/phases/build.sh,sha256=umKXePcRvx4XyrRY0fAWIyYFtNjqBI2L8vIJk-V7C60,121
|
|
@@ -45,6 +56,7 @@ dbt_platform_helper/templates/addon-instructions.txt,sha256=Dhd1xDbFKnX7xjfCz0W5
|
|
|
45
56
|
dbt_platform_helper/templates/addons/README.md,sha256=UdVydY2ocm1OLKecZ8MAiXet3rKsMiq0PpBrmi0Xrns,412
|
|
46
57
|
dbt_platform_helper/templates/addons/svc/appconfig-ipfilter.yml,sha256=nBIXV4um4jIvXs3Q5QycHqVpJODK5yg_M-xJT6AOBKE,977
|
|
47
58
|
dbt_platform_helper/templates/addons/svc/prometheus-policy.yml,sha256=PwkGwri6IUuullXjEu17RZWYdoJR45Eb7BdUb2_AdOA,1074
|
|
59
|
+
dbt_platform_helper/templates/addons/svc/s3-cross-account-policy.yml,sha256=tZQ5XNIMPxv55Ilu0fIcc1I57dzDaQIQImhfsrijpQY,2211
|
|
48
60
|
dbt_platform_helper/templates/addons/svc/s3-policy.yml,sha256=jwTpFNmm8CaP0c6VXXBJvEm_YLA17Nf-S1xyU1ahLJ8,2164
|
|
49
61
|
dbt_platform_helper/templates/addons/svc/subscription-filter.yml,sha256=irD0AjPc38xTRzEday2Ko-KrjK4hPlyLxUFvUITjMkU,914
|
|
50
62
|
dbt_platform_helper/templates/ci-codebuild-role-policy.json,sha256=hNE-wGrraWxsJAWE9ahtL7Bkw7PEz-CXBQnM3DR70vQ,1836
|
|
@@ -72,22 +84,22 @@ dbt_platform_helper/templates/svc/manifest-backend.yml,sha256=aAD9ndkbXnF7JBAKS2
|
|
|
72
84
|
dbt_platform_helper/templates/svc/manifest-public.yml,sha256=6NHVR_onBu5hbwynLrB6roDRce7JcylSc0qeYvzlPdI,3664
|
|
73
85
|
dbt_platform_helper/templates/svc/overrides/cfn.patches.yml,sha256=W7-d017akuUq9kda64DQxazavcRcCPDjaAik6t1EZqM,742
|
|
74
86
|
dbt_platform_helper/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
|
-
dbt_platform_helper/utils/application.py,sha256=
|
|
87
|
+
dbt_platform_helper/utils/application.py,sha256=53xGrG8VBKrM4jyBKjuZZdwaYBbJ3PiznCCwlLieTKw,4804
|
|
76
88
|
dbt_platform_helper/utils/arn_parser.py,sha256=BaXzIxSOLdFmP_IfAxRq-0j-0Re1iCN7L4j2Zi5-CRQ,1304
|
|
77
|
-
dbt_platform_helper/utils/aws.py,sha256=
|
|
89
|
+
dbt_platform_helper/utils/aws.py,sha256=4GRzsY9nJUWpZoG3zjkb4bj98ec3PMxZ3sFgmvGlw9w,16349
|
|
78
90
|
dbt_platform_helper/utils/click.py,sha256=Fx4y4bbve1zypvog_sgK7tJtCocmzheoEFLBRv1lfdM,2943
|
|
79
91
|
dbt_platform_helper/utils/cloudfoundry.py,sha256=GnQ4fVLnDfOdNSrsJjI6ElZHqpgwINeoPn77cUH2UFY,484
|
|
80
|
-
dbt_platform_helper/utils/files.py,sha256=
|
|
92
|
+
dbt_platform_helper/utils/files.py,sha256=adQtG2E1IQHDKfeX06l6j1B7UTYukwBuR_uhJHaoi5M,1873
|
|
81
93
|
dbt_platform_helper/utils/git.py,sha256=7JGZMaI8-cU6-GjXIXjOlsYfKu_RppLOGyAicBd4n_8,704
|
|
82
94
|
dbt_platform_helper/utils/manifests.py,sha256=ji3UYHCxq9tTpkm4MlRa2y0-JOYYqq1pWZ2h_zpj0UU,507
|
|
83
95
|
dbt_platform_helper/utils/messages.py,sha256=aLx6s9utt__IqlDdeIYq4n82ERwludu2Zfqy0Q2t-x8,115
|
|
84
|
-
dbt_platform_helper/utils/platform_config.py,sha256=
|
|
85
|
-
dbt_platform_helper/utils/template.py,sha256=
|
|
86
|
-
dbt_platform_helper/utils/validation.py,sha256=
|
|
87
|
-
dbt_platform_helper/utils/versioning.py,sha256=
|
|
96
|
+
dbt_platform_helper/utils/platform_config.py,sha256=hAQ7bX-Jqu4L9zPYpBq3EK73LRhOK5-fEP2r3MbT_iQ,475
|
|
97
|
+
dbt_platform_helper/utils/template.py,sha256=g-Db-0I6a6diOHkgK1nYA0IxJSO4TRrjqOvlyeOR32o,950
|
|
98
|
+
dbt_platform_helper/utils/validation.py,sha256=lmWVqRweswj-h7TPYP8lvluq8Qeu0htyKFbz2WUkPxI,1185
|
|
99
|
+
dbt_platform_helper/utils/versioning.py,sha256=XBZcyj8fW3xU6fzLTe1fMj2d3hKdQi8jUc-ZyPKJtwk,11428
|
|
88
100
|
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.
|
|
101
|
+
dbt_platform_helper-12.5.1.dist-info/LICENSE,sha256=dP79lN73--7LMApnankTGLqDbImXg8iYFqWgnExGkGk,1090
|
|
102
|
+
dbt_platform_helper-12.5.1.dist-info/METADATA,sha256=2b2IPTvC5b6F4jnyZjX_zuY7Wc2CzEeSACAtJN3QB3c,3212
|
|
103
|
+
dbt_platform_helper-12.5.1.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
|
104
|
+
dbt_platform_helper-12.5.1.dist-info/entry_points.txt,sha256=QhbY8F434A-onsg0-FsdMd2U6HKh6Q7yCFFZrGUh5-M,67
|
|
105
|
+
dbt_platform_helper-12.5.1.dist-info/RECORD,,
|
|
File without changes
|
{dbt_platform_helper-12.4.1.dist-info → dbt_platform_helper-12.5.1.dist-info}/entry_points.txt
RENAMED
|
File without changes
|