github.com/misfo/deis@v1.0.1-0.20141111224634-e0eee0392b8a/controller/scheduler/chaos.py (about)

     1  import random
     2  
     3  CREATE_ERROR_RATE = 0
     4  DESTROY_ERROR_RATE = 0
     5  START_ERROR_RATE = 0
     6  STOP_ERROR_RATE = 0
     7  
     8  
     9  class ChaosSchedulerClient(object):
    10  
    11      def __init__(self, target, auth, options, pkey):
    12          self.target = target
    13          self.auth = auth
    14          self.options = options
    15          self.pkey = pkey
    16  
    17      # job api
    18  
    19      def create(self, name, image, command, **kwargs):
    20          if random.random() < CREATE_ERROR_RATE:
    21              raise RuntimeError
    22          return True
    23  
    24      def start(self, name):
    25          """
    26          Start an idle job
    27          """
    28          if random.random() < START_ERROR_RATE:
    29              raise RuntimeError
    30          return True
    31  
    32      def stop(self, name):
    33          """
    34          Stop a running job
    35          """
    36          if random.random() < STOP_ERROR_RATE:
    37              raise RuntimeError
    38          return True
    39  
    40      def destroy(self, name):
    41          """
    42          Destroy an existing job
    43          """
    44          if random.random() < DESTROY_ERROR_RATE:
    45              raise RuntimeError
    46          return True
    47  
    48      def run(self, name, image, entrypoint, command):
    49          """
    50          Run a one-off command
    51          """
    52          if random.random() < CREATE_ERROR_RATE:
    53              raise RuntimeError
    54          return 0, ''
    55  
    56  SchedulerClient = ChaosSchedulerClient