Skip to content

Commit 13b3186

Browse files
authored
SDK: Add generated workspace APIs (#36)
* generate workspace API * Add helper functions to run notebooks and Python as jobs
1 parent 9aada06 commit 13b3186

25 files changed

+1037
-114
lines changed

package.json

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
"version": "0.0.1",
44
"private": true,
55
"workspaces": [
6-
"packages/databricks-sdk-js",
7-
"packages/databricks-vscode"
6+
"packages/*"
87
],
8+
"installConfig": {
9+
"hoistingLimits": "dependencies"
10+
},
911
"engines": {
1012
"node": ">=16.0",
1113
"yarn": ">=3.2.0"
@@ -25,5 +27,12 @@
2527
"url": "https://github.com/databricks/databricks-vscode/issues"
2628
},
2729
"homepage": "https://github.com/databricks/databricks-vscode#readme",
28-
"packageManager": "yarn@3.2.1"
30+
"packageManager": "yarn@3.2.1",
31+
"devDependencies": {
32+
"@typescript-eslint/eslint-plugin": "^5.31.0",
33+
"@typescript-eslint/parser": "^5.31.0",
34+
"eslint": "^8.20.0",
35+
"eslint-config-prettier": "^8.5.0",
36+
"typescript": "^4.7.4"
37+
}
2938
}

packages/databricks-sdk-js/package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,17 @@
3232
},
3333
"devDependencies": {
3434
"@types/ini": "^1.3.31",
35+
"@types/mocha": "^9.1.1",
3536
"@types/node-fetch": "^2.6.2",
3637
"@types/tmp": "^0.2.3",
3738
"@types/uuid": "^8.3.4",
3839
"eslint": "^8.20.0",
39-
"eslint-config-prettier": "^8.5.0",
4040
"mocha": "^10.0.0",
4141
"prettier": "^2.7.1",
4242
"tmp-promise": "^3.0.3",
4343
"ts-loader": "^9.3.1",
4444
"ts-mocha": "^10.0.0",
4545
"typescript": "^4.7.4",
46-
"uuid": "^8.3.2",
47-
"webpack": "^5.73.0"
46+
"uuid": "^8.3.2"
4847
}
4948
}

packages/databricks-sdk-js/src/apis/cluster.ts

Lines changed: 89 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ export type ClusterState =
4141

4242
export type ListOrder = "DESC" | "ASC";
4343

44+
export type RuntimeEngine = "NULL" | "STANDARD" | "PHOTON";
45+
46+
export type ClusterClientRestriction = "NOTEBOOKS" | "JOBS";
47+
48+
export type FleetAllocationStrategy =
49+
| "LOWEST_PRICE"
50+
| "DIVERSIFIED"
51+
| "CAPACITY_OPTIMIZED"
52+
| "PRIORITIZED";
53+
4454
export type TerminationCode =
4555
| "UNKNOWN"
4656
| "USER_REQUEST"
@@ -188,6 +198,8 @@ export type InstancePoolState = "ACTIVE" | "STOPPED" | "DELETED";
188198
//
189199

190200
export interface ClusterInfo {
201+
num_workers?: number;
202+
autoscale?: AutoScale;
191203
cluster_id?: string;
192204
creator_user_name?: string;
193205
driver?: SparkNode;
@@ -213,14 +225,15 @@ export interface ClusterInfo {
213225
policy_id?: string;
214226
enable_local_disk_encryption?: boolean;
215227
driver_instance_pool_id?: string;
228+
workload_type?: WorkloadType;
229+
runtime_engine?: RuntimeEngine;
230+
effective_spark_version?: string;
216231
state?: ClusterState;
217232
state_message?: string;
218233
start_time?: number;
219234
terminated_time?: number;
220235
last_state_loss_time?: number;
221236
last_restarted_time?: number;
222-
num_workers?: number;
223-
autoscale?: AutoScale;
224237
cluster_memory_mb?: number;
225238
cluster_cores?: number;
226239
default_tags?: Array<ClusterTag>;
@@ -248,6 +261,9 @@ export interface ClusterAttributes {
248261
policy_id?: string;
249262
enable_local_disk_encryption?: boolean;
250263
driver_instance_pool_id?: string;
264+
workload_type?: WorkloadType;
265+
runtime_engine?: RuntimeEngine;
266+
effective_spark_version?: string;
251267
}
252268

253269
export interface ClusterTag {
@@ -351,16 +367,44 @@ export interface LogSyncStatus {
351367
last_exception?: string;
352368
}
353369

370+
export interface WorkloadType {
371+
clients?: ClientsTypes;
372+
}
373+
374+
export interface ClientsTypes {
375+
notebooks?: boolean;
376+
jobs?: boolean;
377+
}
378+
354379
export interface GetInstance {}
355380

356-
export interface Policy {
357-
policy_id?: string;
358-
name?: string;
359-
definition?: string;
360-
creator_user_name?: string;
361-
created_at_timestamp?: number;
381+
export interface FleetSpotOption {
382+
allocation_strategy?: FleetAllocationStrategy;
383+
instance_pools_to_use_count?: number;
384+
max_total_price?: number;
385+
}
386+
387+
export interface FleetOnDemandOption {
388+
allocation_strategy?: FleetAllocationStrategy;
389+
use_capacity_reservations_first?: boolean;
390+
max_total_price?: number;
391+
}
392+
393+
export interface FleetLaunchTemplateOverride {
394+
availability_zone: string;
395+
instance_type: string;
396+
max_price?: number;
397+
priority?: number;
362398
}
363399

400+
export interface InstancePoolFleetAttributes {
401+
fleet_spot_option?: FleetSpotOption;
402+
fleet_on_demand_option?: FleetOnDemandOption;
403+
launch_template_overrides?: Array<FleetLaunchTemplateOverride>;
404+
}
405+
406+
export interface Policy {}
407+
364408
export interface TerminationReason {
365409
code?: TerminationCode;
366410
type?: TerminationType;
@@ -385,7 +429,6 @@ export interface InstancePoolAndStats {
385429
preloaded_docker_images?: Array<DockerImage>;
386430
preloaded_spark_versions?: Array<string>;
387431
azure_attributes?: InstancePoolAzureAttributes;
388-
gcp_attributes?: InstancePoolGcpAttributes;
389432
instance_pool_id?: string;
390433
default_tags?: Array<ClusterTag>;
391434
state?: InstancePoolState;
@@ -398,6 +441,7 @@ export interface ClusterEvent {
398441
timestamp?: number;
399442
type?: ClusterEventType;
400443
details?: EventDetails;
444+
data_plane_event_details?: any;
401445
}
402446

403447
export interface EventDetails {
@@ -450,8 +494,8 @@ export interface DiskType {
450494
}
451495

452496
export interface DockerImage {
453-
url?: string;
454497
basic_auth?: DockerBasicAuth;
498+
url?: string;
455499
}
456500

457501
export interface DockerBasicAuth {
@@ -461,10 +505,6 @@ export interface DockerBasicAuth {
461505

462506
export interface InstancePool {}
463507

464-
export interface InstancePoolGcpAttributes {
465-
gcp_availability?: GcpAvailability;
466-
}
467-
468508
export interface InstancePoolAwsAttributes {
469509
availability?: AwsAvailability;
470510
zone_id?: string;
@@ -496,7 +536,9 @@ export interface PendingInstanceError {
496536
// Request/response types.
497537
//
498538

499-
export interface ListClustersRequest {}
539+
export interface ListClustersRequest {
540+
can_use_client?: ClusterClientRestriction;
541+
}
500542

501543
export interface ListClustersResponse {
502544
clusters?: Array<ClusterInfo>;
@@ -524,6 +566,9 @@ export interface CreateClusterRequest {
524566
policy_id?: string;
525567
enable_local_disk_encryption?: boolean;
526568
driver_instance_pool_id?: string;
569+
workload_type?: WorkloadType;
570+
runtime_engine?: RuntimeEngine;
571+
effective_spark_version?: string;
527572
apply_policy_default_values?: boolean;
528573
}
529574

@@ -557,22 +602,23 @@ export interface PermanentDeleteClusterResponse {}
557602

558603
export interface RestartClusterRequest {
559604
cluster_id: string;
605+
restart_user?: string;
560606
}
561607

562608
export interface RestartClusterResponse {}
563609

564610
export interface ResizeClusterRequest {
565-
cluster_id: string;
566611
num_workers?: number;
567612
autoscale?: AutoScale;
613+
cluster_id: string;
568614
}
569615

570616
export interface ResizeClusterResponse {}
571617

572618
export interface EditClusterRequest {
573-
cluster_id: string;
574619
num_workers?: number;
575620
autoscale?: AutoScale;
621+
cluster_id: string;
576622
cluster_name?: string;
577623
spark_version?: string;
578624
spark_conf?: Array<SparkConfPair>;
@@ -592,16 +638,28 @@ export interface EditClusterRequest {
592638
policy_id?: string;
593639
enable_local_disk_encryption?: boolean;
594640
driver_instance_pool_id?: string;
641+
workload_type?: WorkloadType;
642+
runtime_engine?: RuntimeEngine;
643+
effective_spark_version?: string;
595644
apply_policy_default_values?: boolean;
596645
}
597646

598647
export interface EditClusterResponse {}
599648

649+
export interface ChangeClusterOwnerRequest {
650+
cluster_id: string;
651+
owner_username?: string;
652+
}
653+
654+
export interface ChangeClusterOwnerResponse {}
655+
600656
export interface GetClusterRequest {
601657
cluster_id: string;
602658
}
603659

604660
export interface GetClusterResponse {
661+
num_workers?: number;
662+
autoscale?: AutoScale;
605663
cluster_id?: string;
606664
creator_user_name?: string;
607665
driver?: SparkNode;
@@ -627,14 +685,15 @@ export interface GetClusterResponse {
627685
policy_id?: string;
628686
enable_local_disk_encryption?: boolean;
629687
driver_instance_pool_id?: string;
688+
workload_type?: WorkloadType;
689+
runtime_engine?: RuntimeEngine;
690+
effective_spark_version?: string;
630691
state?: ClusterState;
631692
state_message?: string;
632693
start_time?: number;
633694
terminated_time?: number;
634695
last_state_loss_time?: number;
635696
last_restarted_time?: number;
636-
num_workers?: number;
637-
autoscale?: AutoScale;
638697
cluster_memory_mb?: number;
639698
cluster_cores?: number;
640699
default_tags?: Array<ClusterTag>;
@@ -657,9 +716,9 @@ export interface UnpinClusterResponse {}
657716
export interface ListNodeTypesRequest {}
658717

659718
export interface ListNodeTypesResponse {
660-
node_types?: Array<NodeType>;
661719
success?: delegate.CpalSuccessResponse;
662720
failure?: delegate.CpalFailureResponse;
721+
node_types?: Array<NodeType>;
663722
}
664723

665724
export interface ListAvailableZonesRequest {}
@@ -778,6 +837,16 @@ export class ClusterService {
778837
)) as EditClusterResponse;
779838
}
780839

840+
async changeClusterOwner(
841+
request: ChangeClusterOwnerRequest
842+
): Promise<ChangeClusterOwnerResponse> {
843+
return (await this.client.request(
844+
"/api/2.0/clusters/change-owner",
845+
"POST",
846+
request
847+
)) as ChangeClusterOwnerResponse;
848+
}
849+
781850
async get(request: GetClusterRequest): Promise<GetClusterResponse> {
782851
return (await this.client.request(
783852
"/api/2.0/clusters/get",

packages/databricks-sdk-js/src/apis/commands.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export interface CommandsCancelResponse {
6464
id: string;
6565
}
6666

67-
export class CommandsApi {
67+
export class CommandsService {
6868
readonly client: ApiClient;
6969

7070
constructor(client: ApiClient) {

0 commit comments

Comments
 (0)