Skip to content

Commit 1102d8d

Browse files
committed
refactor: initial detanglement of deployment objects
Signed-off-by: James McCorrie <[email protected]>
1 parent 60dcb91 commit 1102d8d

File tree

5 files changed

+173
-81
lines changed

5 files changed

+173
-81
lines changed

src/dvsim/flow/sim.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,15 @@
1818
from tabulate import tabulate
1919

2020
from dvsim.flow.base import FlowCfg
21-
from dvsim.job.deploy import CompileSim, CovAnalyze, CovMerge, CovReport, CovUnr, Deploy, RunTest
21+
from dvsim.job.deploy import (
22+
CompileSim,
23+
CovAnalyze,
24+
CovMerge,
25+
CovReport,
26+
CovUnr,
27+
Deploy,
28+
RunTest,
29+
)
2230
from dvsim.logging import log
2331
from dvsim.modes import BuildMode, Mode, RunMode, find_mode
2432
from dvsim.regression import Regression
@@ -270,7 +278,10 @@ def _create_objects(self) -> None:
270278
self.sw_images.extend(build_mode_obj.sw_images)
271279
self.sw_build_opts.extend(build_mode_obj.sw_build_opts)
272280
else:
273-
log.error('Mode "%s" enabled on the command line is not defined', en_build_mode)
281+
log.error(
282+
'Mode "%s" enabled on the command line is not defined',
283+
en_build_mode,
284+
)
274285
sys.exit(1)
275286

276287
# Walk through run modes enabled on the CLI and append the opts
@@ -876,7 +887,7 @@ def create_bucket_report(buckets):
876887

877888
# Append coverage results if coverage was enabled.
878889
if self.cov_report_deploy is not None:
879-
report_status = results[self.cov_report_deploy]
890+
report_status = results[self.cov_report_deploy.qual_name]
880891
if report_status == "P":
881892
results_str += "\n## Coverage Results\n"
882893
# Link the dashboard page using "cov_report_page" value.

src/dvsim/job/deploy.py

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from tabulate import tabulate
1515

1616
from dvsim.job.time import JobTime
17-
from dvsim.launcher.factory import get_launcher
17+
from dvsim.launcher.base import Launcher
1818
from dvsim.logging import log
1919
from dvsim.sim_utils import get_cov_summary_table, get_job_runtime, get_simulated_time
2020
from dvsim.utils import (
@@ -26,7 +26,11 @@
2626

2727
if TYPE_CHECKING:
2828
from dvsim.flow.sim import SimCfg
29-
from dvsim.launcher.base import Launcher
29+
30+
__all__ = (
31+
"CompileSim",
32+
"Deploy",
33+
)
3034

3135

3236
class Deploy:
@@ -65,6 +69,7 @@ def __init__(self, sim_cfg: "SimCfg") -> None:
6569

6670
# Cross ref the whole cfg object for ease.
6771
self.sim_cfg = sim_cfg
72+
self.flow = sim_cfg.name
6873

6974
# A list of jobs on which this job depends.
7075
self.dependencies = []
@@ -92,9 +97,6 @@ def __init__(self, sim_cfg: "SimCfg") -> None:
9297
# Construct the job's command.
9398
self.cmd = self._construct_cmd()
9499

95-
# Launcher instance created later using create_launcher() method.
96-
self.launcher: Launcher | None = None
97-
98100
# Job's wall clock time (a.k.a CPU time, or runtime).
99101
self.job_runtime = JobTime()
100102

@@ -284,7 +286,7 @@ def is_equivalent_job(self, item: "Deploy") -> bool:
284286
log.verbose('Deploy job "%s" is equivalent to "%s"', item.name, self.name)
285287
return True
286288

287-
def pre_launch(self) -> None:
289+
def pre_launch(self, launcher: Launcher) -> None:
288290
"""Perform additional pre-launch activities (callback).
289291
290292
This is invoked by launcher::_pre_launch().
@@ -325,15 +327,6 @@ def extract_info_from_log(self, log_text: list) -> None:
325327
log.warning(f"{self.full_name}: {e} Using dvsim-maintained job_runtime instead.")
326328
self.job_runtime.set(self.launcher.job_runtime_secs, "s")
327329

328-
def create_launcher(self) -> None:
329-
"""Create the launcher instance.
330-
331-
Note that the launcher instance for ALL jobs in the same job group must
332-
be created before the Scheduler starts to dispatch one by one.
333-
"""
334-
# Retain the handle to self for lookup & callbacks.
335-
self.launcher = get_launcher(self)
336-
337330
def model_dump(self) -> Mapping:
338331
"""Dump the deployment object to mapping object.
339332
@@ -371,7 +364,11 @@ def __init__(self, build_mode, sim_cfg) -> None:
371364

372365
# Needs to be after the wildcard expansion to log anything meaningful
373366
if self.build_timeout_mins:
374-
log.debug('Timeout for job "%s" is %d minutes.', self.name, self.build_timeout_mins)
367+
log.debug(
368+
'Timeout for job "%s" is %d minutes.',
369+
self.name,
370+
self.build_timeout_mins,
371+
)
375372

376373
def _define_attrs(self) -> None:
377374
"""Define attributes."""
@@ -420,7 +417,7 @@ def _set_attrs(self) -> None:
420417
if self.sim_cfg.args.build_timeout_mins is not None:
421418
self.build_timeout_mins = self.sim_cfg.args.build_timeout_mins
422419

423-
def pre_launch(self) -> None:
420+
def pre_launch(self, launcher: Launcher) -> None:
424421
"""Perform pre-launch tasks."""
425422
# Delete old coverage database directories before building again. We
426423
# need to do this because the build directory is not 'renewed'.
@@ -446,7 +443,11 @@ def __init__(self, build_mode, sim_cfg) -> None:
446443

447444
# Needs to be after the wildcard expansion to log anything meaningful
448445
if self.build_timeout_mins:
449-
log.debug('Timeout for job "%s" is %d minutes.', self.name, self.build_timeout_mins)
446+
log.debug(
447+
'Timeout for job "%s" is %d minutes.',
448+
self.name,
449+
self.build_timeout_mins,
450+
)
450451

451452
def _define_attrs(self) -> None:
452453
super()._define_attrs()
@@ -518,7 +519,11 @@ def __init__(self, index, test, build_job, sim_cfg: "SimCfg") -> None:
518519

519520
# Needs to be after the wildcard expansion to log anything meaningful
520521
if self.run_timeout_mins:
521-
log.debug('Timeout for job "%s" is %d minutes.', self.full_name, self.run_timeout_mins)
522+
log.debug(
523+
'Timeout for job "%s" is %d minutes.',
524+
self.full_name,
525+
self.run_timeout_mins,
526+
)
522527

523528
if build_job is not None:
524529
self.dependencies.append(build_job)
@@ -595,9 +600,9 @@ def _set_attrs(self) -> None:
595600
self.run_timeout_multiplier,
596601
)
597602

598-
def pre_launch(self) -> None:
603+
def pre_launch(self, launcher: Launcher) -> None:
599604
"""Perform pre-launch tasks."""
600-
self.launcher.renew_odir = True
605+
launcher.renew_odir = True
601606

602607
def post_finish(self, status) -> None:
603608
"""Perform tidy up tasks."""
@@ -664,7 +669,11 @@ def _define_attrs(self) -> None:
664669
)
665670

666671
self.mandatory_misc_attrs.update(
667-
{"cov_unr_dir": False, "cov_merge_db_dir": False, "build_fail_patterns": False},
672+
{
673+
"cov_unr_dir": False,
674+
"cov_merge_db_dir": False,
675+
"build_fail_patterns": False,
676+
},
668677
)
669678

670679
def _set_attrs(self) -> None:
@@ -749,7 +758,11 @@ def _define_attrs(self) -> None:
749758
self.mandatory_cmd_attrs.update({"cov_report_cmd": False, "cov_report_opts": False})
750759

751760
self.mandatory_misc_attrs.update(
752-
{"cov_report_dir": False, "cov_merge_db_dir": False, "cov_report_txt": False},
761+
{
762+
"cov_report_dir": False,
763+
"cov_merge_db_dir": False,
764+
"cov_report_txt": False,
765+
},
753766
)
754767

755768
def _set_attrs(self) -> None:

0 commit comments

Comments
 (0)