dbt-platform-helper 13.1.1__tar.gz → 13.2.0__tar.gz

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.

Files changed (105) hide show
  1. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/PKG-INFO +3 -4
  2. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/application.py +3 -5
  3. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/codebase.py +2 -4
  4. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/conduit.py +2 -4
  5. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/config.py +19 -17
  6. dbt_platform_helper-13.2.0/dbt_platform_helper/commands/copilot.py +35 -0
  7. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/environment.py +6 -6
  8. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/generate.py +2 -3
  9. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/notify.py +2 -4
  10. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/pipeline.py +2 -4
  11. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/secrets.py +2 -4
  12. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/version.py +2 -2
  13. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/domain/codebase.py +14 -11
  14. dbt_platform_helper-13.2.0/dbt_platform_helper/domain/copilot.py +397 -0
  15. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/domain/copilot_environment.py +6 -6
  16. dbt_platform_helper-13.2.0/dbt_platform_helper/domain/maintenance_page.py +359 -0
  17. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/domain/pipelines.py +1 -1
  18. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/domain/terraform_environment.py +1 -1
  19. dbt_platform_helper-13.2.0/dbt_platform_helper/domain/versioning.py +157 -0
  20. dbt_platform_helper-13.2.0/dbt_platform_helper/providers/aws/interfaces.py +13 -0
  21. dbt_platform_helper-13.2.0/dbt_platform_helper/providers/aws/opensearch.py +23 -0
  22. dbt_platform_helper-13.2.0/dbt_platform_helper/providers/aws/redis.py +21 -0
  23. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/cache.py +40 -4
  24. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/config_validator.py +15 -14
  25. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/copilot.py +1 -1
  26. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/io.py +17 -0
  27. dbt_platform_helper-13.2.0/dbt_platform_helper/providers/kms.py +22 -0
  28. dbt_platform_helper-13.2.0/dbt_platform_helper/providers/load_balancers.py +311 -0
  29. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/semantic_version.py +33 -10
  30. dbt_platform_helper-13.2.0/dbt_platform_helper/providers/version.py +78 -0
  31. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/yaml_file.py +0 -1
  32. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/application.py +14 -0
  33. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/aws.py +27 -4
  34. dbt_platform_helper-13.2.0/dbt_platform_helper/utils/tool_versioning.py +96 -0
  35. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/pyproject.toml +4 -4
  36. dbt_platform_helper-13.1.1/dbt_platform_helper/commands/copilot.py +0 -412
  37. dbt_platform_helper-13.1.1/dbt_platform_helper/domain/maintenance_page.py +0 -563
  38. dbt_platform_helper-13.1.1/dbt_platform_helper/providers/load_balancers.py +0 -85
  39. dbt_platform_helper-13.1.1/dbt_platform_helper/providers/opensearch.py +0 -36
  40. dbt_platform_helper-13.1.1/dbt_platform_helper/providers/redis.py +0 -34
  41. dbt_platform_helper-13.1.1/dbt_platform_helper/providers/version.py +0 -36
  42. dbt_platform_helper-13.1.1/dbt_platform_helper/utils/versioning.py +0 -238
  43. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/LICENSE +0 -0
  44. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/COMMANDS.md +0 -0
  45. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/README.md +0 -0
  46. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/__init__.py +0 -0
  47. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/addon-plans.yml +0 -0
  48. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/__init__.py +0 -0
  49. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/commands/database.py +0 -0
  50. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/constants.py +0 -0
  51. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/default-extensions.yml +0 -0
  52. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/domain/__init__.py +0 -0
  53. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/domain/conduit.py +0 -0
  54. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/domain/database_copy.py +0 -0
  55. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/jinja2_tags.py +0 -0
  56. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/platform_exception.py +0 -0
  57. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/__init__.py +0 -0
  58. /dbt_platform_helper-13.1.1/dbt_platform_helper/providers/aws.py → /dbt_platform_helper-13.2.0/dbt_platform_helper/providers/aws/exceptions.py +0 -0
  59. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/cloudformation.py +0 -0
  60. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/config.py +0 -0
  61. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/ecr.py +0 -0
  62. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/ecs.py +0 -0
  63. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/files.py +0 -0
  64. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/platform_config_schema.py +0 -0
  65. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/secrets.py +0 -0
  66. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/terraform_manifest.py +0 -0
  67. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/validation.py +0 -0
  68. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/providers/vpc.py +0 -0
  69. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/.copilot/config.yml +0 -0
  70. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/.copilot/image_build_run.sh +0 -0
  71. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/.copilot/phases/build.sh +0 -0
  72. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/.copilot/phases/install.sh +0 -0
  73. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/.copilot/phases/post_build.sh +0 -0
  74. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/.copilot/phases/pre_build.sh +0 -0
  75. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/COMMANDS.md.jinja +0 -0
  76. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/addon-instructions.txt +0 -0
  77. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/addons/README.md +0 -0
  78. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/addons/svc/appconfig-ipfilter.yml +0 -0
  79. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/addons/svc/prometheus-policy.yml +0 -0
  80. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/addons/svc/s3-cross-account-policy.yml +0 -0
  81. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/addons/svc/s3-policy.yml +0 -0
  82. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/addons/svc/subscription-filter.yml +0 -0
  83. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/ci-codebuild-role-policy.json +0 -0
  84. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/create-codebuild-role.json +0 -0
  85. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/custom-codebuild-role-policy.json +0 -0
  86. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/env/manifest.yml +0 -0
  87. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/env/terraform-overrides/cfn.patches.yml +0 -0
  88. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/environment-pipelines/main.tf +0 -0
  89. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/svc/maintenance_pages/default.html +0 -0
  90. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/svc/maintenance_pages/dmas-migration.html +0 -0
  91. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/svc/maintenance_pages/migration.html +0 -0
  92. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/svc/manifest-backend.yml +0 -0
  93. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/svc/manifest-public.yml +0 -0
  94. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/templates/svc/overrides/cfn.patches.yml +0 -0
  95. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/__init__.py +0 -0
  96. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/arn_parser.py +0 -0
  97. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/click.py +0 -0
  98. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/cloudfoundry.py +0 -0
  99. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/files.py +0 -0
  100. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/git.py +0 -0
  101. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/manifests.py +0 -0
  102. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/messages.py +0 -0
  103. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/template.py +0 -0
  104. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/dbt_platform_helper/utils/validation.py +0 -0
  105. {dbt_platform_helper-13.1.1 → dbt_platform_helper-13.2.0}/platform_helper.py +0 -0
@@ -1,14 +1,13 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dbt-platform-helper
3
- Version: 13.1.1
3
+ Version: 13.2.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
7
7
  Author-email: sre-team@digital.trade.gov.uk
8
- Requires-Python: >=3.9,<4.0
8
+ Requires-Python: >=3.9, !=2.7.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*, !=3.7.*, !=3.8.*
9
9
  Classifier: License :: OSI Approved :: MIT License
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.9
12
11
  Classifier: Programming Language :: Python :: 3.10
13
12
  Classifier: Programming Language :: Python :: 3.11
14
13
  Classifier: Programming Language :: Python :: 3.12
@@ -25,7 +24,7 @@ Requires-Dist: cfn-lint (>=1.4.2,<2.0.0)
25
24
  Requires-Dist: checkov (>=3.1.67,<4.0.0)
26
25
  Requires-Dist: click (>=8.1.3,<9.0.0)
27
26
  Requires-Dist: cloudfoundry-client (==1.35.2)
28
- Requires-Dist: cryptography (>=41.0.3,<44.0.0)
27
+ Requires-Dist: cryptography (>=44.0.1,<45)
29
28
  Requires-Dist: jinja2-simple-tags (>=0.5.0,<0.6.0)
30
29
  Requires-Dist: jsonschema (>=4.17.0,<4.18.0)
31
30
  Requires-Dist: mypy-boto3-codebuild (>=1.26.0.post1,<2.0.0)
@@ -10,11 +10,9 @@ from datetime import timedelta
10
10
  import click
11
11
  from prettytable import PrettyTable
12
12
 
13
+ from dbt_platform_helper.domain.versioning import PlatformHelperVersioning
13
14
  from dbt_platform_helper.utils.application import load_application
14
15
  from dbt_platform_helper.utils.click import ClickDocOptGroup
15
- from dbt_platform_helper.utils.versioning import (
16
- check_platform_helper_version_needs_update,
17
- )
18
16
 
19
17
  YELLOW = "\033[93m"
20
18
  CYAN = "\033[96m"
@@ -97,7 +95,7 @@ def get_query_results(env, app, query_string, timeout):
97
95
  @click.group(chain=True, cls=ClickDocOptGroup, deprecated=True)
98
96
  def application():
99
97
  """[DEPRECATED] Application metrics."""
100
- check_platform_helper_version_needs_update()
98
+ PlatformHelperVersioning().check_if_needs_update()
101
99
 
102
100
 
103
101
  @application.command(deprecated=True)
@@ -141,7 +139,7 @@ def container_stats(env, app, storage, network):
141
139
  storage_write = field[6]["value"]
142
140
  network_read = field[7]["value"]
143
141
  network_write = field[8]["value"]
144
- cpu = "%.1f%%" % float(field[9]["value"])
142
+ cpu = f"{float(field[9]['value']):.1f}%"
145
143
  memory = f"{field[10]['value']}M"
146
144
 
147
145
  # Nothing to compare to at start.
@@ -1,18 +1,16 @@
1
1
  import click
2
2
 
3
3
  from dbt_platform_helper.domain.codebase import Codebase
4
+ from dbt_platform_helper.domain.versioning import PlatformHelperVersioning
4
5
  from dbt_platform_helper.platform_exception import PlatformException
5
6
  from dbt_platform_helper.providers.io import ClickIOProvider
6
7
  from dbt_platform_helper.utils.click import ClickDocOptGroup
7
- from dbt_platform_helper.utils.versioning import (
8
- check_platform_helper_version_needs_update,
9
- )
10
8
 
11
9
 
12
10
  @click.group(chain=True, cls=ClickDocOptGroup)
13
11
  def codebase():
14
12
  """Codebase commands."""
15
- check_platform_helper_version_needs_update()
13
+ PlatformHelperVersioning().check_if_needs_update()
16
14
 
17
15
 
18
16
  @codebase.command()
@@ -1,6 +1,7 @@
1
1
  import click
2
2
 
3
3
  from dbt_platform_helper.domain.conduit import Conduit
4
+ from dbt_platform_helper.domain.versioning import PlatformHelperVersioning
4
5
  from dbt_platform_helper.platform_exception import PlatformException
5
6
  from dbt_platform_helper.providers.cloudformation import CloudFormation
6
7
  from dbt_platform_helper.providers.ecs import ECS
@@ -8,9 +9,6 @@ from dbt_platform_helper.providers.io import ClickIOProvider
8
9
  from dbt_platform_helper.providers.secrets import Secrets
9
10
  from dbt_platform_helper.utils.application import load_application
10
11
  from dbt_platform_helper.utils.click import ClickDocOptCommand
11
- from dbt_platform_helper.utils.versioning import (
12
- check_platform_helper_version_needs_update,
13
- )
14
12
 
15
13
  CONDUIT_ACCESS_OPTIONS = ["read", "write", "admin"]
16
14
 
@@ -28,7 +26,7 @@ CONDUIT_ACCESS_OPTIONS = ["read", "write", "admin"]
28
26
  def conduit(addon_name: str, app: str, env: str, access: str):
29
27
  """Opens a shell for a given addon_name create a conduit connection to
30
28
  interact with postgres, opensearch or redis."""
31
- check_platform_helper_version_needs_update()
29
+ PlatformHelperVersioning().check_if_needs_update()
32
30
  application = load_application(app)
33
31
 
34
32
  try:
@@ -9,13 +9,14 @@ import click
9
9
  from prettytable import PrettyTable
10
10
 
11
11
  from dbt_platform_helper.providers.config import ConfigProvider
12
+ from dbt_platform_helper.providers.io import ClickIOProvider
12
13
  from dbt_platform_helper.providers.semantic_version import (
13
14
  IncompatibleMajorVersionException,
14
15
  )
15
16
  from dbt_platform_helper.providers.validation import ValidationException
16
- from dbt_platform_helper.utils import versioning
17
+ from dbt_platform_helper.utils import tool_versioning
17
18
  from dbt_platform_helper.utils.click import ClickDocOptGroup
18
- from dbt_platform_helper.utils.versioning import get_platform_helper_versions
19
+ from dbt_platform_helper.utils.tool_versioning import get_platform_helper_version_status
19
20
 
20
21
  yes = "\033[92m✔\033[0m"
21
22
  no = "\033[91m✖\033[0m"
@@ -75,14 +76,15 @@ def deployment():
75
76
  click.secho()
76
77
 
77
78
  compatible = True
78
- platform_helper_versions = get_platform_helper_versions()
79
- copilot_versions = versioning.get_copilot_versions()
80
- aws_versions = versioning.get_aws_versions()
81
- _check_tool_versions(platform_helper_versions, copilot_versions, aws_versions)
79
+ platform_helper_version_status = get_platform_helper_version_status()
80
+ ClickIOProvider().process_messages(platform_helper_version_status.validate())
81
+ copilot_versions = tool_versioning.get_copilot_versions()
82
+ aws_versions = tool_versioning.get_aws_versions()
83
+ _check_tool_versions(platform_helper_version_status, copilot_versions, aws_versions)
82
84
  click.secho("Checking addons templates versions...", fg="blue")
83
85
 
84
- local_version = platform_helper_versions.local
85
- latest_release = platform_helper_versions.latest
86
+ local_version = platform_helper_version_status.installed
87
+ latest_release = platform_helper_version_status.latest
86
88
  addons_templates_table = PrettyTable()
87
89
  addons_templates_table.field_names = [
88
90
  "Addons Template File",
@@ -108,10 +110,10 @@ def deployment():
108
110
  latest_compatible_symbol = yes
109
111
 
110
112
  try:
111
- generated_with_version = versioning.get_template_generated_with_version(
113
+ generated_with_version = tool_versioning.get_template_generated_with_version(
112
114
  str(template_file.resolve())
113
115
  )
114
- versioning.validate_template_version(local_version, str(template_file.resolve()))
116
+ tool_versioning.validate_template_version(local_version, str(template_file.resolve()))
115
117
  except IncompatibleMajorVersionException:
116
118
  local_compatible_symbol = no
117
119
  compatible = False
@@ -132,10 +134,10 @@ def deployment():
132
134
  ]
133
135
 
134
136
  try:
135
- generated_with_version = versioning.get_template_generated_with_version(
137
+ generated_with_version = tool_versioning.get_template_generated_with_version(
136
138
  str(template_file.resolve())
137
139
  )
138
- versioning.validate_template_version(latest_release, str(template_file.resolve()))
140
+ tool_versioning.validate_template_version(latest_release, str(template_file.resolve()))
139
141
  except IncompatibleMajorVersionException:
140
142
  latest_compatible_symbol = no
141
143
  compatible = False
@@ -162,14 +164,14 @@ def _check_tool_versions(platform_helper_versions, copilot_versions, aws_version
162
164
  click.secho("Checking tooling versions...", fg="blue")
163
165
  recommendations = {}
164
166
 
165
- local_copilot_version = copilot_versions.local
167
+ local_copilot_version = copilot_versions.installed
166
168
  copilot_latest_release = copilot_versions.latest
167
169
  if local_copilot_version is None:
168
170
  recommendations["install-copilot"] = (
169
171
  "Install AWS Copilot https://aws.github.io/copilot-cli/"
170
172
  )
171
173
 
172
- if aws_versions.local is None:
174
+ if aws_versions.installed is None:
173
175
  recommendations["install-aws"] = "Install AWS CLI https://aws.amazon.com/cli/"
174
176
 
175
177
  tool_versions_table = PrettyTable()
@@ -184,7 +186,7 @@ def _check_tool_versions(platform_helper_versions, copilot_versions, aws_version
184
186
  tool_versions_table.add_row(
185
187
  [
186
188
  "aws",
187
- str(aws_versions.local),
189
+ str(aws_versions.installed),
188
190
  str(aws_versions.latest),
189
191
  no if aws_versions.is_outdated() else yes,
190
192
  ]
@@ -192,7 +194,7 @@ def _check_tool_versions(platform_helper_versions, copilot_versions, aws_version
192
194
  tool_versions_table.add_row(
193
195
  [
194
196
  "copilot",
195
- str(copilot_versions.local),
197
+ str(copilot_versions.installed),
196
198
  str(copilot_versions.latest),
197
199
  no if copilot_versions.is_outdated() else yes,
198
200
  ]
@@ -200,7 +202,7 @@ def _check_tool_versions(platform_helper_versions, copilot_versions, aws_version
200
202
  tool_versions_table.add_row(
201
203
  [
202
204
  "dbt-platform-helper",
203
- str(platform_helper_versions.local),
205
+ str(platform_helper_versions.installed),
204
206
  str(platform_helper_versions.latest),
205
207
  no if platform_helper_versions.is_outdated() else yes,
206
208
  ]
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env python
2
+
3
+ import click
4
+
5
+ from dbt_platform_helper.domain.copilot import Copilot
6
+ from dbt_platform_helper.domain.copilot_environment import CopilotTemplating
7
+ from dbt_platform_helper.domain.versioning import PlatformHelperVersioning
8
+ from dbt_platform_helper.providers.config import ConfigProvider
9
+ from dbt_platform_helper.providers.config_validator import ConfigValidator
10
+ from dbt_platform_helper.providers.files import FileProvider
11
+ from dbt_platform_helper.providers.io import ClickIOProvider
12
+ from dbt_platform_helper.providers.kms import KMSProvider
13
+ from dbt_platform_helper.utils.aws import get_aws_session_or_abort
14
+ from dbt_platform_helper.utils.click import ClickDocOptGroup
15
+
16
+ # TODOs
17
+ # Figure out a pattern for copilot templating and the new copilot domain - probably a lot of overlap here that really belongs in the copilottemplating domain instead (atleast whatever is concerned with "templating")
18
+ # Check for E2E test coverage.
19
+
20
+
21
+ @click.group(chain=True, cls=ClickDocOptGroup)
22
+ def copilot():
23
+ PlatformHelperVersioning().check_if_needs_update()
24
+
25
+
26
+ @copilot.command()
27
+ def make_addons():
28
+ """Generate addons CloudFormation for each environment."""
29
+ try:
30
+ session = get_aws_session_or_abort()
31
+ config_provider = ConfigProvider(ConfigValidator())
32
+ kms_provider = KMSProvider(session.client("kms"))
33
+ Copilot(config_provider, FileProvider(), CopilotTemplating(), kms_provider).make_addons()
34
+ except Exception as err:
35
+ ClickIOProvider().abort_with_error(str(err))
@@ -4,6 +4,7 @@ from dbt_platform_helper.constants import DEFAULT_TERRAFORM_PLATFORM_MODULES_VER
4
4
  from dbt_platform_helper.domain.copilot_environment import CopilotEnvironment
5
5
  from dbt_platform_helper.domain.maintenance_page import MaintenancePage
6
6
  from dbt_platform_helper.domain.terraform_environment import TerraformEnvironment
7
+ from dbt_platform_helper.domain.versioning import PlatformHelperVersioning
7
8
  from dbt_platform_helper.platform_exception import PlatformException
8
9
  from dbt_platform_helper.providers.cloudformation import CloudFormation
9
10
  from dbt_platform_helper.providers.config import ConfigProvider
@@ -13,9 +14,6 @@ from dbt_platform_helper.providers.vpc import VpcProvider
13
14
  from dbt_platform_helper.utils.application import load_application
14
15
  from dbt_platform_helper.utils.aws import get_aws_session_or_abort
15
16
  from dbt_platform_helper.utils.click import ClickDocOptGroup
16
- from dbt_platform_helper.utils.versioning import (
17
- check_platform_helper_version_needs_update,
18
- )
19
17
 
20
18
  AVAILABLE_TEMPLATES = ["default", "migration", "dmas-migration"]
21
19
 
@@ -23,7 +21,7 @@ AVAILABLE_TEMPLATES = ["default", "migration", "dmas-migration"]
23
21
  @click.group(cls=ClickDocOptGroup)
24
22
  def environment():
25
23
  """Commands affecting environments."""
26
- check_platform_helper_version_needs_update()
24
+ PlatformHelperVersioning().check_if_needs_update()
27
25
 
28
26
 
29
27
  @environment.command()
@@ -94,9 +92,11 @@ def generate(name):
94
92
  help=f"Override the default version of terraform-platform-modules. (Default version is '{DEFAULT_TERRAFORM_PLATFORM_MODULES_VERSION}').",
95
93
  )
96
94
  def generate_terraform(name, terraform_platform_modules_version):
97
-
95
+ click_io = ClickIOProvider()
98
96
  try:
97
+ # TODO = pass the session to ConfigValidator
98
+ get_aws_session_or_abort()
99
99
  config_provider = ConfigProvider(ConfigValidator())
100
100
  TerraformEnvironment(config_provider).generate(name, terraform_platform_modules_version)
101
101
  except PlatformException as err:
102
- ClickIOProvider().abort_with_error(str(err))
102
+ click_io.abort_with_error(str(err))
@@ -3,8 +3,8 @@ import click
3
3
 
4
4
  from dbt_platform_helper.commands.copilot import make_addons
5
5
  from dbt_platform_helper.commands.pipeline import generate as pipeline_generate
6
+ from dbt_platform_helper.domain.versioning import PlatformHelperVersioning
6
7
  from dbt_platform_helper.utils.click import ClickDocOptCommand
7
- from dbt_platform_helper.utils.versioning import RequiredVersion
8
8
 
9
9
 
10
10
  @click.command(cls=ClickDocOptCommand)
@@ -16,7 +16,6 @@ def generate(ctx: click.Context):
16
16
 
17
17
  Wraps pipeline generate and make-addons.
18
18
  """
19
-
20
- RequiredVersion().check_platform_helper_version_mismatch()
19
+ PlatformHelperVersioning().check_platform_helper_version_mismatch()
21
20
  ctx.invoke(pipeline_generate)
22
21
  ctx.invoke(make_addons)
@@ -2,16 +2,14 @@ import click
2
2
  from slack_sdk import WebClient
3
3
  from slack_sdk.models import blocks
4
4
 
5
+ from dbt_platform_helper.domain.versioning import PlatformHelperVersioning
5
6
  from dbt_platform_helper.utils.arn_parser import ARN
6
7
  from dbt_platform_helper.utils.click import ClickDocOptGroup
7
- from dbt_platform_helper.utils.versioning import (
8
- check_platform_helper_version_needs_update,
9
- )
10
8
 
11
9
 
12
10
  @click.group(cls=ClickDocOptGroup, help="Send Slack notifications")
13
11
  def notify():
14
- check_platform_helper_version_needs_update()
12
+ PlatformHelperVersioning().check_if_needs_update()
15
13
 
16
14
 
17
15
  @notify.command(
@@ -3,6 +3,7 @@ import click
3
3
 
4
4
  from dbt_platform_helper.constants import DEFAULT_TERRAFORM_PLATFORM_MODULES_VERSION
5
5
  from dbt_platform_helper.domain.pipelines import Pipelines
6
+ from dbt_platform_helper.domain.versioning import PlatformHelperVersioning
6
7
  from dbt_platform_helper.providers.config import ConfigProvider
7
8
  from dbt_platform_helper.providers.config_validator import ConfigValidator
8
9
  from dbt_platform_helper.providers.ecr import ECRProvider
@@ -11,15 +12,12 @@ from dbt_platform_helper.providers.terraform_manifest import TerraformManifestPr
11
12
  from dbt_platform_helper.utils.aws import get_codestar_connection_arn
12
13
  from dbt_platform_helper.utils.click import ClickDocOptGroup
13
14
  from dbt_platform_helper.utils.git import git_remote
14
- from dbt_platform_helper.utils.versioning import (
15
- check_platform_helper_version_needs_update,
16
- )
17
15
 
18
16
 
19
17
  @click.group(chain=True, cls=ClickDocOptGroup)
20
18
  def pipeline():
21
19
  """Pipeline commands."""
22
- check_platform_helper_version_needs_update()
20
+ PlatformHelperVersioning().check_if_needs_update()
23
21
 
24
22
 
25
23
  @pipeline.command()
@@ -6,15 +6,13 @@ import click
6
6
  from botocore.exceptions import ClientError
7
7
  from cloudfoundry_client.client import CloudFoundryClient
8
8
 
9
+ from dbt_platform_helper.domain.versioning import PlatformHelperVersioning
9
10
  from dbt_platform_helper.utils.application import get_application_name
10
11
  from dbt_platform_helper.utils.aws import SSM_BASE_PATH
11
12
  from dbt_platform_helper.utils.aws import get_aws_session_or_abort
12
13
  from dbt_platform_helper.utils.aws import get_ssm_secrets
13
14
  from dbt_platform_helper.utils.aws import set_ssm_param
14
15
  from dbt_platform_helper.utils.click import ClickDocOptGroup
15
- from dbt_platform_helper.utils.versioning import (
16
- check_platform_helper_version_needs_update,
17
- )
18
16
 
19
17
 
20
18
  def secret_should_be_skipped(secret_name):
@@ -42,7 +40,7 @@ def get_paas_env_vars(client: CloudFoundryClient, paas: str) -> dict:
42
40
 
43
41
  @click.group(chain=True, cls=ClickDocOptGroup)
44
42
  def secrets():
45
- check_platform_helper_version_needs_update()
43
+ PlatformHelperVersioning().check_if_needs_update()
46
44
 
47
45
 
48
46
  @secrets.command()
@@ -1,9 +1,9 @@
1
1
  import click
2
2
 
3
+ from dbt_platform_helper.domain.versioning import PlatformHelperVersioning
3
4
  from dbt_platform_helper.platform_exception import PlatformException
4
5
  from dbt_platform_helper.providers.io import ClickIOProvider
5
6
  from dbt_platform_helper.utils.click import ClickDocOptGroup
6
- from dbt_platform_helper.utils.versioning import RequiredVersion
7
7
 
8
8
 
9
9
  @click.group(chain=True, cls=ClickDocOptGroup)
@@ -32,6 +32,6 @@ def get_platform_helper_for_project(pipeline):
32
32
  - Fall back on the version in the deprecated '.platform-helper-version' file
33
33
  """
34
34
  try:
35
- RequiredVersion().get_required_version(pipeline)
35
+ PlatformHelperVersioning().get_required_version(pipeline)
36
36
  except PlatformException as err:
37
37
  ClickIOProvider().abort_with_error(str(err))
@@ -12,12 +12,16 @@ from dbt_platform_helper.platform_exception import PlatformException
12
12
  from dbt_platform_helper.providers.files import FileProvider
13
13
  from dbt_platform_helper.providers.io import ClickIOProvider
14
14
  from dbt_platform_helper.utils.application import Application
15
- from dbt_platform_helper.utils.application import ApplicationException
15
+ from dbt_platform_helper.utils.application import (
16
+ ApplicationEnvironmentNotFoundException,
17
+ )
16
18
  from dbt_platform_helper.utils.application import load_application
17
19
  from dbt_platform_helper.utils.aws import check_image_exists
18
20
  from dbt_platform_helper.utils.aws import get_aws_session_or_abort
19
21
  from dbt_platform_helper.utils.aws import get_build_url_from_arn
20
22
  from dbt_platform_helper.utils.aws import get_build_url_from_pipeline_execution_id
23
+ from dbt_platform_helper.utils.aws import get_image_build_project
24
+ from dbt_platform_helper.utils.aws import get_manual_release_pipeline
21
25
  from dbt_platform_helper.utils.aws import list_latest_images
22
26
  from dbt_platform_helper.utils.aws import start_build_extraction
23
27
  from dbt_platform_helper.utils.aws import start_pipeline_and_return_execution_id
@@ -32,6 +36,8 @@ class Codebase:
32
36
  load_application: Callable[[str], Application] = load_application,
33
37
  get_aws_session_or_abort: Callable[[str], Session] = get_aws_session_or_abort,
34
38
  check_image_exists: Callable[[str], str] = check_image_exists,
39
+ get_image_build_project: Callable[[str], str] = get_image_build_project,
40
+ get_manual_release_pipeline: Callable[[str], str] = get_manual_release_pipeline,
35
41
  get_build_url_from_arn: Callable[[str], str] = get_build_url_from_arn,
36
42
  get_build_url_from_pipeline_execution_id: Callable[
37
43
  [str], str
@@ -48,6 +54,8 @@ class Codebase:
48
54
  self.load_application = load_application
49
55
  self.get_aws_session_or_abort = get_aws_session_or_abort
50
56
  self.check_image_exists = check_image_exists
57
+ self.get_image_build_project = get_image_build_project
58
+ self.get_manual_release_pipeline = get_manual_release_pipeline
51
59
  self.get_build_url_from_arn = get_build_url_from_arn
52
60
  self.get_build_url_from_pipeline_execution_id = get_build_url_from_pipeline_execution_id
53
61
  self.list_latest_images = list_latest_images
@@ -124,12 +132,13 @@ class Codebase:
124
132
  self.check_if_commit_exists(commit)
125
133
 
126
134
  codebuild_client = session.client("codebuild")
135
+ project_name = self.get_image_build_project(codebuild_client, app, codebase)
127
136
  build_url = self.__start_build_with_confirmation(
128
137
  codebuild_client,
129
138
  self.get_build_url_from_arn,
130
139
  f'You are about to build "{app}" for "{codebase}" with commit "{commit}". Do you want to continue?',
131
140
  {
132
- "projectName": f"{app}-{codebase}-codebase-pipeline-image-build",
141
+ "projectName": project_name,
133
142
  "artifactsOverride": {"type": "NO_ARTIFACTS"},
134
143
  "sourceVersion": commit,
135
144
  },
@@ -148,13 +157,14 @@ class Codebase:
148
157
 
149
158
  application = self.load_application(app, default_session=session)
150
159
  if not application.environments.get(env):
151
- raise ApplicationEnvironmentNotFoundException(env)
160
+ raise ApplicationEnvironmentNotFoundException(application.name, env)
152
161
 
153
162
  self.check_image_exists(session, application, codebase, commit)
154
163
 
155
- pipeline_name = f"{app}-{codebase}-manual-release-pipeline"
156
164
  codepipeline_client = session.client("codepipeline")
157
165
 
166
+ pipeline_name = self.get_manual_release_pipeline(codepipeline_client, app, codebase)
167
+
158
168
  build_url = self.__start_pipeline_execution_with_confirmation(
159
169
  codepipeline_client,
160
170
  self.get_build_url_from_pipeline_execution_id,
@@ -242,13 +252,6 @@ class ApplicationDeploymentNotTriggered(PlatformException):
242
252
  super().__init__(f"""Your deployment for {codebase} was not triggered.""")
243
253
 
244
254
 
245
- class ApplicationEnvironmentNotFoundException(ApplicationException):
246
- def __init__(self, environment: str):
247
- super().__init__(
248
- f"""The environment "{environment}" either does not exist or has not been deployed."""
249
- )
250
-
251
-
252
255
  class NotInCodeBaseRepositoryException(PlatformException):
253
256
  def __init__(self):
254
257
  super().__init__(