def serializer_models(localhost): """Fixture for testing API serializers - unrecognized_neighbor - auditlog """ from nav.models import cabling, event, manage, profiles, rack from nav.auditlog import models as auditlog netbox = localhost group = manage.NetboxGroup.objects.all()[0] manage.NetboxCategory(netbox=netbox, category=group).save() interface = manage.Interface(netbox=netbox, ifindex=1, ifname='if1', ifdescr='ifdescr', iftype=1, speed=10) interface.save() manage.Cam(sysname='asd', mac='aa:aa:aa:aa:aa:aa', ifindex=1, end_time=datetime.now()).save() manage.Arp(sysname='asd', mac='aa:bb:cc:dd:ee:ff', ip='123.123.123.123', end_time=datetime.now()).save() manage.Prefix(net_address='123.123.123.123').save() manage.Vlan(vlan=10, net_type_id='lan').save() rack.Rack(room_id='myroom').save() cabel = cabling.Cabling(room_id='myroom', jack='1') cabel.save() cabling.Patch(interface=interface, cabling=cabel).save() source = event.Subsystem.objects.get(pk='pping') target = event.Subsystem.objects.get(pk='eventEngine') event_type = event.EventType.objects.get(pk='boxState') boxdown_id = 3 event.EventQueue(source=source, target=target, event_type=event_type, netbox=netbox).save() event.AlertHistory(source=source, event_type=event_type, netbox=netbox, start_time=datetime.now() - timedelta(days=1), value=1, severity=50, alert_type_id=boxdown_id, end_time=INFINITY).save() admin = profiles.Account.objects.get(login='******') auditlog.LogEntry.add_log_entry(admin, verb='verb', template='asd') manage.Usage(id='ans', description='Ansatte').save() manage.Usage(id='student', description='Studenter').save()
def save(self): # Reuse the same object over and over in an attempt to avoid the # overhead of Python object creation record = manage.Cam(netbox_id=self.netbox.id, sysname=self.netbox.sysname, start_time=datetime.datetime.now(), end_time=INFINITY) for cam in self._new: record.id = None record.port = self._get_port_for(cam.ifindex) record.ifindex = cam.ifindex record.mac = cam.mac record.save() # reclaim recently closed records keepers = (self._previously_open[cam] for cam in self._keepers) reclaim = [cam.id for cam in keepers if cam.end_time < INFINITY] if reclaim: self._logger.debug("reclaiming %r", reclaim) manage.Cam.objects.filter(id__in=reclaim).update(end_time=INFINITY, miss_count=0)