1
0
mirror of https://github.com/sasjs/adapter.git synced 2026-01-03 10:40:06 +00:00

Compare commits

..

14 Commits

Author SHA1 Message Date
Yury Shkoda
4957bc5b05 Merge pull request #66 from sasjs/create-context
feat(context): add the ability to create and delete a compute context
2020-09-09 09:46:38 +03:00
Krishna Acondy
f6b1eecb42 chore(*): remove console log, add comments 2020-09-09 07:36:27 +01:00
Krishna Acondy
f86d20b723 Merge branch 'create-context' of https://github.com/sasjs/adapter into create-context 2020-09-08 18:55:33 +01:00
Krishna Acondy
7a1cce193e chore(delete-context): add punctuation to error message 2020-09-08 18:55:30 +01:00
Krishna Acondy
05539fff11 Merge branch 'master' into create-context 2020-09-08 18:53:25 +01:00
Krishna Acondy
58d69a62d6 feat(delete-context): add the ability to delete a compute context 2020-09-08 18:29:12 +01:00
Krishna Acondy
c9c9754916 fix(create-context): change autoExecLines to an array 2020-09-08 18:25:36 +01:00
Krishna Acondy
07695bdb85 chore(create-context): update TSDoc comment 2020-09-06 21:35:56 +01:00
Krishna Acondy
26c8946fd5 feat(create-context): add list of authorized users 2020-09-06 21:32:48 +01:00
Krishna Acondy
fc1d54d105 feat(create-context): add launch context name 2020-09-06 21:28:24 +01:00
Krishna Acondy
a318d61f83 feat(create-context): add launch context name 2020-09-06 21:27:44 +01:00
Krishna Acondy
cc5a0cbec3 feat(create-context): allow all authenticated users to use context 2020-09-06 21:10:08 +01:00
Krishna Acondy
d932d9ea0a chore(*): fix code style 2020-09-06 21:05:05 +01:00
Krishna Acondy
e3edace882 feat(create-context): add the ability to create a compute context 2020-09-06 21:01:04 +01:00
2 changed files with 143 additions and 0 deletions

View File

@@ -193,6 +193,107 @@ export class SASViyaApiClient {
return createdSession
}
/**
* Creates a compute context on the given server.
* @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.
* @param authorizedUsers - an optional list of authorized user IDs.
* @param accessToken - an access token for an authorized user.
*/
public async createContext(
contextName: string,
launchContextName: string,
sharedAccountId: string,
autoExecLines: string[],
authorizedUsers: string[],
accessToken?: string
) {
if (!contextName) {
throw new Error('Missing context name.')
}
if (!launchContextName) {
throw new Error('Missing launch 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 requestBody: any = {
name: contextName,
launchContext: {
contextName: launchContextName
},
attributes: {
reuseServerProcesses: true,
runServerAs: sharedAccountId
}
}
if (authorizedUsers && authorizedUsers.length) {
requestBody['authorizedUsers'] = authorizedUsers
} else {
requestBody['authorizeAllAuthenticatedUsers'] = true
}
if (autoExecLines) {
requestBody.environment = { autoExecLines }
}
const createContextRequest: RequestInit = {
method: 'POST',
headers,
body: JSON.stringify(requestBody)
}
const { result: context } = await this.request<Context>(
`${this.serverUrl}/compute/contexts`,
createContextRequest
)
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<Context>(
`${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.

View File

@@ -107,6 +107,48 @@ export default class SASjs {
return await this.sasViyaApiClient!.getExecutableContexts(accessToken)
}
/**
* Creates a compute context on the given server.
* @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.
* @param authorizedUsers - an optional list of authorized user IDs.
* @param accessToken - an access token for an authorized user.
*/
public async createContext(
contextName: string,
launchContextName: string,
sharedAccountId: string,
autoExecLines: string[],
authorizedUsers: 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,
launchContextName,
sharedAccountId,
autoExecLines,
authorizedUsers,
accessToken
)
}
/**
* 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 (this.sasjsConfig.serverType !== ServerType.SASViya) {
throw new Error('This operation is only supported on SAS Viya servers.')
}
return await this.sasViyaApiClient!.deleteContext(contextId, 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.')