gen3-dataops-toolkit 2.3.0__tar.gz → 3.1.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.
Files changed (56) hide show
  1. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/PKG-INFO +10 -4
  2. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/README.md +9 -3
  3. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/pyproject.toml +1 -1
  4. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/config_cmds.py +39 -11
  5. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/release_cmds.py +7 -3
  6. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/__init__.py +0 -0
  7. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/__init__.py +0 -0
  8. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/_internal/__init__.py +0 -0
  9. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/_internal/dispatch.py +0 -0
  10. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/_internal/registry.py +0 -0
  11. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/_internal/resolve.py +0 -0
  12. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/_internal/runner.py +0 -0
  13. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/_internal/safety.py +0 -0
  14. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/delete_cmds.py +0 -0
  15. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/dict_cmds.py +0 -0
  16. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/ec2_cmds.py +0 -0
  17. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/indexd_cmds.py +0 -0
  18. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/jobs.py +0 -0
  19. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/k8s.py +0 -0
  20. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/main.py +0 -0
  21. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/metadata.py +0 -0
  22. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/pipeline_cmds.py +0 -0
  23. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/cli/synth.py +0 -0
  24. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/config.py +0 -0
  25. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/indexd/__init__.py +0 -0
  26. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/indexd/file_access.py +0 -0
  27. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/indexd/indexd_registrar.py +0 -0
  28. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/ingest/ingest.py +0 -0
  29. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/resolver.py +0 -0
  30. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/delete/delete_all_metadata_for_project.py +0 -0
  31. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/delete/delete_metadata.sh +0 -0
  32. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/delete/delete_metadata_by_guid.py +0 -0
  33. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/dictionary/deploy_dd.sh +0 -0
  34. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/dictionary/pull_dict.sh +0 -0
  35. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/dictionary/upload_dictionary.py +0 -0
  36. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/indexd/register_indexd.py +0 -0
  37. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/indexd/verify_file_access.py +0 -0
  38. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/k8s_ops/argocd_restart_etl.sh +0 -0
  39. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/k8s_ops/argocd_restart_ms.sh +0 -0
  40. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/k8s_ops/argocd_restart_schema.sh +0 -0
  41. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/k8s_ops/login_to_pod.sh +0 -0
  42. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/k8s_ops/restart_etl_and_ms.sh +0 -0
  43. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/synthetic_data/delete_synth_metadata_sheepdog.py +0 -0
  44. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/synthetic_data/full_deploy_dd_and_synth.sh +0 -0
  45. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/synthetic_data/generate_synth_metadata.sh +0 -0
  46. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/synthetic_data/upload_synth_metadata_sheepdog.py +0 -0
  47. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/upload/metadata/upload_all_studies.sh +0 -0
  48. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/services/upload/metadata/upload_metadata.py +0 -0
  49. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/upload/__init__.py +0 -0
  50. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/upload/metadata_deleter.py +0 -0
  51. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/upload/metadata_submitter.py +0 -0
  52. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/upload/upload_synthdata_s3.py +0 -0
  53. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/utils/athena_utils.py +0 -0
  54. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/utils/dbt_utils.py +0 -0
  55. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/utils/release_writer.py +0 -0
  56. {gen3_dataops_toolkit-2.3.0 → gen3_dataops_toolkit-3.1.0}/src/g3dt/validate/validate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gen3-dataops-toolkit
3
- Version: 2.3.0
3
+ Version: 3.1.0
4
4
  Summary: Gen3 DataOps toolkit (g3dt): operate SSM-published Gen3 data pipeline environments
5
5
  License: Apache-2.0
6
6
  Author: JoshuaHarris391
@@ -113,9 +113,15 @@ structurally impossible.
113
113
 
114
114
  **Only the dbt template's `ci` target is prefixed.** `g3dt config dbt-env`
115
115
  emits, alongside the real names, the CI-isolation variants the template's
116
- `ci` target consumes: `G3DT_DB_RAW_SILVER_CI` / `G3DT_DB_RAW_GOLD_CI`
117
- (`ci_` + the real database name) and `G3DT_S3_SILVER_DATA_DIR_CI` /
118
- `G3DT_S3_GOLD_DATA_DIR_CI` (`dbt_ci/` under the same buckets). Commit-
116
+ `ci` target consumes: `G3DT_DB_BRONZE_CI` / `G3DT_DB_SILVER_CI` /
117
+ `G3DT_DB_GOLD_CI` (`ci_` + the real database name) and
118
+ `G3DT_S3_BRONZE_DATA_DIR_CI` / `G3DT_S3_SILVER_DATA_DIR_CI` /
119
+ `G3DT_S3_GOLD_DATA_DIR_CI` (`dbt_ci/` under the same buckets). Bronze can be
120
+ dbt-managed from gen3-dbt-template's synthetic-data revision onwards; a
121
+ pipeline deployment >= v2.1.0 provides the matching `ci_..._bronze_db` Glue
122
+ database. Toolkit
123
+ releases >= 3 read the raw-free medallion SSM keys and therefore require a
124
+ pipeline deployment >= v2.0.0, which publishes them. Commit-
119
125
  triggered CI builds land there; every other target (default, local) and the
120
126
  release build keep the real, unprefixed names — so CI can never advance the
121
127
  warehouse's Iceberg snapshots that releases pin. The library enforces the
@@ -79,9 +79,15 @@ structurally impossible.
79
79
 
80
80
  **Only the dbt template's `ci` target is prefixed.** `g3dt config dbt-env`
81
81
  emits, alongside the real names, the CI-isolation variants the template's
82
- `ci` target consumes: `G3DT_DB_RAW_SILVER_CI` / `G3DT_DB_RAW_GOLD_CI`
83
- (`ci_` + the real database name) and `G3DT_S3_SILVER_DATA_DIR_CI` /
84
- `G3DT_S3_GOLD_DATA_DIR_CI` (`dbt_ci/` under the same buckets). Commit-
82
+ `ci` target consumes: `G3DT_DB_BRONZE_CI` / `G3DT_DB_SILVER_CI` /
83
+ `G3DT_DB_GOLD_CI` (`ci_` + the real database name) and
84
+ `G3DT_S3_BRONZE_DATA_DIR_CI` / `G3DT_S3_SILVER_DATA_DIR_CI` /
85
+ `G3DT_S3_GOLD_DATA_DIR_CI` (`dbt_ci/` under the same buckets). Bronze can be
86
+ dbt-managed from gen3-dbt-template's synthetic-data revision onwards; a
87
+ pipeline deployment >= v2.1.0 provides the matching `ci_..._bronze_db` Glue
88
+ database. Toolkit
89
+ releases >= 3 read the raw-free medallion SSM keys and therefore require a
90
+ pipeline deployment >= v2.0.0, which publishes them. Commit-
85
91
  triggered CI builds land there; every other target (default, local) and the
86
92
  release build keep the real, unprefixed names — so CI can never advance the
87
93
  warehouse's Iceberg snapshots that releases pin. The library enforces the
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "gen3-dataops-toolkit"
3
- version = "2.3.0"
3
+ version = "3.1.0"
4
4
  description = "Gen3 DataOps toolkit (g3dt): operate SSM-published Gen3 data pipeline environments"
5
5
  authors = ["JoshuaHarris391 <harjo391@gmail.com>"]
6
6
  readme = "README.md"
@@ -25,6 +25,27 @@ app = typer.Typer(
25
25
  )
26
26
 
27
27
 
28
+ def _req_key(rc, key: str) -> str:
29
+ """Return the SSM leaf ``key`` from ``rc``, failing loudly if absent.
30
+
31
+ The medallion names (``buckets/silver|gold``, ``glue/db/bronze|silver|gold``)
32
+ are published under these raw-free keys by pipeline deployments >= v2.0.0.
33
+ Before this guard, a missing key propagated as ``None``: dbt-env silently
34
+ dropped the G3DT_DB_* vars and emitted ``s3://None/dbt/`` data dirs, and
35
+ the release search silently fell back to an account-wide catalog walk.
36
+ """
37
+ value = rc.get(key)
38
+ if value is None:
39
+ raise config.ConfigError(
40
+ f"SSM parameter /{rc.project}/{rc.env}/{key} is missing. "
41
+ f"gen3-dataops-toolkit >= 3 reads the raw-free medallion keys "
42
+ f"published by gen3-aws-data-pipeline >= v2.0.0; a pipeline "
43
+ f"deployment older than v2.0.0 still publishes raw-prefixed keys. "
44
+ f"Upgrade the pipeline deployment (or pin gen3-dataops-toolkit<3)."
45
+ )
46
+ return value
47
+
48
+
28
49
  @app.command()
29
50
  def envs() -> None:
30
51
  """List the environments with a deployed SSM tree for this project."""
@@ -208,28 +229,35 @@ def dbt_env(
208
229
  profile = None if env.endswith("_ec2") else config.aws_profile_for(base, marker)
209
230
  try:
210
231
  rc = resolver.resolve(project, base, profile=profile)
232
+ silver_db = _req_key(rc, "glue/db/silver")
233
+ gold_db = _req_key(rc, "glue/db/gold")
234
+ silver_bucket = _req_key(rc, "buckets/silver")
235
+ gold_bucket = _req_key(rc, "buckets/gold")
236
+ bronze_bucket = _req_key(rc, "buckets/bronze")
237
+ bronze_db = _req_key(rc, "glue/db/bronze")
211
238
  except config.ConfigError as exc:
212
239
  typer.secho(str(exc), fg=typer.colors.RED, err=True)
213
240
  raise typer.Exit(1)
214
241
 
215
- raw_silver_db = rc.get("glue/db/rawSilver")
216
- raw_gold_db = rc.get("glue/db/rawGold")
217
242
  values = {
218
243
  "G3DT_REGION": rc.region,
219
244
  "G3DT_ATHENA_WORKGROUP": rc.athena_workgroup,
220
245
  "G3DT_ATHENA_OUTPUT": rc.athena_output_location,
221
- "G3DT_DB_RAW_BRONZE": rc.get("glue/db/rawBronze"),
222
- "G3DT_DB_RAW_SILVER": raw_silver_db,
223
- "G3DT_DB_RAW_GOLD": raw_gold_db,
224
- "G3DT_S3_SILVER_DATA_DIR": f"s3://{rc.get('buckets/rawSilver')}/dbt/",
225
- "G3DT_S3_GOLD_DATA_DIR": f"s3://{rc.get('buckets/rawGold')}/dbt/",
246
+ "G3DT_DB_BRONZE": bronze_db,
247
+ "G3DT_DB_SILVER": silver_db,
248
+ "G3DT_DB_GOLD": gold_db,
249
+ "G3DT_S3_BRONZE_DATA_DIR": f"s3://{bronze_bucket}/dbt/",
250
+ "G3DT_S3_SILVER_DATA_DIR": f"s3://{silver_bucket}/dbt/",
251
+ "G3DT_S3_GOLD_DATA_DIR": f"s3://{gold_bucket}/dbt/",
226
252
  # CI isolation: the dbt template's `ci` target builds into these
227
253
  # instead — same grammar as the CDK's ci_ databases, same buckets
228
254
  # under a dbt_ci/ prefix. Real names above are never prefixed.
229
- "G3DT_DB_RAW_SILVER_CI": f"ci_{raw_silver_db}" if raw_silver_db else None,
230
- "G3DT_DB_RAW_GOLD_CI": f"ci_{raw_gold_db}" if raw_gold_db else None,
231
- "G3DT_S3_SILVER_DATA_DIR_CI": f"s3://{rc.get('buckets/rawSilver')}/dbt_ci/",
232
- "G3DT_S3_GOLD_DATA_DIR_CI": f"s3://{rc.get('buckets/rawGold')}/dbt_ci/",
255
+ "G3DT_DB_BRONZE_CI": f"ci_{bronze_db}",
256
+ "G3DT_DB_SILVER_CI": f"ci_{silver_db}",
257
+ "G3DT_DB_GOLD_CI": f"ci_{gold_db}",
258
+ "G3DT_S3_BRONZE_DATA_DIR_CI": f"s3://{bronze_bucket}/dbt_ci/",
259
+ "G3DT_S3_SILVER_DATA_DIR_CI": f"s3://{silver_bucket}/dbt_ci/",
260
+ "G3DT_S3_GOLD_DATA_DIR_CI": f"s3://{gold_bucket}/dbt_ci/",
233
261
  }
234
262
  if profile:
235
263
  # A named profile means a laptop run: select the dbt target that
@@ -57,10 +57,14 @@ def write(
57
57
  )
58
58
  # The env's own silver/gold DBs (from SSM) scope the model->DB search:
59
59
  # deterministic in shared accounts, no account-wide Glue perms needed.
60
+ # _req_key fails loudly if the raw-free keys are absent (pre-v2.0.0
61
+ # pipeline) instead of silently widening to an account-wide walk.
62
+ from g3dt.cli.config_cmds import _req_key
63
+
60
64
  search_databases = [
61
- db for db in (rc.get("glue/db/rawSilver"), rc.get("glue/db/rawGold"))
62
- if db
63
- ] or None
65
+ _req_key(rc, "glue/db/silver"),
66
+ _req_key(rc, "glue/db/gold"),
67
+ ]
64
68
  release_writer.run(
65
69
  dbt_schema_path=dbt_schema_path,
66
70
  release_db=rc.release_db,