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