mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-14 01:25:37 -05:00
* WIP * wip * SQL Agent wip * wip * Initial control host (wip) * Initial hookup of SQL Agent service to job component * Update agent package.json * Hook up getJobs call * A couple job view updates * Add some more agent views * Rename some 'agent' classes to 'jobManagement' * job history page (#852) * added back button, run actions and overview accordion * refactoring * overview table complete * fixed the dropdown arrow for the overview section * added table for prev job list * fixed agent job result type * code cleaning and code review comments * fixed yarn.lock conflicts * added function for job history * changed vscode-languageclient version * changed yarn lock file * fixed yarn lock file * fixed yarn file * fixed css paths * added images to packaging step * fix resource path for packaging * Switch back getJobs return type * Make enum const * Remove sqlops const * WIP * WIP * Feature/agent1 adbist (#899) * added back button, run actions and overview accordion * refactoring * overview table complete * fixed the dropdown arrow for the overview section * added table for prev job list * fixed agent job result type * code cleaning and code review comments * fixed yarn.lock conflicts * added function for job history * changed vscode-languageclient version * changed yarn lock file * fixed yarn lock file * fixed yarn file * fixed css paths * added images to packaging step * fix resource path for packaging * added steps lists * fixed style and dimensions * fixed conflicts * implemented job list * added the Date and Status columns * update yarn files * merged feature/agent1 * added theme styling for light theme * changed yarn lock files * made job history page css more specific * Add visiblity check to job view * Clean up jobs styling and call getJobHistory * Add more Job Table styling * Enable detail view in job table * Use updated slickgrid repo * vbumped slickgrid * Convert rowdetail slickgrid plug to TypeScript * Feature/agent1 adbist (#945) * added back button, run actions and overview accordion * refactoring * overview table complete * fixed the dropdown arrow for the overview section * added table for prev job list * fixed agent job result type * code cleaning and code review comments * fixed yarn.lock conflicts * added function for job history * changed vscode-languageclient version * changed yarn lock file * fixed yarn lock file * fixed yarn file * fixed css paths * added images to packaging step * fix resource path for packaging * added steps lists * fixed style and dimensions * fixed conflicts * implemented job list * added the Date and Status columns * update yarn files * merged feature/agent1 * added theme styling for light theme * changed yarn lock files * added method signatures for job history with DMP * added methods for job running * added job actions to sqlops * Refer to dataprotocol from feature/agentDmp1 branch * Update SQL Tools version to 1.4.0-alpha.13 * Change Feb to March in release note prompt * SQL Agent extension metadata * add feature explicitly in client creation * Update Agent job registration * Update package.json * Feature/agent1 adbist (#955) * added back button, run actions and overview accordion * refactoring * overview table complete * fixed the dropdown arrow for the overview section * added table for prev job list * fixed agent job result type * code cleaning and code review comments * fixed yarn.lock conflicts * added function for job history * changed vscode-languageclient version * changed yarn lock file * fixed yarn lock file * fixed yarn file * fixed css paths * added images to packaging step * fix resource path for packaging * added steps lists * fixed style and dimensions * fixed conflicts * implemented job list * added the Date and Status columns * update yarn files * merged feature/agent1 * added theme styling for light theme * changed yarn lock files * added method signatures for job history with DMP * added methods for job running * added job actions to sqlops * navigation works but is really slow to load data * Add jobs view icon * Misc. cleanups
180 lines
5.2 KiB
TypeScript
180 lines
5.2 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
import { NotificationType, ServerOptions, RequestType, RPCMessageType, ClientCapabilities, ServerCapabilities } from 'vscode-languageclient';
|
|
import { ITelemetryEventProperties, ITelemetryEventMeasures } from '../telemetry';
|
|
import { Runtime } from '../platform';
|
|
import { SqlOpsFeature, SqlOpsDataClient } from 'dataprotocol-client';
|
|
import * as sqlops from 'sqlops';
|
|
import * as UUID from 'vscode-languageclient/lib/utils/uuid';
|
|
import { Disposable } from 'vscode';
|
|
|
|
// ------------------------------- < Telemetry Sent Event > ------------------------------------
|
|
|
|
/**
|
|
* Event sent when the language service send a telemetry event
|
|
*/
|
|
export namespace TelemetryNotification {
|
|
export const type = new NotificationType<TelemetryParams, void>('telemetry/sqlevent');
|
|
}
|
|
|
|
/**
|
|
* Update event parameters
|
|
*/
|
|
export class TelemetryParams {
|
|
public params: {
|
|
eventName: string;
|
|
properties: ITelemetryEventProperties;
|
|
measures: ITelemetryEventMeasures;
|
|
};
|
|
}
|
|
|
|
// ------------------------------- </ Telemetry Sent Event > ----------------------------------
|
|
|
|
// ------------------------------- < Status Event > ------------------------------------
|
|
|
|
/**
|
|
* Event sent when the language service send a status change event
|
|
*/
|
|
export namespace StatusChangedNotification {
|
|
export const type = new NotificationType<StatusChangeParams, void>('textDocument/statusChanged');
|
|
}
|
|
|
|
/**
|
|
* Update event parameters
|
|
*/
|
|
export class StatusChangeParams {
|
|
/**
|
|
* URI identifying the text document
|
|
*/
|
|
public ownerUri: string;
|
|
|
|
/**
|
|
* The new status of the document
|
|
*/
|
|
public status: string;
|
|
}
|
|
|
|
// ------------------------------- </ Status Sent Event > ----------------------------------
|
|
|
|
export interface ILanguageClientHelper {
|
|
createServerOptions(servicePath: string, runtimeId?: Runtime): ServerOptions;
|
|
}
|
|
|
|
// Job Management types
|
|
export interface AgentJobsParams {
|
|
ownerUri: string;
|
|
jobId: string;
|
|
}
|
|
|
|
export interface AgentJobsResult {
|
|
succeeded: boolean;
|
|
errorMessage: string;
|
|
jobs: sqlops.AgentJobInfo[];
|
|
}
|
|
|
|
export interface AgentJobHistoryParams {
|
|
ownerUri: string;
|
|
jobId: string;
|
|
}
|
|
|
|
export interface AgentJobHistoryResult {
|
|
succeeded: boolean;
|
|
errorMessage: string;
|
|
jobs: sqlops.AgentJobHistoryInfo[];
|
|
}
|
|
|
|
export interface AgentJobActionParams {
|
|
ownerUri: string;
|
|
jobName: string;
|
|
action: string;
|
|
}
|
|
|
|
export interface AgentJobActionResult {
|
|
succeeded: boolean;
|
|
errorMessage: string;
|
|
}
|
|
|
|
export namespace AgentJobsRequest {
|
|
export const type = new RequestType<AgentJobsParams, AgentJobsResult, void, void>('agent/jobs');
|
|
}
|
|
|
|
export namespace AgentJobHistoryRequest {
|
|
export const type = new RequestType<AgentJobHistoryParams, AgentJobHistoryResult, void, void>('agent/jobhistory');
|
|
}
|
|
|
|
|
|
export namespace AgentJobActionRequest {
|
|
export const type = new RequestType<AgentJobActionParams, AgentJobActionResult, void, void>('agent/jobaction');
|
|
}
|
|
|
|
export class AgentServicesFeature extends SqlOpsFeature<undefined> {
|
|
private static readonly messagesTypes: RPCMessageType[] = [
|
|
AgentJobsRequest.type,
|
|
AgentJobHistoryRequest.type,
|
|
AgentJobActionRequest.type
|
|
];
|
|
|
|
constructor(client: SqlOpsDataClient) {
|
|
super(client, AgentServicesFeature.messagesTypes);
|
|
}
|
|
|
|
public fillClientCapabilities(capabilities: ClientCapabilities): void {
|
|
// this isn't explicitly necessary
|
|
// ensure(ensure(capabilities, 'connection')!, 'agentServices')!.dynamicRegistration = true;
|
|
}
|
|
|
|
public initialize(capabilities: ServerCapabilities): void {
|
|
this.register(this.messages, {
|
|
id: UUID.generateUuid(),
|
|
registerOptions: undefined
|
|
});
|
|
}
|
|
|
|
protected registerProvider(options: undefined): Disposable {
|
|
const client = this._client;
|
|
|
|
let getJobs = (ownerUri: string): Thenable<sqlops.AgentJobsResult> => {
|
|
let params: AgentJobsParams = { ownerUri: ownerUri, jobId: null };
|
|
return client.sendRequest(AgentJobsRequest.type, params).then(
|
|
r => r,
|
|
e => {
|
|
client.logFailedRequest(AgentJobsRequest.type, e);
|
|
return Promise.resolve(undefined);
|
|
}
|
|
);
|
|
};
|
|
|
|
let getJobHistory = (connectionUri: string, jobID: string): Thenable<sqlops.AgentJobHistoryResult> => {
|
|
let params: AgentJobHistoryParams = { ownerUri: connectionUri, jobId: jobID };
|
|
|
|
return client.sendRequest(AgentJobHistoryRequest.type, params).then(
|
|
r => r,
|
|
e => {
|
|
client.logFailedRequest(AgentJobHistoryRequest.type, e);
|
|
return Promise.resolve(undefined);
|
|
}
|
|
);
|
|
};
|
|
|
|
let jobAction = (connectionUri: string, jobName: string, action: string): Thenable<sqlops.AgentJobActionResult> => {
|
|
let params: AgentJobActionParams = { ownerUri: connectionUri, jobName: jobName, action: action };
|
|
return client.sendRequest(AgentJobActionRequest.type, params).then(
|
|
r => r,
|
|
e => {
|
|
client.logFailedRequest(AgentJobActionRequest.type, e);
|
|
return Promise.resolve(undefined);
|
|
}
|
|
);
|
|
};
|
|
|
|
return sqlops.dataprotocol.registerAgentServicesProvider({
|
|
providerId: client.providerId,
|
|
getJobs,
|
|
getJobHistory,
|
|
jobAction
|
|
});
|
|
}
|
|
}
|