From 32d8a7f4dabbba23af7e984bf52b1a878282cc4f Mon Sep 17 00:00:00 2001 From: Parth Bansal Date: Thu, 31 Jul 2025 09:25:06 +0000 Subject: [PATCH 1/2] Update SDK to the latest API definition --- .codegen/_openapi_sha | 2 +- .gitattributes | 1 + NEXT_CHANGELOG.md | 6 + .../com/databricks/sdk/AccountClient.java | 44 ++++---- .../com/databricks/sdk/WorkspaceClient.java | 36 +++--- .../databricks/sdk/core/DatabricksConfig.java | 8 +- .../ExternalLineageExternalMetadata.java | 2 + .../catalog/ExternalLineageModelVersion.java | 3 + .../catalog/ExternalLineageObject.java | 5 + .../service/catalog/ExternalLineagePath.java | 2 + .../service/catalog/ExternalLineageTable.java | 2 + .../sdk/service/catalog/SecurableKind.java | 1 - .../sdk/service/cleanrooms/CleanRoomsAPI.java | 51 ++++++++- .../service/dashboards/MessageErrorType.java | 1 + .../sdk/service/database/DatabaseAPI.java | 55 ++++++++- .../sdk/service/iam/ConsistencyToken.java | 2 + .../sdk/service/marketplace/FileParent.java | 3 + .../sdk/service/marketplace/ListingTag.java | 3 + ...AiGatewayGuardrailPiiBehaviorBehavior.java | 1 + .../ListProviderShareAssetsResponse.java | 17 ++- .../databricks/sdk/service/sharing/Share.java | 105 ++++++++++++++++++ .../sdk/service/sharing/SharesAPI.java | 4 + .../sdk/service/sql/QueryMetrics.java | 19 ++++ 23 files changed, 324 insertions(+), 49 deletions(-) create mode 100755 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/Share.java diff --git a/.codegen/_openapi_sha b/.codegen/_openapi_sha index f0accae79..4d77e7183 100644 --- a/.codegen/_openapi_sha +++ b/.codegen/_openapi_sha @@ -1 +1 @@ -486a1a65337270e639afa53cf688930cd3fdcc2b \ No newline at end of file +7de38b0552c78117c01aab884acd9b899a9f4d7f \ No newline at end of file diff --git a/.gitattributes b/.gitattributes index 64ac50383..4d1e7b244 100755 --- a/.gitattributes +++ b/.gitattributes @@ -2426,6 +2426,7 @@ databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/RetrieveTok databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/RetrieveTokenResponse.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/RotateRecipientToken.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SecurablePropertiesKvPairs.java linguist-generated=true +databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/Share.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/ShareInfo.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharePermissionsRequest.java linguist-generated=true databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/ShareToPrivilegeAssignment.java linguist-generated=true diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index 6bd12e9f3..c44426f18 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -11,3 +11,9 @@ ### Internal Changes ### API Changes +* Added `share` field for `com.databricks.sdk.service.sharing.ListProviderShareAssetsResponse`. +* Added `projectedRemainingWallclockTimeMs` field for `com.databricks.sdk.service.sql.QueryMetrics`. +* Added `MESSAGE_ATTACHMENT_TOO_LONG_ERROR` enum value for `com.databricks.sdk.service.dashboards.MessageErrorType`. +* Added `MASK` enum value for `com.databricks.sdk.service.serving.AiGatewayGuardrailPiiBehaviorBehavior`. +* [Breaking] Added waiter for `workspaceClient.cleanRooms().create()` method. +* [Breaking] Added waiter for `workspaceClient.database().createDatabaseInstance()` method. \ No newline at end of file diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/AccountClient.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/AccountClient.java index ce93c4612..9701ceb5c 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/AccountClient.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/AccountClient.java @@ -80,6 +80,7 @@ public class AccountClient { private AccountAccessControlAPI accessControlAPI; private BillableUsageAPI billableUsageAPI; private BudgetPolicyAPI budgetPolicyAPI; + private BudgetsAPI budgetsAPI; private CredentialsAPI credentialsAPI; private CustomAppIntegrationAPI customAppIntegrationAPI; private EncryptionKeysAPI encryptionKeysAPI; @@ -107,7 +108,6 @@ public class AccountClient { private WorkspaceAssignmentAPI workspaceAssignmentAPI; private WorkspaceNetworkConfigurationAPI workspaceNetworkConfigurationAPI; private WorkspacesAPI workspacesAPI; - private BudgetsAPI budgetsAPI; public AccountClient() { this(ConfigLoader.getDefault()); @@ -120,6 +120,7 @@ public AccountClient(DatabricksConfig config) { accessControlAPI = new AccountAccessControlAPI(apiClient); billableUsageAPI = new BillableUsageAPI(apiClient); budgetPolicyAPI = new BudgetPolicyAPI(apiClient); + budgetsAPI = new BudgetsAPI(apiClient); credentialsAPI = new CredentialsAPI(apiClient); customAppIntegrationAPI = new CustomAppIntegrationAPI(apiClient); encryptionKeysAPI = new EncryptionKeysAPI(apiClient); @@ -147,7 +148,6 @@ public AccountClient(DatabricksConfig config) { workspaceAssignmentAPI = new WorkspaceAssignmentAPI(apiClient); workspaceNetworkConfigurationAPI = new WorkspaceNetworkConfigurationAPI(apiClient); workspacesAPI = new WorkspacesAPI(apiClient); - budgetsAPI = new BudgetsAPI(apiClient); } /** Constructor for mocks */ @@ -178,6 +178,15 @@ public BudgetPolicyAPI budgetPolicy() { return budgetPolicyAPI; } + /** + * These APIs manage budget configurations for this account. Budgets enable you to monitor usage + * across your account. You can set up budgets to either track account-wide spending, or apply + * filters to track the spending of specific teams, projects, or workspaces. + */ + public BudgetsAPI budgets() { + return budgetsAPI; + } + /** * These APIs manage credential configurations for this workspace. Databricks needs access to a * cross-account service IAM role in your AWS account so that Databricks can deploy clusters in @@ -602,15 +611,6 @@ public WorkspacesAPI workspaces() { return workspacesAPI; } - /** - * These APIs manage budget configurations for this account. Budgets enable you to monitor usage - * across your account. You can set up budgets to either track account-wide spending, or apply - * filters to track the spending of specific teams, projects, or workspaces. - */ - public BudgetsAPI budgets() { - return budgetsAPI; - } - /** Replace the default AccountAccessControlService with a custom implementation. */ public AccountClient withAccessControlImpl(AccountAccessControlService accountAccessControl) { return this.withAccessControlAPI(new AccountAccessControlAPI(accountAccessControl)); @@ -644,6 +644,17 @@ public AccountClient withBudgetPolicyAPI(BudgetPolicyAPI budgetPolicy) { return this; } + /** Replace the default BudgetsService with a custom implementation. */ + public AccountClient withBudgetsImpl(BudgetsService budgets) { + return this.withBudgetsAPI(new BudgetsAPI(budgets)); + } + + /** Replace the default BudgetsAPI with a custom implementation. */ + public AccountClient withBudgetsAPI(BudgetsAPI budgets) { + this.budgetsAPI = budgets; + return this; + } + /** Replace the default CredentialsService with a custom implementation. */ public AccountClient withCredentialsImpl(CredentialsService credentials) { return this.withCredentialsAPI(new CredentialsAPI(credentials)); @@ -963,17 +974,6 @@ public AccountClient withWorkspacesAPI(WorkspacesAPI workspaces) { return this; } - /** Replace the default BudgetsService with a custom implementation. */ - public AccountClient withBudgetsImpl(BudgetsService budgets) { - return this.withBudgetsAPI(new BudgetsAPI(budgets)); - } - - /** Replace the default BudgetsAPI with a custom implementation. */ - public AccountClient withBudgetsAPI(BudgetsAPI budgets) { - this.budgetsAPI = budgets; - return this; - } - public ApiClient apiClient() { return apiClient; } 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 a7981cf23..2c214e723 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java @@ -271,6 +271,7 @@ public class WorkspaceClient { private ExternalMetadataAPI externalMetadataAPI; private FeatureStoreAPI featureStoreAPI; private FilesAPI filesAPI; + private ForecastingAPI forecastingAPI; private FunctionsAPI functionsAPI; private GenieAPI genieAPI; private GitCredentialsAPI gitCredentialsAPI; @@ -342,7 +343,6 @@ public class WorkspaceClient { private WorkspaceAPI workspaceAPI; private WorkspaceBindingsAPI workspaceBindingsAPI; private WorkspaceConfAPI workspaceConfAPI; - private ForecastingAPI forecastingAPI; public WorkspaceClient() { this(ConfigLoader.getDefault()); @@ -389,6 +389,7 @@ public WorkspaceClient(DatabricksConfig config) { externalMetadataAPI = new ExternalMetadataAPI(apiClient); featureStoreAPI = new FeatureStoreAPI(apiClient); filesAPI = new FilesAPI(apiClient); + forecastingAPI = new ForecastingAPI(apiClient); functionsAPI = new FunctionsAPI(apiClient); genieAPI = new GenieAPI(apiClient); gitCredentialsAPI = new GitCredentialsAPI(apiClient); @@ -461,7 +462,6 @@ public WorkspaceClient(DatabricksConfig config) { workspaceAPI = new WorkspaceAPI(apiClient); workspaceBindingsAPI = new WorkspaceBindingsAPI(apiClient); workspaceConfAPI = new WorkspaceConfAPI(apiClient); - forecastingAPI = new ForecastingAPI(apiClient); } /** Constructor for mocks */ @@ -893,6 +893,11 @@ public FilesAPI files() { return filesAPI; } + /** The Forecasting API allows you to create and get serverless forecasting experiments */ + public ForecastingAPI forecasting() { + return forecastingAPI; + } + /** * Functions implement User-Defined Functions (UDFs) in Unity Catalog. * @@ -1886,11 +1891,6 @@ public WorkspaceConfAPI workspaceConf() { return workspaceConfAPI; } - /** The Forecasting API allows you to create and get serverless forecasting experiments */ - public ForecastingAPI forecasting() { - return forecastingAPI; - } - /** Replace the default AccessControlService with a custom implementation. */ public WorkspaceClient withAccessControlImpl(AccessControlService accessControl) { return this.withAccessControlAPI(new AccessControlAPI(accessControl)); @@ -2324,6 +2324,17 @@ public WorkspaceClient withFilesAPI(FilesAPI files) { return this; } + /** Replace the default ForecastingService with a custom implementation. */ + public WorkspaceClient withForecastingImpl(ForecastingService forecasting) { + return this.withForecastingAPI(new ForecastingAPI(forecasting)); + } + + /** Replace the default ForecastingAPI with a custom implementation. */ + public WorkspaceClient withForecastingAPI(ForecastingAPI forecasting) { + this.forecastingAPI = forecasting; + return this; + } + /** Replace the default FunctionsService with a custom implementation. */ public WorkspaceClient withFunctionsImpl(FunctionsService functions) { return this.withFunctionsAPI(new FunctionsAPI(functions)); @@ -3147,17 +3158,6 @@ public WorkspaceClient withWorkspaceConfAPI(WorkspaceConfAPI workspaceConf) { return this; } - /** Replace the default ForecastingService with a custom implementation. */ - public WorkspaceClient withForecastingImpl(ForecastingService forecasting) { - return this.withForecastingAPI(new ForecastingAPI(forecasting)); - } - - /** Replace the default ForecastingAPI with a custom implementation. */ - public WorkspaceClient withForecastingAPI(ForecastingAPI forecasting) { - this.forecastingAPI = forecasting; - return this; - } - public ApiClient apiClient() { return apiClient; } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java index 0bc0b868a..acef279e2 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java @@ -414,13 +414,17 @@ public DatabricksConfig setAzureUseMsi(boolean azureUseMsi) { return this; } - /** @deprecated Use {@link #getAzureUseMsi()} instead. */ + /** + * @deprecated Use {@link #getAzureUseMsi()} instead. + */ @Deprecated() public boolean getAzureUseMSI() { return azureUseMsi; } - /** @deprecated Use {@link #getAzureUseMsi()} instead. */ + /** + * @deprecated Use {@link #getAzureUseMsi()} instead. + */ @Deprecated public DatabricksConfig setAzureUseMSI(boolean azureUseMsi) { this.azureUseMsi = azureUseMsi; diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageExternalMetadata.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageExternalMetadata.java index 9fe27b0fe..5aea7ac91 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageExternalMetadata.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageExternalMetadata.java @@ -3,6 +3,7 @@ package com.databricks.sdk.service.catalog; import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; import com.databricks.sdk.support.ToStringer; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Objects; @@ -11,6 +12,7 @@ public class ExternalLineageExternalMetadata { /** */ @JsonProperty("name") + @QueryParam("name") private String name; public ExternalLineageExternalMetadata setName(String name) { diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageModelVersion.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageModelVersion.java index 3809dec2b..ae60fd1df 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageModelVersion.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageModelVersion.java @@ -3,6 +3,7 @@ package com.databricks.sdk.service.catalog; import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; import com.databricks.sdk.support.ToStringer; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Objects; @@ -11,10 +12,12 @@ public class ExternalLineageModelVersion { /** */ @JsonProperty("name") + @QueryParam("name") private String name; /** */ @JsonProperty("version") + @QueryParam("version") private String version; public ExternalLineageModelVersion setName(String name) { diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageObject.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageObject.java index 209a7b529..056633d4d 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageObject.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageObject.java @@ -3,6 +3,7 @@ package com.databricks.sdk.service.catalog; import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; import com.databricks.sdk.support.ToStringer; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Objects; @@ -11,18 +12,22 @@ public class ExternalLineageObject { /** */ @JsonProperty("external_metadata") + @QueryParam("external_metadata") private ExternalLineageExternalMetadata externalMetadata; /** */ @JsonProperty("model_version") + @QueryParam("model_version") private ExternalLineageModelVersion modelVersion; /** */ @JsonProperty("path") + @QueryParam("path") private ExternalLineagePath path; /** */ @JsonProperty("table") + @QueryParam("table") private ExternalLineageTable table; public ExternalLineageObject setExternalMetadata( diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineagePath.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineagePath.java index cdeb11b0d..36638cd52 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineagePath.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineagePath.java @@ -3,6 +3,7 @@ package com.databricks.sdk.service.catalog; import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; import com.databricks.sdk.support.ToStringer; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Objects; @@ -11,6 +12,7 @@ public class ExternalLineagePath { /** */ @JsonProperty("url") + @QueryParam("url") private String url; public ExternalLineagePath setUrl(String url) { diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageTable.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageTable.java index 329ca5930..9c10e00fc 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageTable.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/ExternalLineageTable.java @@ -3,6 +3,7 @@ package com.databricks.sdk.service.catalog; import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; import com.databricks.sdk.support.ToStringer; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Objects; @@ -11,6 +12,7 @@ public class ExternalLineageTable { /** */ @JsonProperty("name") + @QueryParam("name") private String name; public ExternalLineageTable setName(String name) { diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableKind.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableKind.java index c51b6319b..6e55e9bdb 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableKind.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/SecurableKind.java @@ -4,7 +4,6 @@ import com.databricks.sdk.support.Generated; -/** Latest kind: CONNECTION_SQLSERVER_OAUTH_M2M = 254; Next id:255 */ @Generated public enum SecurableKind { TABLE_DB_STORAGE, diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomsAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomsAPI.java index d8a57ab9c..9cdea0fdb 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomsAPI.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/cleanrooms/CleanRoomsAPI.java @@ -2,8 +2,14 @@ package com.databricks.sdk.service.cleanrooms; import com.databricks.sdk.core.ApiClient; +import com.databricks.sdk.core.DatabricksException; import com.databricks.sdk.support.Generated; import com.databricks.sdk.support.Paginator; +import com.databricks.sdk.support.Wait; +import java.time.Duration; +import java.util.Arrays; +import java.util.concurrent.TimeoutException; +import java.util.function.Consumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,6 +34,44 @@ public CleanRoomsAPI(CleanRoomsService mock) { impl = mock; } + public CleanRoom waitGetCleanRoomActive(String name) throws TimeoutException { + return waitGetCleanRoomActive(name, Duration.ofMinutes(20), null); + } + + public CleanRoom waitGetCleanRoomActive( + String name, Duration timeout, Consumer callback) throws TimeoutException { + long deadline = System.currentTimeMillis() + timeout.toMillis(); + java.util.List targetStates = Arrays.asList(CleanRoomStatusEnum.ACTIVE); + String statusMessage = "polling..."; + int attempt = 1; + while (System.currentTimeMillis() < deadline) { + CleanRoom poll = get(new GetCleanRoomRequest().setName(name)); + CleanRoomStatusEnum status = poll.getStatus(); + statusMessage = String.format("current status: %s", status); + if (targetStates.contains(status)) { + return poll; + } + if (callback != null) { + callback.accept(poll); + } + String prefix = String.format("name=%s", name); + int sleep = attempt; + if (sleep > 10) { + // sleep 10s max per attempt + sleep = 10; + } + LOG.info("{}: ({}) {} (sleeping ~{}s)", prefix, status, statusMessage, sleep); + try { + Thread.sleep((long) (sleep * 1000L + Math.random() * 1000)); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new DatabricksException("Current thread was interrupted", e); + } + attempt++; + } + throw new TimeoutException(String.format("timed out after %s: %s", timeout, statusMessage)); + } + /** * Create a new clean room with the specified collaborators. This method is asynchronous; the * returned name field inside the clean_room field can be used to poll the clean room status, @@ -38,8 +82,11 @@ public CleanRoomsAPI(CleanRoomsService mock) { *

The caller must be a metastore admin or have the **CREATE_CLEAN_ROOM** privilege on the * metastore. */ - public CleanRoom create(CreateCleanRoomRequest request) { - return impl.create(request); + public Wait create(CreateCleanRoomRequest request) { + CleanRoom response = impl.create(request); + return new Wait<>( + (timeout, callback) -> waitGetCleanRoomActive(response.getName(), timeout, callback), + response); } /** Create the output catalog of the clean room. */ diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/MessageErrorType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/MessageErrorType.java index 5d8ea0584..6dcaf6248 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/MessageErrorType.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/dashboards/MessageErrorType.java @@ -39,6 +39,7 @@ public enum MessageErrorType { INVALID_SQL_UNKNOWN_TABLE_EXCEPTION, INVALID_TABLE_IDENTIFIER_EXCEPTION, LOCAL_CONTEXT_EXCEEDED_EXCEPTION, + MESSAGE_ATTACHMENT_TOO_LONG_ERROR, MESSAGE_CANCELLED_WHILE_EXECUTING_EXCEPTION, MESSAGE_DELETED_WHILE_EXECUTING_EXCEPTION, MESSAGE_UPDATED_WHILE_EXECUTING_EXCEPTION, diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseAPI.java index 889c01e75..196f37bc6 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseAPI.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/database/DatabaseAPI.java @@ -2,8 +2,14 @@ package com.databricks.sdk.service.database; import com.databricks.sdk.core.ApiClient; +import com.databricks.sdk.core.DatabricksException; import com.databricks.sdk.support.Generated; import com.databricks.sdk.support.Paginator; +import com.databricks.sdk.support.Wait; +import java.time.Duration; +import java.util.Arrays; +import java.util.concurrent.TimeoutException; +import java.util.function.Consumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,14 +30,59 @@ public DatabaseAPI(DatabaseService mock) { impl = mock; } + public DatabaseInstance waitGetDatabaseInstanceDatabaseAvailable(String name) + throws TimeoutException { + return waitGetDatabaseInstanceDatabaseAvailable(name, Duration.ofMinutes(20), null); + } + + public DatabaseInstance waitGetDatabaseInstanceDatabaseAvailable( + String name, Duration timeout, Consumer callback) throws TimeoutException { + long deadline = System.currentTimeMillis() + timeout.toMillis(); + java.util.List targetStates = + Arrays.asList(DatabaseInstanceState.AVAILABLE); + String statusMessage = "polling..."; + int attempt = 1; + while (System.currentTimeMillis() < deadline) { + DatabaseInstance poll = getDatabaseInstance(new GetDatabaseInstanceRequest().setName(name)); + DatabaseInstanceState status = poll.getState(); + statusMessage = String.format("current status: %s", status); + if (targetStates.contains(status)) { + return poll; + } + if (callback != null) { + callback.accept(poll); + } + String prefix = String.format("name=%s", name); + int sleep = attempt; + if (sleep > 10) { + // sleep 10s max per attempt + sleep = 10; + } + LOG.info("{}: ({}) {} (sleeping ~{}s)", prefix, status, statusMessage, sleep); + try { + Thread.sleep((long) (sleep * 1000L + Math.random() * 1000)); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new DatabricksException("Current thread was interrupted", e); + } + attempt++; + } + throw new TimeoutException(String.format("timed out after %s: %s", timeout, statusMessage)); + } + /** Create a Database Catalog. */ public DatabaseCatalog createDatabaseCatalog(CreateDatabaseCatalogRequest request) { return impl.createDatabaseCatalog(request); } /** Create a Database Instance. */ - public DatabaseInstance createDatabaseInstance(CreateDatabaseInstanceRequest request) { - return impl.createDatabaseInstance(request); + public Wait createDatabaseInstance( + CreateDatabaseInstanceRequest request) { + DatabaseInstance response = impl.createDatabaseInstance(request); + return new Wait<>( + (timeout, callback) -> + waitGetDatabaseInstanceDatabaseAvailable(response.getName(), timeout, callback), + response); } /** Create a role for a Database Instance. */ diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ConsistencyToken.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ConsistencyToken.java index 020aaee20..d1693ee08 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ConsistencyToken.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/iam/ConsistencyToken.java @@ -3,6 +3,7 @@ package com.databricks.sdk.service.iam; import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; import com.databricks.sdk.support.ToStringer; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Objects; @@ -11,6 +12,7 @@ public class ConsistencyToken { /** */ @JsonProperty("value") + @QueryParam("value") private String value; public ConsistencyToken setValue(String value) { diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/marketplace/FileParent.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/marketplace/FileParent.java index e2e2ddec5..d5c91c318 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/marketplace/FileParent.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/marketplace/FileParent.java @@ -3,6 +3,7 @@ package com.databricks.sdk.service.marketplace; import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; import com.databricks.sdk.support.ToStringer; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Objects; @@ -11,10 +12,12 @@ public class FileParent { /** */ @JsonProperty("file_parent_type") + @QueryParam("file_parent_type") private FileParentType fileParentType; /** TODO make the following fields required */ @JsonProperty("parent_id") + @QueryParam("parent_id") private String parentId; public FileParent setFileParentType(FileParentType fileParentType) { diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/marketplace/ListingTag.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/marketplace/ListingTag.java index c1bfefb78..2092f691c 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/marketplace/ListingTag.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/marketplace/ListingTag.java @@ -3,6 +3,7 @@ package com.databricks.sdk.service.marketplace; import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.QueryParam; import com.databricks.sdk.support.ToStringer; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Collection; @@ -12,10 +13,12 @@ public class ListingTag { /** Tag name (enum) */ @JsonProperty("tag_name") + @QueryParam("tag_name") private ListingTagType tagName; /** String representation of the tag value. Values should be string literals (no complex types) */ @JsonProperty("tag_values") + @QueryParam("tag_values") private Collection tagValues; public ListingTag setTagName(ListingTagType tagName) { diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/AiGatewayGuardrailPiiBehaviorBehavior.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/AiGatewayGuardrailPiiBehaviorBehavior.java index 36ad1bcfd..12fae4c04 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/AiGatewayGuardrailPiiBehaviorBehavior.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/serving/AiGatewayGuardrailPiiBehaviorBehavior.java @@ -7,5 +7,6 @@ @Generated public enum AiGatewayGuardrailPiiBehaviorBehavior { BLOCK, + MASK, NONE, } diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/ListProviderShareAssetsResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/ListProviderShareAssetsResponse.java index aca64ba2d..2c13866b5 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/ListProviderShareAssetsResponse.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/ListProviderShareAssetsResponse.java @@ -19,6 +19,10 @@ public class ListProviderShareAssetsResponse { @JsonProperty("notebooks") private Collection notebooks; + /** The metadata of the share. */ + @JsonProperty("share") + private Share share; + /** The list of tables in the share. */ @JsonProperty("tables") private Collection tables; @@ -45,6 +49,15 @@ public Collection getNotebooks() { return notebooks; } + public ListProviderShareAssetsResponse setShare(Share share) { + this.share = share; + return this; + } + + public Share getShare() { + return share; + } + public ListProviderShareAssetsResponse setTables(Collection
tables) { this.tables = tables; return this; @@ -70,13 +83,14 @@ public boolean equals(Object o) { ListProviderShareAssetsResponse that = (ListProviderShareAssetsResponse) o; return Objects.equals(functions, that.functions) && Objects.equals(notebooks, that.notebooks) + && Objects.equals(share, that.share) && Objects.equals(tables, that.tables) && Objects.equals(volumes, that.volumes); } @Override public int hashCode() { - return Objects.hash(functions, notebooks, tables, volumes); + return Objects.hash(functions, notebooks, share, tables, volumes); } @Override @@ -84,6 +98,7 @@ public String toString() { return new ToStringer(ListProviderShareAssetsResponse.class) .add("functions", functions) .add("notebooks", notebooks) + .add("share", share) .add("tables", tables) .add("volumes", volumes) .toString(); diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/Share.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/Share.java new file mode 100755 index 000000000..517e5634a --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/Share.java @@ -0,0 +1,105 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.sharing; + +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; + +@Generated +public class Share { + /** The comment of the share. */ + @JsonProperty("comment") + private String comment; + + /** The display name of the share. If defined, it will be shown in the UI. */ + @JsonProperty("display_name") + private String displayName; + + /** */ + @JsonProperty("id") + private String id; + + /** */ + @JsonProperty("name") + private String name; + + /** The tags of the share. */ + @JsonProperty("tags") + private Collection tags; + + public Share setComment(String comment) { + this.comment = comment; + return this; + } + + public String getComment() { + return comment; + } + + public Share setDisplayName(String displayName) { + this.displayName = displayName; + return this; + } + + public String getDisplayName() { + return displayName; + } + + public Share setId(String id) { + this.id = id; + return this; + } + + public String getId() { + return id; + } + + public Share setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + public Share setTags(Collection tags) { + this.tags = tags; + return this; + } + + public Collection getTags() { + return tags; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Share that = (Share) o; + return Objects.equals(comment, that.comment) + && Objects.equals(displayName, that.displayName) + && Objects.equals(id, that.id) + && Objects.equals(name, that.name) + && Objects.equals(tags, that.tags); + } + + @Override + public int hashCode() { + return Objects.hash(comment, displayName, id, name, tags); + } + + @Override + public String toString() { + return new ToStringer(Share.class) + .add("comment", comment) + .add("displayName", displayName) + .add("id", id) + .add("name", name) + .add("tags", tags) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesAPI.java index a76783753..15d363eb0 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesAPI.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/SharesAPI.java @@ -58,6 +58,10 @@ public ShareInfo get(GetShareRequest request) { return impl.get(request); } + public Iterable list(String name) { + return list(new ListSharesRequest().setName(name)); + } + /** * Gets an array of data object shares from the metastore. The caller must be a metastore admin or * the owner of the share. There is no guarantee of a specific ordering of the elements in the diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/QueryMetrics.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/QueryMetrics.java index c44bc7f0d..af3a6275a 100755 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/QueryMetrics.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sql/QueryMetrics.java @@ -45,6 +45,13 @@ public class QueryMetrics { @JsonProperty("projected_remaining_task_total_time_ms") private Long projectedRemainingTaskTotalTimeMs; + /** + * projected lower bound on remaining total task time based on + * projected_remaining_task_total_time_ms / maximum concurrency + */ + @JsonProperty("projected_remaining_wallclock_time_ms") + private Long projectedRemainingWallclockTimeMs; + /** * Timestamp of when the query was enqueued waiting for a cluster to be provisioned for the * warehouse. This field is optional and will not appear if the query skipped the provisioning @@ -200,6 +207,15 @@ public Long getProjectedRemainingTaskTotalTimeMs() { return projectedRemainingTaskTotalTimeMs; } + public QueryMetrics setProjectedRemainingWallclockTimeMs(Long projectedRemainingWallclockTimeMs) { + this.projectedRemainingWallclockTimeMs = projectedRemainingWallclockTimeMs; + return this; + } + + public Long getProjectedRemainingWallclockTimeMs() { + return projectedRemainingWallclockTimeMs; + } + public QueryMetrics setProvisioningQueueStartTimestamp(Long provisioningQueueStartTimestamp) { this.provisioningQueueStartTimestamp = provisioningQueueStartTimestamp; return this; @@ -400,6 +416,7 @@ public boolean equals(Object o) { && Objects.equals(overloadingQueueStartTimestamp, that.overloadingQueueStartTimestamp) && Objects.equals(photonTotalTimeMs, that.photonTotalTimeMs) && Objects.equals(projectedRemainingTaskTotalTimeMs, that.projectedRemainingTaskTotalTimeMs) + && Objects.equals(projectedRemainingWallclockTimeMs, that.projectedRemainingWallclockTimeMs) && Objects.equals(provisioningQueueStartTimestamp, that.provisioningQueueStartTimestamp) && Objects.equals(prunedBytes, that.prunedBytes) && Objects.equals(prunedFilesCount, that.prunedFilesCount) @@ -432,6 +449,7 @@ public int hashCode() { overloadingQueueStartTimestamp, photonTotalTimeMs, projectedRemainingTaskTotalTimeMs, + projectedRemainingWallclockTimeMs, provisioningQueueStartTimestamp, prunedBytes, prunedFilesCount, @@ -464,6 +482,7 @@ public String toString() { .add("overloadingQueueStartTimestamp", overloadingQueueStartTimestamp) .add("photonTotalTimeMs", photonTotalTimeMs) .add("projectedRemainingTaskTotalTimeMs", projectedRemainingTaskTotalTimeMs) + .add("projectedRemainingWallclockTimeMs", projectedRemainingWallclockTimeMs) .add("provisioningQueueStartTimestamp", provisioningQueueStartTimestamp) .add("prunedBytes", prunedBytes) .add("prunedFilesCount", prunedFilesCount) From d99d938e79bb42d557665605b6653890693f05b3 Mon Sep 17 00:00:00 2001 From: Parth Bansal Date: Thu, 31 Jul 2025 09:29:05 +0000 Subject: [PATCH 2/2] update --- .../java/com/databricks/sdk/core/DatabricksConfig.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java index acef279e2..0bc0b868a 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java @@ -414,17 +414,13 @@ public DatabricksConfig setAzureUseMsi(boolean azureUseMsi) { return this; } - /** - * @deprecated Use {@link #getAzureUseMsi()} instead. - */ + /** @deprecated Use {@link #getAzureUseMsi()} instead. */ @Deprecated() public boolean getAzureUseMSI() { return azureUseMsi; } - /** - * @deprecated Use {@link #getAzureUseMsi()} instead. - */ + /** @deprecated Use {@link #getAzureUseMsi()} instead. */ @Deprecated public DatabricksConfig setAzureUseMSI(boolean azureUseMsi) { this.azureUseMsi = azureUseMsi;