59%macro mv_jobexecute(path=0
61 ,contextName=SAS Job Execution compute context
62 ,access_token_var=ACCESS_TOKEN
63 ,grant_type=sas_services
65 ,outds=work.mv_jobexecute
69%
if &mdebug=1 %then %
do;
70 %put &sysmacroname entry vars:;
76%
if &grant_type=detect %then %
do;
77 %
if %symexist(&access_token_var) %then %let grant_type=authorization_code;
78 %
else %let grant_type=sas_services;
80%
if &grant_type=sas_services %then %
do;
81 %let oauth_bearer=oauth_bearer=sas_services;
82 %let &access_token_var=;
85%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password
86 and &grant_type ne sas_services
89 ,msg=%str(Invalid value
for grant_type: &grant_type)
92%mp_abort(iftrue=(
"&path"=
"0")
94 ,msg=%str(Path not provided)
96%mp_abort(iftrue=(
"&name"=
"0")
98 ,msg=%str(Job Name not provided)
101options noquotelenmax;
104%let base_uri=%mf_getplatform(VIYARESTAPI);
108%let foldermembers=&syslast;
109%mv_getfoldermembers(root=&path
110 ,access_token_var=&access_token_var
111 ,grant_type=&grant_type
112 ,outds=&foldermembers
118 length name uri $512;
119 call missing(name,uri);
121 if name=
"&name" and uri=:
'/jobDefinitions/definitions'
122 then call symputx(
'joburi',uri);
125%mp_abort(iftrue=(
"&joburi"=
"0")
127 ,msg=%str(Job &path/&name not found)
132%let fname0=%mf_getuniquefileref();
133%let fname1=%mf_getuniquefileref();
137 length joburi contextname $128 paramstring $32765;
138 joburi=quote(trim(symget(
'joburi')));
139 contextname=quote(trim(symget(
'contextname')));
140 _program=quote(
"&path/&name");
141 paramstring=symget(
'paramstring');
142 put
'{"jobDefinitionUri":' joburi ;
143 put
' ,"arguments":{"_contextName":' contextname;
144 put
' ,"_program":' _program;
145 if paramstring ne
"0" then
do;
146 put
' ,' paramstring;
151proc http method=
'POST' in=&fname0 out=&fname1 &oauth_bearer
152 url=
"&base_uri/jobExecution/jobs";
153 headers
"Content-Type"=
"application/vnd.sas.job.execution.job.request+json"
154 "Accept"=
"application/vnd.sas.job.execution.job+json"
155 %
if &grant_type=authorization_code %then %
do;
156 "Authorization"=
"Bearer &&&access_token_var"
160%
if &SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 201 %then
162 data _null_;infile &fname0;input;putlog _infile_;run;
163 data _null_;infile &fname1;input;putlog _infile_;run;
164 %mp_abort(mac=&sysmacroname
165 ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)
170%let libref=%mf_getuniquelibref();
171libname &libref JSON fileref=&fname1;
175 _program=
"&path/&name";
178%
if &mdebug=1 %then %
do;
179 %put &sysmacroname exit vars:;
184 filename &fname0 clear;
185 filename &fname1 clear;