Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(desktop): correct configuration and launcher load indicator #1969

Merged
merged 6 commits into from
Mar 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/workflows/commitlint.yml
Original file line number Diff line number Diff line change
@@ -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
3 changes: 2 additions & 1 deletion antarest/launcher/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
11 changes: 10 additions & 1 deletion antarest/launcher/ssh_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down Expand Up @@ -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 ""

Expand Down
1 change: 1 addition & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
5 changes: 5 additions & 0 deletions resources/deploy/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,10 @@ debug: false

root_path: "api"

server:
worker_threadpool_size: 12
services:
- watcher

logging:
logfile: ./tmp/antarest.log
16 changes: 12 additions & 4 deletions scripts/package_antares_web.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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}
laurent-laporte-pro marked this conversation as resolved.
Show resolved Hide resolved

echo "INFO: Generating the Desktop version of the Web Application..."
if [[ "$OSTYPE" == "msys"* ]]; then
pushd ${PROJECT_DIR}
Expand All @@ -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
Expand Down
4 changes: 2 additions & 2 deletions tests/integration/test_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down
4 changes: 2 additions & 2 deletions tests/launcher/test_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
},
Expand Down
Loading