Voozanoo 4 CLI regroupe plusieurs utilitaires

Edit me

Configuration

Dans le cas d’un lancement de la commande depuis un poste de développeur, il faut fournir au fichier {app_path}/resource/cron/voo4_cli.php les variables correspondants à votre environnement de développement. Pour cela, il faut ajouter au dossier {app_path}/configs/ un fichier env.php qui contiendra ceci :

Exemple :

  putenv( "VOO4_APPBOOTSTRAPPER=C:\\wamp\\www\\libs\\VOOZANOO4\\" . $sVersionVoo4 . "\\src\\tools\\Voo4_AppBootstrapper.php" );
  putenv( "PATH_VOO4_CORE=C:\\wamp\\www\\libs\\VOOZANOO4\\%s\\src" );
  putenv( "PATH_VOO4_EXTLIB=C:\\wamp\\www\\libs\\VOOZANOO4\\%s\\libs" );
  putenv( "PATH_FARM=/var/www/workdata" );
  putenv( "PATH_ZF=C:\\wamp\\www\\libs\\ZendFramework" );
  putenv( "APPLICATION_ENV=dev_kgr" );

Bien entendu, les chemins vers les différents fichiers et répertoires doivent correspondre à votre propre environnement (attention à donner les chemins existants au sein du container de l’application pour les environnements docker) et la variable APPLICATION_ENV au nom de votre section dans le fichier application.ini.

Méthode

Le script voo4_cli.php permet d’executer la plupart des méthodes public de la classe Voo4CliApi.

Pour exécuter une de ces méthodes, il faudra respecter la syntaxe suivante :

php voo4_cli.php mtd=METHOD_NAME

Le passage de paramètres se fera de la manière suivante :

php voo4_cli.php param1=value1 param2=value2 param3="value3 with spaces"

createDummyUsers

La méthode createDummyUsers permet de générer des utilisateurs fictifs en grand nombre.

Paramètre

Paramètre Description Type Contrôle Obligatoire
project Le projet dans lequel créer les utilisateurs Chaîne de caractères Il y a un unique projet qui porte ce nom dans l’application Oui
nb_user Nombre d’utilisateur à créer Nombre entier 1 < nb_user < 20001 Oui
role Rôle des utilisateurs à créer Chaîne de caractères Il y a un unique rôle qui porte ce nom dans le projet Non
axis Axe du groupe des utilisateurs à créer Chaîne de caractères Si renseigné : il y a un unique axe qui porte ce nom dans le projet
Sinon : il y a un unique axe dans le projet
Non
group Groupe des utilisateurs à créer Chaîne de caractères Il y a un unique groupe qui porte ce nom dans l’axe choisi Non
env Nom de la section concernée Chaîne de caractères Section déclarée dans le application.ini Obligatoire pour les applications multisections

Exemple

php voo4_cli.php mtd=createDummyUsers nb_user=100 project=anses
php voo4_cli.php mtd=createDummyUsers nb_user=30 project=doccu role=radiologue
php voo4_cli.php mtd=createDummyUsers nb_user=10 project=sante_publique role=patient group=paris

deleteProject

La méthode deleteProject permet de supprimer un projet d’une application Voozaoo 4.

Suppression de toutes les tables liées aux varsets du projet.

Suppression de toutes les tables “système” :

  • {pj}_pj_group_mode
  • {pj}_pj_group_link
  • {pj}_pj_group
  • {pj}_pj_axis
  • {pj}_pj_role
  • {pj}_pj_varset

Suppression des mentions du projet dans les tables :

  • sys_editor_publication
  • sys_editor
  • sys_project

Paramètre

Paramètre Description Type Contrôle Obligatoire
project Le projet à supprimer Chaîne de caractères Il y a un unique projet qui porte ce nom dans l’application Oui
env Nom de la section concernée Chaîne de caractères Section déclarée dans le application.ini Obligatoire pour les applications multisections

Exemple

php voo4_cli.php mtd=deleteProject project=project_test

execDataquery

La méthode execDataquery permet l’exécution d’un dataquery selon les variables d’environnements passées en paramètre et de connaître le temps d’exécution de celle-ci.

Paramètre

Paramètre Description Type Contrôle Obligatoire
project Le projet dans lequel executer le dataquery Chaîne de caractères Il y a un unique projet qui porte ce nom dans l’application Oui
dataquery L’id ou le nom d’une ressource de type dataquery ou export Chaîne de caractères   Oui
print_result Permet d’afficher le résultat de la requête Boolean   Non
env Nom de la section concernée Chaîne de caractères Section déclarée dans le application.ini Obligatoire pour les applications multisections

Il est possible de passer des paramètres au dataquery sélectionné. Si le dataquery contient une ou des variable(s), il suffit de lui donner en paramètre comme ceci afin de récupérer les résultats voulus :

php voo4_cli.php mtd=execDataquery project=rythmo dataquery=68 print_result=true prenom=kevin

Exemple

php voo4_cli.php mtd=execDataquery project=rythmo dataquery=68 print_result=true
<dataquery id="listing" table_name="{pj}_person_data" varset_name="person" table_alias="alias_5b191bdd94bf3" begin="0" range="3">
  <column sql="{id_data}" alias="person-id_data" default_short_label="id_data" type="integer">
	<field table_name="alias_5b191bdd94bf3" field_name="id_data" alias="id_data"/>
  </column>
  <column sql="{agge}" alias="person-agge" default_short_label="agge">
	<field table_name="alias_5b191bdd94bf3" field_name="agge" alias="agge"/>
  </column>
  <column sql="{id_data}" alias="autoGeneratedKey-id_data-01" default_short_label="autoGeneratedKey-id_data">
	<field table_name="alias_5b191bdd94bf3" field_name="id_data" alias="id_data"/>
  </column>
</dataquery>
SELECT alias_5b191bdd94bf3.id_data AS `person-id_data`, alias_5b191bdd94bf3.agge AS `person-agge`, alias_5b191bdd94bf3.id_data AS `autoGeneratedKey-id_data-01` FROM `eaz6_person_data` AS `alias_5b191bdd94bf3` LIMIT 3
Array
(
    [0] => Array
        (
            [person-id_data] => 1
            [person-agge] => 23
            [autoGeneratedKey-id_data-01] => 1
        )

    [1] => Array
        (
            [person-id_data] => 3
            [person-agge] => 23
            [autoGeneratedKey-id_data-01] => 3
        )

    [2] => Array
        (
            [person-id_data] => 5
            [person-agge] => 99
            [autoGeneratedKey-id_data-01] => 5
        )

)
Temps de reponse 0.0049 seconde(s)

En cas d’erreur, une erreur SQL est retournée :

<?xml version="1.0" encoding="UTF-8"?>
<dataquery id="listing" table_name="{pj}_person_data" varset_name="person" table_alias="alias_5b191bdd94bf3" begin="0" range="3">
  <column sql="{id_data}" alias="person-id_data" default_short_label="id_data" type="integer">
	<field table_name="alias_5b191bdd94bf3" field_name="id_data" alias="id_data"/>
  </column>
  <column sql="{aggge}" alias="person-agge" default_short_label="agge">
	<field table_name="alias_5b191bdd94bf3" field_name="agge" alias="agge"/>
  </column>
  <column sql="{id_data}" alias="autoGeneratedKey-id_data-01" default_short_label="autoGeneratedKey-id_data">
	<field table_name="alias_5b191bdd94bf3" field_name="id_data" alias="id_data"/>
  </column>
</dataquery>
SELECT alias_5b191bdd94bf3.id_data AS `person-id_data`, {aggge} AS `person-agge`, alias_5b191bdd94bf3.id_data AS `autoGeneratedKey-id_data-01` FROM `eaz6_person_data` AS `alias_5b191bdd94bf3` LIMIT 3
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '} AS `person-agge`, alias_5b191bdd94bf3.id_data AS `autoGeneratedKey-id_data-01`' at line 1, query was: SELECT alias_5b191bdd94bf3.id_data AS `person-id_data`, {aggge} AS `person-agge`, alias_5b191bdd94bf3.id_data AS `autoGeneratedKey-id_data-01` FROM `eaz6_person_data` AS `alias_5b191bdd94bf3` LIMIT 3

exportSqlFromDataqueries

La méthode exportSqlFromDataqueries permet la récupération des requetes issues des dataqueries d’un projet.

Paramètre

Paramètre Description Type Contrôle Obligatoire
project Le projet à auditer Chaîne de caractères Il y a un unique projet qui porte ce nom dans l’application Oui
env Nom de la section concernée Chaîne de caractères Section déclarée dans le application.ini Obligatoire pour les applications multisections

Exemple

Passer le fichier résultant à un outil comme MySQL Workbench ou DBeaver pour éventuellement améliorer la lisibilité des requêtes générées en allant sur Edit > Format > choisissez Beautiful Query.

php voo4_cli.php mtd=exportSqlFromDataqueries project=rythmo > audit.queries.sql

Le fichier audit.queries.sql contiendra toutes les requetes issues des dataqueries du projet.

Il est possible de récupérer ces requetes dans l’entrée standard, dans ce cas il suffit de ne pas spécifier de fichier sur lequel écrire :

php voo4_cli.php mtd=exportSqlFromDataqueries project=rythmo

Exemple de résultat :

 /* form [61] > dataquery [newpage2] */ Invalid Dataquery: Varset "newpage2" - Item not found for VarName "tv1"

/* form [63] > dataquery [newpage3] */ SELECT main.id_data AS id_data, main.value AS value, main.rc AS rc, main.nd AS nd, main.tf1 AS tf1, main.tf2 AS tf2, main.nf1 AS nf1, main.nf2 AS nf2, main.cf1 AS cf1, main.cf2 AS cf2, main.df1 AS df1, main.df2 AS df2, main.df3 AS df3, main.bv1 AS bv1 FROM eaz6_newpage3_data AS main WHERE (main.id_data=NULL) ;

/* form [65] > dataquery [newpage2] */ Invalid Dataquery: Varset "newpage2" - Item not found for VarName "gp" 

purgeSysScriptAndSysScriptError

La méthode purgeSysScriptAndSysScriptError permet la suppression des entrées les plus anciennes dans la table sys_script et les entrées qui y sont associées dans la table sys_script_error.

Paramètre

Paramètre Description Type Contrôle Obligatoire
row_older_than Âge minimal des enregistrements à supprimer (en mois) Nombre entier row_older_than > 3 Oui
chunk_size Taille des groupes pour les suppressions Nombre entier   Oui
env Nom de la section concernée Chaîne de caractères Section déclarée dans le application.ini Obligatoire pour les applications multisections

Exemple

php voo4_cli.php mtd=purgeSysScriptAndSysScriptError row_older_than=12 chunk_size=1000

Exemple de résultat :

8192 sys_script rows removed
10231 sys_script_error rows removed
Cannot delete entries younger than 3 months
0 sys_script rows removed
0 sys_script_error rows removed

purgePjToken

La méthode purgePjToken permet la suppression des entrées les plus anciennes dans la table {project}_pj_token .

Attention si l’application.ini contient une des trois directives ci-dessous, on interdit l’action car les enregistrements de pj_token sont utilisés par Epimob :

  • hub.url
  • hub.login
  • hub.password

Paramètre

Paramètre Description Type Contrôle Obligatoire
project Nom du projet Chaîne de caractères projet existant dans l’application Oui
row_older_than Âge minimal des enregistrements à supprimer (en mois) Nombre entier row_older_than > 3 Oui
chunk_size Taille des groupes pour les suppressions Nombre entier   Oui
env Nom de la section concernée Chaîne de caractères Section déclarée dans le application.ini Obligatoire pour les applications multisections

Exemple

php voo4_cli.php mtd=purgePjToken project=Epifiles row_older_than=12 chunk_size=1000

Exemple de résultat :

8192 rows removed
Cannot delete entries younger than 3 months

purgeOAuth

La méthode purgeOAuth permet la suppression des entrées les plus anciennes dans les tables _{project}_oauthonces_data et _{project}_oauthtokens_data.

Paramètre

Paramètre Description Type Contrôle Obligatoire
project Nom du projet Chaîne de caractères projet existant dans l’application Oui
row_older_than Âge minimal des enregistrements à supprimer (en mois) Nombre entier row_older_than > 3 Oui
chunk_size Taille des groupes pour les suppressions Nombre entier   Oui
env Nom de la section concernée Chaîne de caractères Section déclarée dans le application.ini Obligatoire pour les applications multisections

Exemple

php voo4_cli.php mtd=purgeOAuth project=Epifiles row_older_than=12 chunk_size=1000

Exemple de résultat :

8192 rows removed
Cannot delete entries younger than 3 months

purgeWSConnectionEvt

La méthode purgeWSConnectionEvt permet la suppression des entrées les plus anciennes dans la table {project}_evtlog_data qui sont de type (evt_name) VZN_EVT_CONNEXION_WS.

Paramètre

Paramètre Description Type Contrôle Obligatoire
project Nom du projet Chaîne de caractères projet existant dans l’application Oui
row_older_than Âge minimal des enregistrements à supprimer (en mois) Nombre entier row_older_than > 1 Oui
chunk_size Taille des groupes pour les suppressions Nombre entier   Oui
env Nom de la section concernée Chaîne de caractères Section déclarée dans le application.ini Obligatoire pour les applications multisections

Exemple

php voo4_cli.php mtd=purgeWSConnectionEvt project=Epifiles row_older_than=12 chunk_size=1000

Exemple de résultat :

8192 rows removed
Cannot delete entries younger than 1 month

updateSysDico

La méthode updateSysDico permet de mettre à jour les dictionnaires systèmes (table sys_dico_data) inclus dans le dossier src/resources/xml_resources/dico du noyau Voozanoo4.

Mettre à jour signifie :

  • ajouter les entrées de dictionnaire manquantes
  • mettre à jour les entrées de dictionnaire existantes si besoin (le script se base sur la colonne code pour identifier une entrée)
  • ajouter les dictionnaires manquants (fonctionnalité disponible d’ici peu)

Cette méthode ne supprime rien.

Paramètre

Cette méthode ne prend aucun paramètre.

Exemple

php voo4_cli.php mtd=updateSysDico

changeAuthMode

La méthode changeAuthMode permet de modifier le mode de connexion du projet (paramétrage de projet auth_mode dans la ressource XML du projet). Elle a été créée pour faciliter la modification de ce paramètre lorsqu’une application est en erreur (lorsque la relation provider/consumera comporte des erreurs par exemple).

Si aucun développement spécifique n’a été ajouté à l’authentification, la valeur maximale de auth_mode est de 31.

Paramètre

Paramètre Description Type Contrôle Obligatoire
project Nom du projet Chaîne de caractères projet existant dans l’application Oui
auth_mode Chiffre correspondant à la somme des modes de connexion désirés.
La valeur des modes de connexion proposés par le noyau sont les suivantes :
- login/pwd : 1
- CPS : 2
- CPS choice : 4
- OAuth : 8
- OTP : 16
Nombre entier entier compris entre 1 et (2^[nombre de modes de connexion existants dans la table sys-dico_data] - 1) inclus Oui
env Nom de la section concernée Chaîne de caractères Section déclarée dans le application.ini Obligatoire pour les applications multisections

Exemple

php voo4_cli.php mtd=changeAuthMode project=MyProject auth_mode=1

scanFormsForDuplicateEditorId

La méthode scanFormsForDuplicateEditorId recherche les editor_id en doublon dans toutes les ressources xml de type “formulaire” d’un projet.

Paramètre

Paramètre Description Type Contrôle Obligatoire
project Nom du projet Chaîne de caractères projet existant dans l’application Oui

Exemple

php voo4_cli.php mtd=scanFormsForDuplicateEditorId project=MyProject

getApplicationMetrics

La méthode getApplicationMetrics renvoie un JSON contenant des métriques sur l’application. Il est possible de choisir la métrique souhaitée grace à l’argument metric_name.

Attention : Cette méthode n’est appelable que si voozanoo.cli.metrics.enable = TRUE dans le fichier .ini de l’application. C’est le cas par défaut.

Paramètre

Paramètre Description Type Contrôle Obligatoire
metric_name Nom de la métrique souhaitée Chaîne de caractères Dans la liste suivante : active_users_count, varsets_count, vars_count, records_count, last_updates_count, audittrail_records_count Non

Voici la signification de ces métriques :

  • active_users_count : nombre d’utilisateur au statut “actif” par projet
  • varsets_count : nombre de varsets par projet
  • vars_count : nombre de variables par projet
  • records_count : nombre d’enregistrement (tous varsets confondus) par projet
  • last_updates_count : nombre d’enregistrement (tous varsets confondus) modifiés au cours des 30 derniers jours par projet
  • audittrail_records_count : nombre d’enregistrements dans les varsets monitoring et evtlog par projet

Exemple 1

php voo4_cli.php mtd=getApplicationMetrics metric_name="varsets_count"

Ceci renvoie un JSON donnant, pour chaque projet de l’application, le nombre de varset au format suivant :

{
  "name":"nom_du_projet",
  "metrics": [{"name":"varset_count","value":"nombre_de_varsets"}]
}

Exemple 2

php voo4_cli.php mtd=getApplicationMetrics

Sans metric_name, ceci renvoie un JSON donnant, pour chaque projet de l’application toutes les métriques disponibles au format suivant :

{
  "name":"nom_du_projet",
  "metrics": [
    {"name":"active_users_count","value":"valeur_de_la_metrique"},
    {"name":"varset_count","value":"valeur_de_la_metrique"},
    {"name":"vars_count","value":"valeur_de_la_metrique"},
    {"name":"records_count","value":"valeur_de_la_metrique"},
    {"name":"last_updates_count","value":"valeur_de_la_metrique"},
    {"name":"audittrail_records_count","value":"valeur_de_la_metrique"},
  ]
}

tests

La méthode tests permet de lancer des tests vérifiants la bonne configuration de l’application.ini pour l’environnement production.

Paramètre

Paramètre Description Type Contrôle Obligatoire
appli Booléen (false par défaut) indiquant si les tets que l’on souhaite exécuter son dans le code sqource de l’application Booléen   Non
auto_project Booléen (false par défaut) permettant d’ajouter temporairement un projet à l’application pour y jouer les test. Le projet sera automatiquement supprimé à la fin des tests. Booléen   Non
path Permet d’indiquer le chemin du fichier de test (voozanoo4-tests.xml) s’il n’est pas à l’emplacement habituel Chaîne de caractères   Non
project Nom du projet au sein duquel exécuter les tests (inutile si le paramètre auto_project vaut true) Chaîne de caractères   Non
result_dir_path Chemin du dossier dans lequel sera créé le fichier result.json (résultats des tests) Chaîne de caractères Dossier existant dans le filesystem avec les bonnes permissions d’écriture Oui
stop_on_error Booléen (false par défaut) indiquant si l’on souhaite interrompre les tests si un test echoue Booléen   Non
tag Tag permettant de filtrer les tests à lancer Chaîne de caractères   Non
tests Nom du type de test (“integrity” par défaut) que l’on souhaite lancer (ici conf) Chaîne de caractères Type de test existant Non
verbose_on_error Booléen (false par défaut) indiquant si l’on souhaite avoir plus d’information lorsqu’un test est négatif Booléen   Non

Voici les valeurs possibles dans le noyau pour les le paramètre tests :

  • conf : Tous les tests de confs basés sur les application.ini et les APPINFOS
  • conf/mini_conf: Tests des application.ini et les APPINFOS minimalistes qui doivent être toujours au verts en préprod et en prod
  • conf/security : Tests des application.ini et les APPINFOS qui concernent la sécurité et qui doivent être au vert en prod
  • bdd : Tous les tests de confs basés sur le contenu de la base de données
  • bdd/security : Tests sur la base de données qui concernent la sécurité et qui devraient être au vert en prod

Exemple

php voo4_cli.php mtd=tests tests=conf verbose_on_error=true result_dir_path=/var/www/app/resources/cron/

fillUserSysLastConnectionDate

La méthode fillUserSysLastConnectionDate permet d’alimenter de {pj}_user_data.sys_last_connection_date avec le dernier evénément de connexion trouvé dans le monitoring pour l’utilisateur.

Paramètre

Paramètre Description Type Contrôle Obligatoire
project Nom du projet Chaîne de caractères Il y a un unique projet qui porte ce nom dans l’application Oui

Exemple

php voo4_cli.php mtd=fillUserSysLastConnectionDate  project=MyProject