def delete(self, target_environment): environment = abort_if_obj_doesnt_exist(self.filter_by, target_environment, Environment) environment.delete() return { 'response' : 'sucessfully deleted [%s]' % target_environment }, 204
def put(self, target_environment): environment = abort_if_obj_doesnt_exist(self.filter_by, str(target_environment), Environment, blame_for_all=False) self.parser.add_argument('taskid', type=str, required=True) self.parser.add_argument('status', type=str) self.parser.add_argument('response', type=str) reqdata = self.parser.parse_args() try: task = Task.objects(taskid=str(reqdata['taskid'])).first() if reqdata['status']: task.update(status=str(reqdata['status'])) if reqdata['response']: task.update(response=str(reqdata['response'])) return { 'response': 'task sucessfully updated taskid:[%s]' % reqdata['taskid'] }, 201 except Exception, e: logger.error('Error trying to update task %s' % e) abort(404, message='Error trying to update task %s' % reqdata['taskid'])
def get(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, action='append', location='args') self.parser.add_argument('status', type=str, action='append', location='args') self.parser.add_argument('action', type=str, action='append', location='args') reqdata = self.parser.parse_args() data = [] for server in environment.servers: # filter by server if reqdata['server'] and server.name not in reqdata['server']: continue try: tasks = Task.objects(server = server.name, environment = environment.name) for task in tasks: # filter status if reqdata['status'] and task.status not in reqdata['status']: continue # filter action if reqdata['action'] and task.action not in reqdata['action']: continue data.append(TaskSchema().dump(task).data) except Exception, e: logger.warn('Error trying to retrieve task %s' % e)
def get(self, target_environment, reqdata=None): environment = abort_if_obj_doesnt_exist(self.filter_by, str(target_environment), Environment, blame_for_all=False) ret_data = { 'topsenders': {}, 'queue' : { 'active' : 0, 'bounce' : 0, 'hold' : 0, 'deferred' : 0 }, 'no_events': [], 'servers' : [] } buffer_tops = {} if not reqdata: self.parser.add_argument('tag', type=str, action='append', location='args') self.parser.add_argument('server', type=str, action='append', location='args') reqdata = self.parser.parse_args() data = [] for server in environment.servers: # filter by server if reqdata['server'] and server.name not in reqdata['server']: continue # filter by tag if reqdata['tag'] and server.tags not in reqdata['tag']: continue try: events = Event.objects(server = server.name, environment = environment.name) # let me know when an server doesn't have any event stored. if not events: ret_data['no_events'].append(server.name) else: ret_data['servers'].append(server.name) for event in events: # sum queues ret_data['queue']['deferred'] += event.queue.deferred ret_data['queue']['active'] += event.queue.active ret_data['queue']['hold'] += event.queue.hold ret_data['queue']['bounce'] += event.queue.bounce # buffer for sorting top senders latter. for sender in event.topsenders: try: buffer_tops[sender.email] += sender.quantity except: buffer_tops[sender.email] = sender.quantity except Exception, e: logger.error('Error trying to retrieve event %s' % e) ret_data['no_events'].append(server.name) continue
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
def get(self, target_environment): environment = abort_if_obj_doesnt_exist( self.filter_by, str(target_environment), Environment, blame_for_all=False ) hasmany = False if type(environment) == list: hasmany = True environment_result = EnvironmentSchema(many=hasmany).dump(environment) return {"response": environment_result.data}, 200
def get(self, target_environment): environment = abort_if_obj_doesnt_exist(self.filter_by, str(target_environment), Environment, blame_for_all=False) hasmany = False if type(environment) == list: hasmany = True environment_result = EnvironmentSchema(many=hasmany).dump(environment) return { 'response' : environment_result.data }, 200
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
def get(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, action='append', location='args') self.parser.add_argument('status', type=str, action='append', location='args') self.parser.add_argument('action', type=str, action='append', location='args') reqdata = self.parser.parse_args() data = [] for server in environment.servers: # filter by server if reqdata['server'] and server.name not in reqdata['server']: continue try: tasks = Task.objects(server=server.name, environment=environment.name) for task in tasks: # filter status if reqdata['status'] and task.status not in reqdata[ 'status']: continue # filter action if reqdata['action'] and task.action not in reqdata[ 'action']: continue data.append(TaskSchema().dump(task).data) except Exception, e: logger.warn('Error trying to retrieve task %s' % e)
def delete(self, target_environment, server=''): environment = abort_if_obj_doesnt_exist(self.filter_by, str(target_environment), Environment, blame_for_all=False) self.parser.add_argument('server', type=str, required=True) reqdata = self.parser.parse_args() if reqdata['server']: server = reqdata['server'] if server: events = Event.objects(server=str(server), environment=str(environment.name)) else: events = Event.objects(environment=str(environment.name)) for event in events: event.delete() return { 'response' : 'sucessfully deleted [%s]' % target_environment }, 204
def put(self, target_environment): environment = abort_if_obj_doesnt_exist(self.filter_by, str(target_environment), Environment, blame_for_all=False) self.parser.add_argument('taskid', type=str, required=True) self.parser.add_argument('status', type=str) self.parser.add_argument('response', type=str) reqdata = self.parser.parse_args() try: task = Task.objects(taskid=str(reqdata['taskid'])).first() if reqdata['status']: task.update(status = str(reqdata['status'])) if reqdata['response']: task.update(response = str(reqdata['response'])) return { 'response': 'task sucessfully updated taskid:[%s]' % reqdata['taskid'] }, 201 except Exception, e: logger.error('Error trying to update task %s' % e) abort(404, message='Error trying to update task %s' % reqdata['taskid'])
def delete(self, target_environment, server=''): environment = abort_if_obj_doesnt_exist(self.filter_by, str(target_environment), Environment, blame_for_all=False) self.parser.add_argument('server', type=str, required=True) reqdata = self.parser.parse_args() if reqdata['server']: server = reqdata['server'] if server: events = Event.objects(server=str(server), environment=str(environment.name)) else: events = Event.objects(environment=str(environment.name)) for event in events: event.delete() return { 'response': 'sucessfully deleted [%s]' % target_environment }, 204
def get(self, target_environment, reqdata=None): environment = abort_if_obj_doesnt_exist(self.filter_by, str(target_environment), Environment, blame_for_all=False) ret_data = { 'topsenders': {}, 'queue': { 'active': 0, 'bounce': 0, 'hold': 0, 'deferred': 0 }, 'no_events': [], 'servers': [] } buffer_tops = {} if not reqdata: self.parser.add_argument('tag', type=str, action='append', location='args') self.parser.add_argument('server', type=str, action='append', location='args') reqdata = self.parser.parse_args() data = [] for server in environment.servers: # filter by server if reqdata['server'] and server.name not in reqdata['server']: continue # filter by tag if reqdata['tag'] and server.tags not in reqdata['tag']: continue try: events = Event.objects(server=server.name, environment=environment.name) # let me know when an server doesn't have any event stored. if not events: ret_data['no_events'].append(server.name) else: ret_data['servers'].append(server.name) for event in events: # sum queues ret_data['queue']['deferred'] += event.queue.deferred ret_data['queue']['active'] += event.queue.active ret_data['queue']['hold'] += event.queue.hold ret_data['queue']['bounce'] += event.queue.bounce # buffer for sorting top senders latter. for sender in event.topsenders: try: buffer_tops[sender.email] += sender.quantity except: buffer_tops[sender.email] = sender.quantity except Exception, e: logger.error('Error trying to retrieve event %s' % e) ret_data['no_events'].append(server.name) continue
def delete(self, target_environment): environment = abort_if_obj_doesnt_exist(self.filter_by, target_environment, Environment) environment.delete() return {"response": "sucessfully deleted [%s]" % target_environment}, 204