Stack
laktory.models.stacks.Stack
¤
Bases: BaseModel
The Stack defines a collection of deployable resources, the deployment configuration, some variables and the environment-specific settings.
Examples:
from laktory import models
stack = models.Stack(
name="workspace",
resources={
"databricks_pipelines": {
"pl-stock-prices": {
"name": "pl-stock-prices",
"development": "${vars.is_dev}",
"libraries": [
{"notebook": {"path": "/pipelines/dlt_brz_template.py"}},
],
}
},
"databricks_jobs": {
"job-stock-prices": {
"name": "job-stock-prices",
"job_clusters": [
{
"job_cluster_key": "main",
"new_cluster": {
"spark_version": "16.3.x-scala2.12",
"node_type_id": "Standard_DS3_v2",
},
}
],
"tasks": [
{
"task_key": "ingest",
"job_cluster_key": "main",
"notebook_task": {
"notebook_path": "/.laktory/jobs/ingest_stock_prices.py",
},
},
{
"task_key": "pipeline",
"depends_on": [{"task_key": "ingest"}],
"pipeline_task": {
"pipeline_id": "${resources.dlt-pl-stock-prices.id}",
},
},
],
}
},
},
variables={
"org": "okube",
},
environments={
"dev": {
"variables": {
"is_dev": True,
}
},
"prod": {
"variables": {
"is_dev": False,
}
},
},
)
| PARAMETER | DESCRIPTION |
|---|---|
description
|
Description of the stack
TYPE:
|
environments
|
Environment-specific overwrite of config, resources or variables arguments.
TYPE:
|
iac_backend
|
IaC backend used for deployment.
TYPE:
|
name
|
Name of the stack.
TYPE:
|
organization
|
Organization
TYPE:
|
resources
|
Dictionary of resources to be deployed. Each key should be a resource type and each value should be a dictionary of resources who's keys are the resource names and the values the resources definitions.
TYPE:
|
settings
|
Laktory settings
TYPE:
|
terraform
|
Terraform-specific settings
TYPE:
|
| METHOD | DESCRIPTION |
|---|---|
apply_settings |
Required to apply settings before instantiating resources and setting default values |
build |
Build stack artifacts before preview or deploy. |
get_env |
Complete definition the stack for a given environment. It takes into |
to_terraform |
Create a terraform stack for a given environment |
apply_settings(data)
classmethod
¤
Required to apply settings before instantiating resources and setting default values
Source code in laktory/models/stacks/stack.py
439 440 441 442 443 444 445 446 447 448 449 | |
build(env_name, inject_vars=True, vars=None)
¤
Build stack artifacts before preview or deploy.
Pipeline config JSON files are written to the location determined by
settings.build_root (when set in stack.yaml under
settings:) or the default Laktory cache directory. For Databricks
Asset Bundles users, set settings.build_root to a
project-local path (e.g. .laktory/.resources/) so that DABs can
sync the files to the workspace.
| PARAMETER | DESCRIPTION |
|---|---|
env_name
|
Name of the environment
TYPE:
|
inject_vars
|
Inject stack variables
TYPE:
|
vars
|
Additional variables that override stack and environment variables.
TYPE:
|
Source code in laktory/models/stacks/stack.py
455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 | |
get_env(env_name)
¤
Complete definition the stack for a given environment. It takes into account both the default stack values and environment-specific overwrites.
| PARAMETER | DESCRIPTION |
|---|---|
env_name
|
Name of the environment
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
|
Environment definitions. |
Source code in laktory/models/stacks/stack.py
523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 | |
to_terraform(env_name=None, vars=None)
¤
Create a terraform stack for a given environment env.
| PARAMETER | DESCRIPTION |
|---|---|
env_name
|
Target environment. If
TYPE:
|
vars
|
Additional variables that override stack and environment variables.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
TerraformStack
|
Terraform-specific stack definition |
Source code in laktory/models/stacks/stack.py
571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 | |
laktory.models.stacks.StackResources
¤
Bases: BaseModel
Resources definition for a given stack or stack environment.
| PARAMETER | DESCRIPTION |
|---|---|
databricks_accesscontrolrulesets
|
TYPE:
|
databricks_alerts
|
TYPE:
|
databricks_apps
|
TYPE:
|
databricks_catalogs
|
TYPE:
|
databricks_clusterpolicies
|
TYPE:
|
databricks_clusters
|
TYPE:
|
databricks_connections
|
TYPE:
|
databricks_currentusers
|
TYPE:
|
databricks_dashboards
|
TYPE:
|
databricks_dataqualitymonitors
|
TYPE:
|
databricks_dbfsfiles
|
TYPE:
|
databricks_directories
|
TYPE:
|
databricks_entitlements
|
TYPE:
|
databricks_externallocations
|
TYPE:
|
databricks_grant
|
TYPE:
|
databricks_grants
|
TYPE:
|
databricks_groups
|
TYPE:
|
databricks_jobs
|
TYPE:
|
databricks_metastoreassignments
|
TYPE:
|
databricks_metastoredataaccesses
|
TYPE:
|
databricks_metastores
|
TYPE:
|
databricks_mlflowexperiments
|
TYPE:
|
databricks_mlflowmodels
|
TYPE:
|
databricks_mlflowwebhooks
|
TYPE:
|
databricks_networkconnectivityconfig
|
TYPE:
|
databricks_notebooks
|
TYPE:
|
databricks_notificationdestinations
|
TYPE:
|
databricks_obotokens
|
TYPE:
|
databricks_permissions
|
TYPE:
|
databricks_pipelines
|
TYPE:
|
databricks_pythonpackages
|
TYPE:
|
databricks_queries
|
TYPE:
|
databricks_recipients
|
TYPE:
|
databricks_repos
|
TYPE:
|
databricks_schemas
|
TYPE:
|
databricks_secrets
|
TYPE:
|
databricks_secretscopes
|
TYPE:
|
databricks_serviceprincipals
|
TYPE:
|
databricks_shares
|
TYPE:
|
databricks_storagecredentials
|
TYPE:
|
databricks_tables
|
TYPE:
|
databricks_users
|
TYPE:
|
databricks_vectorsearchendpoints
|
TYPE:
|
databricks_vectorsearchindexes
|
TYPE:
|
databricks_volumes
|
TYPE:
|
databricks_warehouses
|
TYPE:
|
databricks_workspacebindings
|
TYPE:
|
databricks_workspacefiles
|
TYPE:
|
databricks_workspacetrees
|
TYPE:
|
pipelines
|
TYPE:
|
providers
|
TYPE:
|
| METHOD | DESCRIPTION |
|---|---|
route_providers_by_key |
Use the provider key name (Terraform convention) as the discriminator. |
route_providers_by_key(v)
classmethod
¤
Use the provider key name (Terraform convention) as the discriminator.
AWSProvider and DatabricksProvider share fields like profile and token,
so Pydantic's union matching is ambiguous. The key name is the explicit
source of truth: "databricks[.]" → DatabricksProvider, "aws[.]" →
AWSProvider, "azure[rm][.*]" → AzureProvider.
Source code in laktory/models/stacks/stack.py
255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 | |
laktory.models.stacks.stack.LaktorySettings
¤
Bases: BaseModel
Laktory Settings
| PARAMETER | DESCRIPTION |
|---|---|
build_root
|
Local directory where pipeline config JSON and resource files are written during build. Defaults to the Laktory cache directory. Use when deployment is delegated to third parties like Databricks Declarative Bundles.
TYPE:
|
dataframe_api
|
TYPE:
|
dataframe_backend
|
DataFrame backend
TYPE:
|
runtime_root
|
Laktory cache root directory. Used when a pipeline needs to write checkpoint files.
TYPE:
|
workspace_root
|
Root directory of a Databricks Workspace (excluding `'/Workspace') to which databricks objects like notebooks and workspace files are deployed.
TYPE:
|
laktory.models.stacks.stack.EnvironmentSettings
¤
Bases: BaseModel
Settings overwrite for a specific environments
| PARAMETER | DESCRIPTION |
|---|---|
resources
|
Dictionary of resources to be deployed. Each key should be a resource type and each value should be a dictionary of resources who's keys are the resource names and the values the resources definitions.
TYPE:
|
terraform
|
Terraform-specific settings
TYPE:
|
laktory.models.stacks.stack.Terraform
¤
Bases: BaseModel
| PARAMETER | DESCRIPTION |
|---|---|
backend
|
Terraform backend configuration. Accepts any standard Terraform backend block (e.g.
TYPE:
|