xref: /aosp_15_r20/tools/netsim/scripts/tasks/task.py (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
1*cf78ab8cSAndroid Build Coastguard Worker#!/usr/bin/env python3
2*cf78ab8cSAndroid Build Coastguard Worker#
3*cf78ab8cSAndroid Build Coastguard Worker# Copyright 2024 - The Android Open Source Project
4*cf78ab8cSAndroid Build Coastguard Worker#
5*cf78ab8cSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the',  help="License");
6*cf78ab8cSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
7*cf78ab8cSAndroid Build Coastguard Worker# You may obtain a copy of the License at
8*cf78ab8cSAndroid Build Coastguard Worker#
9*cf78ab8cSAndroid Build Coastguard Worker#     http://www.apache.org/licenses/LICENSE-2.0
10*cf78ab8cSAndroid Build Coastguard Worker#
11*cf78ab8cSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
12*cf78ab8cSAndroid Build Coastguard Worker# distributed under the License is distributed on an',  help="AS IS" BASIS,
13*cf78ab8cSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*cf78ab8cSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
15*cf78ab8cSAndroid Build Coastguard Worker# limitations under the License.
16*cf78ab8cSAndroid Build Coastguard Worker
17*cf78ab8cSAndroid Build Coastguard Workerimport logging
18*cf78ab8cSAndroid Build Coastguard Worker
19*cf78ab8cSAndroid Build Coastguard Worker
20*cf78ab8cSAndroid Build Coastguard Workerclass Task:
21*cf78ab8cSAndroid Build Coastguard Worker  """General Task class for modularizing tasks in Building netsim"""
22*cf78ab8cSAndroid Build Coastguard Worker
23*cf78ab8cSAndroid Build Coastguard Worker  def __init__(self, name: str, enabled=False):
24*cf78ab8cSAndroid Build Coastguard Worker    self.enabled = enabled
25*cf78ab8cSAndroid Build Coastguard Worker    self.name = name
26*cf78ab8cSAndroid Build Coastguard Worker
27*cf78ab8cSAndroid Build Coastguard Worker  def enable(self, enable: bool):
28*cf78ab8cSAndroid Build Coastguard Worker    self.enabled = enable
29*cf78ab8cSAndroid Build Coastguard Worker
30*cf78ab8cSAndroid Build Coastguard Worker  def run(self):
31*cf78ab8cSAndroid Build Coastguard Worker    """Runs the task if it's enabled."""
32*cf78ab8cSAndroid Build Coastguard Worker    if self.enabled:
33*cf78ab8cSAndroid Build Coastguard Worker      logging.info("Running %s", self.name)
34*cf78ab8cSAndroid Build Coastguard Worker      if self.do_run():
35*cf78ab8cSAndroid Build Coastguard Worker        logging.info("%s completed!", self.name)
36*cf78ab8cSAndroid Build Coastguard Worker      else:
37*cf78ab8cSAndroid Build Coastguard Worker        logging.info("%s incomplete", self.name)
38*cf78ab8cSAndroid Build Coastguard Worker    else:
39*cf78ab8cSAndroid Build Coastguard Worker      logging.info("Skipping %s", self.name)
40*cf78ab8cSAndroid Build Coastguard Worker
41*cf78ab8cSAndroid Build Coastguard Worker  def do_run(self) -> bool:
42*cf78ab8cSAndroid Build Coastguard Worker    """Subclasses should implement the concrete task.
43*cf78ab8cSAndroid Build Coastguard Worker
44*cf78ab8cSAndroid Build Coastguard Worker    Returns True if the run is successful
45*cf78ab8cSAndroid Build Coastguard Worker    """
46*cf78ab8cSAndroid Build Coastguard Worker    return True
47