From c5fd38719f57e74b95e66d3ef558cee6fc679065 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, 25 Dec 2025 10:07:28 +0000 Subject: [PATCH] Update SDK to dd5d5a92df7b95ce21ee1c3ac2564c7b29e4b792 --- .codegen/_openapi_sha | 2 +- .gitattributes | 13 ++ NEXT_CHANGELOG.md | 5 +- .../catalog/AccessRequestDestinations.java | 25 ++- .../sdk/service/catalog/SecurableKind.java | 2 +- .../service/postgres/CreateRoleOperation.java | 161 ++++++++++++++++++ .../service/postgres/CreateRoleRequest.java | 82 +++++++++ .../service/postgres/DeleteRoleOperation.java | 161 ++++++++++++++++++ .../service/postgres/DeleteRoleRequest.java | 71 ++++++++ .../sdk/service/postgres/GetRoleRequest.java | 44 +++++ .../service/postgres/ListRolesRequest.java | 79 +++++++++ .../service/postgres/ListRolesResponse.java | 59 +++++++ .../sdk/service/postgres/PostgresAPI.java | 44 +++++ .../sdk/service/postgres/PostgresImpl.java | 57 +++++++ .../sdk/service/postgres/PostgresService.java | 12 ++ .../databricks/sdk/service/postgres/Role.java | 123 +++++++++++++ .../sdk/service/postgres/RoleAuthMethod.java | 13 ++ .../service/postgres/RoleIdentityType.java | 16 ++ .../postgres/RoleOperationMetadata.java | 28 +++ .../sdk/service/postgres/RoleRoleSpec.java | 66 +++++++ .../sdk/service/postgres/RoleRoleStatus.java | 59 +++++++ .../databricks/sdk/service/sharing/Table.java | 37 +++- 22 files changed, 1153 insertions(+), 6 deletions(-) mode change 100755 => 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AccessRequestDestinations.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateRoleOperation.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateRoleRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteRoleOperation.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteRoleRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/GetRoleRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListRolesRequest.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListRolesResponse.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/Role.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleAuthMethod.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleIdentityType.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleOperationMetadata.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleRoleSpec.java create mode 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleRoleStatus.java mode change 100755 => 100644 databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/Table.java diff --git a/.codegen/_openapi_sha b/.codegen/_openapi_sha index d4d96fe05..55aaa03be 100644 --- a/.codegen/_openapi_sha +++ b/.codegen/_openapi_sha @@ -1 +1 @@ -62870287fa7d3f2ba570333dd2645e86cb8e1a82 \ No newline at end of file +dd5d5a92df7b95ce21ee1c3ac2564c7b29e4b792 \ No newline at end of file diff --git a/.gitattributes b/.gitattributes index 934e4720c..5aa4da763 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2082,10 +2082,14 @@ /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateEndpointRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateProjectOperation.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateProjectRequest.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateRoleOperation.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateRoleRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DatabricksServiceExceptionWithDetailsProto.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteBranchRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteEndpointRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteProjectRequest.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteRoleOperation.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteRoleRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/Endpoint.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/EndpointOperationMetadata.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/EndpointPoolerMode.java linguist-generated=true @@ -2099,12 +2103,15 @@ /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/GetEndpointRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/GetOperationRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/GetProjectRequest.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/GetRoleRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListBranchesRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListBranchesResponse.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListEndpointsRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListEndpointsResponse.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListProjectsRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListProjectsResponse.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListRolesRequest.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListRolesResponse.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/Operation.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresAPI.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresImpl.java linguist-generated=true @@ -2115,6 +2122,12 @@ /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ProjectSettings.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ProjectSpec.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ProjectStatus.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/Role.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleAuthMethod.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleIdentityType.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleOperationMetadata.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleRoleSpec.java linguist-generated=true +/home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleRoleStatus.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/UpdateBranchOperation.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/UpdateBranchRequest.java linguist-generated=true /home/ubuntu/workspace/databricks-sdk-java/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/UpdateEndpointOperation.java linguist-generated=true diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index ce52a0f48..079caf11b 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -31,4 +31,7 @@ * Add `TABLE`, `FUNCTION` and `CONNECTION` enum values for `com.databricks.sdk.service.apps.AppResourceUcSecurableUcSecurableType`. * [Breaking] Remove `currentState`, `default`, `effectiveDefault`, `effectiveIsProtected`, `effectiveSourceBranch`, `effectiveSourceBranchLsn`, `effectiveSourceBranchTime`, `isProtected`, `logicalSizeBytes`, `pendingState`, `sourceBranch`, `sourceBranchLsn`, `sourceBranchTime` and `stateChangeTime` fields for `com.databricks.sdk.service.postgres.Branch`. * [Breaking] Remove `autoscalingLimitMaxCu`, `autoscalingLimitMinCu`, `currentState`, `disabled`, `effectiveAutoscalingLimitMaxCu`, `effectiveAutoscalingLimitMinCu`, `effectiveDisabled`, `effectivePoolerMode`, `effectiveSettings`, `effectiveSuspendTimeoutDuration`, `endpointType`, `host`, `lastActiveTime`, `pendingState`, `poolerMode`, `settings`, `startTime`, `suspendTime` and `suspendTimeoutDuration` fields for `com.databricks.sdk.service.postgres.Endpoint`. -* [Breaking] Remove `branchLogicalSizeLimitBytes`, `computeLastActiveTime`, `defaultEndpointSettings`, `displayName`, `effectiveDefaultEndpointSettings`, `effectiveDisplayName`, `effectiveHistoryRetentionDuration`, `effectivePgVersion`, `effectiveSettings`, `historyRetentionDuration`, `pgVersion`, `settings` and `syntheticStorageSizeBytes` fields for `com.databricks.sdk.service.postgres.Project`. \ No newline at end of file +* [Breaking] Remove `branchLogicalSizeLimitBytes`, `computeLastActiveTime`, `defaultEndpointSettings`, `displayName`, `effectiveDefaultEndpointSettings`, `effectiveDisplayName`, `effectiveHistoryRetentionDuration`, `effectivePgVersion`, `effectiveSettings`, `historyRetentionDuration`, `pgVersion`, `settings` and `syntheticStorageSizeBytes` fields for `com.databricks.sdk.service.postgres.Project`. +* Add `createRole()`, `deleteRole()`, `getRole()` and `listRoles()` methods for `workspaceClient.postgres()` service. +* Add `destinationSourceSecurable` field for `com.databricks.sdk.service.catalog.AccessRequestDestinations`. +* Add `accessModes` and `storageLocation` fields for `com.databricks.sdk.service.sharing.Table`. \ No newline at end of file diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AccessRequestDestinations.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AccessRequestDestinations.java old mode 100755 new mode 100644 index 79eca7689..f018c8b78 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AccessRequestDestinations.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/catalog/AccessRequestDestinations.java @@ -17,11 +17,19 @@ public class AccessRequestDestinations { @JsonProperty("are_any_destinations_hidden") private Boolean areAnyDestinationsHidden; + /** + * The source securable from which the destinations are inherited. Either the same value as + * securable (if destination is set directly on the securable) or the nearest parent securable + * with destinations set. + */ + @JsonProperty("destination_source_securable") + private Securable destinationSourceSecurable; + /** The access request destinations for the securable. */ @JsonProperty("destinations") private Collection destinations; - /** The securable for which the access request destinations are being retrieved. */ + /** The securable for which the access request destinations are being modified or read. */ @JsonProperty("securable") private Securable securable; @@ -34,6 +42,16 @@ public Boolean getAreAnyDestinationsHidden() { return areAnyDestinationsHidden; } + public AccessRequestDestinations setDestinationSourceSecurable( + Securable destinationSourceSecurable) { + this.destinationSourceSecurable = destinationSourceSecurable; + return this; + } + + public Securable getDestinationSourceSecurable() { + return destinationSourceSecurable; + } + public AccessRequestDestinations setDestinations( Collection destinations) { this.destinations = destinations; @@ -59,19 +77,22 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) return false; AccessRequestDestinations that = (AccessRequestDestinations) o; return Objects.equals(areAnyDestinationsHidden, that.areAnyDestinationsHidden) + && Objects.equals(destinationSourceSecurable, that.destinationSourceSecurable) && Objects.equals(destinations, that.destinations) && Objects.equals(securable, that.securable); } @Override public int hashCode() { - return Objects.hash(areAnyDestinationsHidden, destinations, securable); + return Objects.hash( + areAnyDestinationsHidden, destinationSourceSecurable, destinations, securable); } @Override public String toString() { return new ToStringer(AccessRequestDestinations.class) .add("areAnyDestinationsHidden", areAnyDestinationsHidden) + .add("destinationSourceSecurable", destinationSourceSecurable) .add("destinations", destinations) .add("securable", securable) .toString(); 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 537945deb..994a1ebcd 100644 --- 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,7 @@ import com.databricks.sdk.support.Generated; -/** Latest kind: CONNECTION_GOOGLE_ADS_OAUTH_U2M_WITH_DT = 284; Next id:285 */ +/** Latest kind: CONNECTION_TIKTOK_ADS_U2M = 285; Next id: 286 */ @Generated public enum SecurableKind { TABLE_DB_STORAGE, diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateRoleOperation.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateRoleOperation.java new file mode 100644 index 000000000..fb229fe50 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateRoleOperation.java @@ -0,0 +1,161 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. +package com.databricks.sdk.service.postgres; + +import com.databricks.sdk.core.DatabricksException; +import com.databricks.sdk.core.utils.SerDeUtils; +import com.databricks.sdk.service.common.lro.LroOptions; +import com.databricks.sdk.support.Generated; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.time.Duration; +import java.util.Optional; +import java.util.concurrent.TimeoutException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Wrapper for interacting with a long-running createRole operation. Provides methods to wait for + * completion, check status, cancel, and access metadata. + */ +@Generated +public class CreateRoleOperation { + private static final Logger LOG = LoggerFactory.getLogger(CreateRoleOperation.class); + + private final PostgresService impl; + private Operation operation; + private final ObjectMapper objectMapper; + + public CreateRoleOperation(PostgresService impl, Operation operation) { + this.impl = impl; + this.operation = operation; + this.objectMapper = SerDeUtils.createMapper(); + } + + /** + * Wait for the operation to complete and return the resulting Role. Waits indefinitely if no + * timeout is specified. + * + * @return the created Role + * @throws TimeoutException if the operation doesn't complete within the timeout + * @throws DatabricksException if the operation fails + */ + public Role waitForCompletion() throws TimeoutException { + return waitForCompletion(Optional.empty()); + } + + /** + * Wait for the operation to complete and return the resulting Role. + * + * @param options the options for configuring the wait behavior, can be empty for defaults + * @return the created Role + * @throws TimeoutException if the operation doesn't complete within the timeout + * @throws DatabricksException if the operation fails + */ + public Role waitForCompletion(Optional options) throws TimeoutException { + Optional timeout = options.flatMap(LroOptions::getTimeout); + long deadline = + timeout.isPresent() + ? System.currentTimeMillis() + timeout.get().toMillis() + : Long.MAX_VALUE; + String statusMessage = "polling operation..."; + int attempt = 1; + + while (System.currentTimeMillis() < deadline) { + // Refresh the operation state + refreshOperation(); + + if (operation.getDone() != null && operation.getDone()) { + // Operation completed, check for success or failure + if (operation.getError() != null) { + String errorMsg = "unknown error"; + if (operation.getError().getMessage() != null + && !operation.getError().getMessage().isEmpty()) { + errorMsg = operation.getError().getMessage(); + } + + if (operation.getError().getErrorCode() != null) { + errorMsg = String.format("[%s] %s", operation.getError().getErrorCode(), errorMsg); + } + + throw new DatabricksException("Operation failed: " + errorMsg); + } + + // Operation completed successfully, unmarshal response + if (operation.getResponse() == null) { + throw new DatabricksException("Operation completed but no response available"); + } + + try { + JsonNode responseJson = objectMapper.valueToTree(operation.getResponse()); + return objectMapper.treeToValue(responseJson, Role.class); + } catch (JsonProcessingException e) { + throw new DatabricksException("Failed to unmarshal role response: " + e.getMessage(), e); + } + } + + // Operation still in progress, wait before polling again + String prefix = String.format("operation=%s", operation.getName()); + int sleep = Math.min(attempt, 10); // sleep 10s max per attempt + LOG.info("{}: operation in progress (sleeping ~{}s)", prefix, 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++; + } + + String timeoutMessage = + timeout.isPresent() + ? String.format("Operation timed out after %s: %s", timeout.get(), statusMessage) + : String.format("Operation timed out: %s", statusMessage); + throw new TimeoutException(timeoutMessage); + } + + /** + * Get the operation name. + * + * @return the operation name + */ + public String getName() { + return operation.getName(); + } + + /** + * Get the operation metadata. + * + * @return the operation metadata, or null if not available + * @throws DatabricksException if the metadata cannot be deserialized + */ + public RoleOperationMetadata getMetadata() { + if (operation.getMetadata() == null) { + return null; + } + + try { + JsonNode metadataJson = objectMapper.valueToTree(operation.getMetadata()); + return objectMapper.treeToValue(metadataJson, RoleOperationMetadata.class); + } catch (JsonProcessingException e) { + throw new DatabricksException("Failed to unmarshal operation metadata: " + e.getMessage(), e); + } + } + + /** + * Check if the operation is done. This method refreshes the operation state before checking. + * + * @return true if the operation is complete, false otherwise + * @throws DatabricksException if the status check fails + */ + public boolean isDone() { + refreshOperation(); + return operation.getDone() != null && operation.getDone(); + } + + /** Refresh the operation state by polling the server. */ + private void refreshOperation() { + operation = impl.getOperation(new GetOperationRequest().setName(operation.getName())); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateRoleRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateRoleRequest.java new file mode 100644 index 000000000..de2f68cf9 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/CreateRoleRequest.java @@ -0,0 +1,82 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.postgres; + +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 CreateRoleRequest { + /** The Branch where this Role is created. Format: projects/{project_id}/branches/{branch_id} */ + @JsonIgnore private String parent; + + /** The desired specification of a Role. */ + @JsonProperty("role") + private Role role; + + /** + * The ID to use for the Role, which will become the final component of the branch's resource + * name. This ID becomes the role in postgres. + * + *

This value should be 4-63 characters, and only use characters available in DNS names, as + * defined by RFC-1123 + */ + @JsonIgnore + @QueryParam("role_id") + private String roleId; + + public CreateRoleRequest setParent(String parent) { + this.parent = parent; + return this; + } + + public String getParent() { + return parent; + } + + public CreateRoleRequest setRole(Role role) { + this.role = role; + return this; + } + + public Role getRole() { + return role; + } + + public CreateRoleRequest setRoleId(String roleId) { + this.roleId = roleId; + return this; + } + + public String getRoleId() { + return roleId; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CreateRoleRequest that = (CreateRoleRequest) o; + return Objects.equals(parent, that.parent) + && Objects.equals(role, that.role) + && Objects.equals(roleId, that.roleId); + } + + @Override + public int hashCode() { + return Objects.hash(parent, role, roleId); + } + + @Override + public String toString() { + return new ToStringer(CreateRoleRequest.class) + .add("parent", parent) + .add("role", role) + .add("roleId", roleId) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteRoleOperation.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteRoleOperation.java new file mode 100644 index 000000000..fd5c204e6 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteRoleOperation.java @@ -0,0 +1,161 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. +package com.databricks.sdk.service.postgres; + +import com.databricks.sdk.core.DatabricksException; +import com.databricks.sdk.core.utils.SerDeUtils; +import com.databricks.sdk.service.common.lro.LroOptions; +import com.databricks.sdk.support.Generated; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.time.Duration; +import java.util.Optional; +import java.util.concurrent.TimeoutException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Wrapper for interacting with a long-running deleteRole operation. Provides methods to wait for + * completion, check status, cancel, and access metadata. + */ +@Generated +public class DeleteRoleOperation { + private static final Logger LOG = LoggerFactory.getLogger(DeleteRoleOperation.class); + + private final PostgresService impl; + private Operation operation; + private final ObjectMapper objectMapper; + + public DeleteRoleOperation(PostgresService impl, Operation operation) { + this.impl = impl; + this.operation = operation; + this.objectMapper = SerDeUtils.createMapper(); + } + + /** + * Wait for the operation to complete and return the resulting Role. Waits indefinitely if no + * timeout is specified. + * + * @return the created Role + * @throws TimeoutException if the operation doesn't complete within the timeout + * @throws DatabricksException if the operation fails + */ + public Role waitForCompletion() throws TimeoutException { + return waitForCompletion(Optional.empty()); + } + + /** + * Wait for the operation to complete and return the resulting Role. + * + * @param options the options for configuring the wait behavior, can be empty for defaults + * @return the created Role + * @throws TimeoutException if the operation doesn't complete within the timeout + * @throws DatabricksException if the operation fails + */ + public Role waitForCompletion(Optional options) throws TimeoutException { + Optional timeout = options.flatMap(LroOptions::getTimeout); + long deadline = + timeout.isPresent() + ? System.currentTimeMillis() + timeout.get().toMillis() + : Long.MAX_VALUE; + String statusMessage = "polling operation..."; + int attempt = 1; + + while (System.currentTimeMillis() < deadline) { + // Refresh the operation state + refreshOperation(); + + if (operation.getDone() != null && operation.getDone()) { + // Operation completed, check for success or failure + if (operation.getError() != null) { + String errorMsg = "unknown error"; + if (operation.getError().getMessage() != null + && !operation.getError().getMessage().isEmpty()) { + errorMsg = operation.getError().getMessage(); + } + + if (operation.getError().getErrorCode() != null) { + errorMsg = String.format("[%s] %s", operation.getError().getErrorCode(), errorMsg); + } + + throw new DatabricksException("Operation failed: " + errorMsg); + } + + // Operation completed successfully, unmarshal response + if (operation.getResponse() == null) { + throw new DatabricksException("Operation completed but no response available"); + } + + try { + JsonNode responseJson = objectMapper.valueToTree(operation.getResponse()); + return objectMapper.treeToValue(responseJson, Role.class); + } catch (JsonProcessingException e) { + throw new DatabricksException("Failed to unmarshal role response: " + e.getMessage(), e); + } + } + + // Operation still in progress, wait before polling again + String prefix = String.format("operation=%s", operation.getName()); + int sleep = Math.min(attempt, 10); // sleep 10s max per attempt + LOG.info("{}: operation in progress (sleeping ~{}s)", prefix, 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++; + } + + String timeoutMessage = + timeout.isPresent() + ? String.format("Operation timed out after %s: %s", timeout.get(), statusMessage) + : String.format("Operation timed out: %s", statusMessage); + throw new TimeoutException(timeoutMessage); + } + + /** + * Get the operation name. + * + * @return the operation name + */ + public String getName() { + return operation.getName(); + } + + /** + * Get the operation metadata. + * + * @return the operation metadata, or null if not available + * @throws DatabricksException if the metadata cannot be deserialized + */ + public RoleOperationMetadata getMetadata() { + if (operation.getMetadata() == null) { + return null; + } + + try { + JsonNode metadataJson = objectMapper.valueToTree(operation.getMetadata()); + return objectMapper.treeToValue(metadataJson, RoleOperationMetadata.class); + } catch (JsonProcessingException e) { + throw new DatabricksException("Failed to unmarshal operation metadata: " + e.getMessage(), e); + } + } + + /** + * Check if the operation is done. This method refreshes the operation state before checking. + * + * @return true if the operation is complete, false otherwise + * @throws DatabricksException if the status check fails + */ + public boolean isDone() { + refreshOperation(); + return operation.getDone() != null && operation.getDone(); + } + + /** Refresh the operation state by polling the server. */ + private void refreshOperation() { + operation = impl.getOperation(new GetOperationRequest().setName(operation.getName())); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteRoleRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteRoleRequest.java new file mode 100644 index 000000000..bf2373fa6 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/DeleteRoleRequest.java @@ -0,0 +1,71 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.postgres; + +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 DeleteRoleRequest { + /** + * The resource name of the postgres role. Format: + * projects/{project_id}/branch/{branch_id}/roles/{role_id} + */ + @JsonIgnore private String name; + + /** + * Reassign objects. If this is set, all objects owned by the role are reassigned to the role + * specified in this parameter. + * + *

NOTE: setting this requires spinning up a compute to succeed, since it involves running SQL + * queries. + * + *

TODO: #LKB-7187 implement reassign_owned_to on LBM side. This might end-up being a + * synchronous query when this parameter is used. + */ + @JsonIgnore + @QueryParam("reassign_owned_to") + private String reassignOwnedTo; + + public DeleteRoleRequest setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + public DeleteRoleRequest setReassignOwnedTo(String reassignOwnedTo) { + this.reassignOwnedTo = reassignOwnedTo; + return this; + } + + public String getReassignOwnedTo() { + return reassignOwnedTo; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DeleteRoleRequest that = (DeleteRoleRequest) o; + return Objects.equals(name, that.name) && Objects.equals(reassignOwnedTo, that.reassignOwnedTo); + } + + @Override + public int hashCode() { + return Objects.hash(name, reassignOwnedTo); + } + + @Override + public String toString() { + return new ToStringer(DeleteRoleRequest.class) + .add("name", name) + .add("reassignOwnedTo", reassignOwnedTo) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/GetRoleRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/GetRoleRequest.java new file mode 100644 index 000000000..18ab6a7b0 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/GetRoleRequest.java @@ -0,0 +1,44 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.postgres; + +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 GetRoleRequest { + /** + * The name of the Role to retrieve. Format: + * projects/{project_id}/branches/{branch_id}/roles/{role_id} + */ + @JsonIgnore private String name; + + public GetRoleRequest 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; + GetRoleRequest that = (GetRoleRequest) o; + return Objects.equals(name, that.name); + } + + @Override + public int hashCode() { + return Objects.hash(name); + } + + @Override + public String toString() { + return new ToStringer(GetRoleRequest.class).add("name", name).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListRolesRequest.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListRolesRequest.java new file mode 100644 index 000000000..4b28a9b33 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListRolesRequest.java @@ -0,0 +1,79 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.postgres; + +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 ListRolesRequest { + /** Upper bound for items returned. */ + @JsonIgnore + @QueryParam("page_size") + private Long pageSize; + + /** Pagination token to go to the next page of Roles. Requests first page if absent. */ + @JsonIgnore + @QueryParam("page_token") + private String pageToken; + + /** + * The Branch that owns this collection of roles. Format: + * projects/{project_id}/branches/{branch_id} + */ + @JsonIgnore private String parent; + + public ListRolesRequest setPageSize(Long pageSize) { + this.pageSize = pageSize; + return this; + } + + public Long getPageSize() { + return pageSize; + } + + public ListRolesRequest setPageToken(String pageToken) { + this.pageToken = pageToken; + return this; + } + + public String getPageToken() { + return pageToken; + } + + public ListRolesRequest setParent(String parent) { + this.parent = parent; + return this; + } + + public String getParent() { + return parent; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ListRolesRequest that = (ListRolesRequest) o; + return Objects.equals(pageSize, that.pageSize) + && Objects.equals(pageToken, that.pageToken) + && Objects.equals(parent, that.parent); + } + + @Override + public int hashCode() { + return Objects.hash(pageSize, pageToken, parent); + } + + @Override + public String toString() { + return new ToStringer(ListRolesRequest.class) + .add("pageSize", pageSize) + .add("pageToken", pageToken) + .add("parent", parent) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListRolesResponse.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListRolesResponse.java new file mode 100644 index 000000000..1ca00fa00 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/ListRolesResponse.java @@ -0,0 +1,59 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.postgres; + +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 ListRolesResponse { + /** Pagination token to request the next page of roles. */ + @JsonProperty("next_page_token") + private String nextPageToken; + + /** List of roles. */ + @JsonProperty("roles") + private Collection roles; + + public ListRolesResponse setNextPageToken(String nextPageToken) { + this.nextPageToken = nextPageToken; + return this; + } + + public String getNextPageToken() { + return nextPageToken; + } + + public ListRolesResponse setRoles(Collection roles) { + this.roles = roles; + return this; + } + + public Collection getRoles() { + return roles; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ListRolesResponse that = (ListRolesResponse) o; + return Objects.equals(nextPageToken, that.nextPageToken) && Objects.equals(roles, that.roles); + } + + @Override + public int hashCode() { + return Objects.hash(nextPageToken, roles); + } + + @Override + public String toString() { + return new ToStringer(ListRolesResponse.class) + .add("nextPageToken", nextPageToken) + .add("roles", roles) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresAPI.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresAPI.java index b2fe70422..b41027c27 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresAPI.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresAPI.java @@ -42,6 +42,12 @@ public CreateProjectOperation createProject(CreateProjectRequest request) { return new CreateProjectOperation(impl, operation); } + /** Create a role for a branch. */ + public CreateRoleOperation createRole(CreateRoleRequest request) { + Operation operation = impl.createRole(request); + return new CreateRoleOperation(impl, operation); + } + public void deleteBranch(String name) { deleteBranch(new DeleteBranchRequest().setName(name)); } @@ -69,6 +75,16 @@ public void deleteProject(DeleteProjectRequest request) { impl.deleteProject(request); } + public DeleteRoleOperation deleteRole(String name) { + return deleteRole(new DeleteRoleRequest().setName(name)); + } + + /** Delete a role in a branch. */ + public DeleteRoleOperation deleteRole(DeleteRoleRequest request) { + Operation operation = impl.deleteRole(request); + return new DeleteRoleOperation(impl, operation); + } + public Branch getBranch(String name) { return getBranch(new GetBranchRequest().setName(name)); } @@ -105,6 +121,15 @@ public Project getProject(GetProjectRequest request) { return impl.getProject(request); } + public Role getRole(String name) { + return getRole(new GetRoleRequest().setName(name)); + } + + /** Get a Role. */ + public Role getRole(GetRoleRequest request) { + return impl.getRole(request); + } + public Iterable listBranches(String parent) { return listBranches(new ListBranchesRequest().setParent(parent)); } @@ -158,6 +183,25 @@ public Iterable listProjects(ListProjectsRequest request) { }); } + public Iterable listRoles(String parent) { + return listRoles(new ListRolesRequest().setParent(parent)); + } + + /** List Roles. */ + public Iterable listRoles(ListRolesRequest request) { + return new Paginator<>( + request, + impl::listRoles, + ListRolesResponse::getRoles, + response -> { + String token = response.getNextPageToken(); + if (token == null || token.isEmpty()) { + return null; + } + return request.setPageToken(token); + }); + } + /** Update a Branch. */ public UpdateBranchOperation updateBranch(UpdateBranchRequest request) { Operation operation = impl.updateBranch(request); diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresImpl.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresImpl.java index fe18af789..a91a37155 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresImpl.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresImpl.java @@ -61,6 +61,21 @@ public Operation createProject(CreateProjectRequest request) { } } + @Override + public Operation createRole(CreateRoleRequest request) { + String path = String.format("/api/2.0/postgres/%s/roles", request.getParent()); + try { + Request req = new Request("PATCH", path, apiClient.serialize(request.getRole())); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + req.withHeader("Content-Type", "application/json"); + return apiClient.execute(req, Operation.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + @Override public void deleteBranch(DeleteBranchRequest request) { String path = String.format("/api/2.0/postgres/%s", request.getName()); @@ -103,6 +118,20 @@ public void deleteProject(DeleteProjectRequest request) { } } + @Override + public Operation deleteRole(DeleteRoleRequest request) { + String path = String.format("/api/2.0/postgres/%s", request.getName()); + try { + Request req = new Request("DELETE", path); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + return apiClient.execute(req, Operation.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + @Override public Branch getBranch(GetBranchRequest request) { String path = String.format("/api/2.0/postgres/%s", request.getName()); @@ -159,6 +188,20 @@ public Project getProject(GetProjectRequest request) { } } + @Override + public Role getRole(GetRoleRequest request) { + String path = String.format("/api/2.0/postgres/%s", request.getName()); + try { + Request req = new Request("GET", path); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + return apiClient.execute(req, Role.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + @Override public ListBranchesResponse listBranches(ListBranchesRequest request) { String path = String.format("/api/2.0/postgres/%s/branches", request.getParent()); @@ -201,6 +244,20 @@ public ListProjectsResponse listProjects(ListProjectsRequest request) { } } + @Override + public ListRolesResponse listRoles(ListRolesRequest request) { + String path = String.format("/api/2.0/postgres/%s/roles", request.getParent()); + try { + Request req = new Request("GET", path); + + ApiClient.setQuery(req, request); + req.withHeader("Accept", "application/json"); + return apiClient.execute(req, ListRolesResponse.class); + } catch (IOException e) { + throw new DatabricksException("IO error: " + e.getMessage(), e); + } + } + @Override public Operation updateBranch(UpdateBranchRequest request) { String path = String.format("/api/2.0/postgres/%s", request.getName()); diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresService.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresService.java index 871532e59..e5b7d832f 100644 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresService.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/PostgresService.java @@ -21,6 +21,9 @@ public interface PostgresService { /** Create a Project. */ Operation createProject(CreateProjectRequest createProjectRequest); + /** Create a role for a branch. */ + Operation createRole(CreateRoleRequest createRoleRequest); + /** Delete a Branch. */ void deleteBranch(DeleteBranchRequest deleteBranchRequest); @@ -30,6 +33,9 @@ public interface PostgresService { /** Delete a Project. */ void deleteProject(DeleteProjectRequest deleteProjectRequest); + /** Delete a role in a branch. */ + Operation deleteRole(DeleteRoleRequest deleteRoleRequest); + /** Get a Branch. */ Branch getBranch(GetBranchRequest getBranchRequest); @@ -42,6 +48,9 @@ public interface PostgresService { /** Get a Project. */ Project getProject(GetProjectRequest getProjectRequest); + /** Get a Role. */ + Role getRole(GetRoleRequest getRoleRequest); + /** List Branches. */ ListBranchesResponse listBranches(ListBranchesRequest listBranchesRequest); @@ -51,6 +60,9 @@ public interface PostgresService { /** List Projects. */ ListProjectsResponse listProjects(ListProjectsRequest listProjectsRequest); + /** List Roles. */ + ListRolesResponse listRoles(ListRolesRequest listRolesRequest); + /** Update a Branch. */ Operation updateBranch(UpdateBranchRequest updateBranchRequest); diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/Role.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/Role.java new file mode 100644 index 000000000..c6fa0856f --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/Role.java @@ -0,0 +1,123 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.postgres; + +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; + +/** Role represents a Postgres role within a Branch. */ +@Generated +public class Role { + /** */ + @JsonProperty("create_time") + private Timestamp createTime; + + /** + * The resource name of the role. Format: projects/{project_id}/branch/{branch_id}/roles/{role_id} + */ + @JsonProperty("name") + private String name; + + /** The Branch where this Role exists. Format: projects/{project_id}/branches/{branch_id} */ + @JsonProperty("parent") + private String parent; + + /** The desired state of the Role. */ + @JsonProperty("spec") + private RoleRoleSpec spec; + + /** The observed state of the Role. */ + @JsonProperty("status") + private RoleRoleStatus status; + + /** */ + @JsonProperty("update_time") + private Timestamp updateTime; + + public Role setCreateTime(Timestamp createTime) { + this.createTime = createTime; + return this; + } + + public Timestamp getCreateTime() { + return createTime; + } + + public Role setName(String name) { + this.name = name; + return this; + } + + public String getName() { + return name; + } + + public Role setParent(String parent) { + this.parent = parent; + return this; + } + + public String getParent() { + return parent; + } + + public Role setSpec(RoleRoleSpec spec) { + this.spec = spec; + return this; + } + + public RoleRoleSpec getSpec() { + return spec; + } + + public Role setStatus(RoleRoleStatus status) { + this.status = status; + return this; + } + + public RoleRoleStatus getStatus() { + return status; + } + + public Role 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; + Role that = (Role) o; + return Objects.equals(createTime, that.createTime) + && Objects.equals(name, that.name) + && Objects.equals(parent, that.parent) + && Objects.equals(spec, that.spec) + && Objects.equals(status, that.status) + && Objects.equals(updateTime, that.updateTime); + } + + @Override + public int hashCode() { + return Objects.hash(createTime, name, parent, spec, status, updateTime); + } + + @Override + public String toString() { + return new ToStringer(Role.class) + .add("createTime", createTime) + .add("name", name) + .add("parent", parent) + .add("spec", spec) + .add("status", status) + .add("updateTime", updateTime) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleAuthMethod.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleAuthMethod.java new file mode 100644 index 000000000..7732b1a78 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleAuthMethod.java @@ -0,0 +1,13 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.postgres; + +import com.databricks.sdk.support.Generated; + +/** How the role is authenticated when connecting to Postgres. */ +@Generated +public enum RoleAuthMethod { + LAKEBASE_OAUTH_V1, + NO_LOGIN, + PG_PASSWORD_SCRAM_SHA_256, +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleIdentityType.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleIdentityType.java new file mode 100644 index 000000000..3908f1bf0 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleIdentityType.java @@ -0,0 +1,16 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.postgres; + +import com.databricks.sdk.support.Generated; + +/** + * The type of the Databricks managed identity that this Role represents. Leave empty if you wish to + * create a regular Postgres role not associated with a Databricks identity. + */ +@Generated +public enum RoleIdentityType { + GROUP, + SERVICE_PRINCIPAL, + USER, +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleOperationMetadata.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleOperationMetadata.java new file mode 100644 index 000000000..f9849dc93 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleOperationMetadata.java @@ -0,0 +1,28 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.postgres; + +import com.databricks.sdk.support.Generated; +import com.databricks.sdk.support.ToStringer; +import java.util.Objects; + +@Generated +public class RoleOperationMetadata { + + @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(RoleOperationMetadata.class).toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleRoleSpec.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleRoleSpec.java new file mode 100644 index 000000000..417c91918 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleRoleSpec.java @@ -0,0 +1,66 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.postgres; + +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 RoleRoleSpec { + /** + * If auth_method is left unspecified, a meaningful authentication method is derived from the + * identity_type: * For the managed identities, OAUTH is used. * For the regular postgres roles, + * authentication based on postgres passwords is used. + * + *

NOTE: this is ignored for the Databricks identity type GROUP, and NO_LOGIN is implicitly + * assumed instead for the GROUP identity type. + */ + @JsonProperty("auth_method") + private RoleAuthMethod authMethod; + + /** The type of the role. */ + @JsonProperty("identity_type") + private RoleIdentityType identityType; + + public RoleRoleSpec setAuthMethod(RoleAuthMethod authMethod) { + this.authMethod = authMethod; + return this; + } + + public RoleAuthMethod getAuthMethod() { + return authMethod; + } + + public RoleRoleSpec setIdentityType(RoleIdentityType identityType) { + this.identityType = identityType; + return this; + } + + public RoleIdentityType getIdentityType() { + return identityType; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RoleRoleSpec that = (RoleRoleSpec) o; + return Objects.equals(authMethod, that.authMethod) + && Objects.equals(identityType, that.identityType); + } + + @Override + public int hashCode() { + return Objects.hash(authMethod, identityType); + } + + @Override + public String toString() { + return new ToStringer(RoleRoleSpec.class) + .add("authMethod", authMethod) + .add("identityType", identityType) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleRoleStatus.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleRoleStatus.java new file mode 100644 index 000000000..76728b173 --- /dev/null +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/postgres/RoleRoleStatus.java @@ -0,0 +1,59 @@ +// Code generated from OpenAPI specs by Databricks SDK Generator. DO NOT EDIT. + +package com.databricks.sdk.service.postgres; + +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 RoleRoleStatus { + /** */ + @JsonProperty("auth_method") + private RoleAuthMethod authMethod; + + /** The type of the role. */ + @JsonProperty("identity_type") + private RoleIdentityType identityType; + + public RoleRoleStatus setAuthMethod(RoleAuthMethod authMethod) { + this.authMethod = authMethod; + return this; + } + + public RoleAuthMethod getAuthMethod() { + return authMethod; + } + + public RoleRoleStatus setIdentityType(RoleIdentityType identityType) { + this.identityType = identityType; + return this; + } + + public RoleIdentityType getIdentityType() { + return identityType; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RoleRoleStatus that = (RoleRoleStatus) o; + return Objects.equals(authMethod, that.authMethod) + && Objects.equals(identityType, that.identityType); + } + + @Override + public int hashCode() { + return Objects.hash(authMethod, identityType); + } + + @Override + public String toString() { + return new ToStringer(RoleRoleStatus.class) + .add("authMethod", authMethod) + .add("identityType", identityType) + .toString(); + } +} diff --git a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/Table.java b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/Table.java old mode 100755 new mode 100644 index 119e8a050..61cff4487 --- a/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/Table.java +++ b/databricks-sdk-java/src/main/java/com/databricks/sdk/service/sharing/Table.java @@ -10,6 +10,13 @@ @Generated public class Table { + /** + * The access modes supported for this table (e.g., "url", "dir"). Used for open sharing to + * indicate how the table can be accessed. + */ + @JsonProperty("access_modes") + private Collection accessModes; + /** The comment of the table. */ @JsonProperty("comment") private String comment; @@ -46,10 +53,23 @@ public class Table { @JsonProperty("share_id") private String shareId; + /** The cloud storage location of the table for open sharing. */ + @JsonProperty("storage_location") + private String storageLocation; + /** The Tags of the table. */ @JsonProperty("tags") private Collection tags; + public Table setAccessModes(Collection accessModes) { + this.accessModes = accessModes; + return this; + } + + public Collection getAccessModes() { + return accessModes; + } + public Table setComment(String comment) { this.comment = comment; return this; @@ -131,6 +151,15 @@ public String getShareId() { return shareId; } + public Table setStorageLocation(String storageLocation) { + this.storageLocation = storageLocation; + return this; + } + + public String getStorageLocation() { + return storageLocation; + } + public Table setTags(Collection tags) { this.tags = tags; return this; @@ -145,7 +174,8 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Table that = (Table) o; - return Objects.equals(comment, that.comment) + return Objects.equals(accessModes, that.accessModes) + && Objects.equals(comment, that.comment) && Objects.equals(id, that.id) && Objects.equals(internalAttributes, that.internalAttributes) && Objects.equals(materializationNamespace, that.materializationNamespace) @@ -154,12 +184,14 @@ public boolean equals(Object o) { && Objects.equals(schema, that.schema) && Objects.equals(share, that.share) && Objects.equals(shareId, that.shareId) + && Objects.equals(storageLocation, that.storageLocation) && Objects.equals(tags, that.tags); } @Override public int hashCode() { return Objects.hash( + accessModes, comment, id, internalAttributes, @@ -169,12 +201,14 @@ public int hashCode() { schema, share, shareId, + storageLocation, tags); } @Override public String toString() { return new ToStringer(Table.class) + .add("accessModes", accessModes) .add("comment", comment) .add("id", id) .add("internalAttributes", internalAttributes) @@ -184,6 +218,7 @@ public String toString() { .add("schema", schema) .add("share", share) .add("shareId", shareId) + .add("storageLocation", storageLocation) .add("tags", tags) .toString(); }