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/deploy 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 sur lequel l'application va tourner.
Par exemple
{
"app": "todomvc:8082"
}
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 square, le nom de l'instance du conteneur docker (qui doit contenir le nom du conteneur docker)
{
"id": 201,
"app": "todomvc:8082",
"port": 8082,
"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:8082",
"port": 8082,
"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:8082",
"port": 8082,
"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:8082",
"port": 8082,
"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".
-
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:8082": 2,
"demo:8083": 1
}
Le JSON renvoyé doit contenir les actions que doit entreprendre l'auto-scale.
Par exemple,
{
"todomvc:8082": "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:8082": "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:8082": 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é.