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