dbt-platform-helper 15.2.2__py3-none-any.whl → 15.3.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.
@@ -1,6 +1,13 @@
1
1
  # TODO: DBTP-1888: Move to Config provider
2
2
  PLATFORM_CONFIG_FILE = "platform-config.yml"
3
3
  PLATFORM_HELPER_VERSION_OVERRIDE_KEY = "PLATFORM_HELPER_VERSION_OVERRIDE"
4
+ TERRAFORM_EXTENSIONS_MODULE_SOURCE_OVERRIDE_ENV_VAR = "TERRAFORM_EXTENSIONS_MODULE_SOURCE_OVERRIDE"
5
+ TERRAFORM_ENVIRONMENT_PIPELINES_MODULE_SOURCE_OVERRIDE_ENV_VAR = (
6
+ "TERRAFORM_ENVIRONMENT_PIPELINES_MODULE_SOURCE_OVERRIDE"
7
+ )
8
+ TERRAFORM_CODEBASE_PIPELINES_MODULE_SOURCE_OVERRIDE_ENV_VAR = (
9
+ "TERRAFORM_CODEBASE_PIPELINES_MODULE_SOURCE_OVERRIDE"
10
+ )
4
11
  PLATFORM_HELPER_PACKAGE_NAME = "dbt-platform-helper"
5
12
  SUPPORTED_TERRAFORM_VERSION = "~> 1.8"
6
13
  SUPPORTED_AWS_PROVIDER_VERSION = "~> 5"
@@ -1,4 +1,3 @@
1
- import os
2
1
  from collections.abc import Callable
3
2
  from os import makedirs
4
3
  from pathlib import Path
@@ -9,8 +8,17 @@ from dbt_platform_helper.constants import ENVIRONMENT_PIPELINES_KEY
9
8
  from dbt_platform_helper.constants import PLATFORM_HELPER_VERSION_OVERRIDE_KEY
10
9
  from dbt_platform_helper.constants import SUPPORTED_AWS_PROVIDER_VERSION
11
10
  from dbt_platform_helper.constants import SUPPORTED_TERRAFORM_VERSION
11
+ from dbt_platform_helper.constants import (
12
+ TERRAFORM_CODEBASE_PIPELINES_MODULE_SOURCE_OVERRIDE_ENV_VAR,
13
+ )
14
+ from dbt_platform_helper.constants import (
15
+ TERRAFORM_ENVIRONMENT_PIPELINES_MODULE_SOURCE_OVERRIDE_ENV_VAR,
16
+ )
12
17
  from dbt_platform_helper.providers.config import ConfigProvider
13
18
  from dbt_platform_helper.providers.ecr import ECRProvider
19
+ from dbt_platform_helper.providers.environment_variable import (
20
+ EnvironmentVariableProvider,
21
+ )
14
22
  from dbt_platform_helper.providers.files import FileProvider
15
23
  from dbt_platform_helper.providers.io import ClickIOProvider
16
24
  from dbt_platform_helper.providers.terraform_manifest import TerraformManifestProvider
@@ -28,6 +36,7 @@ class Pipelines:
28
36
  get_codestar_arn: Callable[[str], str],
29
37
  io: ClickIOProvider = ClickIOProvider(),
30
38
  file_provider: FileProvider = FileProvider(),
39
+ environment_variable_provider: EnvironmentVariableProvider = None,
31
40
  platform_helper_version_override: str = None,
32
41
  ):
33
42
  self.config_provider = config_provider
@@ -37,8 +46,12 @@ class Pipelines:
37
46
  self.ecr_provider = ecr_provider
38
47
  self.io = io
39
48
  self.file_provider = file_provider
40
- self.platform_helper_version_override = platform_helper_version_override or os.environ.get(
41
- PLATFORM_HELPER_VERSION_OVERRIDE_KEY
49
+ self.environment_variable_provider = (
50
+ environment_variable_provider or EnvironmentVariableProvider()
51
+ )
52
+ self.platform_helper_version_override = (
53
+ platform_helper_version_override
54
+ or self.environment_variable_provider.get(PLATFORM_HELPER_VERSION_OVERRIDE_KEY)
42
55
  )
43
56
 
44
57
  def generate(
@@ -86,6 +99,13 @@ class Pipelines:
86
99
  )
87
100
  deploy_repository = f"uktrade/{platform_config['application']}-deploy"
88
101
 
102
+ env_pipeline_module_source = (
103
+ self.environment_variable_provider.get(
104
+ TERRAFORM_ENVIRONMENT_PIPELINES_MODULE_SOURCE_OVERRIDE_ENV_VAR
105
+ )
106
+ or f"git::git@github.com:uktrade/platform-tools.git//terraform/environment-pipelines?depth=1&ref={platform_helper_version_for_template}"
107
+ )
108
+
89
109
  if has_environment_pipelines:
90
110
  environment_pipelines = platform_config[ENVIRONMENT_PIPELINES_KEY]
91
111
  accounts = {
@@ -99,7 +119,7 @@ class Pipelines:
99
119
  platform_config["application"],
100
120
  deploy_repository,
101
121
  account,
102
- platform_helper_version_for_template,
122
+ env_pipeline_module_source,
103
123
  deploy_branch,
104
124
  )
105
125
 
@@ -116,11 +136,19 @@ class Pipelines:
116
136
  if repo in ecrs_already_provisioned
117
137
  }
118
138
 
139
+ codebase_pipeline_module_source = (
140
+ self.environment_variable_provider.get(
141
+ TERRAFORM_CODEBASE_PIPELINES_MODULE_SOURCE_OVERRIDE_ENV_VAR
142
+ )
143
+ or f"git::git@github.com:uktrade/platform-tools.git//terraform/codebase-pipelines?depth=1&ref={platform_helper_version_for_template}"
144
+ )
145
+
119
146
  self.terraform_manifest_provider.generate_codebase_pipeline_config(
120
147
  platform_config,
121
148
  platform_helper_version_for_template,
122
149
  ecrs_that_need_importing,
123
150
  deploy_repository,
151
+ codebase_pipeline_module_source,
124
152
  )
125
153
 
126
154
  def _clean_pipeline_config(self, pipelines_dir: Path):
@@ -133,7 +161,7 @@ class Pipelines:
133
161
  application: str,
134
162
  deploy_repository: str,
135
163
  aws_account: str,
136
- platform_helper_version: str,
164
+ module_source: str,
137
165
  deploy_branch: str,
138
166
  ):
139
167
  env_pipeline_template = setup_templates().get_template("environment-pipelines/main.tf")
@@ -143,7 +171,7 @@ class Pipelines:
143
171
  "application": application,
144
172
  "deploy_repository": deploy_repository,
145
173
  "aws_account": aws_account,
146
- "platform_helper_version": platform_helper_version,
174
+ "module_source": module_source,
147
175
  "deploy_branch": deploy_branch,
148
176
  "terraform_version": SUPPORTED_TERRAFORM_VERSION,
149
177
  "aws_provider_version": SUPPORTED_AWS_PROVIDER_VERSION,
@@ -1,7 +1,11 @@
1
- import os
2
-
3
1
  from dbt_platform_helper.constants import PLATFORM_HELPER_VERSION_OVERRIDE_KEY
2
+ from dbt_platform_helper.constants import (
3
+ TERRAFORM_EXTENSIONS_MODULE_SOURCE_OVERRIDE_ENV_VAR,
4
+ )
4
5
  from dbt_platform_helper.platform_exception import PlatformException
6
+ from dbt_platform_helper.providers.environment_variable import (
7
+ EnvironmentVariableProvider,
8
+ )
5
9
  from dbt_platform_helper.providers.io import ClickIOProvider
6
10
  from dbt_platform_helper.providers.terraform_manifest import TerraformManifestProvider
7
11
 
@@ -19,14 +23,19 @@ class TerraformEnvironment:
19
23
  self,
20
24
  config_provider,
21
25
  manifest_provider: TerraformManifestProvider = None,
26
+ environment_variable_provider: EnvironmentVariableProvider = None,
22
27
  io: ClickIOProvider = ClickIOProvider(),
23
28
  platform_helper_version_override: str = None,
24
29
  ):
25
30
  self.io = io
26
31
  self.config_provider = config_provider
27
32
  self.manifest_provider = manifest_provider or TerraformManifestProvider()
28
- self.platform_helper_version_override = platform_helper_version_override or os.environ.get(
29
- PLATFORM_HELPER_VERSION_OVERRIDE_KEY
33
+ self.environment_variable_provider = (
34
+ environment_variable_provider or EnvironmentVariableProvider()
35
+ )
36
+ self.platform_helper_version_override = (
37
+ platform_helper_version_override
38
+ or self.environment_variable_provider.get(PLATFORM_HELPER_VERSION_OVERRIDE_KEY)
30
39
  )
31
40
 
32
41
  def generate(
@@ -48,6 +57,13 @@ class TerraformEnvironment:
48
57
  if self.platform_helper_version_override:
49
58
  platform_helper_version_for_template = self.platform_helper_version_override
50
59
 
60
+ module_source_override = self.environment_variable_provider.get(
61
+ TERRAFORM_EXTENSIONS_MODULE_SOURCE_OVERRIDE_ENV_VAR
62
+ )
63
+
51
64
  self.manifest_provider.generate_environment_config(
52
- config, environment_name, platform_helper_version_for_template
65
+ config,
66
+ environment_name,
67
+ platform_helper_version_for_template,
68
+ module_source_override,
53
69
  )
@@ -0,0 +1,24 @@
1
+ import os
2
+ from typing import Optional
3
+
4
+ from dbt_platform_helper.platform_exception import PlatformException
5
+
6
+
7
+ class EnvironmentVariableProvider:
8
+
9
+ @staticmethod
10
+ def get(env_var: str) -> Optional[str]:
11
+ """Returns the stripped value or None if not set or empty."""
12
+ value = os.environ.get(env_var)
13
+ if value and value.strip():
14
+ return value.strip()
15
+ return None
16
+
17
+ @staticmethod
18
+ def get_required(env_var: str) -> str:
19
+ """Returns the stripped value or raises a PlatformException if not set
20
+ or empty."""
21
+ value = os.environ.get(env_var)
22
+ if not value or not value.strip():
23
+ raise PlatformException(f"Environment variable '{env_var}' is not set or is empty")
24
+ return value.strip()
@@ -17,7 +17,7 @@ class FileProvider:
17
17
  file_path.write_text(contents)
18
18
 
19
19
  action = "overwritten" if file_exists and overwrite else "created"
20
- return f"File {file_name} {action}"
20
+ return f"File {file_path} {action}"
21
21
 
22
22
  @staticmethod
23
23
  def delete_file(base_path: str, file_name: str):
@@ -1,18 +1,21 @@
1
- import os
2
-
3
1
  import click
4
2
 
5
3
  from dbt_platform_helper.platform_exception import PlatformException
6
-
7
- DEBUG = os.environ.get("DEBUG", False)
4
+ from dbt_platform_helper.providers.environment_variable import (
5
+ EnvironmentVariableProvider,
6
+ )
8
7
 
9
8
 
10
9
  class ClickIOProvider:
10
+ def __init__(self, env_var_provider=EnvironmentVariableProvider()):
11
+ self.env_var_provider = env_var_provider
12
+ self.debug_flag = self.env_var_provider.get("DEBUG")
13
+
11
14
  def warn(self, message: str):
12
15
  click.secho(message, fg="magenta")
13
16
 
14
17
  def debug(self, message: str):
15
- if DEBUG == "True":
18
+ if self.debug_flag and self.debug_flag.strip().upper() == "TRUE":
16
19
  click.secho(message, fg="green")
17
20
 
18
21
  def error(self, message: str):
@@ -28,7 +28,8 @@ class LoadBalancerProvider:
28
28
  def find_target_group(self, app: str, env: str, svc: str) -> str:
29
29
  target_group_arn = None
30
30
 
31
- response = self.rg_tagging_client.get_resources(
31
+ paginator = self.rg_tagging_client.get_paginator("get_resources")
32
+ page_iterator = paginator.paginate(
32
33
  TagFilters=[
33
34
  {
34
35
  "Key": "copilot-application",
@@ -48,19 +49,18 @@ class LoadBalancerProvider:
48
49
  ResourceTypeFilters=[
49
50
  "elasticloadbalancing:targetgroup",
50
51
  ],
51
- ) # TODO: DBTP-1942: should be paginated
52
- for resource in response["ResourceTagMappingList"]:
53
- tags = {tag["Key"]: tag["Value"] for tag in resource["Tags"]}
54
-
55
- if (
56
- "copilot-service" in tags
57
- and tags["copilot-service"] == svc
58
- and "copilot-environment" in tags
59
- and tags["copilot-environment"] == env
60
- and "copilot-application" in tags
61
- and tags["copilot-application"] == app
62
- ):
63
- target_group_arn = resource["ResourceARN"]
52
+ )
53
+
54
+ for page in page_iterator:
55
+ for resource in page["ResourceTagMappingList"]:
56
+ tags = {tag["Key"]: tag["Value"] for tag in resource["Tags"]}
57
+
58
+ if (
59
+ tags.get("copilot-service") == svc
60
+ and tags.get("copilot-environment") == env
61
+ and tags.get("copilot-application") == app
62
+ ):
63
+ target_group_arn = resource["ResourceARN"]
64
64
 
65
65
  if not target_group_arn:
66
66
  self.io.error(
@@ -69,11 +69,12 @@ class LoadBalancerProvider:
69
69
 
70
70
  return target_group_arn
71
71
 
72
- def get_https_certificate_for_application(self, app: str, env: str) -> str:
73
- listener_arn = self.get_https_listener_for_application(app, env)
74
- certificates = self.evlb_client.describe_listener_certificates(ListenerArn=listener_arn)[
75
- "Certificates"
76
- ] # TODO: DBTP-1942: should be paginated
72
+ def get_https_certificate_for_listener(self, listener_arn: str, env: str):
73
+ certificates = []
74
+ paginator = self.evlb_client.get_paginator("describe_listener_certificates")
75
+ page_iterator = paginator.paginate(ListenerArn=listener_arn)
76
+ for page in page_iterator:
77
+ certificates.extend(page["Certificates"])
77
78
 
78
79
  try:
79
80
  certificate_arn = next(c["CertificateArn"] for c in certificates if c["IsDefault"])
@@ -82,12 +83,22 @@ class LoadBalancerProvider:
82
83
 
83
84
  return certificate_arn
84
85
 
86
+ def get_https_certificate_for_application(self, app: str, env: str) -> str:
87
+ listener_arn = self.get_https_listener_for_application(app, env)
88
+ return self.get_https_certificate_for_listener(listener_arn, env)
89
+
90
+ def get_listeners_for_load_balancer(self, load_balancer_arn):
91
+ listeners = []
92
+ paginator = self.evlb_client.get_paginator("describe_listeners")
93
+ page_iterator = paginator.paginate(LoadBalancerArn=load_balancer_arn)
94
+ for page in page_iterator:
95
+ listeners.extend(page["Listeners"])
96
+
97
+ return listeners
98
+
85
99
  def get_https_listener_for_application(self, app: str, env: str) -> str:
86
100
  load_balancer_arn = self.get_load_balancer_for_application(app, env)
87
-
88
- listeners = self.evlb_client.describe_listeners(LoadBalancerArn=load_balancer_arn)[
89
- "Listeners"
90
- ] # TODO: DBTP-1942: should be paginated
101
+ listeners = self.get_listeners_for_load_balancer(load_balancer_arn)
91
102
 
92
103
  listener_arn = None
93
104
 
@@ -101,16 +112,23 @@ class LoadBalancerProvider:
101
112
 
102
113
  return listener_arn
103
114
 
104
- def get_load_balancer_for_application(self, app: str, env: str) -> str:
105
- describe_response = self.evlb_client.describe_load_balancers()
106
- load_balancers = [lb["LoadBalancerArn"] for lb in describe_response["LoadBalancers"]]
115
+ def get_load_balancers(self):
116
+ load_balancers = []
117
+ paginator = self.evlb_client.get_paginator("describe_load_balancers")
118
+ page_iterator = paginator.paginate()
119
+ for page in page_iterator:
120
+ load_balancers.extend(lb["LoadBalancerArn"] for lb in page["LoadBalancers"])
107
121
 
122
+ return load_balancers
123
+
124
+ def get_load_balancer_for_application(self, app: str, env: str) -> str:
125
+ load_balancers = self.get_load_balancers()
108
126
  tag_descriptions = []
109
127
  for i in range(0, len(load_balancers), 20):
110
128
  chunk = load_balancers[i : i + 20]
111
129
  tag_descriptions.extend(
112
130
  self.evlb_client.describe_tags(ResourceArns=chunk)["TagDescriptions"]
113
- )
131
+ ) # describe_tags cannot be paginated - 04/04/2025
114
132
 
115
133
  for lb in tag_descriptions:
116
134
  tags = {t["Key"]: t["Value"] for t in lb["Tags"]}
@@ -121,9 +139,11 @@ class LoadBalancerProvider:
121
139
  raise LoadBalancerNotFoundException(app, env)
122
140
 
123
141
  def get_host_header_conditions(self, listener_arn: str, target_group_arn: str) -> list:
124
- rules = self.evlb_client.describe_rules(ListenerArn=listener_arn)[
125
- "Rules"
126
- ] # TODO: DBTP-1942: should be paginated
142
+ rules = []
143
+ paginator = self.evlb_client.get_paginator("describe_rules")
144
+ page_iterator = paginator.paginate(ListenerArn=listener_arn)
145
+ for page in page_iterator:
146
+ rules.extend(page["Rules"])
127
147
 
128
148
  conditions = []
129
149
 
@@ -150,11 +170,19 @@ class LoadBalancerProvider:
150
170
  return conditions
151
171
 
152
172
  def get_rules_tag_descriptions_by_listener_arn(self, listener_arn: str) -> list:
153
- rules = self.evlb_client.describe_rules(ListenerArn=listener_arn)[
154
- "Rules"
155
- ] # TODO: DBTP-1942: should be paginated
173
+ rules = self.get_listener_rules_by_listener_arn(listener_arn)
174
+
156
175
  return self.get_rules_tag_descriptions(rules)
157
176
 
177
+ def get_listener_rules_by_listener_arn(self, listener_arn: str) -> list:
178
+ rules = []
179
+ paginator = self.evlb_client.get_paginator("describe_rules")
180
+ page_iterator = paginator.paginate(ListenerArn=listener_arn)
181
+ for page in page_iterator:
182
+ rules.extend(page["Rules"])
183
+
184
+ return rules
185
+
158
186
  def get_rules_tag_descriptions(self, rules: list) -> list:
159
187
  tag_descriptions = []
160
188
  chunk_size = 20
@@ -164,7 +192,7 @@ class LoadBalancerProvider:
164
192
  resource_arns = [r["RuleArn"] for r in chunk]
165
193
  response = self.evlb_client.describe_tags(
166
194
  ResourceArns=resource_arns
167
- ) # TODO should be paginated
195
+ ) # describe_tags cannot be paginated - 04/04/2025
168
196
  tag_descriptions.extend(response["TagDescriptions"])
169
197
 
170
198
  return tag_descriptions
@@ -23,6 +23,7 @@ class TerraformManifestProvider:
23
23
  platform_helper_version: str,
24
24
  ecr_imports: dict[str, str],
25
25
  deploy_repository: str,
26
+ module_source: str,
26
27
  ):
27
28
  default_account = self._get_account_for_env("*", platform_config)
28
29
  state_key_suffix = f"{platform_config['application']}-codebase-pipelines"
@@ -32,7 +33,9 @@ class TerraformManifestProvider:
32
33
  self._add_codebase_pipeline_locals(terraform)
33
34
  self._add_provider(terraform, default_account)
34
35
  self._add_backend(terraform, platform_config, default_account, state_key_suffix)
35
- self._add_codebase_pipeline_module(terraform, platform_helper_version, deploy_repository)
36
+ self._add_codebase_pipeline_module(
37
+ terraform, platform_helper_version, deploy_repository, module_source
38
+ )
36
39
  self._add_imports(terraform, ecr_imports)
37
40
  self._write_terraform_json(terraform, "terraform/codebase-pipelines")
38
41
 
@@ -41,6 +44,7 @@ class TerraformManifestProvider:
41
44
  platform_config: dict,
42
45
  env: str,
43
46
  platform_helper_version: str,
47
+ module_source_override: str = None,
44
48
  ):
45
49
  platform_config = ConfigProvider.apply_environment_defaults(platform_config)
46
50
  account = self._get_account_for_env(env, platform_config)
@@ -53,7 +57,7 @@ class TerraformManifestProvider:
53
57
  self._add_header(terraform)
54
58
  self._add_environment_locals(terraform, application_name)
55
59
  self._add_backend(terraform, platform_config, account, state_key_suffix)
56
- self._add_extensions_module(terraform, platform_helper_version, env)
60
+ self._add_extensions_module(terraform, platform_helper_version, env, module_source_override)
57
61
  self._add_moved(terraform, platform_config)
58
62
  self._ensure_no_hcl_manifest_file(env_dir)
59
63
  self._write_terraform_json(terraform, env_dir)
@@ -115,9 +119,12 @@ class TerraformManifestProvider:
115
119
 
116
120
  @staticmethod
117
121
  def _add_codebase_pipeline_module(
118
- terraform: dict, platform_helper_version: str, deploy_repository: str
122
+ terraform: dict,
123
+ platform_helper_version: str,
124
+ deploy_repository: str,
125
+ module_source: str,
119
126
  ):
120
- source = f"git::https://github.com/uktrade/platform-tools.git//terraform/codebase-pipelines?depth=1&ref={platform_helper_version}"
127
+ source = module_source
121
128
  terraform["module"] = {
122
129
  "codebase-pipelines": {
123
130
  "source": source,
@@ -133,12 +140,18 @@ class TerraformManifestProvider:
133
140
  "requires_image_build": '${lookup(each.value, "requires_image_build", true)}',
134
141
  "slack_channel": '${lookup(each.value, "slack_channel", "/codebuild/slack_oauth_channel")}',
135
142
  "env_config": "${local.environments}",
143
+ "platform_tools_version": f"{platform_helper_version}",
136
144
  }
137
145
  }
138
146
 
139
147
  @staticmethod
140
- def _add_extensions_module(terraform: dict, platform_helper_version: str, env: str):
141
- source = f"git::https://github.com/uktrade/platform-tools.git//terraform/extensions?depth=1&ref={platform_helper_version}"
148
+ def _add_extensions_module(
149
+ terraform: dict, platform_helper_version: str, env: str, module_source_override: str = None
150
+ ):
151
+ source = (
152
+ module_source_override
153
+ or f"git::git@github.com:uktrade/platform-tools.git//terraform/extensions?depth=1&ref={platform_helper_version}"
154
+ )
142
155
  terraform["module"] = {
143
156
  "extensions": {
144
157
  "source": source,
@@ -209,7 +222,7 @@ class TerraformManifestProvider:
209
222
 
210
223
  def _write_terraform_json(self, terraform: dict, env_dir: str):
211
224
  message = self.file_provider.mkfile(
212
- str(Path(env_dir).absolute()),
225
+ str(Path(env_dir)),
213
226
  "main.tf.json",
214
227
  json.dumps(terraform, indent=2),
215
228
  True,
@@ -34,7 +34,7 @@ terraform {
34
34
 
35
35
 
36
36
  module "environment-pipelines" {
37
- source = "git::https://github.com/uktrade/platform-tools.git//terraform/environment-pipelines?depth=1&ref={{ platform_helper_version }}"
37
+ source = "{{ module_source }}"
38
38
 
39
39
  for_each = local.pipelines
40
40
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dbt-platform-helper
3
- Version: 15.2.2
3
+ Version: 15.3.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
@@ -14,7 +14,7 @@ dbt_platform_helper/commands/notify.py,sha256=DMXA0AHot6-7CMzmY0PXPMMBVnLgvQgXr6
14
14
  dbt_platform_helper/commands/pipeline.py,sha256=PGpDDmyReVa4gdpXDwJEsHN51f5MgTIbm2AibTkuWrE,2580
15
15
  dbt_platform_helper/commands/secrets.py,sha256=haSbF401H4XLzS9LWGLC6h_EcZHLcIF-rW1XkzUOy58,3985
16
16
  dbt_platform_helper/commands/version.py,sha256=2GltWeeN7cqhVj9FhYWSbXSQSyNILHVNOeANGWtAllY,1097
17
- dbt_platform_helper/constants.py,sha256=Ao2uvVRcxRN5SXqvW6Jq2srd7LuyGz1jPy4fg2N6XSk,1153
17
+ dbt_platform_helper/constants.py,sha256=m5IkYADa4icxfIAK-hKCIoKhyi0FvoL-URAzomyE5lg,1507
18
18
  dbt_platform_helper/default-extensions.yml,sha256=SU1ZitskbuEBpvE7efc3s56eAUF11j70brhj_XrNMMo,493
19
19
  dbt_platform_helper/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  dbt_platform_helper/domain/codebase.py,sha256=2hJoBiDB2ciOudT_YUR44XV0ZQPWUJld_UIuds4XOt8,12481
@@ -25,9 +25,9 @@ dbt_platform_helper/domain/copilot_environment.py,sha256=fL3XJCOfO0BJRCrCoBPFCcs
25
25
  dbt_platform_helper/domain/database_copy.py,sha256=AedcBTfKDod0OlMqVP6zb9c_9VIc3vqro0oUUhh7nwc,9497
26
26
  dbt_platform_helper/domain/maintenance_page.py,sha256=0_dgM5uZvjVNBKcqScspjutinMh-7Hdm7jBEgUPujrk,14529
27
27
  dbt_platform_helper/domain/notify.py,sha256=_BWj5znDWtrSdJ5xzDBgnao4ukliBA5wiUZGobIDyiI,1894
28
- dbt_platform_helper/domain/pipelines.py,sha256=BUoXlV4pIKSw3Ry6oVMzd0mBU6tfl_tvqp-1zxHrQdk,6552
28
+ dbt_platform_helper/domain/pipelines.py,sha256=rL_NArksFgmpsIUL3K_xVmTWt10tmlw5eCP140j96bc,7832
29
29
  dbt_platform_helper/domain/plans.py,sha256=X5-jKGiJDVWn0CRH1k5aV74fTH0E41HqFQcCo5kB4hI,1160
30
- dbt_platform_helper/domain/terraform_environment.py,sha256=kPfA44KCNnF_7ihQPuxaShLjEnVShrbruLwr5xoCeRc,1825
30
+ dbt_platform_helper/domain/terraform_environment.py,sha256=g9PSuZeVXgboGNDXU7OGMiRATd67NU8S92HUGri1fbo,2471
31
31
  dbt_platform_helper/domain/versioning.py,sha256=pIL8VPAJHqX5kJBp3QIxII5vmUo4aIYW_U9u_KxUJd0,5494
32
32
  dbt_platform_helper/entities/platform_config_schema.py,sha256=s7NiCKpI0WpwqEp3AgNTPC0J-0tgP7Ee2yvKC6CP9co,26665
33
33
  dbt_platform_helper/entities/semantic_version.py,sha256=VgQ6V6OgSaleuVmMB8Kl_yLoakXl2auapJTDbK00mfc,2679
@@ -47,17 +47,18 @@ dbt_platform_helper/providers/config_validator.py,sha256=uF1GB-fl0ZuXVCtLNANgnY2
47
47
  dbt_platform_helper/providers/copilot.py,sha256=voFVGhvtOElulx6Cgd1KQGkybrg8v4oGkJTr_xRpF18,5582
48
48
  dbt_platform_helper/providers/ecr.py,sha256=eYXSY1-pFN6F3Es1WSZgv3dmvX2oD-baqhHDO-QzgVg,4382
49
49
  dbt_platform_helper/providers/ecs.py,sha256=4XRpOgcl7KFiTp9lhNrp4Lvmje0ZFYuUh9Z_eEqhyhA,6538
50
- dbt_platform_helper/providers/files.py,sha256=cJdOV6Eupi-COmGUMxZMF10BZnMi3MCCipTVUnE_NPA,857
51
- dbt_platform_helper/providers/io.py,sha256=5C7XUxy3XNqSWgxryr4Uy0l4J9np_lryGskqE0TRpmQ,1459
50
+ dbt_platform_helper/providers/environment_variable.py,sha256=0v1thpqhsYHwLvzSc7eagV9KiwFQ_7cIdjl-KB2NUNM,777
51
+ dbt_platform_helper/providers/files.py,sha256=sH02Ka_WaDBFtN4Y0i9kuo9YQoKn2rhUy0Dn8LPMrEw,857
52
+ dbt_platform_helper/providers/io.py,sha256=-C_NLHH_ebN2G5ZMtAAj4E9AqcDZX98mIWgAV34Dm7U,1737
52
53
  dbt_platform_helper/providers/kms.py,sha256=JR2EU3icXePoJCtr7QnqDPj1wWbyn5Uf9CRFq3_4lRs,647
53
- dbt_platform_helper/providers/load_balancers.py,sha256=G-gqhthaO6ZmpKq6zAqnY1AUtc5YjnI99sQzpeaM0ec,10644
54
+ dbt_platform_helper/providers/load_balancers.py,sha256=DqmUeFyfrHGzZiR16SCXqZ6q1mjrWtUWFCdXfcb2kgw,11745
54
55
  dbt_platform_helper/providers/parameter_store.py,sha256=klxDhcQ65Yc2KAc4Gf5P0vhpZOW7_vZalAVb-LLAA4s,1568
55
56
  dbt_platform_helper/providers/schema_migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
57
  dbt_platform_helper/providers/schema_migrations/schema_v0_to_v1_migration.py,sha256=dplbvEAc8l8F4dEAy3JwLP1Phjkt4QVuQYNX_EKe_Ls,2036
57
58
  dbt_platform_helper/providers/schema_migrator.py,sha256=qk14k3hMz1av9VrxHyJw2OKJLQnCBv_ugOoxZr3tFXQ,2854
58
59
  dbt_platform_helper/providers/secrets.py,sha256=mOTIrcRRxxV2tS40U8onAjWekfPS3NzCvvyCMjr_yrU,5327
59
60
  dbt_platform_helper/providers/slack_channel_notifier.py,sha256=G8etEcaBQSNHg8BnyC5UPv6l3vUB14cYWjcaAQksaEk,2135
60
- dbt_platform_helper/providers/terraform_manifest.py,sha256=gfluve8mcHSkZqq4nNhazte48I7LFbJoQAVBMJBnNk4,9660
61
+ dbt_platform_helper/providers/terraform_manifest.py,sha256=Qst0GwLyOgHgmli3gVciVXCCEWEyfTJEle-AfmCfF34,9899
61
62
  dbt_platform_helper/providers/validation.py,sha256=i2g-Mrd4hy_fGIfGa6ZQy4vTJ40OM44Fe_XpEifGWxs,126
62
63
  dbt_platform_helper/providers/version.py,sha256=QNGrV5nyJi0JysXowYUU4OrXGDn27WmFezlV8benpdY,4251
63
64
  dbt_platform_helper/providers/version_status.py,sha256=qafnhZrEc9k1cvXJpvJhkGj6WtkzcsoQhqS_Y6JXy48,929
@@ -82,7 +83,7 @@ dbt_platform_helper/templates/create-codebuild-role.json,sha256=THJgIKi8rWwDzhg5
82
83
  dbt_platform_helper/templates/custom-codebuild-role-policy.json,sha256=8xyCofilPhV1Yjt3OnQLcI2kZ35mk2c07GcqYrKxuoI,1180
83
84
  dbt_platform_helper/templates/env/manifest.yml,sha256=VCEj_y3jdfnPYi6gmyrwiEqzHYjpaJDANbvswmkiLA0,802
84
85
  dbt_platform_helper/templates/env/terraform-overrides/cfn.patches.yml,sha256=cFlg69fvi9kzpz13ZAeY1asseZ6TuUex-6s76jG3oL4,259
85
- dbt_platform_helper/templates/environment-pipelines/main.tf,sha256=7AeUENedB5OO80MA6yzIRH7wq1S_HK8_OFK-iVKqBmo,1931
86
+ dbt_platform_helper/templates/environment-pipelines/main.tf,sha256=yrbxIhHtWOm7gEHW4Jk2K4i7uCbGQxySu_2D2WFUSbk,1825
86
87
  dbt_platform_helper/templates/svc/maintenance_pages/default.html,sha256=OTZ-qwwSXu7PFbsgp4kppdm1lsg_iHK7FCFqhPnvrEs,741
87
88
  dbt_platform_helper/templates/svc/maintenance_pages/dmas-migration.html,sha256=qvI6tHuI0UQbMBCuvPgK1a_zLANB6w7KVo9N5d8r-i0,829
88
89
  dbt_platform_helper/templates/svc/maintenance_pages/migration.html,sha256=GiQsOiuaMFb7jG5_wU3V7BMcByHBl9fOBgrNf8quYlw,783
@@ -101,8 +102,8 @@ platform_helper.py,sha256=_YNNGtMkH5BcpC_mQQYJrmlf2mt7lkxTYeH7ZgflPoA,1925
101
102
  terraform/elasticache-redis/plans.yml,sha256=efJfkLuLC_5TwhLb9DalKHOuZFO79y6iei6Dg_tqKjI,1831
102
103
  terraform/opensearch/plans.yml,sha256=lQbUSNMGfvUeDMcGx8mSwzGQhMJU3EZ4J4tPzPKaq6c,1471
103
104
  terraform/postgres/plans.yml,sha256=plwCklW1VB_tNJFyUduRMZx9UANgiWH_7TGLWUaUEus,2553
104
- dbt_platform_helper-15.2.2.dist-info/LICENSE,sha256=dP79lN73--7LMApnankTGLqDbImXg8iYFqWgnExGkGk,1090
105
- dbt_platform_helper-15.2.2.dist-info/METADATA,sha256=pUc6T2A2YQ_gVuCY4daEDYMh2CsJ3zhguwKMl6CalgM,3293
106
- dbt_platform_helper-15.2.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
107
- dbt_platform_helper-15.2.2.dist-info/entry_points.txt,sha256=QhbY8F434A-onsg0-FsdMd2U6HKh6Q7yCFFZrGUh5-M,67
108
- dbt_platform_helper-15.2.2.dist-info/RECORD,,
105
+ dbt_platform_helper-15.3.0.dist-info/LICENSE,sha256=dP79lN73--7LMApnankTGLqDbImXg8iYFqWgnExGkGk,1090
106
+ dbt_platform_helper-15.3.0.dist-info/METADATA,sha256=_aeptcHgrbTjliKbjPPUmPGsPOzdLqURG-STrFRa1no,3293
107
+ dbt_platform_helper-15.3.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
108
+ dbt_platform_helper-15.3.0.dist-info/entry_points.txt,sha256=QhbY8F434A-onsg0-FsdMd2U6HKh6Q7yCFFZrGUh5-M,67
109
+ dbt_platform_helper-15.3.0.dist-info/RECORD,,