Feature/viewlet cmsapis (#4312)

* first set of changes to experiment the registration of cms related apis

* Adding cms service entry to workbench

* Adding basic functionality for add remove reg servers and group

* Returning relative path as part of RegServerResult as string

* Removing the cms apis from core. Having mssql extension expose them for cms extension

* Propogating the backend name changes to apis

* Fixing some missing sqlops references

* Adding a sqltools service version with CMS apis available
This commit is contained in:
udeeshagautam
2019-03-22 17:24:45 -07:00
committed by Anthony Dresser
parent d00c3780a6
commit ddce7731b9
9 changed files with 283 additions and 7 deletions

View File

@@ -0,0 +1,102 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import * as azdata from 'azdata';
import * as constants from '../constants';
import * as contracts from '../contracts';
import { AppContext } from '../appContext';
import { ConnectParams } from 'dataprotocol-client/lib/protocol';
import { SqlOpsDataClient } from 'dataprotocol-client';
import { ListRegisteredServersResult } from '../api/mssqlapis';
export class CmsService {
constructor(private appContext: AppContext, private client: SqlOpsDataClient) {
this.appContext.registerService<CmsService>(constants.CmsService, this);
}
createCmsServer(name: string, description:string, connectiondetails: azdata.ConnectionInfo, ownerUri: string): Thenable<ListRegisteredServersResult> {
let connectparams: ConnectParams = { ownerUri: ownerUri, connection: connectiondetails };
let cmsparams: contracts.CreateCentralManagementServerParams = { registeredServerName: name, registeredServerDescription: description, connectParams: connectparams};
return this.client.sendRequest(contracts.CreateCentralManagementServerRequest.type, cmsparams).then(
r => {
return r;
},
e => {
this.client.logFailedRequest(contracts.CreateCentralManagementServerRequest.type, e);
return Promise.resolve(undefined);
}
);
}
getRegisteredServers(ownerUri: string, relativePath: string): Thenable<ListRegisteredServersResult> {
let params: contracts.ListRegisteredServersParams = { parentOwnerUri: ownerUri, relativePath: relativePath };
return this.client.sendRequest(contracts.ListRegisteredServersRequest.type, params).then(
r => {
return r;
},
e => {
this.client.logFailedRequest(contracts.ListRegisteredServersRequest.type, e);
return Promise.resolve(undefined);
}
);
}
addRegisteredServer (ownerUri: string, relativePath: string, registeredServerName: string, registeredServerDescription:string, connectionDetails:azdata.ConnectionInfo): Thenable<boolean> {
let params: contracts.AddRegisteredServerParams = { parentOwnerUri: ownerUri, relativePath: relativePath, registeredServerName: registeredServerName, registeredServerDescription: registeredServerDescription, registeredServerConnectionDetails: connectionDetails };
return this.client.sendRequest(contracts.AddRegisteredServerRequest.type, params).then(
r => {
return r;
},
e => {
this.client.logFailedRequest(contracts.AddRegisteredServerRequest.type, e);
return Promise.resolve(undefined);
}
);
}
removeRegisteredServer (ownerUri: string, relativePath: string, registeredServerName: string): Thenable<boolean> {
let params: contracts.RemoveRegisteredServerParams = { parentOwnerUri: ownerUri, relativePath: relativePath, registeredServerName: registeredServerName };
return this.client.sendRequest(contracts.RemoveRegisteredServerRequest.type, params).then(
r => {
return r;
},
e => {
this.client.logFailedRequest(contracts.RemoveRegisteredServerRequest.type, e);
return Promise.resolve(undefined);
}
);
}
addServerGroup (ownerUri: string, relativePath: string, groupName: string, groupDescription:string): Thenable<boolean> {
let params: contracts.AddServerGroupParams = { parentOwnerUri: ownerUri, relativePath: relativePath, groupName: groupName, groupDescription: groupDescription };
return this.client.sendRequest(contracts.AddServerGroupRequest.type, params).then(
r => {
return r;
},
e => {
this.client.logFailedRequest(contracts.AddServerGroupRequest.type, e);
return Promise.resolve(undefined);
}
);
}
removeServerGroup (ownerUri: string, relativePath: string, groupName: string): Thenable<boolean> {
let params: contracts.RemoveServerGroupParams = { parentOwnerUri: ownerUri, relativePath: relativePath, groupName: groupName };
return this.client.sendRequest(contracts.RemoveServerGroupRequest.type, params).then(
r => {
return r;
},
e => {
this.client.logFailedRequest(contracts.RemoveServerGroupRequest.type, e);
return Promise.resolve(undefined);
}
);
}
}