Accès à distance aux configurations de source de données à l'aide de l'API REST
Cette fonctionnalité permet aux clients d'éditer des sources de données existantes en dehors de la machine virtuelle Java Impact. Il s'agit d'un moyen alternatif à l'emploi de l'interface utilisateur Impact pour éditer les configurations.
Cette fonctionnalité ne permet que d'éditer des configurations de source de données déjà définies, et permet d'éditer toutes les valeurs de paramètre de la configuration.
L'API REST utilise JSON (spécification RFC 4627) sur HTTP et par
conséquent, fonctionne en exécutant des demandes HTTP
POST sur le serveur Impact. Tout client REST peut être utilisé pour exécuter la
méthode HTTP POST depuis des clients tiers tels que POSTMAN, YARC for
Google Chrome (voir http://yet-another-rest-client.com/), toute implémentation client
HTTP adaptée, ou simplement des javascripts ou des scripts curl. Cette rubrique présente des exemples fonctionnels d'encapsuleurs de script shell Linux et
Windows exécutant des commandes curl POST.
Spécifications de demande
La demande REST
fonctionne comme une demande HTTP POST. Le corps de méthode contient un
objet JSON unique qui transmet les données requises au service REST Impact à distance ou localement. Les
paramètres des objets de données de demande (contenu) sont :
-- dataSourceName : nom de la source de données existante à éditer. Requis.
Paramètres -- datasource : éléments de la configuration de source de données particulière. Ils varient selon la source de données et sont affichés dans l'interface utilisateur Impact. Vous pouvez les consulter en inspectant la demande HTTP réseau avec Google Chrome ou Firebug dans l'onglet Firebox Monitoring Console, lorsque vous sauvegardez la source de données dans l'interface utilisateur Impact.
Le type de support d'en-tête HTTP doit être Content-Type:application/json.
Pour la demande POST, l'URL doit être <IMPACT_HOST>:<GUI_PORT>/<SERVICE_CONTEXT>
Où :
<IMPACT_HOST>
correspond au nom de domaine complet ou à l'adresse IP de l'installation Impact (le serveur de l'interface graphique dans
le cas d'une installation partagée).
<GUI_PORT> correspond
au port du serveur de l'interface graphique Impact sur lequel l'interface graphique écoute les demandes.
<SERVICE_CONTEXT> correspond
au chemin du service impactAdmin/config/restui/datamodelui/datasource.
Exemple de demande
URL de demande POST :
https://my.host.com:16311/impactAdmin/config/restui/datamodelui/datasource
Contenu
de demande POST :
{"dataSourceName":"myORCLdatasource","DBUSERNAME":"SYSTEM",
"MAXSQLCONNECTION":"50","DBPASSWORD":"newpassword","PRIMARYSID":"ORCL"}
Spécifications de réponse
La réponse à une demande POST est un
objet JSON unique spécifiant l'ensemble de données de configuration complet après
l'application des modifications demandées.
L'objet RESPONSE contient l'ensemble complet pour la
configuration mise à jour. Par exemple, si vous demandez uniquement la modification du
mot de passe ou de l'utilisateur, l'objet RESPONSE contiendra l'ensemble de configuration
entier incluant les éléments modifiés (mot de passe, nom d'utilisateur ou tout autre paramètre de configuration). Par conséquent, l'objet RESPONSE est généralement plus grand que l'objet
de contenu de demande.
Les réponses associées à une erreur de type null génèrent un code de statut
HTTP 200 alors que les codes d'erreur de type non null sont mappés au
code de statut HTTP. Si vous utilisez les scripts de shell fournis, les codes retour ERROR se
trouvent dans le code HTML renvoyé. Si la transaction aboutit (dans ce cas, son code
retour est 200), un objet null et un objet JSON contenant tous les paramètres de configuration sont renvoyés.
Exemple de réponse JSON
{"MAXSQLCONNECTION":"50","LDAPUSERNAME":"","LDAPPASSWORD":"",
"CONNECTIONMETHOD":"SID","CUSTOMURL":"","BACKUPHOST": "rome.rtp.raleigh.ibm.com","PRIMARYSID":"ORCL","JDBCDRIVER":
"oracle.jdbc.driver.OracleDriver","dataSourceName":"1ORCL", "FAILOVERPOLICY":"DISABLED","DBUSERNAME":"THEUS5","BACKUPPORT":1521,
"PROVIDERURL":"","PRIMARYPORT":1521,"BACKUPSID":"ORCL","LDAPURL":
"EEEEEEE","DBPASSWORD":"JPMC2","CONNECTIONOPTION":"GeneralSettings",
"DISABLEFAILOVER":false,"BINDINGNAME":"","PRIMARYHOST":"9.42.130.83",
"CONTEXTFACTORY":""}
Authentification et autorisation
Le service d'API
REST est protégé par l'authentification de base et les utilisateurs doivent s'authentifier en indiquant un nom d'utilisateur et un mot de passe valides. L'autorisation par rôle du service d'API REST est appliquée. Il existe un rôle de sécurité intégré pour ce service : impactRestConfigurationRole.
Seuls
les utilisateurs Impact authentifiés affectés à ce rôle peuvent exécuter la demande HTTP POST pour les modifications de configuration.
Par
défaut, l'administrateur Impact possède ce rôle de sécurité. Vous pouvez gérer
les utilisateurs avec ce rôle en modifiant le fichier <IMPACT_HOME>/wlp/usr/servers/ImpactUI/server.xml.
Vous pouvez ajouter d'autres utilisateurs au rôle suivant :
<security-role name=impactRestConfigurationRole>
<user name=impactadmin/>
</security-role>Si vous changez une configuration server.xml, vous devez redémarrer le serveur de l'interface utilisateur Impact pour que les modifications soient prises en compte.
Exemples de script
Deux scripts shell entièrement fonctionnels (bash et .bat) illustrant la fonctionnalité de configuration à distance sont fournis dans le répertoire <IMPACT_HOME>/bin/ :
- nci_datasourceConfig.sh
- nci_datasourceConfig.bat (Windows)
Exécution du script de ligne de commande nci_datasourceConfig.sh ou nci_datasourceConfig.bat
nci_datasourceConfig.sh
et nci_datasourceConfig.bat collectent des paramètres et exécutent
la méthode curl POST afin d'éditer des configurations de source de données Netcool/Impact existantes à l'aide de l'API REST Impact.
Exemples
nci_datasourceConfig.sh <impact_user> <impact_pwd> <payload_json_fle> <impact_Host> <impact_port>
nci_datasourceConfig.sh
impactadmin netcool myldap.json adminserver.mydomain.com 16311
nci_datasourceConfig.bat
impactadmin netcool myldap.json adminserver.mydomain.com 16311
Où :
<impact_user> correspond
à l'administrateur Impact.
<impact_pwd> correspond
au mot de passe de l'administrateur Impact.
<payload_json_fle> correspond
à l'ensemble de configuration au format JSON.
<impact_Host> correspond
au nom de domaine complet ou à l'adresse IP du serveur de l'interface graphique Impact.
<impact_port> correspond
au port de l'interface graphique Impact.
Le fichier de contenu est une chaîne au format JSON conforme aux exigences décrites ci-dessous. Le contenu doit comporter le paramètre dataSourceName et vous devez connaître les noms de variable pour la configuration de source de données.
Exemple
{"dataSourceName":"LDAPTest","HOSTNAME":"remote.linux.tivoli.raleigh.com",
"PORT":"444", "AUTHSCHEME":"BASIC","USERID":"user","PASSWORD":"mypwd"}
curl
est une option que vous pouvez utiliser pour l'implémentation d'un
client HTTP.
Il s'agit d'un outil de tiers largement disponible dans la
plupart des générations Linux. Sur les systèmes d'exploitation Windows,
curl doit être téléchargé au format binaire. Le répertoire de
l'exécutable curl.exe doit être ajouté à la variable système Windows %Path%.