Publié le :

Macro pour récupérer les groupes SAS Viya

En attente de validation
Attention : Ce code nécessite des droits administrateur.
Cette macro, nommée %mv_getgroups, permet de récupérer la liste des groupes d'utilisateurs configurés dans SAS© Viya. Elle utilise l'API REST de SAS© Viya pour interroger le point de terminaison des identités (`/identities/groups`). Le script gère l'authentification via OAuth bearer (en fonction du type de grant). Il utilise des procédures SAS© standard comme PROC HTTP pour faire la requête, et LIBNAME JSON pour traiter la réponse. Les informations récupérées sont ensuite stockées dans un dataset SAS© spécifié par l'utilisateur.
Analyse des données

Type : EXTERNE


Les données sont récupérées via une requête HTTP GET vers l'API REST de SAS Viya (/identities/groups). Le résultat est ensuite traité comme un fichier JSON.

1 Bloc de code
MACRO
Explication :
Déclare la macro et initialise les variables locales pour l'authentification et la configuration de base de l'API Viya.
Copié !
1%macro mv_getgroups(
2 access_token_var=ACCESS_TOKEN,
3 grant_type=sas_services,
4 outds=work.viyagroups
5 );
6%local oauth_bearer base_uri fname1 libref1;
7%IF &grant_type=detect %THEN %DO;
8 %IF %symexist(&access_token_var) %THEN %let grant_type=authorization_code;
9 %ELSE %let grant_type=sas_services;
10%END;
11%IF &grant_type=sas_services %THEN %DO;
12 %let oauth_bearer=oauth_bearer=sas_services;
13 %let &access_token_var=;
14%END;
15 
16%mp_abort(iftrue=(&grant_type ne authorization_code and &grant_type ne password
17 and &grant_type ne sas_services
18 )
19 ,mac=&sysmacroname
20 ,msg=%str(Invalid value for grant_type: &grant_type)
21)
22options noquotelenmax;
23/* location of rest apis */
24%let base_uri=%mf_getplatform(VIYARESTAPI);
25 
2 Bloc de code
MACRO / PROC HTTP
Explication :
Obtient des références de fichier et de librairie uniques, effectue la requête HTTP GET vers l'API Viya pour récupérer les groupes, et vérifie le code de retour HTTP. Un libname JSON est ensuite créé pour lire la réponse.
Copié !
1%let fname1=%mf_getuniquefileref();
2%let libref1=%mf_getuniquelibref();
3 
4PROC HTTP method='GET' out=&fname1 &oauth_bearer
5 url="&base_uri/identities/groups?limit=10000";
6 headers
7 %IF &grant_type=authorization_code %THEN %DO;
8 "Authorization"="Bearer &&&access_token_var"
9 %END;
10 "Accept"="application/json";
11RUN;
12/*data _null_;infile &fname1;input;putlog _infile_;run;*/
13%mp_abort(iftrue=(&SYS_PROCHTTP_STATUS_CODE ne 200)
14 ,mac=&sysmacroname
15 ,msg=%str(&SYS_PROCHTTP_STATUS_CODE &SYS_PROCHTTP_STATUS_PHRASE)
16)
17LIBNAME &libref1 JSON fileref=&fname1;
3 Bloc de code
DATA STEP Data
Explication :
Crée le dataset de sortie (&outds) en sélectionnant les éléments de la librairie JSON. Ensuite, libère les références de fichier et de librairie.
Copié !
1DATA &outds;
2 SET &libref1..items;
3RUN;
4 
5 
6/* clear refs */
7filename &fname1 clear;
8LIBNAME &libref1 clear;
4 Bloc de code
MACRO
Explication :
Termine la définition de la macro %mv_getgroups.
Copié !
1%mend mv_getgroups;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Source potentielle : https://github.com/sasjs/core


Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« Cette macro est un parfait exemple de la modernité de SAS Viya. On ne se contente plus de gérer les utilisateurs via des interfaces graphiques ; on utilise la puissance du langage SAS pour interroger directement le cœur du système via son API REST. »