Utilisez l’sortie JSON CLI

Le Flower CLI peut retourner un sortie JSON pour automatiser et intégrer avec d’autres outils.

Note

L’sortie JSON est disponible pour les commandes documentées ici car elles opèrent à travers l’API de contrôle SuperLink. Cela inclut les SuperLinks distants ainsi que le SuperLink local géré utilisé par les profils de simulation locale marqués avec address = ":local:".

Ce guide montre l’sortie JSON pour :

  • flwr run

  • flwr list

  • flwr stop

flwr run JSON sortie

La commande flwr run soumet une application Flower en cours d’exécution. Pour une application locale, la CLI construit d’abord un FAB et puis lance l’exécution à travers l’API de contrôle.

Sortie par défaut représentatif :

$ flwr run . local --stream
Starting local SuperLink on 127.0.0.1:39093...
Successfully started run 1859953118041441032
...

Pour retourner un JSON structuré au lieu de cela, utilisez --format json :

$ flwr run . local --format json
{
  "success": true,
  "run-id": "1859953118041441032",
  "fab-id": "flwrlabs/myawesomeapp",
  "fab-name": "myawesomeapp",
  "fab-version": "1.0.0",
  "fab-hash": "014c8eb3",
  "fab-filename": "flwrlabs.myawesomeapp.1-0-0.014c8eb3.fab"
}

L’sortie JSON du flwr run contient :

  • success: true si la commande a réussi

  • run-id: l’ID de run soumis

  • fab-id: l’identifiant de l’application Flower

  • fab-name: le nom de l’application Flower

  • fab-version: la version de l’application Flower

  • fab-hash: le hash FAB court

  • fab-filename: le fichier FAB construit

Si la commande échoue, le JSON de sortie contient success: false et error-message.

flwr list JSON sortie

La commande flwr list interroge les exécutions en cours à partir de la connexion SuperLink actuelle.

Sortie par défaut représentatif :

$ flwr list
📄 Listing all runs...
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓
┃        Run ID          Federation                  App                      Status        Elapsed    Status Changed @   ┃
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩
│ 1859953118041441032   @none/default  @flwrlabs/myawesomeapp==1.0.0    finished:completed  55s      2024-12-16 11:13:28Z │
├──────────────────────┼───────────────┼─────────────────────────────────┼────────────────────┼─────────┼──────────────────────┤
│ 14200740657011601420  @none/default  @flwrlabs/myawesomeapp==1.0.0    running             9s       2024-12-16 12:18:39Z │
└──────────────────────┴───────────────┴─────────────────────────────────┴────────────────────┴─────────┴──────────────────────┘

Pour retourner un JSON structuré au lieu de cela :

$ flwr list --format json
{
  "success": true,
  "runs": [
    {
      "run-id": "1859953118041441032",
      "federation": "@none/default",
      "fab-id": "flwrlabs/myawesomeapp",
      "fab-name": "myawesomeapp",
      "fab-version": "1.0.0",
      "fab-hash": "014c8eb3014c8eb3014c8eb3014c8eb3014c8eb3014c8eb3014c8eb3014c8eb3",
      "status": "finished:completed",
      "status-details": "N/A",
      "elapsed": 55.0,
      "pending-at": "2024-12-16 11:12:33Z",
      "starting-at": "2024-12-16 11:12:33Z",
      "running-at": "2024-12-16 11:12:33Z",
      "finished-at": "2024-12-16 11:13:28Z",
      "network-traffic": {
        "inbound-bytes": 12345,
        "outbound-bytes": 6789,
        "total-bytes": 19134
      },
      "compute-time": {
        "serverapp-seconds": 5.2,
        "clientapp-seconds": 42.7,
        "total-seconds": 47.9
      }
    },
    {
      "run-id": "14200740657011601420",
      "federation": "@none/default",
      "fab-id": "flwrlabs/myawesomeapp",
      "fab-name": "myawesomeapp",
      "fab-version": "1.0.0",
      "fab-hash": "014c8eb3014c8eb3014c8eb3014c8eb3014c8eb3014c8eb3014c8eb3014c8eb3",
      "status": "running",
      "status-details": "N/A",
      "elapsed": 9.0,
      "pending-at": "2024-12-16 12:18:39Z",
      "starting-at": "2024-12-16 12:18:39Z",
      "running-at": "2024-12-16 12:18:39Z",
      "finished-at": "N/A",
      "network-traffic": {
        "inbound-bytes": 4567,
        "outbound-bytes": 2345,
        "total-bytes": 6912
      },
      "compute-time": {
        "serverapp-seconds": 0.6,
        "clientapp-seconds": 8.1,
        "total-seconds": 8.7
      }
    }
  ]
}

Chaque entrée sous runs contient :

  • run-id: l’ID de run

  • federation: l’identifiant de fédération

  • fab-id / fab-name / fab-version / fab-hash: les métadonnées de l’application Flower

  • status: le statut actuel de run

  • status-details: additional status detail text

  • elapsed: le temps d’exécution en secondes

  • pending-at / starting-at / running-at / finished-at: horodatages d’exécution

  • network-traffic: octets entrants, sortants et totaux

  • compute-time: temps de calcul en secondes pour ServerApp, ClientApp et total

Pour retourner la vue détaillée pour une seule exécution, utilisez :

$ flwr list --run-id 1859953118041441032 --format json

Cela retourne la même structure de niveau supérieur avec une seule entrée dans runs.

flwr stop JSON sortie

La commande flwr stop arrête une exécution soumise ou en cours par ID d’exécution.

Sortie par défaut représentatif :

$ flwr stop 1859953118041441032
Stopping run ID 1859953118041441032...
Run 1859953118041441032 successfully stopped.

Pour retourner un JSON structuré au lieu de cela :

$ flwr stop 1859953118041441032 --format json
{
  "success": true,
  "run-id": "1859953118041441032"
}

Si la commande échoue, le JSON de sortie contient success: false et error-message.