Cluster - Contrôlez les Swarms et accédez aux résultats et aux journaux

class manta.cluster.Cluster(host: str = 'localhost', port: int = 50051, ca_port: int = 50050, secured_token: str | None = None)

Client gRPC pour se connecter à un cluster

Paramètres:
  • host (str) – Adresse du Manager

  • port (int) – Port du Manager

  • ca_port (int) – Port pour le CA

  • secured_token (Optional[str]) – Jeton sécurisé pour la première connexion du Manager

async classmethod connect(host: str = 'localhost', port: int = 50051, ca_port: int = 50050, secured_token: str | None = None) Cluster

Créez un client Cluster gRPC.

Paramètres:
  • host (str) – Adresse du Manager, par défaut « localhost »

  • port (int) – Port du Manager, par défaut 50051

  • ca_port (int) – Port pour le CA

  • secured_token (Optional[str]) – Jeton sécurisé pour la première connexion du Manager

Renvoie:

Client gRPC en cluster

Type renvoyé:

Cluster

Exemples

>>> await Cluster.connect(
...     "localhost", 50051, 50050, secured_token="TOKEN"
... )
async is_available(service: UserStub) Response

Vérifiez si le serveur est disponible

Paramètres:

service (UserStub) – Service de connexion au serveur gRPC (non requis)

Renvoie:

Réponse du serveur

Type renvoyé:

Response

Exemples

>>> cluster = Cluster("localhost", 50051)
>>> await cluster.is_available()
Response(message="Available", status=1)

Remarques

L’argument service est géré par un décorateur sous le capot.

async start_swarm(service: UserStub, swarm_id: str)

Démarrer un Swarm en fonction de son identifiant s’il est trouvé dans la base de données

Paramètres:
  • service (UserStub) – Service de connexion au serveur gRPC (non requis)

  • swarm_id (str) – ID du Swarm

Renvoie:

Réponse du serveur

Type renvoyé:

Response

Exemples

>>> cluster = Cluster("localhost", 50051)
>>> swarm_id = '9415dfd18edc45c9a6ffdf2055007bf9'
>>> await cluster.start_swarm(swarm_id)
Response(message='Swarm 9415dfd18edc45c9a6ffdf2055007bf9 has started.', status=2)

Remarques

L’argument service est géré par un décorateur sous le capot.

async send_swarm(service: UserStub, swarm: Swarm) SwarmOverview

Envoyer un Swarm au serveur pour l’insérer dans sa base de données

Paramètres:
  • service (UserStub) – Service de connexion au serveur gRPC (non requis)

  • swarm (Swarm) – Toute classe qui hérite de la classe Swarm

Renvoie:

Aperçu des métadonnées du Swarm enregistré sur le serveur

Type renvoyé:

SwarmOverview

Exemples

>>> cluster = Cluster("localhost", 50051)
>>> swarm = FLSwarm()
>>> await cluster.send_swarm(swarm)
SwarmOverview(swarm_id='9415dfd18edc45c9a6ffdf2055007bf9', datetime='2024-09-13 10:18:06', status='ACTIVE')

Remarques

L’argument service est géré par un décorateur sous le capot.

async deploy_swarm(service: UserStub, swarm: Swarm) Deployment

Déployer un Swarm

Paramètres:
  • service (UserStub) – Service de connexion au serveur gRPC (non requis)

  • swarm (Swarm) – Toute classe qui hérite de la classe Swarm

Renvoie:

Réponse du serveur

Type renvoyé:

Deployment

Exemples

>>> cluster = Cluster("localhost", 50051)
>>> swarm = FLSwarm()
>>> await cluster.deploy_swarm(swarm)
Deployment(swarm_id='9415dfd18edc45c9a6ffdf2055007bf9', datetime='2024-09-13 10:18:06', status='ACTIVE', message='Swarm 9415dfd18edc45c9a6ffdf2055007bf9 has started.')

Remarques

L’argument service est géré par un décorateur sous le capot.

async list_swarms(service: UserStub) List[SwarmOverview]

Lister les Swarms enregistrés sur le serveur

Paramètres:

service – Service de connexion au serveur gRPC (non requis)

Renvoie:

Liste des aperçus des Swarms

Type renvoyé:

List[SwarmOverview]

Exemples

>>> cluster = Cluster("localhost", 50051)
>>> await cluster.list_swarms()
[SwarmOverview(swarm_id='9415dfd18edc45c9a6ffdf2055007bf9', datetime='2024-09-13 10:18:06', status='ACTIVE')]

Remarques

L’argument service est géré par un décorateur sous le capot.

async remove_swarm(service: UserStub, swarm_id: str) Response

Supprimer un Swarm sur le cluster

Paramètres:
  • service (UserStub) – Service de connexion au serveur gRPC (non requis)

  • swarm_id (str) – Id du Swarm

Renvoie:

Réponse du serveur

Type renvoyé:

Response

Exemples

>>> cluster = Cluster("localhost", 50051)
>>> swarm_id = '9415dfd18edc45c9a6ffdf2055007bf9'
>>> await cluster.remove_swarm(swarm_id)
Response(message='9415dfd18edc45c9a6ffdf2055007bf9 deleted.', status=2)

Remarques

L’argument service est géré par un décorateur sous le capot.

async select_results(service: UserStub, *queries: Tuple[str, List[str]]) Dict[str, Results]

Sélectionner les résultats de la base de données en fonction des requêtes

Paramètres:
  • service (UserStub) – Service de connexion au serveur gRPC (non requis)

  • queries (Tuple[str, List[str]]) – Requêtes sous la structure (swarm_id, tags)

Renvoie:

Dictionnaire de (swarm_id, results)

Type renvoyé:

Dict[str, Results]

Exemples

>>> cluster = Cluster("localhost", 50051)
>>> swarm_id = '9415dfd18edc45c9a6ffdf2055007bf9'
>>> tags = ["accuracy", "loss"]
>>> await cluster.select_results((swarm_id, tags))
{'9415dfd18edc45c9a6ffdf2055007bf9': Results(len(iteration)=10, len(nodes)=8, len(tags)=2)}

Remarques

L’argument service est géré par un décorateur sous le capot.

async collect_logs(service: UserStub, id: str) List[Dict[str, str]]

Collecter les journaux stockés dans la base de données Manager en fonction de l’ID

Paramètres:
  • service (UserStub) – Service de connexion au serveur gRPC (non requis)

  • id (str) – ID du Swarm ou ID de nœud

Renvoie:

Liste de plusieurs informations contenant des logs

Type renvoyé:

List[Dict[str, str]]

Exemples

>>> cluster = Cluster("localhost", 50051)
>>> swarm_id = '9415dfd18edc45c9a6ffdf2055007bf9'
>>> cluster.collect_logs(swarm_id)
[{'swarm_id': '9415dfd18edc45c9a6ffdf2055007bf9', 'task_id': 'a2ff3abc76e045d7bb4a04a5ac416318', 'message': ..., 'datetime': '2024-09-13 10:18:06', 'iteration': '1'}, ...]

Remarques

L’argument service est géré par un décorateur sous le capot.