mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-05 03:30:05 +00:00
feat(start-compute-job): add API that starts a compute job and immediately returns the session
This commit is contained in:
@@ -153,6 +153,7 @@ export class SASViyaApiClient {
|
||||
context.name,
|
||||
accessToken,
|
||||
null,
|
||||
true,
|
||||
true
|
||||
).catch(() => null)
|
||||
})
|
||||
@@ -425,7 +426,8 @@ export class SASViyaApiClient {
|
||||
contextName: string,
|
||||
accessToken?: string,
|
||||
data = null,
|
||||
expectWebout = false
|
||||
expectWebout = false,
|
||||
waitForResult = true
|
||||
): Promise<any> {
|
||||
try {
|
||||
const headers: any = {
|
||||
@@ -509,6 +511,10 @@ export class SASViyaApiClient {
|
||||
postJobRequest
|
||||
)
|
||||
|
||||
if (!waitForResult) {
|
||||
return session
|
||||
}
|
||||
|
||||
if (this.debug) {
|
||||
console.log(`Job has been submitted for '${fileName}'.`)
|
||||
console.log(
|
||||
@@ -592,7 +598,9 @@ export class SASViyaApiClient {
|
||||
linesOfCode,
|
||||
contextName,
|
||||
accessToken,
|
||||
data
|
||||
data,
|
||||
false,
|
||||
true
|
||||
)
|
||||
} else {
|
||||
throw e
|
||||
@@ -909,9 +917,9 @@ export class SASViyaApiClient {
|
||||
public async executeComputeJob(
|
||||
sasJob: string,
|
||||
contextName: string,
|
||||
debug: boolean,
|
||||
data?: any,
|
||||
accessToken?: string
|
||||
accessToken?: string,
|
||||
waitForResult = true
|
||||
) {
|
||||
if (isRelativePath(sasJob) && !this.rootFolderName) {
|
||||
throw new Error(
|
||||
@@ -992,7 +1000,8 @@ export class SASViyaApiClient {
|
||||
contextName,
|
||||
accessToken,
|
||||
data,
|
||||
true
|
||||
true,
|
||||
waitForResult
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
47
src/SASjs.ts
47
src/SASjs.ts
@@ -670,6 +670,48 @@ export default class SASjs {
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Kicks off execution of the given job via the compute API.
|
||||
* @returns an object representing the compute session created for the given job.
|
||||
* @param sasJob - the path to the SAS program (ultimately resolves to
|
||||
* the SAS `_program` parameter to run a Job Definition or SAS 9 Stored
|
||||
* Process). Is prepended at runtime with the value of `appLoc`.
|
||||
* @param data - a JSON object containing one or more tables to be sent to
|
||||
* SAS. Can be `null` if no inputs required.
|
||||
* @param config - provide any changes to the config here, for instance to
|
||||
* enable/disable `debug`. Any change provided will override the global config,
|
||||
* for that particular function call.
|
||||
* @param accessToken - a valid access token that is authorised to execute compute jobs.
|
||||
* The access token is not required when the user is authenticated via the browser.
|
||||
*/
|
||||
public async startComputeJob(
|
||||
sasJob: string,
|
||||
data: any,
|
||||
config: any = {},
|
||||
accessToken?: string
|
||||
) {
|
||||
config = {
|
||||
...this.sasjsConfig,
|
||||
...config
|
||||
}
|
||||
|
||||
this.isMethodSupported('startComputeJob', ServerType.SASViya)
|
||||
if (!config.contextName) {
|
||||
throw new Error(
|
||||
'Context name is undefined. Please set a `contextName` in your SASjs or override config.'
|
||||
)
|
||||
}
|
||||
|
||||
const waitForResult = false
|
||||
return this.sasViyaApiClient?.executeComputeJob(
|
||||
sasJob,
|
||||
config.contextName,
|
||||
data,
|
||||
accessToken,
|
||||
waitForResult
|
||||
)
|
||||
}
|
||||
|
||||
private async executeJobViaComputeApi(
|
||||
sasJob: string,
|
||||
data: any,
|
||||
@@ -689,13 +731,14 @@ export default class SASjs {
|
||||
|
||||
sasjsWaitingRequest.requestPromise.promise = new Promise(
|
||||
async (resolve, reject) => {
|
||||
const waitForResult = true
|
||||
this.sasViyaApiClient
|
||||
?.executeComputeJob(
|
||||
sasJob,
|
||||
config.contextName,
|
||||
config.debug,
|
||||
data,
|
||||
accessToken
|
||||
accessToken,
|
||||
waitForResult
|
||||
)
|
||||
.then((response) => {
|
||||
if (!config.debug) {
|
||||
|
||||
Reference in New Issue
Block a user