@Sundaresh1 I wanted to try it out, so put the following, pls see below. But not output is generated and we have Python on our environment. Am I not executing your code in a right way?
%global error_flag;
%global error_desc;
%macro _env_check_python_compute(errorFlagName, errorFlagDesc);
data _null_;
/* ----------------------------------------------------------------------------------------------*
Obtain system options and store them inside macro variables.
*----------------------------------------------------------------------------------------------- */
proc_pypath = sysget('PROC_PYPATH');
viya_lockdown_user_methods = sysget('VIYA_LOCKDOWN_USER_METHODS');
compute_enable = sysget('COMPUTESERVER_LOCKDOWN_ENABLE');
does_file_at_pypath_exist=fileexist(proc_pypath);
/* ----------------------------------------------------------------------------------------------*
Let's start from the end
Check if PROC_PYPATH exists
*----------------------------------------------------------------------------------------------- */
if proc_pypath = "" then do;
call symputx(&errorFlagName.,1);
call symput(&errorFlagDesc., "PROC_PYPATH environment variable not populated, indicating that Python may not have been configured.");
end;
else do;
/* -------------------------------------------------------------------------------------------*
Check if PROC_PYPATH points to a valid file
*-------------------------------------------------------------------------------------------- */
if does_file_at_pypath_exist = 0 then do;
call symputx(&errorFlagName.,1);
call symput(&errorFlagDesc., "The file referred by PROC_PYPATH does not exist, indicating path to Python may have been configured incorrectly.");
end;
else do;
/* -----------------------------------------------------------------------------------------*
Check if COMPUTESERVER_LOCKDOWN_ENABLE = 0, indicating a permissive (and potentially
insecure) environment.
*------------------------------------------------------------------------------------------ */
if compute_enable = '1' then do;
/* --------------------------------------------------------------------------------------*
Check if PYTHON and SOCKET appear in viya_lockdown_user_methods.
There's an additional PYTHON_EMBED option which is included as a strict check (enabling
Python to run in a submit block).
*--------------------------------------------------------------------------------------- */
if index(lowcase(viya_lockdown_user_methods),"python") > 0 and index(lowcase(viya_lockdown_user_methods),"socket") > 0 and index(lowcase(viya_lockdown_user_methods),"python_embed") > 0 then do;
call symput("PROC_PYPATH", proc_pypath);
call symputx(&errorFlagName.,0);
call symput(&errorFlagDesc., "A path to Python is available in this compute session and Python use is part of Viya enabled methods.") ;
end;
else do;
call symputx(&errorFlagName.,1);
call symput(&errorFlagDesc., "Required access methods to run Python don't seem to form part of the user methods allowed in Viya. Please take steps to enable PYTHON, PYTHON_EMBED and SOCKET");
end;
end;
else do;
call symput("PROC_PYPATH", proc_pypath);
call symputx(&errorFlagName.,0);
call symput(&errorFlagDesc., "A path to Python is available in this compute session and COMPUTESERVER_LOCKDOWN_ENABLE is disabled. While you can run Python, note that setting COMPUTESERVER_LOCKDOWN_ENABLE to 0 is not recommended.");
end;
end;
end;
run;
%mend _env_check_python_compute;
%_env_check_python_compute("error_flag","error_desc")
%put &error_flag.;
%put &error_desc.;
%put &PROC_PYPATH.;
... View more