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"}

Remarque : 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%.