From cb67376600e5947d1b6ff6f09d7d0157edb4cc34 Mon Sep 17 00:00:00 2001 From: Heng Pan Date: Wed, 22 Jan 2025 03:19:32 +0000 Subject: [PATCH] feat(framework) Add Exit code range (500-599) for simulation-specific exits (#4845) --- framework/docs/source/ref-exit-codes-dir.rst | 4 +++- .../docs/source/ref-exit-codes/{500.rst => 600.rst} | 2 +- .../docs/source/ref-exit-codes/{501.rst => 601.rst} | 2 +- .../docs/source/ref-exit-codes/{502.rst => 602.rst} | 2 +- src/py/flwr/common/exit/exit_code.py | 13 ++++++++----- src/py/flwr/simulation/app.py | 10 ++++------ 6 files changed, 18 insertions(+), 15 deletions(-) rename framework/docs/source/ref-exit-codes/{500.rst => 600.rst} (93%) rename framework/docs/source/ref-exit-codes/{501.rst => 601.rst} (91%) rename framework/docs/source/ref-exit-codes/{502.rst => 602.rst} (94%) diff --git a/framework/docs/source/ref-exit-codes-dir.rst b/framework/docs/source/ref-exit-codes-dir.rst index 10789ef9cb98..d5201b68e930 100644 --- a/framework/docs/source/ref-exit-codes-dir.rst +++ b/framework/docs/source/ref-exit-codes-dir.rst @@ -15,7 +15,9 @@ Categories (SuperNode) errors. - **ClientApp-specific exit codes (400-499)**: Specific to ``flwr-clientapp`` (ClientApp) errors. -- **Common exit codes (500-)**: Shared across multiple components. +- **Simulation-specific exit codes (500-599)**: Specific to ``flwr-simulation`` + (Simulation Engine) errors. +- **Common exit codes (600-)**: Shared across multiple components. Indices ------- diff --git a/framework/docs/source/ref-exit-codes/500.rst b/framework/docs/source/ref-exit-codes/600.rst similarity index 93% rename from framework/docs/source/ref-exit-codes/500.rst rename to framework/docs/source/ref-exit-codes/600.rst index cc619e302fb0..60142cd57730 100644 --- a/framework/docs/source/ref-exit-codes/500.rst +++ b/framework/docs/source/ref-exit-codes/600.rst @@ -1,4 +1,4 @@ -[500] COMMON_ADDRESS_INVALID +[600] COMMON_ADDRESS_INVALID ============================ Description diff --git a/framework/docs/source/ref-exit-codes/501.rst b/framework/docs/source/ref-exit-codes/601.rst similarity index 91% rename from framework/docs/source/ref-exit-codes/501.rst rename to framework/docs/source/ref-exit-codes/601.rst index b997e549482a..40fda2044d6e 100644 --- a/framework/docs/source/ref-exit-codes/501.rst +++ b/framework/docs/source/ref-exit-codes/601.rst @@ -1,4 +1,4 @@ -[501] COMMON_MISSING_EXTRA_REST +[601] COMMON_MISSING_EXTRA_REST =============================== Description diff --git a/framework/docs/source/ref-exit-codes/502.rst b/framework/docs/source/ref-exit-codes/602.rst similarity index 94% rename from framework/docs/source/ref-exit-codes/502.rst rename to framework/docs/source/ref-exit-codes/602.rst index 69d445caa522..16285a3f871f 100644 --- a/framework/docs/source/ref-exit-codes/502.rst +++ b/framework/docs/source/ref-exit-codes/602.rst @@ -1,4 +1,4 @@ -[502] COMMON_TLS_NOT_SUPPORTED +[602] COMMON_TLS_NOT_SUPPORTED ============================== Description diff --git a/src/py/flwr/common/exit/exit_code.py b/src/py/flwr/common/exit/exit_code.py index a04b5ff14470..c56aec75f8a8 100644 --- a/src/py/flwr/common/exit/exit_code.py +++ b/src/py/flwr/common/exit/exit_code.py @@ -39,10 +39,12 @@ class ExitCode: # ClientApp-specific exit codes (400-499) - # Common exit codes (500-) - COMMON_ADDRESS_INVALID = 500 - COMMON_MISSING_EXTRA_REST = 501 - COMMON_TLS_NOT_SUPPORTED = 502 + # Simulation-specific exit codes (500-599) + + # Common exit codes (600-) + COMMON_ADDRESS_INVALID = 600 + COMMON_MISSING_EXTRA_REST = 601 + COMMON_TLS_NOT_SUPPORTED = 602 def __new__(cls) -> ExitCode: """Prevent instantiation.""" @@ -75,7 +77,8 @@ def __new__(cls) -> ExitCode: "file and try again." ), # ClientApp-specific exit codes (400-499) - # Common exit codes (500-) + # Simulation-specific exit codes (500-599) + # Common exit codes (600-) ExitCode.COMMON_ADDRESS_INVALID: ( "Please provide a valid URL, IPv4 or IPv6 address." ), diff --git a/src/py/flwr/simulation/app.py b/src/py/flwr/simulation/app.py index a60b9a5e9150..4712688591de 100644 --- a/src/py/flwr/simulation/app.py +++ b/src/py/flwr/simulation/app.py @@ -16,7 +16,6 @@ import argparse -import sys from logging import DEBUG, ERROR, INFO from queue import Queue from time import sleep @@ -39,6 +38,7 @@ Status, SubStatus, ) +from flwr.common.exit import ExitCode, flwr_exit from flwr.common.logger import ( log, mirror_output_to_queue, @@ -81,12 +81,10 @@ def flwr_simulation() -> None: log(INFO, "Starting Flower Simulation") if not args.insecure: - log( - ERROR, - "`flwr-simulation` does not support TLS yet. " - "Please use the '--insecure' flag.", + flwr_exit( + ExitCode.COMMON_TLS_NOT_SUPPORTED, + "`flwr-simulation` does not support TLS yet. ", ) - sys.exit(1) log( DEBUG,