diff --git a/.codegen/_openapi_sha b/.codegen/_openapi_sha index 0373270428a..e6ee8871a2a 100644 --- a/.codegen/_openapi_sha +++ b/.codegen/_openapi_sha @@ -1 +1 @@ -0555d6a59265799ed8ea12f355eee662e739430d \ No newline at end of file +87b666fa172b01444d306112309b6109c096f98b \ No newline at end of file diff --git a/.github/workflows/tagging.yml b/.github/workflows/tagging.yml old mode 100644 new mode 100755 diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index 2297f807b7d..35163457bda 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -12,3 +12,6 @@ * Preserve `.designer.ipynb` suffix when translating notebook task paths so Lakeflow Designer files referenced from a `notebook_task` resolve correctly in the workspace ([#5370](https://github.com/databricks/cli/pull/5370)). ### Dependency updates +* Bump `github.com/databricks/databricks-sdk-go` from v0.136.0 to v0.138.0 ([#5361](https://github.com/databricks/cli/pull/5361)) + +### API Changes diff --git a/Taskfile.yml b/Taskfile.yml index 2e12751a858..f65c5298777 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -760,7 +760,7 @@ tasks: echo "UNIVERSE_SKIP_CHECKOUT set; using current {{.UNIVERSE_DIR}} HEAD" fi - echo "Building genkit..." - - cd {{.UNIVERSE_DIR}} && bazel build //openapi/genkit + - cd {{.UNIVERSE_DIR}} && ./tools/bazel build //openapi/genkit - echo "Generating CLI code..." - "{{.UNIVERSE_DIR}}/bazel-bin/openapi/genkit/genkit_/genkit update-sdk" - "cat .gitattributes.manual .gitattributes > .gitattributes.tmp && mv .gitattributes.tmp .gitattributes" @@ -794,7 +794,8 @@ tasks: generates: - acceptance/bundle/refschema/out.fields.txt cmds: - - go test ./acceptance -run TestAccept/bundle/refschema -update &> /dev/null + - cmd: go test ./acceptance -run TestAccept/bundle/refschema -update &> /dev/null + ignore_error: true # -update returns non-zero exit code on changes generate-schema: desc: Generate bundle JSON schema @@ -882,7 +883,7 @@ tasks: generates: - bundle/direct/dresources/resources.generated.yml cmds: - - "sh -c 'python3 bundle/direct/tools/generate_resources.py .codegen/openapi.json bundle/direct/dresources/apitypes.generated.yml bundle/direct/dresources/apitypes.yml acceptance/bundle/refschema/out.fields.txt > bundle/direct/dresources/resources.generated.yml'" + - "sh -c 'uv run --script bundle/direct/tools/generate_resources.py .codegen/openapi.json bundle/direct/dresources/apitypes.generated.yml bundle/direct/dresources/apitypes.yml acceptance/bundle/refschema/out.fields.txt > bundle/direct/dresources/resources.generated.yml'" generate-openapi-json: desc: Download OpenAPI spec (triggered by _openapi_sha change) diff --git a/acceptance/bundle/refschema/out.fields.txt b/acceptance/bundle/refschema/out.fields.txt index 96000f283e1..af22ae1ea35 100644 --- a/acceptance/bundle/refschema/out.fields.txt +++ b/acceptance/bundle/refschema/out.fields.txt @@ -88,6 +88,8 @@ resources.apps.*.app_status *apps.ApplicationStatus ALL resources.apps.*.app_status.message string ALL resources.apps.*.app_status.state apps.ApplicationState ALL resources.apps.*.budget_policy_id string ALL +resources.apps.*.compute_max_instances int ALL +resources.apps.*.compute_min_instances int ALL resources.apps.*.compute_size apps.ComputeSize ALL resources.apps.*.compute_status *apps.ComputeStatus ALL resources.apps.*.compute_status.active_instances int ALL @@ -2985,6 +2987,7 @@ resources.postgres_synced_tables.*.status.ongoing_sync_progress.total_row_count resources.postgres_synced_tables.*.status.pipeline_id string REMOTE resources.postgres_synced_tables.*.status.project string REMOTE resources.postgres_synced_tables.*.status.provisioning_phase postgres.ProvisioningPhase REMOTE +resources.postgres_synced_tables.*.status.synced_table_id string REMOTE resources.postgres_synced_tables.*.status.unity_catalog_provisioning_state postgres.ProvisioningInfoState REMOTE resources.postgres_synced_tables.*.synced_table_id string ALL resources.postgres_synced_tables.*.timeseries_key string ALL diff --git a/acceptance/bundle/resources/apps/lifecycle-started/output.txt b/acceptance/bundle/resources/apps/lifecycle-started/output.txt index cfe10a2d65e..4562a6b9b22 100644 --- a/acceptance/bundle/resources/apps/lifecycle-started/output.txt +++ b/acceptance/bundle/resources/apps/lifecycle-started/output.txt @@ -90,7 +90,7 @@ Deployment complete! "description": "MY_APP_DESCRIPTION_2", "name": "[UNIQUE_NAME]" }, - "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,compute_size,git_repository,telemetry_export_destinations" + "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,compute_size,compute_min_instances,compute_max_instances,git_repository,telemetry_export_destinations" } } @@ -117,7 +117,7 @@ Deployment complete! "description": "MY_APP_DESCRIPTION_3", "name": "[UNIQUE_NAME]" }, - "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,compute_size,git_repository,telemetry_export_destinations" + "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,compute_size,compute_min_instances,compute_max_instances,git_repository,telemetry_export_destinations" } } { diff --git a/acceptance/bundle/resources/apps/update/out.requests.direct.json b/acceptance/bundle/resources/apps/update/out.requests.direct.json index e33ad270576..f2291c89cf3 100644 --- a/acceptance/bundle/resources/apps/update/out.requests.direct.json +++ b/acceptance/bundle/resources/apps/update/out.requests.direct.json @@ -15,7 +15,7 @@ "description": "MY_APP_DESCRIPTION", "name": "myappname" }, - "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,compute_size,git_repository,telemetry_export_destinations" + "update_mask": "description,budget_policy_id,usage_policy_id,resources,user_api_scopes,compute_size,compute_min_instances,compute_max_instances,git_repository,telemetry_export_destinations" }, "method": "POST", "path": "/api/2.0/apps/myappname/update" diff --git a/acceptance/cmd/workspace/apps/output.txt b/acceptance/cmd/workspace/apps/output.txt index 8d6fd58c574..aa87cb4c3e0 100644 --- a/acceptance/cmd/workspace/apps/output.txt +++ b/acceptance/cmd/workspace/apps/output.txt @@ -89,12 +89,14 @@ Usage: databricks apps update NAME [flags] Flags: - --budget-policy-id string - --compute-size ComputeSize Supported values: [LARGE, MEDIUM] - --description string The description of the app. - -h, --help help for update - --json JSON either inline JSON string or @path/to/file.json with request body (default JSON (0 bytes)) - --space string Name of the space this app belongs to. + --budget-policy-id string + --compute-max-instances int Maximum number of app instances. + --compute-min-instances int Minimum number of app instances. + --compute-size ComputeSize Supported values: [LARGE, MEDIUM] + --description string The description of the app. + -h, --help help for update + --json JSON either inline JSON string or @path/to/file.json with request body (default JSON (0 bytes)) + --space string Name of the space this app belongs to. --usage-policy-id string Global Flags: diff --git a/bundle/direct/dresources/apitypes.generated.yml b/bundle/direct/dresources/apitypes.generated.yml index 767ad08049a..b65d9ac41d4 100644 --- a/bundle/direct/dresources/apitypes.generated.yml +++ b/bundle/direct/dresources/apitypes.generated.yml @@ -50,4 +50,6 @@ synced_database_tables: database.SyncedDatabaseTable vector_search_endpoints: vectorsearch.CreateEndpoint +vector_search_indexes: vectorsearch.CreateVectorIndexRequest + volumes: catalog.CreateVolumeRequestContent diff --git a/bundle/direct/dresources/app.go b/bundle/direct/dresources/app.go index 19e89acddf7..ed6752d834d 100644 --- a/bundle/direct/dresources/app.go +++ b/bundle/direct/dresources/app.go @@ -164,6 +164,8 @@ var UpdateMaskFields = []string{ "resources", "user_api_scopes", "compute_size", + "compute_min_instances", + "compute_max_instances", "git_repository", "telemetry_export_destinations", } diff --git a/bundle/direct/dresources/resources.generated.yml b/bundle/direct/dresources/resources.generated.yml index 03f19509671..b73eb8931b2 100644 --- a/bundle/direct/dresources/resources.generated.yml +++ b/bundle/direct/dresources/resources.generated.yml @@ -27,6 +27,11 @@ resources: apps: ignore_remote_changes: + - field: git_source + reason: spec:input_only + - field: source_code_path + reason: spec:input_only + - field: active_deployment reason: spec:output_only - field: app_status @@ -327,4 +332,6 @@ resources: # vector_search_endpoints: no api field behaviors + # vector_search_indexes: no api field behaviors + # volumes: no api field behaviors diff --git a/bundle/direct/tools/generate_resources.py b/bundle/direct/tools/generate_resources.py index eb453dae17c..ff748d192e5 100644 --- a/bundle/direct/tools/generate_resources.py +++ b/bundle/direct/tools/generate_resources.py @@ -1,4 +1,9 @@ #!/usr/bin/env python3 +# /// script +# dependencies = [ +# "pyyaml", +# ] +# /// """ Generate resources.generated.yml from OpenAPI schema field behaviors. """ diff --git a/bundle/docsgen/output/reference.md b/bundle/docsgen/output/reference.md index c88824d79ab..8691e767c7d 100644 --- a/bundle/docsgen/output/reference.md +++ b/bundle/docsgen/output/reference.md @@ -1,7 +1,7 @@ --- description: 'Configuration reference for databricks.yml' last_update: - date: 2026-05-21 + date: 2026-05-28 --- @@ -539,6 +539,10 @@ resources: - Map - See [\_](#resourcesvector_search_endpoints). +- - `vector_search_indexes` + - Map + - See [\_](#resourcesvector_search_indexes). + - - `volumes` - Map - The volume definitions for the bundle, where each key is the name of the volume. See [\_](/dev-tools/bundles/resources.md#volumes). @@ -729,6 +733,14 @@ apps: - String - +- - `compute_max_instances` + - Integer + - + +- - `compute_min_instances` + - Integer + - + - - `compute_size` - String - @@ -2213,6 +2225,85 @@ vector_search_endpoints: ::: +### resources.vector_search_indexes + +**`Type: Map`** + + + +```yaml +vector_search_indexes: + : + : +``` + + +:::list-table + +- - Key + - Type + - Description + +- - `delta_sync_index_spec` + - Map + - See [\_](#resourcesvector_search_indexesnamedelta_sync_index_spec). + +- - `direct_access_index_spec` + - Map + - See [\_](#resourcesvector_search_indexesnamedirect_access_index_spec). + +- - `endpoint_name` + - String + - + +- - `grants` + - Sequence + - See [\_](#resourcesvector_search_indexesnamegrants). + +- - `index_subtype` + - String + - + +- - `index_type` + - String + - + +- - `lifecycle` + - Map + - See [\_](#resourcesvector_search_indexesnamelifecycle). + +- - `name` + - String + - + +- - `primary_key` + - String + - + +::: + + +### resources.vector_search_indexes._name_.lifecycle + +**`Type: Map`** + + + + + +:::list-table + +- - Key + - Type + - Description + +- - `prevent_destroy` + - Boolean + - Lifecycle setting to prevent the resource from being destroyed. + +::: + + ## run_as **`Type: Map`** @@ -2783,6 +2874,10 @@ The resource definitions for the target. - Map - See [\_](#targetsnameresourcesvector_search_endpoints). +- - `vector_search_indexes` + - Map + - See [\_](#targetsnameresourcesvector_search_indexes). + - - `volumes` - Map - The volume definitions for the bundle, where each key is the name of the volume. See [\_](/dev-tools/bundles/resources.md#volumes). @@ -2973,6 +3068,14 @@ apps: - String - +- - `compute_max_instances` + - Integer + - + +- - `compute_min_instances` + - Integer + - + - - `compute_size` - String - @@ -4457,6 +4560,85 @@ vector_search_endpoints: ::: +### targets._name_.resources.vector_search_indexes + +**`Type: Map`** + + + +```yaml +vector_search_indexes: + : + : +``` + + +:::list-table + +- - Key + - Type + - Description + +- - `delta_sync_index_spec` + - Map + - See [\_](#targetsnameresourcesvector_search_indexesnamedelta_sync_index_spec). + +- - `direct_access_index_spec` + - Map + - See [\_](#targetsnameresourcesvector_search_indexesnamedirect_access_index_spec). + +- - `endpoint_name` + - String + - + +- - `grants` + - Sequence + - See [\_](#targetsnameresourcesvector_search_indexesnamegrants). + +- - `index_subtype` + - String + - + +- - `index_type` + - String + - + +- - `lifecycle` + - Map + - See [\_](#targetsnameresourcesvector_search_indexesnamelifecycle). + +- - `name` + - String + - + +- - `primary_key` + - String + - + +::: + + +### targets._name_.resources.vector_search_indexes._name_.lifecycle + +**`Type: Map`** + + + + + +:::list-table + +- - Key + - Type + - Description + +- - `prevent_destroy` + - Boolean + - Lifecycle setting to prevent the resource from being destroyed. + +::: + + ### targets._name_.run_as **`Type: Map`** diff --git a/bundle/docsgen/output/resources.md b/bundle/docsgen/output/resources.md index 1ab8ef813d7..58d3b5347f1 100644 --- a/bundle/docsgen/output/resources.md +++ b/bundle/docsgen/output/resources.md @@ -1,7 +1,7 @@ --- description: 'Learn about resources supported by Declarative Automation Bundles and how to configure them.' last_update: - date: 2026-05-21 + date: 2026-05-28 --- @@ -532,6 +532,14 @@ apps: - String - +- - `compute_max_instances` + - Integer + - + +- - `compute_min_instances` + - Integer + - + - - `compute_size` - String - @@ -548,10 +556,6 @@ apps: - Map - Git repository configuration for app deployments. When specified, deployments can reference code from this repository by providing only the git reference (branch, tag, or commit). See [\_](#appsnamegit_repository). -- - `git_source` - - Map - - Git source configuration for app deployments. Specifies which git reference (branch, tag, or commit) to use when deploying the app. Used in conjunction with git_repository to deploy code directly from git. The source_code_path within git_source specifies the relative path to the app code within the repository. See [\_](#appsnamegit_source). - - - `lifecycle` - Map - Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed. See [\_](#appsnamelifecycle). @@ -568,10 +572,6 @@ apps: - Sequence - Resources for the app. See [\_](#appsnameresources). -- - `source_code_path` - - String - - - - - `telemetry_export_destinations` - Sequence - See [\_](#appsnametelemetry_export_destinations). @@ -667,41 +667,6 @@ reference code from this repository by providing only the git reference (branch, ::: -### apps._name_.git_source - -**`Type: Map`** - -Git source configuration for app deployments. Specifies which git reference (branch, tag, or commit) -to use when deploying the app. Used in conjunction with git_repository to deploy code directly from git. -The source_code_path within git_source specifies the relative path to the app code within the repository. - - - -:::list-table - -- - Key - - Type - - Description - -- - `branch` - - String - - Git branch to checkout. - -- - `commit` - - String - - Git commit SHA to checkout. - -- - `source_code_path` - - String - - Relative path to the app source code within the Git repository. If not specified, the root of the repository is used. - -- - `tag` - - String - - Git tag to checkout. - -::: - - ### apps._name_.lifecycle **`Type: Map`** @@ -1375,7 +1340,7 @@ clusters: - - `data_security_mode` - String - - Data security mode decides what data governance model to use when accessing data from a cluster. The following modes can only be used when `kind = CLASSIC_PREVIEW`. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`. * `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`. The following modes can be used regardless of `kind`. * `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode. * `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. * `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. + - Data security mode decides what data governance model to use when accessing data from a cluster. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. * `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. The following modes are legacy aliases for the above modes: * `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`. * `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. - - `docker_image` - Map @@ -2123,6 +2088,10 @@ Lifecycle is a struct that contains the lifecycle settings for a resource. It co - Boolean - Lifecycle setting to prevent the resource from being destroyed. +- - `started` + - Boolean + - Lifecycle setting to deploy the resource in started mode. Only supported for apps, clusters, and sql_warehouses in direct deployment mode. + ::: @@ -3395,7 +3364,7 @@ In this minimal environment spec, only pip and java dependencies are supported. - - `base_environment` - String - - The base environment this environment is built on top of. A base environment defines the environment version and a list of dependencies for serverless compute. The value can be a file path to a custom `env.yaml` file (e.g., `/Workspace/path/to/env.yaml`). Support for a Databricks-provided base environment ID (e.g., `workspace-base-environments/databricks_ai_v4`) and workspace base environment ID (e.g., `workspace-base-environments/dbe_b849b66e-b31a-4cb5-b161-1f2b10877fb7`) is in Beta. Either `environment_version` or `base_environment` can be provided. For more information, see + - The base environment this environment is built on top of. A base environment defines the environment version and a list of dependencies for serverless compute. The value can be a file path to a custom `env.yaml` file (e.g., `/Workspace/path/to/env.yaml`). Support for a Databricks-provided base environment ID (e.g., `workspace-base-environments/databricks_ai_v4`) and workspace base environment ID (e.g., `workspace-base-environments/dbe_b849b66e-b31a-4cb5-b161-1f2b10877fb7`) is in Beta. Either `environment_version` or `base_environment` can be provided. For more information about Databricks-provided base environments, see the [list workspace base environments](:method:Environments/ListWorkspaceBaseEnvironments) API. For more information, see - - `client` - String @@ -3630,7 +3599,7 @@ If new_cluster, a description of a cluster that is created for each task. - - `data_security_mode` - String - - Data security mode decides what data governance model to use when accessing data from a cluster. The following modes can only be used when `kind = CLASSIC_PREVIEW`. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`. * `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`. The following modes can be used regardless of `kind`. * `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode. * `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. * `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. + - Data security mode decides what data governance model to use when accessing data from a cluster. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. * `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. The following modes are legacy aliases for the above modes: * `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`. * `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. - - `docker_image` - Map @@ -4624,6 +4593,10 @@ Read endpoints return only 100 tasks. If more than 100 tasks are available, you - Boolean - An option to disable auto optimization in serverless +- - `disabled` + - Boolean + - An optional flag to disable the task. If set to true, the task will not run even if it is part of a job. + - - `email_notifications` - Map - An optional set of email addresses that is notified when runs of this task begin or complete as well as when this task is deleted. The default behavior is to not send any emails. See [\_](#jobsnametasksemail_notifications). @@ -4680,10 +4653,6 @@ Read endpoints return only 100 tasks. If more than 100 tasks are available, you - Map - The task triggers a Power BI semantic model update when the `power_bi_task` field is present. See [\_](#jobsnametaskspower_bi_task). -- - `python_operator_task` - - Map - - See [\_](#jobsnametaskspython_operator_task). - - - `python_wheel_task` - Map - The task runs a Python wheel when the `python_wheel_task` field is present. See [\_](#jobsnametaskspython_wheel_task). @@ -5325,7 +5294,7 @@ If new_cluster, a description of a new cluster that is created for each run. - - `data_security_mode` - String - - Data security mode decides what data governance model to use when accessing data from a cluster. The following modes can only be used when `kind = CLASSIC_PREVIEW`. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: Alias for `USER_ISOLATION`. * `DATA_SECURITY_MODE_DEDICATED`: Alias for `SINGLE_USER`. The following modes can be used regardless of `kind`. * `NONE`: No security isolation for multiple users sharing the cluster. Data governance features are not available in this mode. * `SINGLE_USER`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. * `USER_ISOLATION`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other's data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. + - Data security mode decides what data governance model to use when accessing data from a cluster. * `DATA_SECURITY_MODE_AUTO`: Databricks will choose the most appropriate access mode depending on your compute configuration. * `DATA_SECURITY_MODE_STANDARD`: A secure cluster that can be shared by multiple users. Cluster users are fully isolated so that they cannot see each other’s data and credentials. Most data governance features are supported in this mode. But programming languages and cluster features might be limited. * `DATA_SECURITY_MODE_DEDICATED`: A secure cluster that can only be exclusively used by a single user specified in `single_user_name`. Most programming languages, cluster features and data governance features are available in this mode. The following modes are legacy aliases for the above modes: * `USER_ISOLATION`: Legacy alias for `DATA_SECURITY_MODE_STANDARD`. * `SINGLE_USER`: Legacy alias for `DATA_SECURITY_MODE_DEDICATED`. The following modes are deprecated starting with Databricks Runtime 15.0 and will be removed for future Databricks Runtime versions: * `LEGACY_TABLE_ACL`: This mode is for users migrating from legacy Table ACL clusters. * `LEGACY_PASSTHROUGH`: This mode is for users migrating from legacy Passthrough on high concurrency clusters. * `LEGACY_SINGLE_USER`: This mode is for users migrating from legacy Passthrough on standard clusters. * `LEGACY_SINGLE_USER_STANDARD`: This mode provides a way that doesn’t have UC nor passthrough enabled. - - `docker_image` - Map @@ -6168,7 +6137,7 @@ The task triggers a pipeline update when the `pipeline_task` field is present. O - - `full_refresh_selection` - Sequence - - + - A list of tables to update with fullRefresh. - - `pipeline_id` - String @@ -6176,15 +6145,15 @@ The task triggers a pipeline update when the `pipeline_task` field is present. O - - `refresh_flow_selection` - Sequence - - + - Flow names to selectively refresh. These are unioned with other selective refresh options (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh. - - `refresh_selection` - Sequence - - + - A list of tables to update without fullRefresh. - - `reset_checkpoint_selection` - Sequence - - + - A list of streaming flows to reset checkpoints without clearing data. ::: @@ -6378,19 +6347,19 @@ Controls whether the pipeline should perform a full refresh - - `full_refresh_selection` - Sequence - - + - A list of tables to update with fullRefresh. - - `refresh_flow_selection` - Sequence - - + - Flow names to selectively refresh. These are unioned with other selective refresh options (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh. - - `refresh_selection` - Sequence - - + - A list of tables to update without fullRefresh. - - `reset_checkpoint_selection` - Sequence - - + - A list of streaming flows to reset checkpoints without clearing data. ::: @@ -9522,10 +9491,6 @@ Select all tables from a specific source schema. - Map - Jira specific options for ingestion. See [\_](#pipelinesnameingestion_definitionobjectsschemaconnector_optionsjira_options). -- - `kafka_options` - - Map - - See [\_](#pipelinesnameingestion_definitionobjectsschemaconnector_optionskafka_options). - - - `meta_ads_options` - Map - Meta Marketing (Meta Ads) specific options for ingestion. See [\_](#pipelinesnameingestion_definitionobjectsschemaconnector_optionsmeta_ads_options). @@ -9808,10 +9773,6 @@ Select a specific source table. - Map - Jira specific options for ingestion. See [\_](#pipelinesnameingestion_definitionobjectstableconnector_optionsjira_options). -- - `kafka_options` - - Map - - See [\_](#pipelinesnameingestion_definitionobjectstableconnector_optionskafka_options). - - - `meta_ads_options` - Map - Meta Marketing (Meta Ads) specific options for ingestion. See [\_](#pipelinesnameingestion_definitionobjectstableconnector_optionsmeta_ads_options). @@ -10954,7 +10915,7 @@ postgres_synced_tables: - - `scheduling_policy` - String - - + - Scheduling policy of the synced table's underlying pipeline. - - `source_table_full_name` - String @@ -10992,6 +10953,35 @@ postgres_synced_tables: ::: +### postgres_synced_tables._name_.new_pipeline_spec + +**`Type: Map`** + + + + + +:::list-table + +- - Key + - Type + - Description + +- - `budget_policy_id` + - String + - Budget policy to set on the newly created pipeline. + +- - `storage_catalog` + - String + - UC catalog for the pipeline to store intermediate files (checkpoints, event logs etc). This needs to be a standard catalog where the user has permissions to create Delta tables. + +- - `storage_schema` + - String + - UC schema for the pipeline to store intermediate files (checkpoints, event logs etc). This needs to be in the standard catalog where the user has permissions to create Delta tables. + +::: + + ## quality_monitors **`Type: Map`** @@ -12223,6 +12213,299 @@ vector_search_endpoints: ::: +## vector_search_indexes + +**`Type: Map`** + + + +```yaml +vector_search_indexes: + : + : +``` + + +:::list-table + +- - Key + - Type + - Description + +- - `delta_sync_index_spec` + - Map + - See [\_](#vector_search_indexesnamedelta_sync_index_spec). + +- - `direct_access_index_spec` + - Map + - See [\_](#vector_search_indexesnamedirect_access_index_spec). + +- - `endpoint_name` + - String + - + +- - `grants` + - Sequence + - See [\_](#vector_search_indexesnamegrants). + +- - `index_subtype` + - String + - + +- - `index_type` + - String + - + +- - `lifecycle` + - Map + - See [\_](#vector_search_indexesnamelifecycle). + +- - `name` + - String + - + +- - `primary_key` + - String + - + +::: + + +### vector_search_indexes._name_.delta_sync_index_spec + +**`Type: Map`** + + + + + +:::list-table + +- - Key + - Type + - Description + +- - `columns_to_index` + - Sequence + - + +- - `columns_to_sync` + - Sequence + - + +- - `embedding_source_columns` + - Sequence + - See [\_](#vector_search_indexesnamedelta_sync_index_specembedding_source_columns). + +- - `embedding_vector_columns` + - Sequence + - See [\_](#vector_search_indexesnamedelta_sync_index_specembedding_vector_columns). + +- - `embedding_writeback_table` + - String + - + +- - `pipeline_type` + - String + - + +- - `source_table` + - String + - + +::: + + +### vector_search_indexes._name_.delta_sync_index_spec.embedding_source_columns + +**`Type: Sequence`** + + + + + +:::list-table + +- - Key + - Type + - Description + +- - `embedding_model_endpoint_name` + - String + - + +- - `model_endpoint_name_for_query` + - String + - + +- - `name` + - String + - + +::: + + +### vector_search_indexes._name_.delta_sync_index_spec.embedding_vector_columns + +**`Type: Sequence`** + + + + + +:::list-table + +- - Key + - Type + - Description + +- - `embedding_dimension` + - Integer + - + +- - `name` + - String + - + +::: + + +### vector_search_indexes._name_.direct_access_index_spec + +**`Type: Map`** + + + + + +:::list-table + +- - Key + - Type + - Description + +- - `embedding_source_columns` + - Sequence + - See [\_](#vector_search_indexesnamedirect_access_index_specembedding_source_columns). + +- - `embedding_vector_columns` + - Sequence + - See [\_](#vector_search_indexesnamedirect_access_index_specembedding_vector_columns). + +- - `schema_json` + - String + - + +::: + + +### vector_search_indexes._name_.direct_access_index_spec.embedding_source_columns + +**`Type: Sequence`** + + + + + +:::list-table + +- - Key + - Type + - Description + +- - `embedding_model_endpoint_name` + - String + - + +- - `model_endpoint_name_for_query` + - String + - + +- - `name` + - String + - + +::: + + +### vector_search_indexes._name_.direct_access_index_spec.embedding_vector_columns + +**`Type: Sequence`** + + + + + +:::list-table + +- - Key + - Type + - Description + +- - `embedding_dimension` + - Integer + - + +- - `name` + - String + - + +::: + + +### vector_search_indexes._name_.grants + +**`Type: Sequence`** + + + + + +:::list-table + +- - Key + - Type + - Description + +- - `principal` + - String + - The principal (user email address or group name). For deleted principals, `principal` is empty while `principal_id` is populated. + +- - `privileges` + - Sequence + - The privileges assigned to the principal. + +::: + + +### vector_search_indexes._name_.grants.privileges + +**`Type: Sequence`** + +The privileges assigned to the principal. + + +### vector_search_indexes._name_.lifecycle + +**`Type: Map`** + + + + + +:::list-table + +- - Key + - Type + - Description + +- - `prevent_destroy` + - Boolean + - Lifecycle setting to prevent the resource from being destroyed. + +::: + + ## volumes **`Type: Map`** diff --git a/bundle/internal/schema/annotations.yml b/bundle/internal/schema/annotations.yml index 14b9c82aaf2..0fa308bc9fa 100644 --- a/bundle/internal/schema/annotations.yml +++ b/bundle/internal/schema/annotations.yml @@ -538,6 +538,12 @@ github.com/databricks/cli/bundle/config/resources.Alert: "description": |- PLACEHOLDER github.com/databricks/cli/bundle/config/resources.App: + "compute_max_instances": + "description": |- + PLACEHOLDER + "compute_min_instances": + "description": |- + PLACEHOLDER "git_source": "description": |- Git source configuration for app deployments. Specifies which git reference (branch, tag, or commit) diff --git a/bundle/schema/jsonschema.json b/bundle/schema/jsonschema.json index 13081210475..67cee76f9d2 100644 --- a/bundle/schema/jsonschema.json +++ b/bundle/schema/jsonschema.json @@ -144,6 +144,12 @@ "budget_policy_id": { "$ref": "#/$defs/string" }, + "compute_max_instances": { + "$ref": "#/$defs/int" + }, + "compute_min_instances": { + "$ref": "#/$defs/int" + }, "compute_size": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.ComputeSize" }, diff --git a/bundle/schema/jsonschema_for_docs.json b/bundle/schema/jsonschema_for_docs.json index 76c05de7892..95d64d1ee9f 100644 --- a/bundle/schema/jsonschema_for_docs.json +++ b/bundle/schema/jsonschema_for_docs.json @@ -92,6 +92,12 @@ "$ref": "#/$defs/string", "x-since-version": "v0.243.0" }, + "compute_max_instances": { + "$ref": "#/$defs/int" + }, + "compute_min_instances": { + "$ref": "#/$defs/int" + }, "compute_size": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/apps.ComputeSize", "x-since-version": "v0.273.0" @@ -384,7 +390,7 @@ }, "lifecycle": { "description": "Lifecycle is a struct that contains the lifecycle settings for a resource. It controls the behavior of the resource when it is deployed or destroyed.", - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.LifecycleWithStarted", "x-since-version": "v0.268.0" }, "node_type_id": { @@ -2057,28 +2063,40 @@ "type": "object", "properties": { "delta_sync_index_spec": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/vectorsearch.DeltaSyncVectorIndexSpecRequest" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/vectorsearch.DeltaSyncVectorIndexSpecRequest", + "x-since-version": "v1.1.0" }, "direct_access_index_spec": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/vectorsearch.DirectAccessVectorIndexSpec" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/vectorsearch.DirectAccessVectorIndexSpec", + "x-since-version": "v1.1.0" }, "endpoint_name": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" }, "grants": { - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/catalog.PrivilegeAssignment" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/catalog.PrivilegeAssignment", + "x-since-version": "v1.1.0" + }, + "index_subtype": { + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/vectorsearch.IndexSubtype", + "x-since-version": "v1.1.0" }, "index_type": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/vectorsearch.VectorIndexType" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/vectorsearch.VectorIndexType", + "x-since-version": "v1.1.0" }, "lifecycle": { - "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle" + "$ref": "#/$defs/github.com/databricks/cli/bundle/config/resources.Lifecycle", + "x-since-version": "v1.1.0" }, "name": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" }, "primary_key": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" } }, "additionalProperties": false, @@ -2675,7 +2693,8 @@ "x-since-version": "v0.298.0" }, "vector_search_indexes": { - "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.VectorSearchIndex" + "$ref": "#/$defs/map/github.com/databricks/cli/bundle/config/resources.VectorSearchIndex", + "x-since-version": "v1.1.0" }, "volumes": { "description": "The volume definitions for the bundle, where each key is the name of the volume.", @@ -5912,19 +5931,23 @@ }, "full_refresh_selection": { "description": "A list of tables to update with fullRefresh.", - "$ref": "#/$defs/slice/string" + "$ref": "#/$defs/slice/string", + "x-since-version": "v1.1.0" }, "refresh_flow_selection": { "description": "Flow names to selectively refresh. These are unioned with other selective refresh\noptions (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh.", - "$ref": "#/$defs/slice/string" + "$ref": "#/$defs/slice/string", + "x-since-version": "v1.1.0" }, "refresh_selection": { "description": "A list of tables to update without fullRefresh.", - "$ref": "#/$defs/slice/string" + "$ref": "#/$defs/slice/string", + "x-since-version": "v1.1.0" }, "reset_checkpoint_selection": { "description": "A list of streaming flows to reset checkpoints without clearing data.", - "$ref": "#/$defs/slice/string" + "$ref": "#/$defs/slice/string", + "x-since-version": "v1.1.0" } }, "additionalProperties": false @@ -5939,7 +5962,8 @@ }, "full_refresh_selection": { "description": "A list of tables to update with fullRefresh.", - "$ref": "#/$defs/slice/string" + "$ref": "#/$defs/slice/string", + "x-since-version": "v1.1.0" }, "pipeline_id": { "description": "The full name of the pipeline task to execute.", @@ -5948,15 +5972,18 @@ }, "refresh_flow_selection": { "description": "Flow names to selectively refresh. These are unioned with other selective refresh\noptions (refresh_selection, full_refresh_selection) to determine the final set of flows to refresh.", - "$ref": "#/$defs/slice/string" + "$ref": "#/$defs/slice/string", + "x-since-version": "v1.1.0" }, "refresh_selection": { "description": "A list of tables to update without fullRefresh.", - "$ref": "#/$defs/slice/string" + "$ref": "#/$defs/slice/string", + "x-since-version": "v1.1.0" }, "reset_checkpoint_selection": { "description": "A list of streaming flows to reset checkpoints without clearing data.", - "$ref": "#/$defs/slice/string" + "$ref": "#/$defs/slice/string", + "x-since-version": "v1.1.0" } }, "additionalProperties": false, @@ -6057,11 +6084,13 @@ "properties": { "main": { "description": "Fully qualified name of the main class or function.\nFor example, `my_project.my_function` or `my_project.MyOperator`.", - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" }, "parameters": { "description": "An ordered list of task parameters.\nTODO(JOBS-30885): Add limits for parameters.", - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTaskParameter" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTaskParameter", + "x-since-version": "v1.1.0" } }, "additionalProperties": false @@ -6070,10 +6099,12 @@ "type": "object", "properties": { "name": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" }, "value": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" } }, "additionalProperties": false @@ -6663,7 +6694,8 @@ "description": "The task runs a Python operator task.", "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/jobs.PythonOperatorTask", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true + "doNotSuggest": true, + "x-since-version": "v1.1.0" }, "python_wheel_task": { "description": "The task runs a Python wheel when the `python_wheel_task` field is present.", @@ -7018,7 +7050,8 @@ "kafka_options": { "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.KafkaOptions", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true + "doNotSuggest": true, + "x-since-version": "v1.1.0" }, "meta_ads_options": { "description": "Meta Marketing (Meta Ads) specific options for ingestion", @@ -7659,23 +7692,28 @@ "properties": { "as_variant": { "description": "Parse the entire value as a single Variant column.", - "$ref": "#/$defs/bool" + "$ref": "#/$defs/bool", + "x-since-version": "v1.1.0" }, "schema": { "description": "Inline schema string for JSON parsing (Spark DDL format).", - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" }, "schema_evolution_mode": { "description": "(Optional) Schema evolution mode for schema inference.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptionsSchemaEvolutionMode" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.FileIngestionOptionsSchemaEvolutionMode", + "x-since-version": "v1.1.0" }, "schema_file_path": { "description": "Path to a schema file (.ddl).", - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" }, "schema_hints": { "description": "(Optional) Schema hints as a comma-separated string of \"column_name type\" pairs.", - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" } }, "additionalProperties": false @@ -7687,33 +7725,40 @@ "description": "Undocumented backdoor mechanism for overriding parameters\nto pass to the Kafka client.\nThis is not supported and may break at any time.", "$ref": "#/$defs/map/string", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true + "doNotSuggest": true, + "x-since-version": "v1.1.0" }, "key_transformer": { "description": "(Optional) Transformer for the message key.\nIf not specified, the key is left as raw bytes.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.Transformer" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.Transformer", + "x-since-version": "v1.1.0" }, "max_offsets_per_trigger": { "description": "Internal option to control the maximum number of offsets to process per trigger.", "$ref": "#/$defs/int64", "x-databricks-preview": "PRIVATE", - "doNotSuggest": true + "doNotSuggest": true, + "x-since-version": "v1.1.0" }, "starting_offset": { "description": "(Optional) Where to begin reading when no checkpoint exists.\nValid values: \"latest\" and \"earliest\". Defaults to \"latest\".", - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" }, "topic_pattern": { "description": "Java regex pattern to subscribe to matching topics.\nOnly one of topics or topic_pattern must be specified.", - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" }, "topics": { "description": "Topics to subscribe to.\nOnly one of topics or topic_pattern must be specified.", - "$ref": "#/$defs/slice/string" + "$ref": "#/$defs/slice/string", + "x-since-version": "v1.1.0" }, "value_transformer": { "description": "(Optional) Transformer for the message value.\nIf not specified, the value is left as raw bytes.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.Transformer" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.Transformer", + "x-since-version": "v1.1.0" } }, "additionalProperties": false @@ -8565,10 +8610,12 @@ "properties": { "format": { "description": "Required: the wire format of the data.", - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.TransformerFormat" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.TransformerFormat", + "x-since-version": "v1.1.0" }, "json_options": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.JsonTransformerOptions" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/pipelines.JsonTransformerOptions", + "x-since-version": "v1.1.0" } }, "additionalProperties": false @@ -9949,23 +9996,33 @@ "vectorsearch.DeltaSyncVectorIndexSpecRequest": { "type": "object", "properties": { + "columns_to_index": { + "$ref": "#/$defs/slice/string", + "x-since-version": "v1.1.0" + }, "columns_to_sync": { - "$ref": "#/$defs/slice/string" + "$ref": "#/$defs/slice/string", + "x-since-version": "v1.1.0" }, "embedding_source_columns": { - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/vectorsearch.EmbeddingSourceColumn" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/vectorsearch.EmbeddingSourceColumn", + "x-since-version": "v1.1.0" }, "embedding_vector_columns": { - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/vectorsearch.EmbeddingVectorColumn" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/vectorsearch.EmbeddingVectorColumn", + "x-since-version": "v1.1.0" }, "embedding_writeback_table": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" }, "pipeline_type": { - "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/vectorsearch.PipelineType" + "$ref": "#/$defs/github.com/databricks/databricks-sdk-go/service/vectorsearch.PipelineType", + "x-since-version": "v1.1.0" }, "source_table": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" } }, "additionalProperties": false @@ -9974,13 +10031,16 @@ "type": "object", "properties": { "embedding_source_columns": { - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/vectorsearch.EmbeddingSourceColumn" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/vectorsearch.EmbeddingSourceColumn", + "x-since-version": "v1.1.0" }, "embedding_vector_columns": { - "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/vectorsearch.EmbeddingVectorColumn" + "$ref": "#/$defs/slice/github.com/databricks/databricks-sdk-go/service/vectorsearch.EmbeddingVectorColumn", + "x-since-version": "v1.1.0" }, "schema_json": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" } }, "additionalProperties": false @@ -9989,13 +10049,16 @@ "type": "object", "properties": { "embedding_model_endpoint_name": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" }, "model_endpoint_name_for_query": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" }, "name": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" } }, "additionalProperties": false @@ -10004,10 +10067,12 @@ "type": "object", "properties": { "embedding_dimension": { - "$ref": "#/$defs/int" + "$ref": "#/$defs/int", + "x-since-version": "v1.1.0" }, "name": { - "$ref": "#/$defs/string" + "$ref": "#/$defs/string", + "x-since-version": "v1.1.0" } }, "additionalProperties": false @@ -10021,6 +10086,9 @@ "STANDARD_ON_ORION" ] }, + "vectorsearch.IndexSubtype": { + "type": "string" + }, "vectorsearch.PipelineType": { "type": "string" }, diff --git a/cmd/workspace/apps/apps.go b/cmd/workspace/apps/apps.go index 15e6d75bc67..1e1a88df328 100755 --- a/cmd/workspace/apps/apps.go +++ b/cmd/workspace/apps/apps.go @@ -98,6 +98,8 @@ func newCreate() *cobra.Command { // TODO: complex arg: active_deployment // TODO: complex arg: app_status cmd.Flags().StringVar(&createReq.App.BudgetPolicyId, "budget-policy-id", createReq.App.BudgetPolicyId, ``) + cmd.Flags().IntVar(&createReq.App.ComputeMaxInstances, "compute-max-instances", createReq.App.ComputeMaxInstances, `Maximum number of app instances.`) + cmd.Flags().IntVar(&createReq.App.ComputeMinInstances, "compute-min-instances", createReq.App.ComputeMinInstances, `Minimum number of app instances.`) cmd.Flags().Var(&createReq.App.ComputeSize, "compute-size", `Supported values: [LARGE, MEDIUM]`) // TODO: complex arg: compute_status cmd.Flags().StringVar(&createReq.App.Description, "description", createReq.App.Description, `The description of the app.`) @@ -1691,6 +1693,8 @@ func newUpdate() *cobra.Command { // TODO: complex arg: active_deployment // TODO: complex arg: app_status cmd.Flags().StringVar(&updateReq.App.BudgetPolicyId, "budget-policy-id", updateReq.App.BudgetPolicyId, ``) + cmd.Flags().IntVar(&updateReq.App.ComputeMaxInstances, "compute-max-instances", updateReq.App.ComputeMaxInstances, `Maximum number of app instances.`) + cmd.Flags().IntVar(&updateReq.App.ComputeMinInstances, "compute-min-instances", updateReq.App.ComputeMinInstances, `Minimum number of app instances.`) cmd.Flags().Var(&updateReq.App.ComputeSize, "compute-size", `Supported values: [LARGE, MEDIUM]`) // TODO: complex arg: compute_status cmd.Flags().StringVar(&updateReq.App.Description, "description", updateReq.App.Description, `The description of the app.`) diff --git a/cmd/workspace/feature-engineering/feature-engineering.go b/cmd/workspace/feature-engineering/feature-engineering.go index a9d665fc17b..70543465f4d 100755 --- a/cmd/workspace/feature-engineering/feature-engineering.go +++ b/cmd/workspace/feature-engineering/feature-engineering.go @@ -302,10 +302,13 @@ func newCreateMaterializedFeature() *cobra.Command { cmd.Flags().Var(&createMaterializedFeatureJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Flags().StringVar(&createMaterializedFeatureReq.MaterializedFeature.CronSchedule, "cron-schedule", createMaterializedFeatureReq.MaterializedFeature.CronSchedule, `The quartz cron expression that defines the schedule of the materialization pipeline.`) - cmd.Flags().StringVar(&createMaterializedFeatureReq.MaterializedFeature.MaterializedFeatureId, "materialized-feature-id", createMaterializedFeatureReq.MaterializedFeature.MaterializedFeatureId, `Unique identifier for the materialized feature.`) + // TODO: complex arg: cron_schedule_trigger + cmd.Flags().StringVar(&createMaterializedFeatureReq.MaterializedFeature.MaterializedFeatureId, "materialized-feature-id", createMaterializedFeatureReq.MaterializedFeature.MaterializedFeatureId, `Server-assigned unique identifier for the materialized feature.`) // TODO: complex arg: offline_store_config // TODO: complex arg: online_store_config cmd.Flags().Var(&createMaterializedFeatureReq.MaterializedFeature.PipelineScheduleState, "pipeline-schedule-state", `The schedule state of the materialization pipeline. Supported values: [ACTIVE, PAUSED, SNAPSHOT]`) + // TODO: complex arg: streaming_mode + // TODO: complex arg: table_trigger cmd.Use = "create-materialized-feature FEATURE_NAME" cmd.Short = `Create a materialized feature.` @@ -1185,10 +1188,13 @@ func newUpdateMaterializedFeature() *cobra.Command { cmd.Flags().Var(&updateMaterializedFeatureJson, "json", `either inline JSON string or @path/to/file.json with request body`) cmd.Flags().StringVar(&updateMaterializedFeatureReq.MaterializedFeature.CronSchedule, "cron-schedule", updateMaterializedFeatureReq.MaterializedFeature.CronSchedule, `The quartz cron expression that defines the schedule of the materialization pipeline.`) - cmd.Flags().StringVar(&updateMaterializedFeatureReq.MaterializedFeature.MaterializedFeatureId, "materialized-feature-id", updateMaterializedFeatureReq.MaterializedFeature.MaterializedFeatureId, `Unique identifier for the materialized feature.`) + // TODO: complex arg: cron_schedule_trigger + cmd.Flags().StringVar(&updateMaterializedFeatureReq.MaterializedFeature.MaterializedFeatureId, "materialized-feature-id", updateMaterializedFeatureReq.MaterializedFeature.MaterializedFeatureId, `Server-assigned unique identifier for the materialized feature.`) // TODO: complex arg: offline_store_config // TODO: complex arg: online_store_config cmd.Flags().Var(&updateMaterializedFeatureReq.MaterializedFeature.PipelineScheduleState, "pipeline-schedule-state", `The schedule state of the materialization pipeline. Supported values: [ACTIVE, PAUSED, SNAPSHOT]`) + // TODO: complex arg: streaming_mode + // TODO: complex arg: table_trigger cmd.Use = "update-materialized-feature MATERIALIZED_FEATURE_ID UPDATE_MASK FEATURE_NAME" cmd.Short = `Update a materialized feature.` @@ -1197,7 +1203,7 @@ func newUpdateMaterializedFeature() *cobra.Command { Update a materialized feature (pause/resume). Arguments: - MATERIALIZED_FEATURE_ID: Unique identifier for the materialized feature. + MATERIALIZED_FEATURE_ID: Server-assigned unique identifier for the materialized feature. UPDATE_MASK: Provide the materialization feature fields which should be updated. Currently, only the pipeline_state field can be updated. FEATURE_NAME: The full name of the feature in Unity Catalog.` diff --git a/cmd/workspace/genie/genie.go b/cmd/workspace/genie/genie.go index 0376b717912..57b130bb10c 100755 --- a/cmd/workspace/genie/genie.go +++ b/cmd/workspace/genie/genie.go @@ -2065,6 +2065,7 @@ func newUpdateSpace() *cobra.Command { cmd.Flags().StringVar(&updateSpaceReq.Description, "description", updateSpaceReq.Description, `Optional description.`) cmd.Flags().StringVar(&updateSpaceReq.Etag, "etag", updateSpaceReq.Etag, `ETag returned by a previous GET or UPDATE.`) + cmd.Flags().StringVar(&updateSpaceReq.ParentPath, "parent-path", updateSpaceReq.ParentPath, `Parent workspace folder path to move this Genie space under.`) cmd.Flags().StringVar(&updateSpaceReq.SerializedSpace, "serialized-space", updateSpaceReq.SerializedSpace, `The contents of the Genie Space in serialized string form (full replacement).`) cmd.Flags().StringVar(&updateSpaceReq.Title, "title", updateSpaceReq.Title, `Optional title override.`) cmd.Flags().StringVar(&updateSpaceReq.WarehouseId, "warehouse-id", updateSpaceReq.WarehouseId, `Optional warehouse override.`) diff --git a/cmd/workspace/lakeview/lakeview.go b/cmd/workspace/lakeview/lakeview.go index c3cf12a9747..0f4695039f8 100755 --- a/cmd/workspace/lakeview/lakeview.go +++ b/cmd/workspace/lakeview/lakeview.go @@ -47,6 +47,7 @@ func New() *cobra.Command { cmd.AddCommand(newListSubscriptions()) cmd.AddCommand(newMigrate()) cmd.AddCommand(newPublish()) + cmd.AddCommand(newRevert()) cmd.AddCommand(newTrash()) cmd.AddCommand(newUnpublish()) cmd.AddCommand(newUpdate()) @@ -1065,6 +1066,80 @@ func newPublish() *cobra.Command { return cmd } +// start revert command + +// Slice with functions to override default command behavior. +// Functions can be added from the `init()` function in manually curated files in this directory. +var revertOverrides []func( + *cobra.Command, + *dashboards.RevertDashboardRequest, +) + +func newRevert() *cobra.Command { + cmd := &cobra.Command{} + + var revertReq dashboards.RevertDashboardRequest + var revertJson flags.JsonFlag + + cmd.Flags().Var(&revertJson, "json", `either inline JSON string or @path/to/file.json with request body`) + + cmd.Use = "revert DASHBOARD_ID" + cmd.Short = `Revert dashboard.` + cmd.Long = `Revert dashboard. + + Revert a dashboard's definition in draft mode to the last published version. + + Arguments: + DASHBOARD_ID: UUID identifying the dashboard.` + + cmd.Annotations = make(map[string]string) + cmd.Annotations["launch_stage"] = "GA" + cmd.Annotations["launch_stage_display"] = "GA" + + cmd.Args = func(cmd *cobra.Command, args []string) error { + check := root.ExactArgs(1) + return check(cmd, args) + } + + cmd.PreRunE = root.MustWorkspaceClient + cmd.RunE = func(cmd *cobra.Command, args []string) (err error) { + ctx := cmd.Context() + w := cmdctx.WorkspaceClient(ctx) + + if cmd.Flags().Changed("json") { + diags := revertJson.Unmarshal(&revertReq) + if diags.HasError() { + return diags.Error() + } + if len(diags) > 0 { + err := cmdio.RenderDiagnostics(ctx, diags) + if err != nil { + return err + } + } + } + revertReq.DashboardId = args[0] + + response, err := w.Lakeview.Revert(ctx, revertReq) + if err != nil { + return err + } + + return cmdio.Render(ctx, response) + } + + // Disable completions since they are not applicable. + // Can be overridden by manual implementation in `override.go`. + cmd.ValidArgsFunction = cobra.NoFileCompletions + + // Apply optional overrides to this command. + for _, fn := range revertOverrides { + fn(cmd, &revertReq) + } + + return cmd +} + // start trash command // Slice with functions to override default command behavior. diff --git a/cmd/workspace/postgres/postgres.go b/cmd/workspace/postgres/postgres.go index df28feb58ce..9522a6d7745 100755 --- a/cmd/workspace/postgres/postgres.go +++ b/cmd/workspace/postgres/postgres.go @@ -375,8 +375,10 @@ func newCreateDatabase() *cobra.Command { // TODO: complex arg: status cmd.Use = "create-database PARENT" - cmd.Short = `Create a Database.` - cmd.Long = `Create a Database. + cmd.Short = `*Beta* Create a Database.` + cmd.Long = `This command is in Beta and may change without notice. + +Create a Database. Create a Database. @@ -392,12 +394,9 @@ func newCreateDatabase() *cobra.Command { PARENT: The Branch where this Database will be created. Format: projects/{project_id}/branches/{branch_id}` - // This command is being previewed; hide from help output. - cmd.Hidden = true - cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Private Preview" + cmd.Annotations["launch_stage"] = "PUBLIC_BETA" + cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(1) @@ -1217,8 +1216,10 @@ func newDeleteDatabase() *cobra.Command { cmd.Flags().DurationVar(&deleteDatabaseTimeout, "timeout", 0, `maximum amount of time to reach DONE state`) cmd.Use = "delete-database NAME" - cmd.Short = `Delete a Database.` - cmd.Long = `Delete a Database. + cmd.Short = `*Beta* Delete a Database.` + cmd.Long = `This command is in Beta and may change without notice. + +Delete a Database. This is a long-running operation. By default, the command waits for the operation to complete. Use --no-wait to return immediately with the raw @@ -1229,12 +1230,9 @@ func newDeleteDatabase() *cobra.Command { NAME: The resource name of the postgres database. Format: projects/{project_id}/branches/{branch_id}/databases/{database_id}` - // This command is being previewed; hide from help output. - cmd.Hidden = true - cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Private Preview" + cmd.Annotations["launch_stage"] = "PUBLIC_BETA" + cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(1) @@ -1944,19 +1942,18 @@ func newGetDatabase() *cobra.Command { var getDatabaseReq postgres.GetDatabaseRequest cmd.Use = "get-database NAME" - cmd.Short = `Get a Database.` - cmd.Long = `Get a Database. + cmd.Short = `*Beta* Get a Database.` + cmd.Long = `This command is in Beta and may change without notice. + +Get a Database. Arguments: NAME: The name of the Database to retrieve. Format: projects/{project_id}/branches/{branch_id}/databases/{database_id}` - // This command is being previewed; hide from help output. - cmd.Hidden = true - cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Private Preview" + cmd.Annotations["launch_stage"] = "PUBLIC_BETA" + cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(1) @@ -2409,8 +2406,10 @@ func newListDatabases() *cobra.Command { cmd.Flags().Lookup("page-token").Hidden = true cmd.Use = "list-databases PARENT" - cmd.Short = `List postgres databases in a branch.` - cmd.Long = `List postgres databases in a branch. + cmd.Short = `*Beta* List postgres databases in a branch.` + cmd.Long = `This command is in Beta and may change without notice. + +List postgres databases in a branch. List Databases. @@ -2418,12 +2417,9 @@ func newListDatabases() *cobra.Command { PARENT: The Branch that owns this collection of databases. Format: projects/{project_id}/branches/{branch_id}` - // This command is being previewed; hide from help output. - cmd.Hidden = true - cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Private Preview" + cmd.Annotations["launch_stage"] = "PUBLIC_BETA" + cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(1) @@ -3058,8 +3054,10 @@ func newUpdateDatabase() *cobra.Command { // TODO: complex arg: status cmd.Use = "update-database NAME UPDATE_MASK" - cmd.Short = `Update a Database.` - cmd.Long = `Update a Database. + cmd.Short = `*Beta* Update a Database.` + cmd.Long = `This command is in Beta and may change without notice. + +Update a Database. This is a long-running operation. By default, the command waits for the operation to complete. Use --no-wait to return immediately with the raw @@ -3072,12 +3070,9 @@ func newUpdateDatabase() *cobra.Command { UPDATE_MASK: The list of fields to update. If unspecified, all fields will be updated when possible.` - // This command is being previewed; hide from help output. - cmd.Hidden = true - cmd.Annotations = make(map[string]string) - cmd.Annotations["launch_stage"] = "PRIVATE_PREVIEW" - cmd.Annotations["launch_stage_display"] = "Private Preview" + cmd.Annotations["launch_stage"] = "PUBLIC_BETA" + cmd.Annotations["launch_stage_display"] = "Beta" cmd.Args = func(cmd *cobra.Command, args []string) error { check := root.ExactArgs(2) diff --git a/go.mod b/go.mod index 78aab94c292..6a19e1fb4e6 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/charmbracelet/huh v1.0.0 // MIT github.com/charmbracelet/lipgloss v1.1.0 // MIT github.com/charmbracelet/x/ansi v0.11.7 // MIT - github.com/databricks/databricks-sdk-go v0.136.0 // Apache-2.0 + github.com/databricks/databricks-sdk-go v0.138.0 // Apache-2.0 github.com/google/jsonschema-go v0.4.3 // MIT github.com/google/uuid v1.6.0 // BSD-3-Clause github.com/gorilla/websocket v1.5.3 // BSD-2-Clause diff --git a/go.sum b/go.sum index 1fee01a9187..bdb1b62a6b1 100644 --- a/go.sum +++ b/go.sum @@ -69,8 +69,8 @@ github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22r github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ= github.com/danieljoos/wincred v1.2.3/go.mod h1:6qqX0WNrS4RzPZ1tnroDzq9kY3fu1KwE7MRLQK4X0bs= -github.com/databricks/databricks-sdk-go v0.136.0 h1:7TF+fDS9jpwBqnVy0foZ/ej7zL0h1EezuHfYxGYvhNE= -github.com/databricks/databricks-sdk-go v0.136.0/go.mod h1:C5LNgGe6hGuRrTwoxFmuup3XtQQEaqtq0e+K8IFDIS4= +github.com/databricks/databricks-sdk-go v0.138.0 h1:VfIs+7zLNt84OayPk04NctIbay9XRzovMsPH+UAR6+8= +github.com/databricks/databricks-sdk-go v0.138.0/go.mod h1:C5LNgGe6hGuRrTwoxFmuup3XtQQEaqtq0e+K8IFDIS4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/internal/genkit/tagging.py b/internal/genkit/tagging.py old mode 100644 new mode 100755