From 00ea69acf23c1362f161bb0e84ebbb58f266ad1f Mon Sep 17 00:00:00 2001
From: shinedday <shinedday@gmail.com>
Date: Fri, 13 May 2022 08:07:31 +0200
Subject: [PATCH] Fix exit topic typo that led to unwanted behaviour

---
 README.md                           | 135 ++--------------------------
 dist/iotAmak-0.0.1-py3-none-any.whl | Bin 10930 -> 10962 bytes
 iotAmak/tool/schedulable.py         |   2 +-
 iotAmak/tool/ssh_client.py          |   7 +-
 4 files changed, 11 insertions(+), 133 deletions(-)

diff --git a/README.md b/README.md
index b327709..f1ca783 100644
--- a/README.md
+++ b/README.md
@@ -7,20 +7,8 @@
 - [Shared work](#shared-work)
 - [Wait function](#wait-function)
 - [Experience format](#experience-format)
-- [Topics](#topics)
-  - [Agent](#agent)
-  - [Scheduler](#scheduler)
-  - [Amas](#amas)
-  - [Env](#env)
-- [Mosquitto (Windows)](#mosquitto-windows)
-- [Mosquitto (Linux) Didn't work](#mosquitto-linux-didnt-work)
 
 
-
-requirement :  
- * paho-mqtt
- * pexpect
-
 # Reseau 
 
 Port : 
@@ -31,8 +19,6 @@ Port :
  * Broker : Mosquitto (Windows)
  * Client : python paho-mqtt
 
-**Configuration raspberry :**  
-SSH activé avec hostname et mdp
 
 **Configuration windows :**
 WSL (pour pouvoir démarer l'amas)
@@ -40,8 +26,11 @@ WSL (pour pouvoir démarer l'amas)
 
 # Random note
 
-First procedure :
- 1. etre sur que le ssh est trust (faire un premier ssh hors du programe)
+ihm : 
+ 1. Loading (check if good format) -> Warning -> can't "start"
+ 2. Ping (all in config) -> Warning -> can't start, can't agent
+ 3. Agent -> Warning -> already running -> kill ? 
+ 4. Whatever (start)
 
 
 Start procédure : 
@@ -186,117 +175,3 @@ Pour ajouter des attributs a l'initialisation aux agents il suffit de rajouter d
 **A AJOUTER**
 un .config dans les experience avec la version du coeur
 
-# Topics
-
-## Agent
-
-Tout les topics des agents sont du format :
-> `agent/agentid/topicname`
-
-Par exemple le topic `log` de l'agent 2 est :
-> `agent/2/log`
-
-Les topics présent par défaut :  
-`log` :
-> envoie un message qui sera print par l'amas
-
-`cycle_done` :
-> prévient le scheduler qu'une action c'est fini
-
-`metric` :
-> a la fin de chaque cycle envoie un dico avec tout les info a potentielement partager
-
-
-## Scheduler
-
-Les topics du scheduler sont dans le format :
-> `scheduler/aQui/topic`
-
-Par exemple, pour débloquer les agents :
-> `scheduler/agent/wakeup`
-
-Les topics présent par défaut :  
-`agent/wakeup` :  
-> envoie a tout les agents un message pour les débloquer
-
-`schedulable/wakeup` :  
-> envoie a l'amas et l'environment un message pour les débloquer
-
-## Amas
-
-Les topics présent par défaut :  
-`amas/agent/new` :  
-> Envoie un message pour prévenir qu'un nouvel agent est crée avec son ID
-
-`amas/action_done` :  
-> Envoie un message pour prévenir le scheduleur de la fin d'une action
-
-`amas/agent/id/neighbor` :
-> Topic to communicate to agent "id" his neighborhood
-
-## Env
-
-Les topics présent par défaut : 
-`env/action_done` :  
-> Envoie un message pour prévenir le scheduleur de la fin d'une action 
-
-
-# Mosquitto (Windows)
-
-Stop mosquitto in service 
-
-Start mosquitto : `mosquitto -v -c D:\data\mosquitto\mosquitto.conf`
-
-Config file :
-```
-allow_anonymous false
-
-password_file D:\data\mosquitto\pwfile
-
-listener 1883
-```
-
-Check port 1883 : `netstat -a`
-
-# Mosquitto (Linux) Didn't work
-
-
-Config file :
-```
-allow_anonymous false
-password_file /etc/mosquitto/pwfile
-listener 1883
-```
-
-Restart moquitto :
-```
-sudo service mosquitto stop
-// check if a pid is still running
-sudo lsof -i:1883
-// or
-pgrep mosquitto
-// and kill it
-sudo kill pid
-
-sudo start mosquitto -v
-```
-
-
-**firewall (didn't work):**
-```
-sudo apt update
-sudo apt full-upgrade
-sudo apt install ufw
-sudo ufw status verbose
-```
-
-allow : 
-```
-sudo ufw allow port
-sudo ufw enable
-```
-
-```
-sudo ufw disable
-sudo apt remove ufw
-```
diff --git a/dist/iotAmak-0.0.1-py3-none-any.whl b/dist/iotAmak-0.0.1-py3-none-any.whl
index 9d5df61d4d4c5dacd84d9a0360412ea1f3249121..4895e53f2612b1a1293548dc04d552f4eebb50e5 100644
GIT binary patch
delta 2205
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
QE3-|Wqb0x=s0NY+0Hs71zW@LL

delta 2164
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
au`n>mAq-;J!l<bX*1JthjLlFDBm)5dD-2@*

diff --git a/iotAmak/tool/schedulable.py b/iotAmak/tool/schedulable.py
index e1e1e71..3ba5e34 100644
--- a/iotAmak/tool/schedulable.py
+++ b/iotAmak/tool/schedulable.py
@@ -20,7 +20,7 @@ class Schedulable(MqttClient):
         MqttClient.__init__(self, broker_ip, client_id)
 
         self.exit_bool: bool = False
-        self.subscribe("ping/exit", self.exit_procedure)
+        self.subscribe("ihm/exit", self.exit_procedure)
 
         self.nbr_cycle: int = 0
         self.wait_delay: float = 0.01
diff --git a/iotAmak/tool/ssh_client.py b/iotAmak/tool/ssh_client.py
index 149eaa9..366b926 100644
--- a/iotAmak/tool/ssh_client.py
+++ b/iotAmak/tool/ssh_client.py
@@ -26,7 +26,8 @@ class SSHClient:
     def __init__(self, clients: List[RemoteClient]):
         self.clients = clients
 
-    def run_cmd(self, client: int, cmd: list):
+    def run_cmd(self, client: int, cmd: list) -> list[str]:
+        ret = []
         try:
             s = pxssh.pxssh()
             dest = self.clients[client]
@@ -35,13 +36,15 @@ class SSHClient:
             for command in cmd:
                 s.sendline(command.cmd)
                 s.prompt()
+                ret.append(s.before.decode('utf-8'))
                 if command.do_print:
-                    print(command.prefix, s.before.decode('utf-8'))
+                    print(command.prefix, ret[-1])
 
             s.logout()
         except pxssh.ExceptionPxssh as e:
             print("pxssh failed on login.")
             print(e)
+        return ret
 
     def update(self, experiment_name):
         for client in self.clients:
-- 
GitLab