def start(self, instance_name, padded=False): if not padded: progress_log('Starting instance') status = self.get_status(instance_name) process_name = self.process_name(instance_name) supervisor = SupervisorControl(self.config) if status['status'] == 'unknown': padded_log('Unknown {} status ...') elif status['status'] == 'not found': supervisor.load(process_name) else: padded_log('Process stopped, starting ...') supervisor.start(process_name) padded_log('Waiting for process "{}" to start...'.format(process_name)) retries = 10 status = self.get_status(instance_name) while retries > 0 or status['status'] != 'running': sleep(0.5) status = self.get_status(instance_name) retries -= 1 if status['status'] == 'running': padded_success('Process "{}" started'.format(process_name)) return True elif status['status'] in ['fatal', 'backoff']: padded_error('Process "{}" not started, an error occurred'.format(process_name)) return False else: padded_error('Process "{}" not started'.format(process_name)) return False