Contrôleur Python

Diagramme de séquence de démarrage d’un service

msc {
    hscale = "2";

    manager,sqitch,crossbar,vault,database;

    manager=>manager [ label = "Attente Crossbar"];
    manager=>crossbar [ label = "enregistre messages event"];
    manager=>crossbar [ label = "enregistre messages RPC"];
    manager=>crossbar [ label = "enregistre message v1.zephir.services.available"];
    --- [ label = "Si database nécessaire et non existante"];
    manager->vault [ label = "v1.vault.database.create(name=dbname)"];
    vault=>database [ label = "création rôle dbname_admin"];
    vault=>database [ label = "création rôle dbname_xxtmp1xx"];
    vault=>database [ label = "création db dbname"];
    vault>>manager  [ label = "True"];
    manager->vault [ label = "v1.vault.database.get(name=dbname)" ];
    vault>>manager [ label = "{host: host, name: dbname_xxtmp2xx, password: xxx}"];
    manager=>sqitch [ label = "migration db"];
    --- [ label = "Si database nécessaire et existante"];
    manager->vault [ label = "v1.vault.database.create(name=dbname)"];
    vault>>manager  [ label = "False"];
    --- [ label = "Fin Si"];
    manager->crossbar [ label = "v1.zephir.services.event(name=name, status='start', ip=ip)" ];
    }

Diagramme de séquence de la réception d’un message

msc {
    hscale = "2";

    emetteur [label="émetteur"],crossbar,manager,vault,database;

    emetteur->manager [ label = "v1.server.create(name)"];
    manager=>manager [ label = "valide les arguments"];
    --- [ label = "Si database nécessaire mais pas de connexion active"];
    manager->vault [ label = "v1.vault.database.get(name=dbname)" ];
    vault>>manager [ label = "{host: host, name: dbname_xxtmp2xx, password: xxx}"];
    manager=>database [ label = "création d'une connexion"];
    --- [ label = "Si database nécessaire"];
    manager=>database [ label = "création d'un curseur"];
    --- [ label = "Fin Si"];
    manager=>manager [ label = "construction de la réponse"];
    --- [ label = "Si notification"];
    manager->crossbar [ label = "v1.server.created(name=name, serverid=id)"];
    --- [ label = "Fin Si"];
    --- [ label = "Si message de type RPC"];
    manager=>manager [ label = "valide réponse == contrat"];
    manager>>emetteur [ label = "{name:name, serverid:id}"];
    }

Diagramme de séquence de la réception d’un fichier dans un message

msc {
    hscale = "2";
    emetteur [label="émetteur"],manager_emet [label="manager de l'émetteur"],crossbar,manager [label="servermodel-manager"],memory,database;

    emetteur->manager_emet [label="v1.servermodel.describe"];
    manager_emet->crossbar [label="v1.servermodel.describe"];
    crossbar->manager [label="v1.servermodel.describe"];
    manager->database [label="SELECT id FROM Documents WHERE name = ?;"];
    database>>manager [label="ID = 18"];
    manager=>memory [label="generate_ott(18) -> xyz"];
    manager>>crossbar [label="{ schema: \"http://fileserver/xyz\" }"];
    crossbar>>manager_emet [label="{ schema: \"http://servermodel/xyz\" }"];
    manager_emet->manager [label="GET http://servermodel/xyz"];
    manager=>memory [label="get_document_for_ott(xyz)"];
    memory->memory [label="delete OTT"];
    memory>>manager [label="18"];
    manager=>database [label="SELECT content FROM Documents WHERE id = 18"];
    database>>manager [label="File Content"];
    manager>>manager_emet [label="Body: File Content"];
    manager_emet>>emetteur [label="{ schema: File Content }"];
}