diff --git a/src/drunc/process_manager/interface/commands.py b/src/drunc/process_manager/interface/commands.py index 129f3ea78..095e62d09 100644 --- a/src/drunc/process_manager/interface/commands.py +++ b/src/drunc/process_manager/interface/commands.py @@ -30,6 +30,12 @@ default=True, help="Override logs, if --no-override-logs filenames have the timestamp of the run.", ) +@click.option( + "-cl", + "--controller-log-level", + default=None, + help="Overrides the config-defined log level of the controller", +) @click.argument("configuration-file", type=str, callback=validate_conf_string) @click.argument("configuration-id", type=str) @click.argument("session-name", type=str) @@ -41,6 +47,7 @@ def boot( configuration_file: str, configuration_id: str, override_logs: bool, + controller_log_level: bool | None, ) -> None: log = get_logger("process_manager.shell") processes = obj.get_driver("process_manager").ps(ProcessQuery(user=user)) @@ -60,7 +67,7 @@ def boot( conf_id=configuration_id, user=user, session_name=session_name, - log_level="INFO", ## Unused anyway!! + log_level=controller_log_level, override_logs=override_logs, ) for result in results: diff --git a/src/drunc/process_manager/process_manager_driver.py b/src/drunc/process_manager/process_manager_driver.py index 1f9e50aeb..42b9e35c2 100644 --- a/src/drunc/process_manager/process_manager_driver.py +++ b/src/drunc/process_manager/process_manager_driver.py @@ -83,6 +83,10 @@ def close(self) -> None: except Exception as e: self.log.error(f"Error closing gRPC channel: {e}", exc_info=True) + def update_controller_logs(self, ctrl_dal, level): + ctrl_dal.controller_log_level = level + return ctrl_dal + # ----- Boot workflow ----- def boot( self, @@ -90,7 +94,7 @@ def boot( conf_id: str, user: str, session_name: str, - log_level: str, + log_level: str | None = None, override_logs: bool = True, timeout: int | float = 60, sleep_between_app_boot: ( @@ -109,6 +113,10 @@ def boot( # Step 3 - check for port conflicts and update configuration/DAL as needed db, session_dal = self.check_port_conflicts(db, session_dal) + # Step 3.25 - Update controller dal for vibey reasons + if log_level: + session_dal = self.update_controller_logs(session_dal, log_level) + # Step 4 - connect to the connection service csc, connection_server, connection_port = self._connect_to_service( session_dal, session_name diff --git a/src/drunc/unified_shell/commands.py b/src/drunc/unified_shell/commands.py index f1c730126..e094a4dc4 100644 --- a/src/drunc/unified_shell/commands.py +++ b/src/drunc/unified_shell/commands.py @@ -19,6 +19,12 @@ default=None, help="Manual override allows for overwriting logs or not, by appending timestamp info. Default (None) is to follow what is used in the initialisation of the unified shell.", ) +@click.option( + "-cl", + "--controller-log-level", + default=None, + help="Overrides the config-defined log level of the controller", +) @click.option( "--sleep-between-app-boot", type=float, @@ -29,6 +35,7 @@ def boot( obj: ProcessManagerContext, override_logs: bool | None, + controller_log_level: bool | None, sleep_between_app_boot: int | float = 0, ) -> None: log = get_logger("unified_shell.boot") @@ -58,7 +65,7 @@ def boot( conf_id=obj.configuration_id, user=user, session_name=session_name, - log_level="INFO", # Unused anyway !! + log_level=controller_log_level, override_logs=override_logs_boot, sleep_between_app_boot=sleep_between_app_boot, )