• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Clinical-Genomics / trailblazer / 10415926331

16 Aug 2024 06:49AM UTC coverage: 87.447%. First build
10415926331

Pull #463

github

seallard
Fix test
Pull Request #463: Clean up tower and slurm interactions

171 of 221 new or added lines in 20 files covered. (77.38%)

2055 of 2350 relevant lines covered (87.45%)

0.87 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

86.67
/trailblazer/services/slurm/slurm_api_service/slurm_api_service.py
1
from trailblazer.clients.slurm_api_client.dto.job_response import SlurmJobResponse
1✔
2
from trailblazer.clients.slurm_api_client.slurm_api_client import SlurmAPIClient
1✔
3
from trailblazer.services.slurm.dtos import SlurmJobInfo
1✔
4
from trailblazer.services.slurm.slurm_api_service.mappers import create_job
1✔
5
from trailblazer.services.slurm.slurm_api_service.utils import create_job_info_dto
1✔
6
from trailblazer.services.slurm.slurm_service import SlurmService
1✔
7
from trailblazer.services.slurm.utils import get_slurm_job_ids
1✔
8
from trailblazer.store.models import Analysis, Job
1✔
9
from trailblazer.store.store import Store
1✔
10

11

12
class SlurmAPIService(SlurmService):
1✔
13
    def __init__(self, client: SlurmAPIClient, store: Store):
1✔
14
        self.client = client
1✔
15
        self.store = store
1✔
16

17
    def get_job(self, job_id: int) -> SlurmJobInfo:
1✔
18
        job_response: SlurmJobResponse = self.client.get_job(job_id)
1✔
19
        return create_job_info_dto(job_response)
1✔
20

21
    def update_jobs(self, analysis_id: int) -> None:
1✔
22
        analysis: Analysis = self.store.get_analysis_with_id(analysis_id)
1✔
23
        job_ids: list[int] = get_slurm_job_ids(analysis.config_path)
1✔
24

25
        dtos: list[SlurmJobInfo] = []
1✔
26
        for job_id in job_ids:
1✔
27
            if job := self.get_job(job_id):
1✔
28
                dtos.append(job)
1✔
29

30
        jobs: list[Job] = [create_job(dto) for dto in dtos]
1✔
31
        self.store.replace_jobs(analysis_id=analysis_id, jobs=jobs)
1✔
32

33
    def cancel_jobs(self, analysis_id: int) -> None:
1✔
NEW
34
        analysis: Analysis = self.store.get_analysis_with_id(analysis_id)
×
NEW
35
        jobs: list[Job] = analysis.jobs
×
36

NEW
37
        for job in jobs:
×
NEW
38
            self.client.cancel_job(job.slurm_id)
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc