def setUp(self): super(EventTest, self).setUp() self.source_host = Host(name='Host', ipv4='1.2.3.4', user=self.user,timezone = 'Asia/Kolkata') self.source_host.save() event_type = EventType(name='INFO', user=self.user) event_type.save() event_data = { 'message': 'Message', 'short_message': 'short message', 'event_type': event_type, 'timestamp': '%s' % str(datetime.datetime.now()), 'source_host': self.source_host } self.event = Event.objects.create(**event_data)
def setUp(self): self.username = '******' self.password = '******' #set up Django user self.user = User(username=self.username) self.user.set_password(self.password) self.user.save() #set up Django testing client self.client = Client() self.client.login(username=self.username, password=self.password) #set up events types for name in ['INFO', 'WARNING', 'CRITICAL', 'ERROR']: event_type = EventType(name=name, user=self.user, alert_level=1) event_type.save() #set up some hosts for i in xrange(10): h = Host(name='host_%i' % i, description='description number %i' % i, ipv4='127.0.0.%i' % (i + 1), ipv6='0:0:0:0:0:0:7f00:%i' % (i + 1), user=self.user) h.save() types = EventType.objects.all() hosts = Host.objects.all() for i in xrange(10): e = Event(message='event_%i' % i, short_message='short message #%i' % i, event_type=random.choice(types), protocol='SMTP', timestamp='%s' % str(datetime.datetime.now()), source_host=hosts[i], fields_class='Class%i' % i, fields_data='') e.save()
def get_event_data(request, event_dict): """ Creates dictionary with parameters for Event's __init__ method. If needed function also creates host and event type and saves them. If function cannot find obligatory fields in event_dict, it raises EventParseError exception. """ required_fields = [ 'timestamp', 'protocol', 'fields_class', 'event_type', 'description', 'short_description' ] base_fields = required_fields + [ 'is_report', 'hostname', 'source_host_ipv6', 'source_host_ipv4' ] # make sure that event_dict contains all fields we need # (also make sure that these fields aren't empty) for field_name in required_fields: if field_name not in event_dict: raise EventParseError("Following field is not specified: %s" \ % field_name) if not event_dict[field_name]: raise EventParseError("Following field must not be empty: %s" \ % field_name) message = event_dict['description'] short_message = event_dict['short_description'] timestamp = event_dict['timestamp'] protocol = event_dict['protocol'] event_type_name = event_dict['event_type'] fields_class = event_dict['fields_class'] ipv4 = event_dict.get('source_host_ipv4') ipv6 = event_dict.get('source_host_ipv6') hostname = event_dict.get('hostname') try: if hostname: source_host = Host.objects.get(name=hostname, user=request.user) else: if ipv4 and ipv6: source_host = Host.objects.get(ipv4=ipv4, ipv6=ipv6, user=request.user) elif ipv4: source_host = Host.objects.get(ipv4=ipv4, user=request.user) elif ipv6: source_host = Host.objects.get(ipv6=ipv6, user=request.user) else: source_host = None except Host.DoesNotExist: source_host = Host(name=hostname, ipv4=ipv4, ipv6=ipv6, user=request.user) source_host.save() try: event_type = EventType.objects.get(name=event_type_name, user=request.user) except EventType.DoesNotExist: event_type = EventType(name=event_type_name, user=request.user) event_type.save() fields_data_dict = {} for field in event_dict: if field not in base_fields: fields_data_dict[field] = event_dict[field] fields_data = json.dumps(fields_data_dict) event_data = { 'message': message, 'short_message': short_message, 'timestamp': datetime.datetime.fromtimestamp(float(timestamp)), 'protocol': protocol, 'fields_class': fields_class, 'fields_data': fields_data, 'source_host': source_host, 'event_type': event_type } return event_data