def stop(self, instance_name, padded=False): if not padded: progress_log('Stopping instance') process_name = self.process_name(instance_name) supervisor = SupervisorControl(self.config) supervisor.stop(process_name) padded_log('Waiting for "{}" instance to stop...'.format(instance_name)) retries = 10 status = self.get_status(instance_name) while retries > 0 or status['status'] != 'stopped': sleep(0.5) status = self.get_status(instance_name) retries -= 1 status = self.get_status(instance_name) if status['status'].lower() == 'stopped': padded_success('Instance "{}" stopped'.format(instance_name)) return True else: padded_error('Instance "{}" still active'.format(instance_name)) return False