From 79c73a2e701064431f1d8d6fb0cb3c1b2ef2f9f3 Mon Sep 17 00:00:00 2001 From: "databricks-ci-ghec-1[bot]" <184311507+databricks-ci-ghec-1[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 03:55:07 +0000 Subject: [PATCH] Update SDK to 0942f48f8fd23ce7b8030f212e1193c1690958c3 --- .codegen/_openapi_sha | 2 +- .gitattributes | 17 ++- NEXT_CHANGELOG.md | 6 +- .../com/databricks/sdk/WorkspaceClient.java | 23 +++ .../service/catalog/ModelServiceConfig.java | 2 +- .../ModelServiceConfigDestinationConfig.java | 7 +- .../ModelServiceConfigRoutingConfig.java | 27 +--- ...ceConfigRoutingConfigTrafficSplitting.java | 32 ---- .../catalog/UpdateModelServiceRequest.java | 7 +- .../service/cleanrooms/CleanRoomAsset.java | 4 +- .../sdk/service/dashboards/LakeviewAPI.java | 5 +- .../service/dashboards/LakeviewService.java | 5 +- .../sdk/service/jobs/TriggerType.java | 3 +- .../sdk/service/ml/MaterializedFeature.java | 19 +++ .../databricks/sdk/service/ml/TimeWindow.java | 3 +- .../sdk/service/sandbox/ComputeSpec.java | 43 ++++++ .../service/sandbox/CreateSandboxRequest.java | 61 ++++++++ .../service/sandbox/DeleteSandboxRequest.java | 41 +++++ .../service/sandbox/GetSandboxRequest.java | 41 +++++ .../service/sandbox/ListSandboxesRequest.java | 61 ++++++++ .../sandbox/ListSandboxesResponse.java | 61 ++++++++ .../sdk/service/sandbox/Sandbox.java | 124 +++++++++++++++ .../sdk/service/sandbox/SandboxAPI.java | 104 +++++++++++++ .../sdk/service/sandbox/SandboxImpl.java | 141 ++++++++++++++++++ .../sdk/service/sandbox/SandboxService.java | 54 +++++++ .../sdk/service/sandbox/SandboxSpec.java | 42 ++++++ .../sdk/service/sandbox/SandboxState.java | 18 +++ .../sdk/service/sandbox/SandboxStatus.java | 42 ++++++ .../service/sandbox/StartSandboxRequest.java | 42 ++++++ .../service/sandbox/StopSandboxRequest.java | 42 ++++++ .../service/sandbox/UpdateSandboxRequest.java | 83 +++++++++++ 31 files changed, 1090 insertions(+), 72 deletions(-) delete mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigRoutingConfigTrafficSplitting.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ComputeSpec.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/CreateSandboxRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/DeleteSandboxRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/GetSandboxRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ListSandboxesRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ListSandboxesResponse.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/Sandbox.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxAPI.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxImpl.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxService.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxSpec.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxState.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxStatus.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/StartSandboxRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/StopSandboxRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/UpdateSandboxRequest.java diff --git a/.codegen/_openapi_sha b/.codegen/_openapi_sha index 7f5161f06..703b7dfcd 100644 --- a/.codegen/_openapi_sha +++ b/.codegen/_openapi_sha @@ -1 +1 @@ -fe6cf6ee0ed614a43053f552eef142d5e9732d10 \ No newline at end of file +0942f48f8fd23ce7b8030f212e1193c1690958c3 \ No newline at end of file diff --git a/.gitattributes b/.gitattributes index aa11f8859..6ef22687e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -702,7 +702,6 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServic databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigPayPerTokenConfig.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigProvisionedThroughputConfig.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigRoutingConfig.java linguist-generated=true -databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigRoutingConfigTrafficSplitting.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelVersionInfo.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelVersionInfoStatus.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelVersionsAPI.java linguist-generated=true @@ -3023,6 +3022,22 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/qualitymonitorv2/Ra databricks-sdk-java/src/main/java/com/databricks/sdk/service/qualitymonitorv2/UniquenessValidityCheck.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/qualitymonitorv2/UpdateQualityMonitorRequest.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/qualitymonitorv2/ValidityCheckConfiguration.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ComputeSpec.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/CreateSandboxRequest.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/DeleteSandboxRequest.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/GetSandboxRequest.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ListSandboxesRequest.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ListSandboxesResponse.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/Sandbox.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxAPI.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxImpl.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxService.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxSpec.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxState.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxStatus.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/StartSandboxRequest.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/StopSandboxRequest.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/UpdateSandboxRequest.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/Ai21LabsConfig.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/AiGatewayConfig.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/AiGatewayGuardrailParameters.java linguist-generated=true diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index 03a3c5be1..85d43dbee 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -26,4 +26,8 @@ * [Breaking] Remove `disabled` field for `com.databricks.sdk.service.catalog.InferenceTableConfig`. * [Breaking] Remove `owner` field for `com.databricks.sdk.service.catalog.McpService`. * [Breaking] Remove `owner` field for `com.databricks.sdk.service.catalog.ModelProviderService`. -* [Breaking] Remove `owner` field for `com.databricks.sdk.service.catalog.ModelService`. \ No newline at end of file +* [Breaking] Remove `owner` field for `com.databricks.sdk.service.catalog.ModelService`. +* Add `com.databricks.sdk.service.sandbox` package. +* Add `workspaceClient.sandbox()` service. +* Add `latestBackfillOperation` field for `com.databricks.sdk.service.ml.MaterializedFeature`. +* [Breaking] Remove `trafficSplitting` field for `com.databricks.sdk.service.catalog.ModelServiceConfigRoutingConfig`. \ No newline at end of file diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java index 49a8ec5fe..7aa9fe52f 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java @@ -198,6 +198,8 @@ import com.databricks.sdk.service.postgres.PostgresService; import com.databricks.sdk.service.qualitymonitorv2.QualityMonitorV2API; import com.databricks.sdk.service.qualitymonitorv2.QualityMonitorV2Service; +import com.databricks.sdk.service.sandbox.SandboxAPI; +import com.databricks.sdk.service.sandbox.SandboxService; import com.databricks.sdk.service.serving.ServingEndpointsAPI; import com.databricks.sdk.service.serving.ServingEndpointsDataPlaneAPI; import com.databricks.sdk.service.serving.ServingEndpointsDataPlaneService; @@ -383,6 +385,7 @@ public class WorkspaceClient { private ReposAPI reposAPI; private ResourceQuotasAPI resourceQuotasAPI; private RfaAPI rfaAPI; + private SandboxAPI sandboxAPI; private SchemasAPI schemasAPI; private SecretsExt secretsAPI; private SecretsUcAPI secretsUcAPI; @@ -526,6 +529,7 @@ public WorkspaceClient(DatabricksConfig config) { reposAPI = new ReposAPI(apiClient); resourceQuotasAPI = new ResourceQuotasAPI(apiClient); rfaAPI = new RfaAPI(apiClient); + sandboxAPI = new SandboxAPI(apiClient); schemasAPI = new SchemasAPI(apiClient); secretsAPI = new SecretsExt(apiClient); secretsUcAPI = new SecretsUcAPI(apiClient); @@ -1738,6 +1742,14 @@ public RfaAPI rfa() { return rfaAPI; } + /** + * Create, manage, and control the lifecycle of sandboxes -- isolated, pre-configured, low-latency + * Serverless compute environments for running code. + */ + public SandboxAPI sandbox() { + return sandboxAPI; + } + /** * A schema (also called a database) is the second layer of Unity Catalog’s three-level namespace. * A schema organizes tables, views, and functions. To access (or list) a table or view in a @@ -3404,6 +3416,17 @@ public WorkspaceClient withRfaAPI(RfaAPI rfa) { return this; } + /** Replace the default SandboxService with a custom implementation. */ + public WorkspaceClient withSandboxImpl(SandboxService sandbox) { + return this.withSandboxAPI(new SandboxAPI(sandbox)); + } + + /** Replace the default SandboxAPI with a custom implementation. */ + public WorkspaceClient withSandboxAPI(SandboxAPI sandbox) { + this.sandboxAPI = sandbox; + return this; + } + /** Replace the default SchemasService with a custom implementation. */ public WorkspaceClient withSchemasImpl(SchemasService schemas) { return this.withSchemasAPI(new SchemasAPI(schemas)); diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfig.java index 6ce7eee77..50953faa5 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfig.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfig.java @@ -19,7 +19,7 @@ public class ModelServiceConfig { @JsonProperty("rate_limits") private Collection rateLimits; - /** Routing configuration: destinations, routing strategy, and fallback. */ + /** Routing configuration: destinations and fallback. */ @JsonProperty("routing") private ModelServiceConfigRoutingConfig routing; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigDestinationConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigDestinationConfig.java index 0adac8001..d637ff0d2 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigDestinationConfig.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigDestinationConfig.java @@ -47,9 +47,10 @@ public class ModelServiceConfigDestinationConfig { private ModelServiceConfigProvisionedThroughputConfig provisionedThroughputConfig; /** - * Percentage of primary traffic sent to this destination, from 0 to 100. Required when - * `traffic_splitting` is set; primary percentages must sum to 100. Fallback destinations are - * ordered and do not use this field. + * Percentage of primary traffic sent to this destination, from 0 to 100. Required when there is + * more than one primary destination, in which case the primary percentages must sum to 100; a + * single primary destination receives all traffic. Fallback destinations are ordered and do not + * use this field. */ @JsonProperty("traffic_percentage") private Long trafficPercentage; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigRoutingConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigRoutingConfig.java index 77fecdedf..74c5ea1f8 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigRoutingConfig.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigRoutingConfig.java @@ -10,8 +10,8 @@ import java.util.Objects; /** - * Routing configuration for a model service, nesting destinations, routing strategy, and fallback - * under a single sub-message. + * Routing configuration for a model service, nesting destinations and fallback under a single + * sub-message. */ @Generated public class ModelServiceConfigRoutingConfig { @@ -39,13 +39,6 @@ public class ModelServiceConfigRoutingConfig { @JsonProperty("first_token_timeout") private Duration firstTokenTimeout; - /** - * Select `traffic_splitting` to enable weighted traffic splitting across primary destinations. - * Their `traffic_percentage` values must sum to 100. - */ - @JsonProperty("traffic_splitting") - private ModelServiceConfigRoutingConfigTrafficSplitting trafficSplitting; - public ModelServiceConfigRoutingConfig setDestinations( Collection destinations) { this.destinations = destinations; @@ -74,16 +67,6 @@ public Duration getFirstTokenTimeout() { return firstTokenTimeout; } - public ModelServiceConfigRoutingConfig setTrafficSplitting( - ModelServiceConfigRoutingConfigTrafficSplitting trafficSplitting) { - this.trafficSplitting = trafficSplitting; - return this; - } - - public ModelServiceConfigRoutingConfigTrafficSplitting getTrafficSplitting() { - return trafficSplitting; - } - @Override public boolean equals(Object o) { if (this == o) return true; @@ -91,13 +74,12 @@ public boolean equals(Object o) { ModelServiceConfigRoutingConfig that = (ModelServiceConfigRoutingConfig) o; return Objects.equals(destinations, that.destinations) && Objects.equals(fallback, that.fallback) - && Objects.equals(firstTokenTimeout, that.firstTokenTimeout) - && Objects.equals(trafficSplitting, that.trafficSplitting); + && Objects.equals(firstTokenTimeout, that.firstTokenTimeout); } @Override public int hashCode() { - return Objects.hash(destinations, fallback, firstTokenTimeout, trafficSplitting); + return Objects.hash(destinations, fallback, firstTokenTimeout); } @Override @@ -106,7 +88,6 @@ public String toString() { .add("destinations", destinations) .add("fallback", fallback) .add("firstTokenTimeout", firstTokenTimeout) - .add("trafficSplitting", trafficSplitting) .toString(); } } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigRoutingConfigTrafficSplitting.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigRoutingConfigTrafficSplitting.java deleted file mode 100644 index 53e6219fc..000000000 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ModelServiceConfigRoutingConfigTrafficSplitting.java +++ /dev/null @@ -1,32 +0,0 @@ -// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. - -package com.databricks.sdk.service.catalog; - -import com.databricks.sdk.support.Generated; -import com.databricks.sdk.support.ToStringer; -import java.util.Objects; - -/** - * Marker message selecting request-based traffic splitting across primary destinations. Split - * weights are read from each DestinationConfig.traffic_percentage. - */ -@Generated -public class ModelServiceConfigRoutingConfigTrafficSplitting { - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - return true; - } - - @Override - public int hashCode() { - return Objects.hash(); - } - - @Override - public String toString() { - return new ToStringer(ModelServiceConfigRoutingConfigTrafficSplitting.class).toString(); - } -} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/UpdateModelServiceRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/UpdateModelServiceRequest.java index db56e1622..8b364b125 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/UpdateModelServiceRequest.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/UpdateModelServiceRequest.java @@ -41,10 +41,9 @@ public class UpdateModelServiceRequest { * Fields to update. Use `config` to replace the entire configuration. The replacement must * include every required field; any optional field you omit is cleared. To preserve sibling * fields, use one or more granular paths: `comment`, `config.routing.destinations`, - * `config.routing.routing_strategy`, `config.routing.fallback.destinations`, - * `config.routing.first_token_timeout`, `config.rate_limits`, or `config.inference_table`. - * Intermediate paths such as `config.routing` and `config.routing.fallback`, and wildcard paths - * such as `*`, are not supported. + * `config.routing.fallback.destinations`, `config.routing.first_token_timeout`, + * `config.rate_limits`, or `config.inference_table`. Intermediate paths such as `config.routing` + * and `config.routing.fallback`, and wildcard paths such as `*`, are not supported. */ @JsonIgnore @QueryParam("update_mask") diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAsset.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAsset.java index f52fc72b9..c855faf86 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAsset.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomAsset.java @@ -76,14 +76,14 @@ public class CleanRoomAsset { /** * Table details available to all collaborators of the clean room. Present if and only if - * **asset_type** is **TABLE** + * **asset_type** is **TABLE** or **STREAMING_TABLE** */ @JsonProperty("table") private CleanRoomAssetTable table; /** * Local details for a table that are only available to its owner. Present if and only if - * **asset_type** is **TABLE** + * **asset_type** is **TABLE** or **STREAMING_TABLE** */ @JsonProperty("table_local_details") private CleanRoomAssetTableLocalDetails tableLocalDetails; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewAPI.java index ca760327f..deacceef8 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewAPI.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewAPI.java @@ -181,7 +181,10 @@ public Iterable listSubscriptions(ListSubscriptionsRequest request }); } - /** Migrates a classic SQL dashboard to Lakeview. */ + /** + * Deprecated: Legacy dashboard migration is no longer supported. Use Lakeview (AI/BI) dashboards + * instead. + */ public Dashboard migrate(MigrateDashboardRequest request) { return impl.migrate(request); } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewService.java index 9ed751347..8d9997452 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewService.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/LakeviewService.java @@ -69,7 +69,10 @@ public interface LakeviewService { /** List schedule subscriptions. */ ListSubscriptionsResponse listSubscriptions(ListSubscriptionsRequest listSubscriptionsRequest); - /** Migrates a classic SQL dashboard to Lakeview. */ + /** + * Deprecated: Legacy dashboard migration is no longer supported. Use Lakeview (AI/BI) dashboards + * instead. + */ Dashboard migrate(MigrateDashboardRequest migrateDashboardRequest); /** diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/TriggerType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/TriggerType.java index b5c70add9..3f1e2c2d2 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/TriggerType.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/jobs/TriggerType.java @@ -15,7 +15,8 @@ * Indicates a run that is triggered by a file arrival. * `CONTINUOUS`: Indicates a run that is * triggered by a continuous job. * `TABLE`: Indicates a run that is triggered by a table update. * * `CONTINUOUS_RESTART`: Indicates a run created by user to manually restart a continuous job run. * - * `MODEL`: Indicates a run that is triggered by a model update. + * `MODEL`: Indicates a run that is triggered by a model update. * `JOB_COMPLETION`: Indicates a run + * that is triggered by an upstream job completion. */ @Generated public enum TriggerType { diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/MaterializedFeature.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/MaterializedFeature.java index 3e5162c78..617c4356b 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/MaterializedFeature.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/MaterializedFeature.java @@ -31,6 +31,13 @@ public class MaterializedFeature { @JsonProperty("last_materialization_time") private String lastMaterializationTime; + /** + * Name of the latest backfill operation on this materialized feature. Format: + * operations/{operation_id}. + */ + @JsonProperty("latest_backfill_operation") + private String latestBackfillOperation; + /** Server-assigned unique identifier for the materialized feature. */ @JsonProperty("materialized_feature_id") private String materializedFeatureId; @@ -105,6 +112,15 @@ public String getLastMaterializationTime() { return lastMaterializationTime; } + public MaterializedFeature setLatestBackfillOperation(String latestBackfillOperation) { + this.latestBackfillOperation = latestBackfillOperation; + return this; + } + + public String getLatestBackfillOperation() { + return latestBackfillOperation; + } + public MaterializedFeature setMaterializedFeatureId(String materializedFeatureId) { this.materializedFeatureId = materializedFeatureId; return this; @@ -178,6 +194,7 @@ public boolean equals(Object o) { && Objects.equals(featureName, that.featureName) && Objects.equals(isOnline, that.isOnline) && Objects.equals(lastMaterializationTime, that.lastMaterializationTime) + && Objects.equals(latestBackfillOperation, that.latestBackfillOperation) && Objects.equals(materializedFeatureId, that.materializedFeatureId) && Objects.equals(offlineStoreConfig, that.offlineStoreConfig) && Objects.equals(onlineStoreConfig, that.onlineStoreConfig) @@ -194,6 +211,7 @@ public int hashCode() { featureName, isOnline, lastMaterializationTime, + latestBackfillOperation, materializedFeatureId, offlineStoreConfig, onlineStoreConfig, @@ -210,6 +228,7 @@ public String toString() { .add("featureName", featureName) .add("isOnline", isOnline) .add("lastMaterializationTime", lastMaterializationTime) + .add("latestBackfillOperation", latestBackfillOperation) .add("materializedFeatureId", materializedFeatureId) .add("offlineStoreConfig", offlineStoreConfig) .add("onlineStoreConfig", onlineStoreConfig) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/TimeWindow.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/TimeWindow.java index 88303be69..b5b22d38a 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/TimeWindow.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/ml/TimeWindow.java @@ -29,7 +29,8 @@ public class TimeWindow { * 365 days of data; a lifetime window produces no output before start_time. If unset, tumbling * and fixed-duration sliding windows first emit at an offset-aligned boundary after a full window * can be formed. If unset, lifetime sliding windows and rolling windows emit as soon as eligible - * source data exists. + * source data exists. Not currently supported for sawtooth windows or for Features with a stream + * source. */ @JsonProperty("start_time") private Timestamp startTime; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ComputeSpec.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ComputeSpec.java new file mode 100644 index 000000000..d60191370 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ComputeSpec.java @@ -0,0 +1,43 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.protobuf.Duration; +import java.util.Objects; + +@Generated +public class ComputeSpec { + /** Idle duration after which the sandbox is automatically terminated. */ + @JsonProperty("inactivity_timeout") + private Duration inactivityTimeout; + + public ComputeSpec setInactivityTimeout(Duration inactivityTimeout) { + this.inactivityTimeout = inactivityTimeout; + return this; + } + + public Duration getInactivityTimeout() { + return inactivityTimeout; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ComputeSpec that = (ComputeSpec) o; + return Objects.equals(inactivityTimeout, that.inactivityTimeout); + } + + @Override + public int hashCode() { + return Objects.hash(inactivityTimeout); + } + + @Override + public String toString() { + return new ToStringer(ComputeSpec.class).add("inactivityTimeout", inactivityTimeout).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/CreateSandboxRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/CreateSandboxRequest.java new file mode 100644 index 000000000..5e022c576 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/CreateSandboxRequest.java @@ -0,0 +1,61 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +@Generated +public class CreateSandboxRequest { + /** The sandbox to create. */ + @JsonProperty("sandbox") + private Sandbox sandbox; + + /** Client-supplied ID that becomes the final path segment of the resource name. */ + @JsonIgnore + @QueryParam("sandbox_id") + private String sandboxId; + + public CreateSandboxRequest setSandbox(Sandbox sandbox) { + this.sandbox = sandbox; + return this; + } + + public Sandbox getSandbox() { + return sandbox; + } + + public CreateSandboxRequest setSandboxId(String sandboxId) { + this.sandboxId = sandboxId; + return this; + } + + public String getSandboxId() { + return sandboxId; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CreateSandboxRequest that = (CreateSandboxRequest) o; + return Objects.equals(sandbox, that.sandbox) && Objects.equals(sandboxId, that.sandboxId); + } + + @Override + public int hashCode() { + return Objects.hash(sandbox, sandboxId); + } + + @Override + public String toString() { + return new ToStringer(CreateSandboxRequest.class) + .add("sandbox", sandbox) + .add("sandboxId", sandboxId) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/DeleteSandboxRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/DeleteSandboxRequest.java new file mode 100644 index 000000000..afb338c9d --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/DeleteSandboxRequest.java @@ -0,0 +1,41 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.Objects; + +@Generated +public class DeleteSandboxRequest { + /** */ + @JsonIgnore private String name; + + public DeleteSandboxRequest setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DeleteSandboxRequest that = (DeleteSandboxRequest) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(name); + } + + @Override + public String toString() { + return new ToStringer(DeleteSandboxRequest.class).add("name", name).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/GetSandboxRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/GetSandboxRequest.java new file mode 100644 index 000000000..f996ce01c --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/GetSandboxRequest.java @@ -0,0 +1,41 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.Objects; + +@Generated +public class GetSandboxRequest { + /** */ + @JsonIgnore private String name; + + public GetSandboxRequest setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + GetSandboxRequest that = (GetSandboxRequest) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(name); + } + + @Override + public String toString() { + return new ToStringer(GetSandboxRequest.class).add("name", name).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ListSandboxesRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ListSandboxesRequest.java new file mode 100644 index 000000000..315eaadab --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ListSandboxesRequest.java @@ -0,0 +1,61 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.Objects; + +@Generated +public class ListSandboxesRequest { + /** */ + @JsonIgnore + @QueryParam("page_size") + private Long pageSize; + + /** */ + @JsonIgnore + @QueryParam("page_token") + private String pageToken; + + public ListSandboxesRequest setPageSize(Long pageSize) { + this.pageSize = pageSize; + return this; + } + + public Long getPageSize() { + return pageSize; + } + + public ListSandboxesRequest setPageToken(String pageToken) { + this.pageToken = pageToken; + return this; + } + + public String getPageToken() { + return pageToken; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ListSandboxesRequest that = (ListSandboxesRequest) o; + return Objects.equals(pageSize, that.pageSize) && Objects.equals(pageToken, that.pageToken); + } + + @Override + public int hashCode() { + return Objects.hash(pageSize, pageToken); + } + + @Override + public String toString() { + return new ToStringer(ListSandboxesRequest.class) + .add("pageSize", pageSize) + .add("pageToken", pageToken) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ListSandboxesResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ListSandboxesResponse.java new file mode 100644 index 000000000..d795a93ab --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/ListSandboxesResponse.java @@ -0,0 +1,61 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Collection; +import java.util.Objects; + +/** A list of Sandboxes. */ +@Generated +public class ListSandboxesResponse { + /** */ + @JsonProperty("next_page_token") + private String nextPageToken; + + /** */ + @JsonProperty("sandboxes") + private Collection sandboxes; + + public ListSandboxesResponse setNextPageToken(String nextPageToken) { + this.nextPageToken = nextPageToken; + return this; + } + + public String getNextPageToken() { + return nextPageToken; + } + + public ListSandboxesResponse setSandboxes(Collection sandboxes) { + this.sandboxes = sandboxes; + return this; + } + + public Collection getSandboxes() { + return sandboxes; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ListSandboxesResponse that = (ListSandboxesResponse) o; + return Objects.equals(nextPageToken, that.nextPageToken) + && Objects.equals(sandboxes, that.sandboxes); + } + + @Override + public int hashCode() { + return Objects.hash(nextPageToken, sandboxes); + } + + @Override + public String toString() { + return new ToStringer(ListSandboxesResponse.class) + .add("nextPageToken", nextPageToken) + .add("sandboxes", sandboxes) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/Sandbox.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/Sandbox.java new file mode 100644 index 000000000..21d534a0b --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/Sandbox.java @@ -0,0 +1,124 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.protobuf.Timestamp; +import java.util.Objects; + +/** A Sandbox resource representing an execution environment. */ +@Generated +public class Sandbox { + /** Output only. The creation time of the sandbox. */ + @JsonProperty("create_time") + private Timestamp createTime; + + /** + * Customer-supplied display label. Mutable via UpdateSandbox. Bounds enforced at the RPC boundary + * (<=256 bytes, mirrors lakebox MAX_SANDBOX_NAME_LEN). + */ + @JsonProperty("display_name") + private String displayName; + + /** The AIP-compliant resource name, such as "sandboxes/my-sandbox". */ + @JsonProperty("name") + private String name; + + /** The desired configuration of the sandbox, supplied by the caller at creation time. */ + @JsonProperty("spec") + private SandboxSpec spec; + + /** The observed runtime state of the sandbox, populated by the server. */ + @JsonProperty("status") + private SandboxStatus status; + + /** Output only. The last update time of the sandbox metadata and spec. */ + @JsonProperty("update_time") + private Timestamp updateTime; + + public Sandbox setCreateTime(Timestamp createTime) { + this.createTime = createTime; + return this; + } + + public Timestamp getCreateTime() { + return createTime; + } + + public Sandbox setDisplayName(String displayName) { + this.displayName = displayName; + return this; + } + + public String getDisplayName() { + return displayName; + } + + public Sandbox setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + public Sandbox setSpec(SandboxSpec spec) { + this.spec = spec; + return this; + } + + public SandboxSpec getSpec() { + return spec; + } + + public Sandbox setStatus(SandboxStatus status) { + this.status = status; + return this; + } + + public SandboxStatus getStatus() { + return status; + } + + public Sandbox setUpdateTime(Timestamp updateTime) { + this.updateTime = updateTime; + return this; + } + + public Timestamp getUpdateTime() { + return updateTime; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Sandbox that = (Sandbox) o; + return Objects.equals(createTime, that.createTime) + && Objects.equals(displayName, that.displayName) + && Objects.equals(name, that.name) + && Objects.equals(spec, that.spec) + && Objects.equals(status, that.status) + && Objects.equals(updateTime, that.updateTime); + } + + @Override + public int hashCode() { + return Objects.hash(createTime, displayName, name, spec, status, updateTime); + } + + @Override + public String toString() { + return new ToStringer(Sandbox.class) + .add("createTime", createTime) + .add("displayName", displayName) + .add("name", name) + .add("spec", spec) + .add("status", status) + .add("updateTime", updateTime) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxAPI.java new file mode 100644 index 000000000..e3ba389d5 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxAPI.java @@ -0,0 +1,104 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.core.ApiClient; +import com.databricks.sdk.core.logging.Logger; +import com.databricks.sdk.core.logging.LoggerFactory; +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.Paginator; + +/** + * Create, manage, and control the lifecycle of sandboxes -- isolated, pre-configured, low-latency + * Serverless compute environments for running code. + */ +@Generated +public class SandboxAPI { + private static final Logger LOG = LoggerFactory.getLogger(SandboxAPI.class); + + private final SandboxService impl; + + /** Regular-use constructor */ + public SandboxAPI(ApiClient apiClient) { + impl = new SandboxImpl(apiClient); + } + + /** Constructor for mocks */ + public SandboxAPI(SandboxService mock) { + impl = mock; + } + + /** Creates a new Sandbox. */ + public Sandbox createSandbox(CreateSandboxRequest request) { + return impl.createSandbox(request); + } + + public void deleteSandbox(String name) { + deleteSandbox(new DeleteSandboxRequest().setName(name)); + } + + /** Deletes a Sandbox. */ + public void deleteSandbox(DeleteSandboxRequest request) { + impl.deleteSandbox(request); + } + + public Sandbox getSandbox(String name) { + return getSandbox(new GetSandboxRequest().setName(name)); + } + + /** Retrieves a Sandbox by name. */ + public Sandbox getSandbox(GetSandboxRequest request) { + return impl.getSandbox(request); + } + + /** Lists all Sandboxes. */ + public Iterable listSandboxes(ListSandboxesRequest request) { + return Paginator.newTokenPagination( + request, + impl::listSandboxes, + ListSandboxesResponse::getSandboxes, + response -> { + String token = response.getNextPageToken(); + if (token == null || token.isEmpty()) { + return null; + } + return request.setPageToken(token); + }); + } + + /** + * Starts a stopped Sandbox by atomically restoring the TerminatedSandbox tombstone to the active + * table in PENDING and re-running the provisioning workflow. The provisioning workflow's + * claimWarmPoolSandbox step re-mints the app_instance_name (deterministic from sandbox_id, so + * equal to the prior life's name). The tombstone's volume_id is preserved so the new AppInstance + * binds to the same backing device file. The restored sandbox gets a fresh uid and create_time. + * Returns NOT_FOUND if no tombstone exists for the given (workspace_id, sandbox_id) — the sandbox + * may not exist or may currently be active; clients can disambiguate via Get. + */ + public Sandbox startSandbox(StartSandboxRequest request) { + return impl.startSandbox(request); + } + + /** + * Stops a Sandbox, terminating the sandbox while allowing future use of StartSandbox to + * re-provision the same Sandbox without re-creating a brand new one. Transitions the active row + * to TERMINATING with USER_REQUEST_STOP; the termination workflow settles to a TerminatedSandbox + * tombstone (no row drop) so the sandbox can later be restarted via StartSandbox. + */ + public Sandbox stopSandbox(StopSandboxRequest request) { + return impl.stopSandbox(request); + } + + /** + * Updates mutable fields on an existing Sandbox. Allowlisted update_mask paths today: + * metadata.display_name, spec.compute.inactivity_timeout. Returns INVALID_PARAMETER_VALUE for + * empty masks or unknown paths; NOT_FOUND if no active row or tombstone exists for the given + * sandbox. Concurrent-update conflicts surface as ABORTED via EStore OccConflict. + */ + public Sandbox updateSandbox(UpdateSandboxRequest request) { + return impl.updateSandbox(request); + } + + public SandboxService impl() { + return impl; + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxImpl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxImpl.java new file mode 100644 index 000000000..607043e78 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxImpl.java @@ -0,0 +1,141 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.core.ApiClient; +import com.databricks.sdk.core.DatabricksException; +import com.databricks.sdk.core.http.Request; +import com.databricks.sdk.support.Generated; +import java.io.IOException; + +/** Package-local implementation of Sandbox */ +@Generated +class SandboxImpl implements SandboxService { + private final ApiClient apiClient; + + public SandboxImpl(ApiClient apiClient) { + this.apiClient = apiClient; + } + + @Override + public Sandbox createSandbox(CreateSandboxRequest request) { + String path = "/api/2.0/sandboxes"; + try { + Request req = new Request("POST", path, apiClient.serialize(request.getSandbox())); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + req.withHeader("Content-Type", "application/json"); + if (apiClient.workspaceId() != null) { + req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId()); + } + return apiClient.execute(req, Sandbox.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + + @Override + public void deleteSandbox(DeleteSandboxRequest request) { + String path = String.format("/api/2.0/%s", request.getName()); + try { + Request req = new Request("DELETE", path); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + if (apiClient.workspaceId() != null) { + req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId()); + } + apiClient.execute(req, Void.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + + @Override + public Sandbox getSandbox(GetSandboxRequest request) { + String path = String.format("/api/2.0/%s", request.getName()); + try { + Request req = new Request("GET", path); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + if (apiClient.workspaceId() != null) { + req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId()); + } + return apiClient.execute(req, Sandbox.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + + @Override + public ListSandboxesResponse listSandboxes(ListSandboxesRequest request) { + String path = "/api/2.0/sandboxes"; + try { + Request req = new Request("GET", path); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + if (apiClient.workspaceId() != null) { + req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId()); + } + return apiClient.execute(req, ListSandboxesResponse.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + + @Override + public Sandbox startSandbox(StartSandboxRequest request) { + String path = String.format("/api/2.0/%s/start", request.getName()); + try { + Request req = new Request("POST", path, apiClient.serialize(request)); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + req.withHeader("Content-Type", "application/json"); + if (apiClient.workspaceId() != null) { + req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId()); + } + return apiClient.execute(req, Sandbox.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + + @Override + public Sandbox stopSandbox(StopSandboxRequest request) { + String path = String.format("/api/2.0/%s/stop", request.getName()); + try { + Request req = new Request("POST", path, apiClient.serialize(request)); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + req.withHeader("Content-Type", "application/json"); + if (apiClient.workspaceId() != null) { + req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId()); + } + return apiClient.execute(req, Sandbox.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + + @Override + public Sandbox updateSandbox(UpdateSandboxRequest request) { + String path = String.format("/api/2.0/%s", request.getName()); + try { + Request req = new Request("PATCH", path, apiClient.serialize(request.getSandbox())); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + req.withHeader("Content-Type", "application/json"); + if (apiClient.workspaceId() != null) { + req.withHeader("X-Databricks-Workspace-Id", apiClient.workspaceId()); + } + return apiClient.execute(req, Sandbox.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxService.java new file mode 100644 index 000000000..f858941af --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxService.java @@ -0,0 +1,54 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; + +/** + * Create, manage, and control the lifecycle of sandboxes -- isolated, pre-configured, low-latency + * Serverless compute environments for running code. + * + *

This is the high-level interface, that contains generated methods. + * + *

Evolving: this interface is under development. Method signatures may change. + */ +@Generated +public interface SandboxService { + /** Creates a new Sandbox. */ + Sandbox createSandbox(CreateSandboxRequest createSandboxRequest); + + /** Deletes a Sandbox. */ + void deleteSandbox(DeleteSandboxRequest deleteSandboxRequest); + + /** Retrieves a Sandbox by name. */ + Sandbox getSandbox(GetSandboxRequest getSandboxRequest); + + /** Lists all Sandboxes. */ + ListSandboxesResponse listSandboxes(ListSandboxesRequest listSandboxesRequest); + + /** + * Starts a stopped Sandbox by atomically restoring the TerminatedSandbox tombstone to the active + * table in PENDING and re-running the provisioning workflow. The provisioning workflow's + * claimWarmPoolSandbox step re-mints the app_instance_name (deterministic from sandbox_id, so + * equal to the prior life's name). The tombstone's volume_id is preserved so the new AppInstance + * binds to the same backing device file. The restored sandbox gets a fresh uid and create_time. + * Returns NOT_FOUND if no tombstone exists for the given (workspace_id, sandbox_id) — the sandbox + * may not exist or may currently be active; clients can disambiguate via Get. + */ + Sandbox startSandbox(StartSandboxRequest startSandboxRequest); + + /** + * Stops a Sandbox, terminating the sandbox while allowing future use of StartSandbox to + * re-provision the same Sandbox without re-creating a brand new one. Transitions the active row + * to TERMINATING with USER_REQUEST_STOP; the termination workflow settles to a TerminatedSandbox + * tombstone (no row drop) so the sandbox can later be restarted via StartSandbox. + */ + Sandbox stopSandbox(StopSandboxRequest stopSandboxRequest); + + /** + * Updates mutable fields on an existing Sandbox. Allowlisted update_mask paths today: + * metadata.display_name, spec.compute.inactivity_timeout. Returns INVALID_PARAMETER_VALUE for + * empty masks or unknown paths; NOT_FOUND if no active row or tombstone exists for the given + * sandbox. Concurrent-update conflicts surface as ABORTED via EStore OccConflict. + */ + Sandbox updateSandbox(UpdateSandboxRequest updateSandboxRequest); +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxSpec.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxSpec.java new file mode 100644 index 000000000..d63edad13 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxSpec.java @@ -0,0 +1,42 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +@Generated +public class SandboxSpec { + /** Compute configuration (size, inactivity timeout) requested for the sandbox. */ + @JsonProperty("compute") + private ComputeSpec compute; + + public SandboxSpec setCompute(ComputeSpec compute) { + this.compute = compute; + return this; + } + + public ComputeSpec getCompute() { + return compute; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + SandboxSpec that = (SandboxSpec) o; + return Objects.equals(compute, that.compute); + } + + @Override + public int hashCode() { + return Objects.hash(compute); + } + + @Override + public String toString() { + return new ToStringer(SandboxSpec.class).add("compute", compute).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxState.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxState.java new file mode 100644 index 000000000..87f71a21c --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxState.java @@ -0,0 +1,18 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; + +/** + * Lifecycle state of a Sandbox resource. STOPPING is the transient state surfaced while a teardown + * (Stop, DeleteSandbox, auto-terminate, provisioning failure) is in flight but the sandbox row + * still exists; the row settles to STOPPED once the workflow finishes. + */ +@Generated +public enum SandboxState { + SANDBOX_STATE_PENDING, + SANDBOX_STATE_RUNNING, + SANDBOX_STATE_STOPPED, + SANDBOX_STATE_STOPPING, +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxStatus.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxStatus.java new file mode 100644 index 000000000..d96107cb1 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/SandboxStatus.java @@ -0,0 +1,42 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Objects; + +@Generated +public class SandboxStatus { + /** Lifecycle state of the sandbox. */ + @JsonProperty("state") + private SandboxState state; + + public SandboxStatus setState(SandboxState state) { + this.state = state; + return this; + } + + public SandboxState getState() { + return state; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + SandboxStatus that = (SandboxStatus) o; + return Objects.equals(state, that.state); + } + + @Override + public int hashCode() { + return Objects.hash(state); + } + + @Override + public String toString() { + return new ToStringer(SandboxStatus.class).add("state", state).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/StartSandboxRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/StartSandboxRequest.java new file mode 100644 index 000000000..14993d787 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/StartSandboxRequest.java @@ -0,0 +1,42 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.Objects; + +/** A request to start a Sandbox. */ +@Generated +public class StartSandboxRequest { + /** Resource name of the sandbox to start, in the form `sandboxes/{sandbox_id}`. */ + @JsonIgnore private String name; + + public StartSandboxRequest setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + StartSandboxRequest that = (StartSandboxRequest) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(name); + } + + @Override + public String toString() { + return new ToStringer(StartSandboxRequest.class).add("name", name).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/StopSandboxRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/StopSandboxRequest.java new file mode 100644 index 000000000..5e22e01e3 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/StopSandboxRequest.java @@ -0,0 +1,42 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonIgnore; +import java.util.Objects; + +/** A request to stop a Sandbox. */ +@Generated +public class StopSandboxRequest { + /** Resource name of the sandbox to stop, in the form `sandboxes/{sandbox_id}`. */ + @JsonIgnore private String name; + + public StopSandboxRequest setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + StopSandboxRequest that = (StopSandboxRequest) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(name); + } + + @Override + public String toString() { + return new ToStringer(StopSandboxRequest.class).add("name", name).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/UpdateSandboxRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/UpdateSandboxRequest.java new file mode 100644 index 000000000..2bbe004e9 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sandbox/UpdateSandboxRequest.java @@ -0,0 +1,83 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sandbox; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; +import com.databricks.sdk.support.ToStringer; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.protobuf.FieldMask; +import java.util.Objects; + +@Generated +public class UpdateSandboxRequest { + /** Resource name of the sandbox to update, in the form `sandboxes/{sandbox_id}`. */ + @JsonIgnore private String name; + + /** + * The Sandbox resource carrying new field values. Only fields named in `update_mask` are read; + * unmasked fields are ignored. + */ + @JsonProperty("sandbox") + private Sandbox sandbox; + + /** + * Field paths to update. Must be a non-empty subset of: - metadata.display_name - + * spec.compute.inactivity_timeout Any other path returns INVALID_PARAMETER_VALUE. + */ + @JsonIgnore + @QueryParam("update_mask") + private FieldMask updateMask; + + public UpdateSandboxRequest setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + public UpdateSandboxRequest setSandbox(Sandbox sandbox) { + this.sandbox = sandbox; + return this; + } + + public Sandbox getSandbox() { + return sandbox; + } + + public UpdateSandboxRequest setUpdateMask(FieldMask updateMask) { + this.updateMask = updateMask; + return this; + } + + public FieldMask getUpdateMask() { + return updateMask; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + UpdateSandboxRequest that = (UpdateSandboxRequest) o; + return Objects.equals(name, that.name) + && Objects.equals(sandbox, that.sandbox) + && Objects.equals(updateMask, that.updateMask); + } + + @Override + public int hashCode() { + return Objects.hash(name, sandbox, updateMask); + } + + @Override + public String toString() { + return new ToStringer(UpdateSandboxRequest.class) + .add("name", name) + .add("sandbox", sandbox) + .add("updateMask", updateMask) + .toString(); + } +}