Skip to content

Provide endpoint for getting workspace classes from cluster #10982

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions components/ws-manager-api/core.proto
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ service WorkspaceManager {

// UpdateSSHKey update ssh keys
rpc UpdateSSHKey(UpdateSSHKeyRequest) returns (UpdateSSHKeyResponse) {}

// describeCluster provides information about the cluster
rpc DescribeCluster(DescribeClusterRequest) returns (DescribeClusterResponse) {}
}

// MetadataFilter describes conditions for matching a set of workspaces.
Expand Down Expand Up @@ -648,3 +651,18 @@ message SSHPublicKeys {
// keys is the set of ssh public key
repeated string keys = 1;
}

// DescribeClusterRequest requests information about the cluster
message DescribeClusterRequest {}

// DescribeClusterResponse is the answer to a DescribeClusterRequest
message DescribeClusterResponse {
// workspace classes that are supported by the cluster
repeated WorkspaceClass WorkspaceClasses = 1;
}

// WorkspaceClass describes a workspace class that is supported by the cluster
message WorkspaceClass {
string Id = 1;
string DisplayName = 2;
}
1 change: 1 addition & 0 deletions components/ws-manager-api/go/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ type Configuration struct {
}

type WorkspaceClass struct {
Name string `json:"name"`
Container ContainerConfiguration `json:"container"`
Templates WorkspacePodTemplateConfiguration `json:"templates"`
PVC PVCConfiguration `json:"pvc"`
Expand Down
503 changes: 353 additions & 150 deletions components/ws-manager-api/go/core.pb.go

Large diffs are not rendered by default.

38 changes: 38 additions & 0 deletions components/ws-manager-api/go/core_grpc.pb.go

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

35 changes: 35 additions & 0 deletions components/ws-manager-api/go/mock/mock.go

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

17 changes: 17 additions & 0 deletions components/ws-manager-api/typescript/src/core_grpc_pb.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ interface IWorkspaceManagerService extends grpc.ServiceDefinition<grpc.UntypedSe
controlAdmission: IWorkspaceManagerService_IControlAdmission;
deleteVolumeSnapshot: IWorkspaceManagerService_IDeleteVolumeSnapshot;
updateSSHKey: IWorkspaceManagerService_IUpdateSSHKey;
describeCluster: IWorkspaceManagerService_IDescribeCluster;
}

interface IWorkspaceManagerService_IGetWorkspaces extends grpc.MethodDefinition<core_pb.GetWorkspacesRequest, core_pb.GetWorkspacesResponse> {
Expand Down Expand Up @@ -148,6 +149,15 @@ interface IWorkspaceManagerService_IUpdateSSHKey extends grpc.MethodDefinition<c
responseSerialize: grpc.serialize<core_pb.UpdateSSHKeyResponse>;
responseDeserialize: grpc.deserialize<core_pb.UpdateSSHKeyResponse>;
}
interface IWorkspaceManagerService_IDescribeCluster extends grpc.MethodDefinition<core_pb.DescribeClusterRequest, core_pb.DescribeClusterResponse> {
path: "/wsman.WorkspaceManager/DescribeCluster";
requestStream: false;
responseStream: false;
requestSerialize: grpc.serialize<core_pb.DescribeClusterRequest>;
requestDeserialize: grpc.deserialize<core_pb.DescribeClusterRequest>;
responseSerialize: grpc.serialize<core_pb.DescribeClusterResponse>;
responseDeserialize: grpc.deserialize<core_pb.DescribeClusterResponse>;
}

export const WorkspaceManagerService: IWorkspaceManagerService;

Expand All @@ -165,6 +175,7 @@ export interface IWorkspaceManagerServer extends grpc.UntypedServiceImplementati
controlAdmission: grpc.handleUnaryCall<core_pb.ControlAdmissionRequest, core_pb.ControlAdmissionResponse>;
deleteVolumeSnapshot: grpc.handleUnaryCall<core_pb.DeleteVolumeSnapshotRequest, core_pb.DeleteVolumeSnapshotResponse>;
updateSSHKey: grpc.handleUnaryCall<core_pb.UpdateSSHKeyRequest, core_pb.UpdateSSHKeyResponse>;
describeCluster: grpc.handleUnaryCall<core_pb.DescribeClusterRequest, core_pb.DescribeClusterResponse>;
}

export interface IWorkspaceManagerClient {
Expand Down Expand Up @@ -206,6 +217,9 @@ export interface IWorkspaceManagerClient {
updateSSHKey(request: core_pb.UpdateSSHKeyRequest, callback: (error: grpc.ServiceError | null, response: core_pb.UpdateSSHKeyResponse) => void): grpc.ClientUnaryCall;
updateSSHKey(request: core_pb.UpdateSSHKeyRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: core_pb.UpdateSSHKeyResponse) => void): grpc.ClientUnaryCall;
updateSSHKey(request: core_pb.UpdateSSHKeyRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: core_pb.UpdateSSHKeyResponse) => void): grpc.ClientUnaryCall;
describeCluster(request: core_pb.DescribeClusterRequest, callback: (error: grpc.ServiceError | null, response: core_pb.DescribeClusterResponse) => void): grpc.ClientUnaryCall;
describeCluster(request: core_pb.DescribeClusterRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: core_pb.DescribeClusterResponse) => void): grpc.ClientUnaryCall;
describeCluster(request: core_pb.DescribeClusterRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: core_pb.DescribeClusterResponse) => void): grpc.ClientUnaryCall;
}

export class WorkspaceManagerClient extends grpc.Client implements IWorkspaceManagerClient {
Expand Down Expand Up @@ -248,4 +262,7 @@ export class WorkspaceManagerClient extends grpc.Client implements IWorkspaceMan
public updateSSHKey(request: core_pb.UpdateSSHKeyRequest, callback: (error: grpc.ServiceError | null, response: core_pb.UpdateSSHKeyResponse) => void): grpc.ClientUnaryCall;
public updateSSHKey(request: core_pb.UpdateSSHKeyRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: core_pb.UpdateSSHKeyResponse) => void): grpc.ClientUnaryCall;
public updateSSHKey(request: core_pb.UpdateSSHKeyRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: core_pb.UpdateSSHKeyResponse) => void): grpc.ClientUnaryCall;
public describeCluster(request: core_pb.DescribeClusterRequest, callback: (error: grpc.ServiceError | null, response: core_pb.DescribeClusterResponse) => void): grpc.ClientUnaryCall;
public describeCluster(request: core_pb.DescribeClusterRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: core_pb.DescribeClusterResponse) => void): grpc.ClientUnaryCall;
public describeCluster(request: core_pb.DescribeClusterRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: core_pb.DescribeClusterResponse) => void): grpc.ClientUnaryCall;
}
34 changes: 34 additions & 0 deletions components/ws-manager-api/typescript/src/core_grpc_pb.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,28 @@ function deserialize_wsman_DeleteVolumeSnapshotResponse(buffer_arg) {
return core_pb.DeleteVolumeSnapshotResponse.deserializeBinary(new Uint8Array(buffer_arg));
}

function serialize_wsman_DescribeClusterRequest(arg) {
if (!(arg instanceof core_pb.DescribeClusterRequest)) {
throw new Error('Expected argument of type wsman.DescribeClusterRequest');
}
return Buffer.from(arg.serializeBinary());
}

function deserialize_wsman_DescribeClusterRequest(buffer_arg) {
return core_pb.DescribeClusterRequest.deserializeBinary(new Uint8Array(buffer_arg));
}

function serialize_wsman_DescribeClusterResponse(arg) {
if (!(arg instanceof core_pb.DescribeClusterResponse)) {
throw new Error('Expected argument of type wsman.DescribeClusterResponse');
}
return Buffer.from(arg.serializeBinary());
}

function deserialize_wsman_DescribeClusterResponse(buffer_arg) {
return core_pb.DescribeClusterResponse.deserializeBinary(new Uint8Array(buffer_arg));
}

function serialize_wsman_DescribeWorkspaceRequest(arg) {
if (!(arg instanceof core_pb.DescribeWorkspaceRequest)) {
throw new Error('Expected argument of type wsman.DescribeWorkspaceRequest');
Expand Down Expand Up @@ -456,6 +478,18 @@ updateSSHKey: {
responseSerialize: serialize_wsman_UpdateSSHKeyResponse,
responseDeserialize: deserialize_wsman_UpdateSSHKeyResponse,
},
// describeCluster provides information about the cluster
describeCluster: {
path: '/wsman.WorkspaceManager/DescribeCluster',
requestStream: false,
responseStream: false,
requestType: core_pb.DescribeClusterRequest,
responseType: core_pb.DescribeClusterResponse,
requestSerialize: serialize_wsman_DescribeClusterRequest,
requestDeserialize: deserialize_wsman_DescribeClusterRequest,
responseSerialize: serialize_wsman_DescribeClusterResponse,
responseDeserialize: deserialize_wsman_DescribeClusterResponse,
},
};

exports.WorkspaceManagerClient = grpc.makeGenericClientConstructor(WorkspaceManagerService);
62 changes: 62 additions & 0 deletions components/ws-manager-api/typescript/src/core_pb.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1162,6 +1162,68 @@ export namespace SSHPublicKeys {
}
}

export class DescribeClusterRequest extends jspb.Message {

serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DescribeClusterRequest.AsObject;
static toObject(includeInstance: boolean, msg: DescribeClusterRequest): DescribeClusterRequest.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: DescribeClusterRequest, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DescribeClusterRequest;
static deserializeBinaryFromReader(message: DescribeClusterRequest, reader: jspb.BinaryReader): DescribeClusterRequest;
}

export namespace DescribeClusterRequest {
export type AsObject = {
}
}

export class DescribeClusterResponse extends jspb.Message {
clearWorkspaceclassesList(): void;
getWorkspaceclassesList(): Array<WorkspaceClass>;
setWorkspaceclassesList(value: Array<WorkspaceClass>): DescribeClusterResponse;
addWorkspaceclasses(value?: WorkspaceClass, index?: number): WorkspaceClass;

serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): DescribeClusterResponse.AsObject;
static toObject(includeInstance: boolean, msg: DescribeClusterResponse): DescribeClusterResponse.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: DescribeClusterResponse, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): DescribeClusterResponse;
static deserializeBinaryFromReader(message: DescribeClusterResponse, reader: jspb.BinaryReader): DescribeClusterResponse;
}

export namespace DescribeClusterResponse {
export type AsObject = {
workspaceclassesList: Array<WorkspaceClass.AsObject>,
}
}

export class WorkspaceClass extends jspb.Message {
getId(): string;
setId(value: string): WorkspaceClass;
getDisplayname(): string;
setDisplayname(value: string): WorkspaceClass;

serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): WorkspaceClass.AsObject;
static toObject(includeInstance: boolean, msg: WorkspaceClass): WorkspaceClass.AsObject;
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
static serializeBinaryToWriter(message: WorkspaceClass, writer: jspb.BinaryWriter): void;
static deserializeBinary(bytes: Uint8Array): WorkspaceClass;
static deserializeBinaryFromReader(message: WorkspaceClass, reader: jspb.BinaryReader): WorkspaceClass;
}

export namespace WorkspaceClass {
export type AsObject = {
id: string,
displayname: string,
}
}

export enum StopWorkspacePolicy {
NORMALLY = 0,
IMMEDIATELY = 1,
Expand Down
Loading