Attention, ses services vont être testés automatiquement donc le format des objets JSON
en entrée doit être exactement celui demandé.
Le format des objets JSON en sortie peut avoir des propriétés supplémentaires.
-
POST /app/start permet de démarrer une application à partir de son fichier jar
situé dans le répertoire apps.
Si le conteneur docker n'existe pas, celui-ci doit être créé dynamiquement.
Le JSON en entrée doit spécifier le nom de l'application + le port à partir duquel l'application
sera accessible.
Par exemple
{
"app": "todomvc:8081"
}
Le JSON renvoyé doit spécifier un numéro unique de l'instance docker, le nom de l'application,
le port de l'application,
le port de discussion avec LocalKube,
le nom de l'instance du conteneur docker (qui doit contenir le nom du conteneur docker)
{
"id": 201,
"app": "todomvc:8081",
"port": 8081,
"service-port": 15201,
"docker-instance": "todomvc-12"
}
-
GET /app/list permet de lister l'ensemble des instances des conteneurs qui tournent
Le JSON renvoyé doit contenir un tableau avec les mêmes informations que lors du déploiement
ainsi que le temps d'exécution.
Par exemple,
[
{
"id": 201,
"app": "todomvc:8081",
"port": 8081,
"service-port": 15201,
"docker-instance": "todomvc-12",
"elapsed-time": "3m33s"
},
{
"id": 202,
"app": "todomvc:8082",
"port": 8082,
"service-port": 15202,
"docker-instance": "todomvc-13",
"elapsed-time": "3m18s"
},
{
"id": 203,
"app": "demo:8083",
"port": 8083,
"service-port": 15203,
"docker-instance": "demo-2",
"elapsed-time": "1m22s"
}
]
si 2 instances de l'application todomvc sont déployées et 1 instance de demo est déployée.
-
POST /app/stop permet stopper une instance par son id
Le JSON en entrée doit spécifier l'id de l'instance que l'on veut stopper.
Par exemple
{
"id": 201
}
Le JSON renvoyé doit contenir les informations de l'application au moment de l'arrêt de celle-ci.
Par exemple,
{
"id": 201,
"app": "todomvc:8081",
"port": 8081,
"service-port": 15201,
"docker-instance": "todomvc-12",
"elapsed-time": "4m37s"
}
-
GET /logs/:time renvoie l'ensemble des logs depuis les time dernières minutes
Le JSON renvoyé doit contenir les messages de logs (avec un timestamp
qui correspond au moment où le message a été émis)
de toutes les instances depuis les 10 dernières minutes (dans l'ordre des timestamps).
Par exemple,
[
{
"id": 201,
"app": "todomvc:8081",
"port": 8081,
"service-port": 15201,
"docker-instance": "todomvc-12",
"message": "ceci est un message de log",
"timestamp": "2019-10-15T23:58:00.000Z"
},
{
"id": 202,
"app": "todomvc:8082",
"port": 8082,
"service-port": 15202,
"docker-instance": "todomvc-13",
"message": "ceci est un message de log",
"timestamp": "2019-10-15T23:58:45.000Z"
},
{
"id": 203,
"app": "demo:8083",
"port": 8083,
"service-port": 15203,
"docker-instance": "demo-2",
"message": "demo d'un message de log",
"timestamp": "2019-10-15T23:59:34.000Z"
}
]
-
GET /logs/:time/:filter renvoie les logs valides pour le filtre depuis les time
dernières minutes
Le JSON renvoyé est le même format que ci-dessus.
filter est soit un id, soit un nom d'application comme "todomvc:8082",
soit une instance particulière d'un docker comme "todomvc-13" soit un nom parmis
"byId", "byApp" ou "byInstance" suivi d'un slash suivi repectivement d'un id, d'un nom
ou d'une instance docker.
Exemple des requètes valides:
-
GET /logs/10/203 renvoie les logs des 10 dernières minutes pour l'application ayant un id,
un nom ou une instance docker correspondant à "203".
-
GET /logs/3/byId/203 renvoie les logs des 3 dernières minutes pour l'application ayant l'id 203
-
GET /logs/10/byApp/todomv:8082 renvoie les logs des 10 dernières minutes pour l'application
ayant le nom "todomv:8082"
-
POST /auto-scale/update permet de démarrer ou changer la configuration de l'auto-scale
si celui-ci tourne déjà.
Le JSON en entrée doit spécifier, pour chaque application, le nombre d'instances qui doivent être présentes.
Par exemple
{
"todomvc:8081": 2,
"demo:8083": 1
}
Le JSON renvoyé doit contenir les actions que doit entreprendre l'auto-scale.
Par exemple,
{
"todomvc:8081": "need to start 1 instance(s)",
"demo:8083": "need to stop 2 instance(s)"
}
Note : les instances des applications qui ne sont pas listées dans le JSON reçu ne doivent pas être
arrêtées/démarrées par l'auto-scale.
-
GET /auto-scale/status permet de savoir quelle sont les actions que doit effectuer l'auto-scale.
Le JSON renvoyé doit contenir les actions que doit entreprendre l'auto-scale.
Par exemple,
{
"todomvc:8081": "no action",
"demo:8083": "need to stop 1 instance(s)"
}
-
GET /auto-scale/stop permet d'arrêter l'auto-scale
Le JSON renvoyé indique le nombre d'instances de chaque application qui étaient gérées par l'auto-scale.
Par exemple,
{
"todomvc:8081": 2,
"demo:8083": 1
}
Les instances des applications qui étaient gérées par l'auto-scale continuent de fonctionner normalement ;
seul l'auto-scale est arrêté.