1
0
mirror of https://github.com/sasjs/adapter.git synced 2025-12-11 01:14:36 +00:00

feat(create-context): add the ability to create a compute context

This commit is contained in:
Krishna Acondy
2020-09-06 21:01:04 +01:00
parent 1f970e1102
commit e3edace882
2 changed files with 59 additions and 0 deletions

View File

@@ -189,6 +189,58 @@ export class SASViyaApiClient {
return createdSession
}
/**
* Creates a compute context on the given server.
* @param contextName - the name of the context to create a session on.
* @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.
* @param accessToken - an access token for an authorized user.
*/
public async createContext(
contextName: string,
sharedAccountId: string,
autoExecLines: string,
accessToken?: string
) {
if (!contextName) {
throw new Error('Missing context name.')
}
if (!sharedAccountId) {
throw new Error('Missing shared account ID.')
}
const headers: any = {
'Content-Type': 'application/json'
}
if (accessToken) {
headers.Authorization = `Bearer ${accessToken}`
}
const createContextRequest: RequestInit = {
method: 'POST',
headers,
body: JSON.stringify({
name: contextName,
environment: {
autoExecLines: autoExecLines || ''
},
attributes: {
reuseServerProcesses: true,
runServerAs: sharedAccountId
}
})
}
const { result: context } = await this.request<Context>(
`${this.serverUrl}/compute/contexts`,
createContextRequest
)
return context
}
/**
* Executes code on the current SAS Viya server.
* @param fileName - a name for the file being submitted for execution.

View File

@@ -107,6 +107,13 @@ export default class SASjs {
return await this.sasViyaApiClient!.getExecutableContexts(accessToken)
}
public async createContext(contextName: string, sharedAccountId: string, autoExecLines: string, accessToken: string) {
if (this.sasjsConfig.serverType !== ServerType.SASViya) {
throw new Error('This operation is only supported on SAS Viya servers.')
}
return await this.sasViyaApiClient!.createContext(contextName, sharedAccountId, autoExecLines, accessToken)
}
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.')