From dce535f8bc1ddd854ccecbe2185c2e90d6b27457 Mon Sep 17 00:00:00 2001
From: shinedday <shinedday@gmail.com>
Date: Tue, 17 May 2022 14:31:27 +0200
Subject: [PATCH] version : 0.0.2, add a lot of type, add comment, add better
 DB managment for amas

---
 dist/iotAmak-0.0.1-py3-none-any.whl | Bin 10793 -> 10805 bytes
 dist/iotAmak-0.0.2-py3-none-any.whl | Bin 0 -> 11179 bytes
 iotAmak/agent.py                    |  10 +++++-----
 iotAmak/amas.py                     |  13 +++++++------
 iotAmak/scheduler.py                |   6 +-----
 iotAmak/tool/mqtt_client.py         |  22 ++++++++++++++++++----
 iotAmak/tool/remote_client.py       |  19 +++++++++++++++----
 iotAmak/tool/schedulable.py         |  15 ++++++++++++---
 iotAmak/tool/ssh_client.py          |   4 +++-
 setup.py                            |   2 +-
 10 files changed, 62 insertions(+), 29 deletions(-)
 create mode 100644 dist/iotAmak-0.0.2-py3-none-any.whl

diff --git a/dist/iotAmak-0.0.1-py3-none-any.whl b/dist/iotAmak-0.0.1-py3-none-any.whl
index 6593a49ae36d5395a80151bb29aef8b266b2bb5f..4cab34533845b9eed0c0fc38bd61dc3fcf727f46 100644
GIT binary patch
delta 2301
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
BF`fVb

delta 2261
zcmdlQvNB|Yno#{Gm$f06X0^RK$HKtiA;Q2Q!oa|gnP1|Vo0zR%oSc!GQks)mq*qY6
zH{x#oZ8L#-^9TPM1LTqx_TBlGX>g0tabp7Ov_uE1FNqQyUW<~Igi<Gj*!=&#d$C66
zuOgY_YvXig9{>I0?%nqqtd0irZB?S@O_K~)IXUB6in5X2eAXTHTLNAEdQMmh{#+N(
z_M+$W-5Rs`SI@KGz4Ly?%`~NBp+Bq-9ry4!J2i4oyio3yL!K`62j4dZnYd(fOzQF$
zZrgD=N~Cq?*_**BT}s_0PvyEdAM0-arhmtHerTV0qmE5uf$e<39XU1?m$}P5TXtS^
z5nT}{94xTmOsAfxdfI8u)Af=k9>`8V-*R%w2A$PmatE_{8#giw3N4t>nZ9b5@6WaX
zttAFi^i0m1c?+$6)TymimVHD;#eDxHd+w9hzlxoA|6)Ju);<+SVK0Gg)qy&jDi;}=
zSD#b$<>PeuK6B6a+z88!XIC<|Zi;%l=555vN-pmEAt%|bQ`f9;O-Na;mpoUaUhuPP
z!-utN?s$Ew-LQt`RO~69<-L84ziU}L1zVSBKDZM6F!Z>f>V#e9uNhW^-TDx_SMq(l
zz;=#npT0e8<z4zFr?CGaLk+joUE{=-8X0c~>A>(+Q*Uc3o>lt6wbfNeZDIW8YwK3;
zP!UeZ^?V@DTCq{}<j!jkn&NkFy|wJ@hh5tBOIhctTrdvs`mHM>we8&X`|q`dzj<Cy
zwON?9MyfxwP`Zuz!*RApJ#z$4$)5hQF~aW0#)Q4GHWPkaXt{Xg%8`Z|jw9a~+5#{9
zd**to|LC<{|JObLzu{(`N7N5vi#Xx$T$a_R=UMWYYMMl_v8js+N9eV4#MaAjXRVpL
z>O<9CmzVX;_G_h{-hK9J^ZnU{KOTjuDj(Q<HOGlPV%8xpAJf@4nMDHMRh|_&ovod%
z6cm)RCSma-39Yv*FOm!s3QqrHtV}=8a8AnPprUq!)KZ(qNl`3IZ{GPM)S}qIs%^c&
zDkRoW?w@eqf`8jxuek12`?~Dd;isO<tUa@M<BV*#S#4xlTfcmp(ZwT?p*Lljguhl~
z^YU`aZLhrgeU*^(1edpmmj!$)IWp&B-0OpO3uER8r+tgI5bkUJzH)ltd4Fz>dF44O
z6MJ=@N?Lzue|zG}8^%lO%TFH^5>Lz4JgFv;d2$c$JVU=<E_U;pPjfGCWs`mI&0E|%
z_*-8^f`IP}5osmv$NU%S<5qOd4mugQX3tEn!nw?Ws~;{izh>r?>D=h)pQEDPe<s@?
z&281@pR?{f+VP9`)uMvur51bbyH+}F@C)q`d3(yDnJbEg_l&mw;?=f$&P}Pv;{CI|
zMLT=KgEw3FzVyTj7Pzi(dUoSvaFA|B-Q$u9wRER_OtK>K%*TbgYOVMuWYx3zIz9Zs
zb$V0!65fqUr~L{({QEKM%HkiMGoKs%jjVh>W7df(_h&70RtL>vJ7Jqv9W4JyhSf)Q
zVXgT^I}YRI<Gue|4+LrLGvH5qSbp4k-j@ekD|Oagd-c69G`~fD>vKEdHSFz^0w3?y
zI=otGQ`?^(^$KF*uGbzLrhn^Rt#yBnZ+)_R`gIMV>Km~vyKJ*~*GCk7yK?>2ogF)~
zEA%+r-&Adp?9<+{eq};Q{b_CC+y4`epV>awx@GBHcIEiMV^d58%I{Tv*rn8QpY`^4
zUX$>nUk%sno5A@<Pc`zK=Fx=}zAIg)#O=1pwqV?H|MG_~J@>!NsH*w*{P6yT!K;;X
zN-KWIPmtQ|Aby&Yd5PEB$$W}O!1PtcDPTHB$%}J|*V>Sd#MM5hChu3$u0LM1ID(<|
zVXZy)ij#>KxhFU@aImQenu$D|RBW(d`TUhDx9M(OUH+LV{%@(@#j`QOVfM`nGP*4}
z`2O<wR(4FhqTgi4nHFy(l;2)ZFjbmeZK`sFPeLf~%Iv+5ex%!M7yrnnXy0`|U`AtE
zUC=#`>h15V?w<F!py2R^@qFhzw%PS<)1tz^GtDVsH80jRWjR#X_M>T5K~<5;4BeI7
zbAB6f9nLR&@i|TUg;++wZixqbt=;2z(zot;A?fnq&2;8l-;>_ldS=?))Vc1#Q}$PW
zGLv&A?S67mCuGl~t;=s&PIJ5$vLa(&?<=l_EN-<$uJ>#VPr8b-$9|1A^4=iacEhC0
zrhd+q8*CeQ^({MexnO>#T+dQbmqeD&Cw&U}CM{)qEIdspFy*b&Jk8Ww3#Gh|9!+>&
zc7<Q+kgLwFURMXB?4X4#E{k-&b)Jn4|6kAlZ~4*K*<uGd4n0wwD9ic!;O*_-X1TvQ
zyRh`AvH41|*EgkCoMn|+HZ4eC=dVMKBA$C^oi#Y`SRW(4-rpzZh_ou_>M*C5|Ms4C
z+qU;Zzh8{XjfiBY7h)46a*Yd(Tpm5qwrpB9`(Sy=4ZY_k<*mP)WM96}6?hr4QpVgR
zkWX}(yW70?Q+A%-SJJ2W=Dccsy|9~Ug;My{$sNlMEMkw)=zQ~c??fr{;@(@cCU0;q
z4e*LBXfJne4rr-A_TOOnpX#Uk+!+tY-hJnF>}O$uX1MJ8Q%{yn?tgr@x3EdpK6U!+
z%f<i0jOL3UJi%zWpnb`Vv>h3j-z`^**(qH9)GmQ#>D=1fM?u$I*MFM*&Cpsxd40vU
z`2~TIiv`qAF6G^Ow<TcK-_@@@nikY8IF=Bq#ANeH$9M9z-lRzP@Jeroj5m9yS50&Z
zy7^?qtu%AKU$ef<wk)p=Xf6+sf0p}i!}iv14;CFVzvfUQ_wMGA6W8}_)@~IqvDmS&
zt?9(>tPi@(hV@HzA7(_TbNt%8N!5#y7p3-}%&8vCC^I=$-IXasd~%hz+~h;*T8!%^
zzg72OJU7`)!;5jj<VFn-rj;_2&&$Y6=GNd*0A-I-QTyOd1_p-B3=9kk3<$8T@w>w0
zL`|v5x|$;LAcc2!uWpQCU|;}YS%f-<ZH@aTCur(`^IX5CG*hS&Slcm8NwE3g?8n5w
ZaE*n5K@LgV7RE&og_2rgY%5ejG5}L`8l3<D

diff --git a/dist/iotAmak-0.0.2-py3-none-any.whl b/dist/iotAmak-0.0.2-py3-none-any.whl
new file mode 100644
index 0000000000000000000000000000000000000000..dd5c9043d601ea0921fdeb91c6f1d05defb0ff05
GIT binary patch
literal 11179
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
P3<3<<EDQ`<>L4Bf7}ujh

literal 0
HcmV?d00001

diff --git a/iotAmak/agent.py b/iotAmak/agent.py
index 52a1bf3..f749a10 100644
--- a/iotAmak/agent.py
+++ b/iotAmak/agent.py
@@ -2,7 +2,7 @@
 Agent class file
 """
 from ast import literal_eval
-from typing import Dict
+from typing import Dict, List
 
 import sys
 import pathlib
@@ -18,14 +18,14 @@ class Agent(Schedulable):
     """
 
     def __init__(self, identifier: int, broker_ip: str) -> None:
-        self.id = identifier
+        self.id: int = identifier
 
         Schedulable.__init__(self, broker_ip, "Agent" + str(self.id))
 
         self.subscribe("scheduler/agent/wakeup", self.wake_up)
 
-        self.neighbors = []
-        self.next_neighbors = []
+        self.neighbors: List[Dict] = []
+        self.next_neighbors: List[Dict] = []
         self.subscribe("amas/agent/" + str(self.id) + "/neighbor", self.add_neighbor)
 
         self.on_initialization()
@@ -58,7 +58,6 @@ class Agent(Schedulable):
             "agent/" + str(self.id) + "/log",
             "[AGENT] " + str(self.id) + " : " + message
         )
-        return
 
     def publish(self, topic: str, message) -> None:
         """
@@ -126,3 +125,4 @@ class Agent(Schedulable):
 
             self.publish("metric", str(self.send_metric()))
             self.publish("cycle_done", "")
+            self.nbr_cycle += 1
diff --git a/iotAmak/amas.py b/iotAmak/amas.py
index 304d487..89a8312 100644
--- a/iotAmak/amas.py
+++ b/iotAmak/amas.py
@@ -2,7 +2,7 @@
 Amas class
 """
 from ast import literal_eval
-from typing import List
+from typing import List, Dict
 
 import sys
 import pathlib
@@ -26,20 +26,20 @@ class Amas(Schedulable, SSHClient):
 
         SSHClient.__init__(self, true_client)
 
-        self.broker_ip = broker_ip
+        self.broker_ip: str = broker_ip
         self.subscribe("scheduler/schedulable/wakeup", self.wake_up)
 
-        self.next_id = 0
+        self.next_id: int = 0
 
-        self.agents_cmd = []
+        self.agents_cmd: List[Cmd] = []
 
         self.on_initialization()
         self.on_initial_agents_creation()
-        self.agents_metric = [None for _ in range(self.next_id)]
+        self.agents_metric: List[Dict] = [{} for _ in range(self.next_id)]
 
         self.client.publish("amas/action_done", "")
 
-    def on_initial_agents_creation(self):
+    def on_initial_agents_creation(self) -> None:
         """
         Convenient method to initially create the agents, is called at the end of initialization
         """
@@ -128,6 +128,7 @@ class Amas(Schedulable, SSHClient):
             if self.exit_bool:
                 return
 
+            self.publish("amas/all_metric", str(self.agents_metric))
             self.on_cycle_begin()
             self.client.publish("amas/action_done", "")
 
diff --git a/iotAmak/scheduler.py b/iotAmak/scheduler.py
index 9c97156..ef7f5b5 100644
--- a/iotAmak/scheduler.py
+++ b/iotAmak/scheduler.py
@@ -160,13 +160,9 @@ class Scheduler(Schedulable):
 
             sleep(self.sleep_between_cycle)
             self.nbr_cycle += 1
+            self.publish("scheduler/cycledone", "")
 
         # exit
         self.client.publish("scheduler/schedulable/wakeup", "")
         self.client.publish("scheduler/agent/wakeup", "")
         sleep(2)
-
-
-if __name__ == '__main__':
-    s = Scheduler(str(sys.argv[1]))
-    s.run()
diff --git a/iotAmak/tool/mqtt_client.py b/iotAmak/tool/mqtt_client.py
index 1311df1..3c5289a 100644
--- a/iotAmak/tool/mqtt_client.py
+++ b/iotAmak/tool/mqtt_client.py
@@ -1,17 +1,31 @@
+"""
+MQTT client class file
+"""
+from typing import Callable
+
 from paho.mqtt.client import Client
 
 
 class MqttClient:
+    """
+    Base class to any instance that need to interact with the broker
+    """
 
-    def __init__(self, broker_ip, client_id):
-        self.client = Client(client_id=client_id)
+    def __init__(self, broker_ip: str, client_id: str):
+        self.client: Client = Client(client_id=client_id)
         self.client.username_pw_set(username="goyon", password="mosquitto")
         self.client.connect(host=broker_ip)
         self.client.loop_start()
 
-    def subscribe(self, topic, fun):
+    def subscribe(self, topic: str, fun: Callable) -> None:
+        """
+        subscribe to the topic, and use fun whenever you receive a message
+        """
         self.client.subscribe(topic)
         self.client.message_callback_add(topic, fun)
 
-    def publish(self, topic, message):
+    def publish(self, topic: str, message) -> None:
+        """
+        publish the message in a specified topic
+        """
         self.client.publish(topic, message)
diff --git a/iotAmak/tool/remote_client.py b/iotAmak/tool/remote_client.py
index f257a53..21a84c9 100644
--- a/iotAmak/tool/remote_client.py
+++ b/iotAmak/tool/remote_client.py
@@ -1,9 +1,20 @@
+"""
+remote client class file
+"""
+
+
 class RemoteClient:
+    """
+    Class used to store information about the raspberry
+    """
 
-    def __init__(self, hostname, user, password):
-        self.hostname = hostname
-        self.user = user
-        self.password = password
+    def __init__(self, hostname: str, user: str, password: str):
+        self.hostname: str = hostname
+        self.user: str = user
+        self.password: str = password
 
     def to_send(self) -> dict:
+        """
+        convert the current instance in a dict, use to send it through command line
+        """
         return {"hostname": self.hostname, "user": self.user, "password": self.password}
diff --git a/iotAmak/tool/schedulable.py b/iotAmak/tool/schedulable.py
index 3ba5e34..0abff6e 100644
--- a/iotAmak/tool/schedulable.py
+++ b/iotAmak/tool/schedulable.py
@@ -26,16 +26,25 @@ class Schedulable(MqttClient):
         self.wait_delay: float = 0.01
         self.wake_up_token: int = 0
 
-    def wake_up(self, client, userdata, message):
+    def wake_up(self, client, userdata, message) -> None:
+        """
+        Called by the scheduler to wake up the schedulable
+        """
         self.wake_up_token += 1
         # print("Waked up")
 
-    def wait(self):
+    def wait(self) -> None:
+        """
+        Basic wait method
+        """
         # print("Waiting")
         while self.wake_up_token == 0:
             sleep(self.wait_delay)
         self.wake_up_token -= 1
         # print("End wait")
 
-    def exit_procedure(self, client, userdata, message):
+    def exit_procedure(self, client, userdata, message) -> None:
+        """
+        Called by the Ihm to exit as soon as possible
+        """
         self.exit_bool = True
diff --git a/iotAmak/tool/ssh_client.py b/iotAmak/tool/ssh_client.py
index 5d4155f..83f1f76 100644
--- a/iotAmak/tool/ssh_client.py
+++ b/iotAmak/tool/ssh_client.py
@@ -26,7 +26,7 @@ class SSHClient:
     def __init__(self, clients: List[RemoteClient]):
         self.clients = clients
 
-    def run_cmd(self, client: int, cmd: list) -> list[str]:
+    def run_cmd(self, client: int, cmd: list, repeat: bool = False) -> list[str]:
         ret = []
         try:
             s = pxssh.pxssh()
@@ -44,6 +44,8 @@ class SSHClient:
         except pxssh.ExceptionPxssh as e:
             print("pxssh failed on login.")
             print(e)
+            if not repeat:
+                self.run_cmd(client, cmd, True)
         return ret
 
     def update(self, experiment_name, path_to_experiment):
diff --git a/setup.py b/setup.py
index c1654f3..0388a00 100644
--- a/setup.py
+++ b/setup.py
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
 setup(
     name='iotAmak',
     packages=find_packages(),
-    version='0.0.1',
+    version='0.0.2',
     description='AmakFramework in python',
     author='SMAC - GOYON Sebastien',
     install_requires=[],
-- 
GitLab