Example #1
0
  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
Example #2
0
    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'])
Example #3
0
  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)
Example #4
0
  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
Example #5
0
  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
Example #6
0
    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
Example #7
0
  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
Example #8
0
    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
Example #9
0
    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)
Example #10
0
  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
Example #11
0
  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'])
Example #12
0
    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
Example #13
0
    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
Example #14
0
    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