From 4c05c40dc2ea831b55e9d8b397886dca9539ba64 Mon Sep 17 00:00:00 2001 From: Kiady Arintsoa <kiady.arintsoa@etu.hesge.ch> Date: Wed, 27 Oct 2021 16:04:02 +0200 Subject: [PATCH] final cmmit --- README.md | 4 ++++ go/README.md | 30 ++++++++++-------------------- go/Serveur/neighbour-10.yaml | 6 ++++++ go/Serveur/neighbour-7.yaml | 9 +++++++++ go/Serveur/neighbour-8.yaml | 9 +++++++++ go/Serveur/neighbour-9.yaml | 9 +++++++++ go/reseau.png | Bin 0 -> 15039 bytes go/topologie.png | Bin 0 -> 4550 bytes 8 files changed, 47 insertions(+), 20 deletions(-) create mode 100644 README.md create mode 100644 go/Serveur/neighbour-10.yaml create mode 100644 go/Serveur/neighbour-7.yaml create mode 100644 go/Serveur/neighbour-8.yaml create mode 100644 go/Serveur/neighbour-9.yaml create mode 100644 go/reseau.png create mode 100644 go/topologie.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..e33177a --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Groupe 16 + +Adresse du GIT :https://gitedu.hesge.ch/simon.cirilli/sysdistribbroadcast + diff --git a/go/README.md b/go/README.md index 7c1df00..40bcb02 100755 --- a/go/README.md +++ b/go/README.md @@ -1,27 +1,17 @@ -# Version online sur des instances AWS +# Version GOLANG ## Client -Le client se lance en faisant `go run client.go [--local-debug]` +Le client se lance en faisant `go run client.go [--local-debug]`, l’argument est optionnel, il permet d’utiliser le projet sur la même machine. Le client demande à chaque itération le nœud auquel se connecter ainsi que la commande à effectuer sur ce nœud. ## Serveurs -Il faut modifier les fichiers YAML pour mettre les IP correctes des instances AWS dans les voisins et pour sa propore addresse il fautr mettre 0.0.0.0 pour accéder à toute les demandes, il faut autoriser les connections sur différents ports pour les instances. -Suite à une connection sur le serveur, le serveur traite la demande effectue différents appels et au final affiche le résultat dans son terminal pour le verify et le create donc dans le terminal du serveur choisi de base. Tandis que pour le fake et le list il renvoie au client les informations. +Le serveur se lance en faisant `go run server.go [n] [--local-debug]`, l’argument local est aussi optionnel, il sert le même but que le client. `[n]` correspond au numéro du nœud, Le fichier `neighbour-[n].yaml` doit exister au même endroit. Le serveur ne fait que traiter les commandes entrantes. -## Topologie - - -## Dépendances -- PyYAML +## Déploiement -## Lancer le programme -Il faut bien sûr commencer par clôner le repot puis : +Pour déployer le projet, il faut modifier les fichiers YAML pour mettre les IP correctes des instances AWS dans les voisins et pour sa propre adresse il faut mettre 0.0.0.0 pour accéder à toute les demandes, il faut autoriser les connections sur différents ports pour les instances. -Client : -- cd client/client -- python3 client.py +## Topologie -Serveur : -Pour les serveurs il faut donc lancer un à un les différents serveurs donc ce qui vaut pour s1 vaut également pour les autres serveurs mais avant de lancer le serveur bien penser à modifier les ficher YAML. -- cd s1 -- python3 serveur.py +Déployé : + -## Tests -Pour tester la manière est de lancer le client sans le mode autoTest et de rentrer l'adresse du serveur pour la communication et d'enchaîner les demandes. \ No newline at end of file +Local: + diff --git a/go/Serveur/neighbour-10.yaml b/go/Serveur/neighbour-10.yaml new file mode 100644 index 0000000..e34cf2f --- /dev/null +++ b/go/Serveur/neighbour-10.yaml @@ -0,0 +1,6 @@ +id: 10 +address: "127.0.0.10" +neighbours: + - id: 9 + address: "127.0.0.9" + edge_weight: 1 diff --git a/go/Serveur/neighbour-7.yaml b/go/Serveur/neighbour-7.yaml new file mode 100644 index 0000000..3d9a50e --- /dev/null +++ b/go/Serveur/neighbour-7.yaml @@ -0,0 +1,9 @@ +id: 7 +address: "127.0.0.7" +neighbours: + - id: 6 + address: "127.0.0.6" + edge_weight: 1 + - id: 8 + address: "127.0.0.8" + edge_weight: 1 diff --git a/go/Serveur/neighbour-8.yaml b/go/Serveur/neighbour-8.yaml new file mode 100644 index 0000000..5ed614c --- /dev/null +++ b/go/Serveur/neighbour-8.yaml @@ -0,0 +1,9 @@ +id: 8 +address: "127.0.0.8" +neighbours: + - id: 7 + address: "127.0.0.7" + edge_weight: 1 + - id: 9 + address: "127.0.0.9" + edge_weight: 1 diff --git a/go/Serveur/neighbour-9.yaml b/go/Serveur/neighbour-9.yaml new file mode 100644 index 0000000..2cb7a13 --- /dev/null +++ b/go/Serveur/neighbour-9.yaml @@ -0,0 +1,9 @@ +id: 9 +address: "127.0.0.9" +neighbours: + - id: 8 + address: "127.0.0.8" + edge_weight: 1 + - id: 10 + address: "127.0.0.10" + edge_weight: 1 diff --git a/go/reseau.png b/go/reseau.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e6c29c352f7fe8ab77a5690f6462f42c990021 GIT binary patch literal 15039 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 literal 0 HcmV?d00001 diff --git a/go/topologie.png b/go/topologie.png new file mode 100644 index 0000000000000000000000000000000000000000..3ca8d6b1bf57de7748dd6ba9bb39f4ab630e8376 GIT binary patch literal 4550 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 YbrT9>#q(Mj7#J8lUHx3vIVCg!07dJ;@&Et; literal 0 HcmV?d00001 -- GitLab