VT2018 OpenWhisk Demo

=Description=

Ceci est la demonstration qui va avec la fiche de synthèse sur OpenWhisk dans le cadre de la veille technologique 2018.

Nous allons utiliser la technologie OpenWhisk présente sur le Cloud d'IBM pour créer une action/fonction, l'envoyer sur le Cloud et l'appeler grâce à une API.

=Préparation=

Il faut d'abord créer un compte sur le Cloud IBM Bluemix pour avoir accès au dashboard qui permet de gérer les actions et les API.

La majorité des fonctionnalités sont disponibles sur le dashboard, mais l'on va avoir besoin de certaines qui n'y sont pas. Il faut donc installer l'interface de ligne de commande IBM Cloud Functions. Il s'agit d'une surcouche aux commandes de base d'OpenWhisk, avec le nécessaire pour lier notre compte IBM Cloud au terminal.

=Déroulement=

Développement
On commence par écrire l'action qui nous intéresse, ici en Java (mais d'autres langages sont utilisables).

Cette action est toute simple : Elle prend un objet JSON en paramètre, renvoie une objet JSON en sortie, et exécute une factorielle.

Compilation
On la compile avec la commande suivante : javac -classpath PATH/gson-2.8.5.jar fact.java Ici, la valeur   est à remplacer par le chemin où vous avez rangé la librairie Gson qui est nécessaire pour utiliser du Java avec OpenWhisk.

On crée ensuite une archive jar de notre action compilée : jar cvf fact.jar fact.class

Utilisation
On envoie ensuite notre action sur le cloud avec la commande suivante : bx wsk action create fact fact.jar --main fact --web true Il est important de spécifier le nom de la classe principale avec l'option.

L'option  permet de créer une web action, qui peut être déclenchée par une API (ce n'est pas la cas par défaut). A noter que cela peut être fait ultérieurement sur le dashboard.

Même si notre action n'est pour le moment liée à aucune API, on peux déjà la tester sur le dashboard ou avec la commande suivant : bx wsk action invoke fact --result --param num 10 Ce qui doit nous retourner le résultat suivant : {    "YourNumber": 10.0, "result": 3628800.0 } On a la possibilité de récupérer un lien sur le dashboard pour pouvoir l’exécuter dans un navigateur ou avec. Il faudra ajouter les paramètres suivants à ce lien : lien?num=10

On ajoute ensuite notre action à une API (ce qui crée l'API si elle n'existe pas déjà). Cela peut être fait depuis le dashboard ou en utilisant la commande suivante : bx wsk api create /fact GET fact Cette commande nous indique que l'API à été crée et nous donne sa route : ok: created API /fact GET for action /_/fact https://service.eu.apiconnect.ibmcloud.com/gws/apigateway/api/d11b1723f811a8252e0f99cbc363d55547a42626ea62d836a2f4e0844dc944b4/fact On peut maintenant appeler cette API dans un navigateur ou avec  avec les paramètres suivants : route?num=10