From f44919563747856f27e4b25f3c83cf6755e8f268 Mon Sep 17 00:00:00 2001 From: Laurent LAPORTE Date: Mon, 4 Mar 2024 20:28:42 +0100 Subject: [PATCH 1/6] fix(desktop): add `watcher` configuration to scan studies --- resources/deploy/config.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/resources/deploy/config.yaml b/resources/deploy/config.yaml index 3eaaf891b6..6f3fdf595f 100644 --- a/resources/deploy/config.yaml +++ b/resources/deploy/config.yaml @@ -48,5 +48,10 @@ debug: false root_path: "api" +server: + worker_threadpool_size: 12 + services: + - watcher + logging: logfile: ./tmp/antarest.log From e3189d62d4b4d95f8c692be277fb6fc8cdf5a3bd Mon Sep 17 00:00:00 2001 From: Laurent LAPORTE Date: Mon, 4 Mar 2024 20:31:26 +0100 Subject: [PATCH 2/6] feat(packaging): update the packaging script to use Antares Solver v8.8.3 --- scripts/package_antares_web.sh | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/scripts/package_antares_web.sh b/scripts/package_antares_web.sh index 885ec09ccf..21008c15f8 100755 --- a/scripts/package_antares_web.sh +++ b/scripts/package_antares_web.sh @@ -9,7 +9,7 @@ set -e ANTARES_SOLVER_VERSION="8.8" -ANTARES_SOLVER_FULL_VERSION="8.8.2" +ANTARES_SOLVER_FULL_VERSION="8.8.3" ANTARES_SOLVER_VERSION_INT="880" SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P) @@ -30,6 +30,10 @@ LINK="https://github.com/AntaresSimulatorTeam/Antares_Simulator/releases/downloa echo "INFO: Preparing the Git Commit ID..." git log -1 HEAD --format=%H > ${RESOURCES_DIR}/commit_id +echo "INFO: Remove the previous build if any..." +# Avoid the accumulation of files from previous builds (in development). +rm -rf ${DIST_DIR} + echo "INFO: Generating the Desktop version of the Web Application..." if [[ "$OSTYPE" == "msys"* ]]; then pushd ${PROJECT_DIR} @@ -49,9 +53,13 @@ popd echo "INFO: Creating destination directory '${ANTARES_SOLVER_DIR}'..." mkdir -p "${ANTARES_SOLVER_DIR}" -echo "INFO: Downloading '$ANTARES_SOLVER_ZIPFILE_NAME' in '$ANTARES_SOLVER_DIR'..." -cd "$ANTARES_SOLVER_DIR" || exit -wget $LINK +if [ -f "$ANTARES_SOLVER_ZIPFILE_NAME" ]; then + echo "INFO: Using existing '$ANTARES_SOLVER_ZIPFILE_NAME' in '$ANTARES_SOLVER_DIR'..." +else + echo "INFO: Downloading '$ANTARES_SOLVER_ZIPFILE_NAME' in '$ANTARES_SOLVER_DIR'..." + cd "$ANTARES_SOLVER_DIR" || exit + wget $LINK +fi echo "INFO: Uncompressing '$ANTARES_SOLVER_ZIPFILE_NAME'..." if [[ "$OSTYPE" == "msys"* ]]; then From ad592088c2d515a0d056620e1038a04edc97d4a5 Mon Sep 17 00:00:00 2001 From: Laurent LAPORTE Date: Mon, 4 Mar 2024 21:07:11 +0100 Subject: [PATCH 3/6] docs(ssh-client): improve the function documentation --- antarest/launcher/ssh_client.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/antarest/launcher/ssh_client.py b/antarest/launcher/ssh_client.py index 7337a308ac..e52cb0072c 100644 --- a/antarest/launcher/ssh_client.py +++ b/antarest/launcher/ssh_client.py @@ -32,7 +32,7 @@ def execute_command(ssh_config: SSHConfigDTO, args: List[str]) -> Any: command = " ".join(args) try: with ssh_client(ssh_config) as client: # type: ignore - stdin, stdout, stderr = client.exec_command(command, timeout=10) + _, stdout, stderr = client.exec_command(command, timeout=10) output = stdout.read().decode("utf-8").strip() error = stderr.read().decode("utf-8").strip() except ( @@ -77,6 +77,15 @@ def parse_cpu_load(sinfo_output: str) -> float: def calculates_slurm_load(ssh_config: SSHConfigDTO, partition: str) -> Tuple[float, float, int]: """ Returns the used/oad of the SLURM cluster or local machine in percentage and the number of queued jobs. + + Args: + ssh_config: SSH configuration to connect to the SLURM server. + partition: Name of the partition to query, or empty string to query all partitions. + + Returns: + - percentage of used CPUs in the cluster, in range [0, 100] + - percentage of CPU load in the cluster, in range [0, 100] + - number of queued jobs """ partition_arg = f"--partition={partition}" if partition else "" From ccf46b8d8d314ba9f1794da88be0d1ae92d08434 Mon Sep 17 00:00:00 2001 From: Laurent LAPORTE Date: Mon, 4 Mar 2024 21:11:47 +0100 Subject: [PATCH 4/6] fix(api-launcher-load): correct the launcher load to be in range [0, 100] for local machine --- antarest/launcher/service.py | 3 ++- tests/integration/test_integration.py | 4 ++-- tests/launcher/test_service.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/antarest/launcher/service.py b/antarest/launcher/service.py index 4c4ea9aa15..023296188b 100644 --- a/antarest/launcher/service.py +++ b/antarest/launcher/service.py @@ -657,7 +657,8 @@ def get_load(self) -> LauncherLoadDTO: for job in self.job_result_repository.get_running() ) - cluster_load_approx = min(1.0, local_used_cpus / (os.cpu_count() or 1)) + # The cluster load is approximated by the percentage of used CPUs. + cluster_load_approx = min(100.0, 100 * local_used_cpus / (os.cpu_count() or 1)) return LauncherLoadDTO( allocated_cpu_rate=cluster_load_approx, diff --git a/tests/integration/test_integration.py b/tests/integration/test_integration.py index ffa4d4a91d..8065039c92 100644 --- a/tests/integration/test_integration.py +++ b/tests/integration/test_integration.py @@ -299,8 +299,8 @@ def test_main(client: TestClient, admin_access_token: str, study_id: str) -> Non res = client.get("/v1/launcher/load", headers=admin_headers) assert res.status_code == 200, res.json() launcher_load = LauncherLoadDTO.parse_obj(res.json()) - assert launcher_load.allocated_cpu_rate == 1 / (os.cpu_count() or 1) - assert launcher_load.cluster_load_rate == 1 / (os.cpu_count() or 1) + assert launcher_load.allocated_cpu_rate == 100 / (os.cpu_count() or 1) + assert launcher_load.cluster_load_rate == 100 / (os.cpu_count() or 1) assert launcher_load.nb_queued_jobs == 0 assert launcher_load.launcher_status == "SUCCESS" diff --git a/tests/launcher/test_service.py b/tests/launcher/test_service.py index 72f95a782f..9095673070 100644 --- a/tests/launcher/test_service.py +++ b/tests/launcher/test_service.py @@ -937,8 +937,8 @@ def test_save_solver_stats(self, tmp_path: Path) -> None: ), ], { - "allocated_cpu_rate": min(1.0, 8.0 / (os.cpu_count() or 1)), - "cluster_load_rate": min(1.0, 8.0 / (os.cpu_count() or 1)), + "allocated_cpu_rate": min(100.0, 800 / (os.cpu_count() or 1)), + "cluster_load_rate": min(100.0, 800 / (os.cpu_count() or 1)), "nb_queued_jobs": 0, "launcher_status": "SUCCESS", }, From 1d0a58b162c5750a0621c72e8a72681adaf9c7d6 Mon Sep 17 00:00:00 2001 From: Laurent LAPORTE Date: Mon, 4 Mar 2024 21:45:31 +0100 Subject: [PATCH 5/6] docs: update change log --- docs/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 2e75ee1611..e137d6bf1c 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -6,6 +6,7 @@ v2.16.7 (2024-03-04) ### Bug Fixes +* **desktop:** correct configuration and launcher load indicator for Antares Web Desktop [`#1969`](https://github.com/AntaresSimulatorTeam/AntaREST/pull/1969) v2.16.6 (2024-03-04) From 6f3608c342263284cdb41b2b40ab87d90c4546cb Mon Sep 17 00:00:00 2001 From: Samir Kamal <1954121+skamril@users.noreply.github.com> Date: Tue, 13 Feb 2024 17:56:41 +0100 Subject: [PATCH 6/6] ci: add commitlint GitHub action (#1933) lints Pull Request commits with commitlint (cherry picked from commit 4c60fa20ab6f1a54574bf8a2b899b31f94fad0b1) --- .github/workflows/commitlint.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/workflows/commitlint.yml diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml new file mode 100644 index 0000000000..8e08ce865c --- /dev/null +++ b/.github/workflows/commitlint.yml @@ -0,0 +1,13 @@ +name: Lint Commit Messages +on: [pull_request] + +permissions: + contents: read + pull-requests: read + +jobs: + commitlint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: wagoid/commitlint-github-action@v5