diff --git a/src/SASViyaApiClient.ts b/src/SASViyaApiClient.ts index a1aa1a1..e1a222a 100644 --- a/src/SASViyaApiClient.ts +++ b/src/SASViyaApiClient.ts @@ -191,7 +191,7 @@ export class SASViyaApiClient { /** * Creates a compute context on the given server. - * @param contextName - the name of the context to create a session on. + * @param contextName - the name of the context to be created. * @param launchContextName - the name of the launcher context used by the compute service. * @param sharedAccountId - the ID of the account to run the servers for this context as. * @param autoExecLines - the lines of code to execute during session initialization. @@ -202,7 +202,7 @@ export class SASViyaApiClient { contextName: string, launchContextName: string, sharedAccountId: string, - autoExecLines: string, + autoExecLines: string[], authorizedUsers: string[], accessToken?: string ) { @@ -228,9 +228,6 @@ export class SASViyaApiClient { const requestBody: any = { name: contextName, - environment: { - autoExecLines: autoExecLines || '' - }, launchContext: { contextName: launchContextName }, @@ -246,6 +243,12 @@ export class SASViyaApiClient { requestBody['authorizeAllAuthenticatedUsers'] = true } + if (autoExecLines) { + requestBody.environment = { autoExecLines } + } + + console.log('Body', requestBody) + const createContextRequest: RequestInit = { method: 'POST', headers, @@ -260,6 +263,35 @@ export class SASViyaApiClient { return context } + /** + * Deletes a compute context on the given server. + * @param contextId - the ID of the context to be deleted. + * @param accessToken - an access token for an authorized user. + */ + public async deleteContext(contextId: string, accessToken?: string) { + if (!contextId) { + throw new Error('Invalid context ID') + } + + const headers: any = { + 'Content-Type': 'application/json' + } + + if (accessToken) { + headers.Authorization = `Bearer ${accessToken}` + } + + const deleteContextRequest: RequestInit = { + method: 'DELETE', + headers + } + + return await this.request( + `${this.serverUrl}/compute/contexts/${contextId}`, + deleteContextRequest + ) + } + /** * Executes code on the current SAS Viya server. * @param fileName - a name for the file being submitted for execution. diff --git a/src/SASjs.ts b/src/SASjs.ts index f9b1b58..308c42d 100644 --- a/src/SASjs.ts +++ b/src/SASjs.ts @@ -111,7 +111,7 @@ export default class SASjs { contextName: string, launchContextName: string, sharedAccountId: string, - autoExecLines: string, + autoExecLines: string[], authorizedUsers: string[], accessToken: string ) { @@ -128,6 +128,13 @@ export default class SASjs { ) } + public async deleteContext(contextId: string) { + if (this.sasjsConfig.serverType !== ServerType.SASViya) { + throw new Error('This operation is only supported on SAS Viya servers.') + } + return await this.sasViyaApiClient!.deleteContext(contextId) + } + public async createSession(contextName: string, accessToken: string) { if (this.sasjsConfig.serverType !== ServerType.SASViya) { throw new Error('This operation is only supported on SAS Viya servers.')