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 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 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