Skip to content

Commit

Permalink
fix up usage of changed APIs in the SDK
Browse files Browse the repository at this point in the history
  • Loading branch information
fjakobs committed Jul 13, 2023
1 parent eceec01 commit 9b9b357
Show file tree
Hide file tree
Showing 20 changed files with 107 additions and 95 deletions.
2 changes: 1 addition & 1 deletion packages/databricks-sdk-js/src/Pagination.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* eslint-disable @typescript-eslint/naming-convention */
import {WorkspaceClient} from "./WorkspaceClient";
import * as assert from "assert";
import {ListReposResponse} from "./apis/repos";
import {ListReposResponse} from "./apis/workspace";

/**
* This test uses scraped responses from a workspace that has a sufficient amount of resources.
Expand Down
8 changes: 7 additions & 1 deletion packages/databricks-sdk-js/src/apis/workspace/model.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 15 additions & 11 deletions packages/databricks-sdk-js/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,28 @@ export * from "./config";
export * from "./WorkspaceClient";
export * from "./AccountClient";

// export * as cluster from "./apis/clusters";
// export * as dbfs from "./apis/dbfs";
// export * as commands from "./apis/commands";
// export * as jobs from "./apis/jobs";
// export * as libraries from "./apis/libraries";
// export * as repos from "./apis/repos";
// export * as scim from "./apis/scim";
// export * as workspace from "./apis/workspace";
// export * as workspaceconf from "./apis/workspaceconf";
// export * as permissions from "./apis/permissions";
export * as catalog from "./apis/catalog";
export * as billing from "./apis/billing";
export * as compute from "./apis/compute";
export * as files from "./apis/files";
export * as iam from "./apis/iam";
export * as jobs from "./apis/jobs";
export * as ml from "./apis/ml";
export * as oauth2 from "./apis/oauth2";
export * as pipelines from "./apis/pipelines";
export * as provisioning from "./apis/provisioning";
export * as serving from "./apis/serving";
export * as settings from "./apis/settings";
export * as sharing from "./apis/sharing";
export * as sql from "./apis/sql";
export * as workspace from "./apis/workspace";

export * from "./services/Cluster";
export * from "./services/Command";
export * from "./services/ExecutionContext";
export * from "./services/Repos";
export * from "./services/WorkflowRun";
export * from "./services/WorkspaceConf";

export * from "./types";

export {default as retry} from "./retries/retries";
Expand Down
4 changes: 2 additions & 2 deletions packages/databricks-sdk-js/src/services/Cluster.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ import * as assert from "node:assert";
import {mock, when, instance, deepEqual, verify, anything} from "ts-mockito";
import Time, {TimeUnits} from "../retries/Time";
import {getMockTestCluster} from "../test/fixtures/ClusterFixtures";
import {ClusterInfo} from "../apis/clusters";
import {TokenFixture} from "../test/fixtures/TokenFixtures";
import FakeTimers from "@sinonjs/fake-timers";
import {ClusterDetails} from "../apis/compute";

describe(__filename, function () {
this.timeout(new Time(10, TimeUnits.minutes).toMillSeconds().value);

let mockedClient: ApiClient;
let mockedCluster: Cluster;
let testClusterDetails: ClusterInfo;
let testClusterDetails: ClusterDetails;
let fakeTimer: FakeTimers.InstalledClock;

beforeEach(async () => {
Expand Down
22 changes: 11 additions & 11 deletions packages/databricks-sdk-js/src/services/Cluster.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,18 @@ import {
import {CancellationToken} from "../types";
import {ExecutionContext} from "./ExecutionContext";
import {WorkflowRun} from "./WorkflowRun";
import {commands, Time, TimeUnits} from "..";
import {Time, TimeUnits} from "..";
import {Context, context} from "../context";
import {ExposedLoggers, withLogContext} from "../logging";
import {
ClusterInfo,
ClusterDetails,
ClusterSource,
ClustersService,
DataSecurityMode,
Language,
State,
} from "../apis/clusters";
import {Context, context} from "../context";
import {User} from "../apis/scim";
import {ExposedLoggers, withLogContext} from "../logging";
import {PermissionsService} from "../apis/permissions";
} from "../apis/compute";
import {PermissionsService, User} from "../apis/iam";

export class ClusterRetriableError extends RetriableError {}
export class ClusterError extends Error {}
Expand All @@ -33,7 +33,7 @@ export class Cluster {

constructor(
private client: ApiClient,
private clusterDetails: ClusterInfo
private clusterDetails: ClusterDetails
) {
this.clusterApi = new ClustersService(client);
}
Expand Down Expand Up @@ -122,7 +122,7 @@ export class Cluster {
get details() {
return this.clusterDetails;
}
set details(details: ClusterInfo) {
set details(details: ClusterDetails) {
this.clusterDetails = details;
}

Expand Down Expand Up @@ -283,7 +283,7 @@ export class Cluster {

async stop(
token?: CancellationToken,
onProgress?: (newPollResponse: ClusterInfo) => Promise<void>
onProgress?: (newPollResponse: ClusterDetails) => Promise<void>
) {
this.details = await (
await this.clusterApi.delete(
Expand All @@ -303,7 +303,7 @@ export class Cluster {
}

async createExecutionContext(
language: commands.Language = "python"
language: Language = "python"
): Promise<ExecutionContext> {
return await ExecutionContext.create(this.client, this, language);
}
Expand Down
2 changes: 1 addition & 1 deletion packages/databricks-sdk-js/src/services/Command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import {EventEmitter} from "events";
import retry, {DEFAULT_MAX_TIMEOUT, RetriableError} from "../retries/retries";
import {ExecutionContext} from "./ExecutionContext";
import {CancellationToken} from "../types";
import {CommandExecutionService, CommandStatusResponse} from "../apis/commands";
import Time from "../retries/Time";
import {CommandExecutionService, CommandStatusResponse} from "../apis/compute";

interface CommandErrorParams {
commandId: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {CancellationToken, Time} from "..";
import {ApiClient} from "../api-client";
import {CommandExecutionService, Language} from "../apis/commands";
import {CommandExecutionService, Language} from "../apis/compute";
import {DEFAULT_MAX_TIMEOUT} from "../retries/retries";
import {Cluster} from "./Cluster";
import {Command, CommandWithResult, StatusUpdateListener} from "./Command";
Expand Down
3 changes: 1 addition & 2 deletions packages/databricks-sdk-js/src/services/Repos.integ.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
import {IntegrationTestSetup} from "../test/IntegrationTestSetup";
import * as assert from "node:assert";
import {Repo} from "./Repos";
import {RepoInfo, ReposService} from "../apis/repos";
import {randomUUID} from "node:crypto";
import {WorkspaceService} from "../apis/workspace";
import {RepoInfo, ReposService, WorkspaceService} from "../apis/workspace";
import {Context} from "../context";
import {CancellationToken} from "../types";

Expand Down
9 changes: 7 additions & 2 deletions packages/databricks-sdk-js/src/services/Repos.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
/* eslint-disable @typescript-eslint/naming-convention */
import {ApiClient} from "../api-client";
import {List, ReposService, RepoInfo, CreateRepo} from "../apis/repos";
import {
CreateRepo,
ListReposRequest,
RepoInfo,
ReposService,
} from "../apis/workspace";
// eslint-disable-next-line @typescript-eslint/no-unused-vars
import {context} from "../context";
import {Context} from "../context";
Expand Down Expand Up @@ -54,7 +59,7 @@ export class Repo {
@withLogContext(ExposedLoggers.SDK)
static async *list(
client: ApiClient,
req: List,
req: ListReposRequest,
@context context?: Context
): AsyncIterable<Repo> {
const reposApi = new ReposService(client);
Expand Down
2 changes: 1 addition & 1 deletion packages/databricks-sdk-js/src/services/WorkspaceConf.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ApiClient} from "../api-client";
import {WorkspaceConfService} from "../apis/workspaceconf";
import {WorkspaceConfService} from "../apis/settings";
import {context, Context} from "../context";
import {ExposedLoggers, withLogContext} from "../logging";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
/* eslint-disable @typescript-eslint/naming-convention */

import {ApiClient, Cluster} from "../..";
import {ClusterInfo} from "../../apis/clusters";
import {mock, when, resetCalls, instance, anything} from "ts-mockito";
import {ClusterDetails} from "../../apis/compute";

const testClusterDetails: ClusterInfo = {
const testClusterDetails: ClusterDetails = {
cluster_id: "testClusterId",
cluster_name: "testClusterName",
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import {mock, when, instance} from "ts-mockito";
import {ClusterModel} from "./ClusterModel";
import {Disposable} from "vscode";
import {ClusterListDataProvider} from "./ClusterListDataProvider";
import {ApiClient, Cluster, cluster} from "@databricks/databricks-sdk";
import {ApiClient, Cluster, compute} from "@databricks/databricks-sdk";
import {resolveProviderResult} from "../test/utils";

const mockListClustersResponse: cluster.ListClustersResponse = {
const mockListClustersResponse: compute.ListClustersResponse = {
clusters: [
{
cluster_id: "cluster-id-2",
Expand Down
72 changes: 35 additions & 37 deletions packages/databricks-vscode/src/cluster/ClusterLoader.test.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
/* eslint-disable @typescript-eslint/naming-convention */
import {
ApiClient,
cluster,
permissions,
scim,
compute,
iam,
WorkspaceClient,
} from "@databricks/databricks-sdk";
import assert from "assert";
import {anything, instance, mock, spy, when} from "ts-mockito";
import {ConnectionManager} from "../configuration/ConnectionManager";
import {ClusterLoader} from "./ClusterLoader";

const me: scim.User = {
const me: iam.User = {
entitlements: [],
groups: [
{
Expand All @@ -22,7 +21,7 @@ const me: scim.User = {
userName: "user-1",
roles: [],
};
const mockListClustersResponse: cluster.ListClustersResponse = {
const mockListClustersResponse: compute.ListClustersResponse = {
clusters: [
{
cluster_id: "cluster-id-2",
Expand Down Expand Up @@ -60,37 +59,36 @@ const mockListClustersResponse: cluster.ListClustersResponse = {
state: "RUNNING",
single_user_name: me.userName,
access_mode: "SINGLE_USER",
} as cluster.ClusterInfo & {access_mode: "SINGLE_USER"},
} as compute.ClusterDetails & {access_mode: "SINGLE_USER"},
],
};

const mockClusterPermissions: Map<string, permissions.ObjectPermissions> =
new Map([
[
"cluster-id-1",
{
access_control_list: [{user_name: me.userName}],
},
],
[
"cluster-id-2",
{
access_control_list: [{group_name: me.groups![0].display}],
},
],
[
"cluster-id-3",
{
access_control_list: [],
},
],
[
"cluster-id-4",
{
access_control_list: [{group_name: me.groups![0].display}],
},
],
]);
const mockClusterPermissions: Map<string, iam.ObjectPermissions> = new Map([
[
"cluster-id-1",
{
access_control_list: [{user_name: me.userName}],
},
],
[
"cluster-id-2",
{
access_control_list: [{group_name: me.groups![0].display}],
},
],
[
"cluster-id-3",
{
access_control_list: [],
},
],
[
"cluster-id-4",
{
access_control_list: [{group_name: me.groups![0].display}],
},
],
]);
describe(__filename, () => {
let mockedConnectionManager: ConnectionManager;
let mockedWorkspaceClient: WorkspaceClient;
Expand All @@ -101,25 +99,25 @@ describe(__filename, () => {
mockedWorkspaceClient = mock<WorkspaceClient>();
mockedApiClient = mock<ApiClient>();

when<cluster.ListClustersResponse>(
when<compute.ListClustersResponse>(
mockedApiClient.request(
"/api/2.0/clusters/list",
"GET",
anything(),
anything()
) as Promise<cluster.ListClustersResponse>
) as Promise<compute.ListClustersResponse>
).thenResolve(mockListClustersResponse);
when(mockedConnectionManager.workspaceClient).thenReturn(
instance(mockedWorkspaceClient)
);
for (const [id, perms] of mockClusterPermissions.entries()) {
when<permissions.ObjectPermissions>(
when<iam.ObjectPermissions>(
mockedApiClient.request(
`/api/2.0/permissions/clusters/${id}`,
"GET",
anything(),
anything()
) as Promise<permissions.ObjectPermissions>
) as Promise<iam.ObjectPermissions>
).thenResolve(perms);
}
when(mockedConnectionManager.databricksWorkspace).thenReturn({
Expand Down
6 changes: 3 additions & 3 deletions packages/databricks-vscode/src/cluster/ClusterManager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {describe} from "mocha";
import {ClusterManager} from "./ClusterManager";
import {
ApiClient,
cluster,
compute,
Cluster,
Time,
TimeUnits,
Expand All @@ -23,7 +23,7 @@ import assert from "assert";
describe(__filename, async () => {
let mockedCluster: Cluster;
let mockedClient: ApiClient;
let testClusterDetails: cluster.ClusterInfo;
let testClusterDetails: compute.ClusterDetails;

beforeEach(async () => {
({testClusterDetails} = await ClusterFixture.getMockTestCluster());
Expand Down Expand Up @@ -87,7 +87,7 @@ describe(__filename, async () => {
await mockedCluster.refresh();
assert.equal(mockedCluster.state, "TERMINATED");
interface OnProgContainer {
onProgress: (state: cluster.State) => void;
onProgress: (state: compute.State) => void;
}
const mockOnProgContainer = mock<OnProgContainer>();
await new ClusterManager(mockedCluster).start(
Expand Down
Loading

0 comments on commit 9b9b357

Please sign in to comment.