58 %macro mv_jobexecute(path=0
60 ,contextName=SAS Job Execution compute context
61 ,access_token_var=ACCESS_TOKEN
62 ,grant_type=sas_services
64 ,outds=work.mv_jobexecute
67 %
if &grant_type=detect %then %
do;
68 %
if %symexist(&access_token_var) %then %let grant_type=authorization_code;
69 %
else %let grant_type=sas_services;
71 %
if &grant_type=sas_services %then %
do;
72 %let oauth_bearer=oauth_bearer=sas_services;
73 %let &access_token_var=;
76 %mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password
77 and &grant_type ne sas_services
80 ,msg=%str(Invalid value
for grant_type: &grant_type)
83 %mp_abort(iftrue=(
"&path"=
"0")
85 ,msg=%str(Path not provided)
87 %mp_abort(iftrue=(
"&name"=
"0")
89 ,msg=%str(Job Name not provided)
92 options noquotelenmax;
95 %let base_uri=%mf_getplatform(VIYARESTAPI);
99 %let foldermembers=&syslast;
100 %mv_getfoldermembers(root=&path
101 ,access_token_var=&access_token_var
102 ,grant_type=&grant_type
103 ,outds=&foldermembers
110 if name=
"&name" and uri=:
'/jobDefinitions/definitions'
111 then call symputx(
'joburi',uri);
114 %mp_abort(iftrue=(
"&joburi"=
"0")
116 ,msg=%str(Job &path/&name not found)
120 %local fname0 fname1;
121 %let fname0=%mf_getuniquefileref();
122 %let fname1=%mf_getuniquefileref();
126 length joburi contextname $128 paramstring $32765;
127 joburi=quote(trim(symget(
'joburi')));
128 contextname=quote(trim(symget(
'contextname')));
129 _program=quote(
"&path/&name");
130 paramstring=symget(
'paramstring');
131 put
'{"jobDefinitionUri":' joburi ;
132 put
' ,"arguments":{"_contextName":' contextname;
133 put
' ,"_program":' _program;
134 if paramstring ne
"0" then
do;
135 put
' ,' paramstring;
140 proc http method=
'POST' in=&fname0 out=&fname1 &oauth_bearer
141 url=
"&base_uri/jobExecution/jobs";
142 headers
"Content-Type"=
"application/vnd.sas.job.execution.job.request+json"
143 "Accept"=
"application/vnd.sas.job.execution.job+json"
144 %
if &grant_type=authorization_code %then %
do;
145 "Authorization"=
"Bearer &&&access_token_var"
149 %
if &SYS_PROCHTTP_STATUS_CODE ne 200 and &SYS_PROCHTTP_STATUS_CODE ne 201 %then
151 data _null_;infile &fname0;input;putlog _infile_;run;
152 data _null_;infile &fname1;input;putlog _infile_;run;
153 %mp_abort(mac=&sysmacroname
154 ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)
159 %let libref=%mf_getuniquelibref();
160 libname &libref JSON fileref=&fname1;
164 _program=
"&path/&name";
168 filename &fname0 clear;
169 filename &fname1 clear;