def _run_cmd(self, file_handler, cmd): f = open(file_handler, 'w') process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) sys.stdout = f # Poll process for new output until finished while True: nextline = process.stdout.readline() if nextline == '' and process.poll() is not None: break sys.stdout.write(str(nextline)) sys.stdout.flush() sys.stdout = sys.__stdout__ f.close() f = open(file_handler, 'r') output = f.readlines() f.close() job_store = Rds('job-' + self.request.id) job = job_store.getter() job['task_state'] = 'finished' job['finish_time'] = Time() job['update_time'] = Time() job_store.setter(job) log.debug(job) return output
def post(self, task_id): log = Log.getLogger(__name__ + ".Callback.post") data = {} data = request.get_json() queue = Rds('job-' + task_id) log.debug(queue._key_name) queue_data = queue.getter() step_result_id = len(queue_data['step_result']) + 1 queue_data['step_result'][step_result_id] = data queue_data['update_time'] = data['timestamp'] if data.has_key('result'): queue_data['result'] = data['result'] queue.setter(queue_data) log.debug("Task event updated from callback: %s %s" % (task_id, json.dumps(queue_data)))
def _save_job_details(self): job = {} job['task_id'] = self.request.id job['inventory'] = self.params.inventory job['task_state'] = 'pending' job['result'] = 'running' job['playbook'] = self.params.playbook job['step_result'] = {} job['start_time'] = Time() job['finish_time'] = '' job['update_time'] = () job_store = Rds('job-' + str(job['task_id'])) job_store.setter(job) log.debug(job) return job