def post(self, target_environment, reqdata=None): environment = abort_if_obj_doesnt_exist(self.filter_by, str(target_environment), Environment, blame_for_all=False) if not reqdata: self.parser.add_argument('server', type=str) self.parser.add_argument('action', type=str, required=True) self.parser.add_argument('destination', type=str, required=True) self.parser.add_argument('status', type=str, default='pending') self.parser.add_argument('response', type=str, default='') reqdata = self.parser.parse_args() # when called from inside reqdata is already filled so the above if block # is skipped and cannot set default value of pending if not defined. # The code bellow check and set it. if 'status' not in reqdata: reqdata['status'] = 'pending' if 'response' not in reqdata: reqdata['response'] = '' # if server not null it will create only one task itself. Otherwise # will create one task for each environment's server. servers = [] if reqdata['server']: servers = [reqdata['server']] else: for server in environment.servers: print 'server:%s\n\n\n\n\n\n\n\n\n' % server.name servers.append(server.name) for server in servers: taskid = str(uuid.uuid4()) task = Task(taskid=taskid, action=reqdata['action'], destination=reqdata['destination'], status=reqdata['status'] or 'pending', response=reqdata['response'] or '', environment=environment.name, server=server) # it will try sava or update task. try: task.save() except Exception, e: logger.error('Error trying to create task %s' % e) abort(500, message='Error trying to create task') return { 'response': 'task sucessfully created taskid:[%s]' % taskid }, 201