Assessment core extension (#10154)

This commit is contained in:
Vladimir Chernov
2020-05-29 01:17:41 +03:00
committed by GitHub
parent 0d544660e0
commit 8288360cc4
47 changed files with 1813 additions and 58 deletions

View File

@@ -746,7 +746,7 @@ export class AgentServicesFeature extends SqlOpsFeature<undefined> {
}
);
};
// Job management methods
return azdata.dataprotocol.registerAgentServicesProvider({
providerId: client.providerId,
getJobs,
@@ -852,3 +852,72 @@ export class SerializationFeature extends SqlOpsFeature<undefined> {
});
}
}
export class SqlAssessmentServicesFeature extends SqlOpsFeature<undefined> {
private static readonly messagesTypes: RPCMessageType[] = [
contracts.SqlAssessmentInvokeRequest.type,
contracts.GetSqlAssessmentItemsRequest.type
];
constructor(client: SqlOpsDataClient) {
super(client, SqlAssessmentServicesFeature.messagesTypes);
}
public fillClientCapabilities(capabilities: ClientCapabilities): void {
}
public initialize(capabilities: ServerCapabilities): void {
this.register(this.messages, {
id: UUID.generateUuid(),
registerOptions: undefined
});
}
protected registerProvider(options: undefined): Disposable {
const client = this._client;
let assessmentInvoke = async (ownerUri: string, targetType: azdata.sqlAssessment.SqlAssessmentTargetType): Promise<azdata.SqlAssessmentResult> => {
let params: contracts.SqlAssessmentParams = { ownerUri: ownerUri, targetType: targetType };
try {
return client.sendRequest(contracts.SqlAssessmentInvokeRequest.type, params);
}
catch (e) {
client.logFailedRequest(contracts.SqlAssessmentInvokeRequest.type, e);
}
return undefined;
};
let getAssessmentItems = async (ownerUri: string, targetType: azdata.sqlAssessment.SqlAssessmentTargetType): Promise<azdata.SqlAssessmentResult> => {
let params: contracts.SqlAssessmentParams = { ownerUri: ownerUri, targetType: targetType };
try {
return client.sendRequest(contracts.GetSqlAssessmentItemsRequest.type, params);
}
catch (e) {
client.logFailedRequest(contracts.GetSqlAssessmentItemsRequest.type, e);
}
return undefined;
};
let generateAssessmentScript = async (items: azdata.SqlAssessmentResultItem[]): Promise<azdata.ResultStatus> => {
let params: contracts.GenerateSqlAssessmentScriptParams = { items: items, taskExecutionMode: azdata.TaskExecutionMode.script, targetServerName: '', targetDatabaseName: '' };
try {
return client.sendRequest(contracts.GenerateSqlAssessmentScriptRequest.type, params);
}
catch (e) {
client.logFailedRequest(contracts.GenerateSqlAssessmentScriptRequest.type, e);
}
return undefined;
};
return azdata.dataprotocol.registerSqlAssessmentServicesProvider({
providerId: client.providerId,
assessmentInvoke,
getAssessmentItems,
generateAssessmentScript
});
}
}