mirror of https://gitlab.federez.net/re2o/re2o
6 changed files with 58 additions and 11 deletions
@ -0,0 +1,50 @@ |
|||||
|
from reversion.models import Version |
||||
|
from machines.models import IpList |
||||
|
from machines.models import Interface |
||||
|
from machines.models import Machine |
||||
|
from users.models import User |
||||
|
|
||||
|
|
||||
|
def get_interfaces_with_ip(ip): |
||||
|
""" |
||||
|
Get all the interfaces that, at some point, had the given ip |
||||
|
""" |
||||
|
# TODO: What if IpList was deleted? |
||||
|
ip_id = IpList.objects.get(ipv4=ip).id |
||||
|
interfaces = Version.objects.get_for_model(Interface) |
||||
|
interfaces = filter(lambda x: x.field_dict["ipv4_id"] == ip_id, interfaces) |
||||
|
return interfaces |
||||
|
|
||||
|
|
||||
|
def get_machine_with_interface(interface): |
||||
|
""" |
||||
|
Get the machine which contained the given interface, even if deleted |
||||
|
""" |
||||
|
machine_id = interface.field_dict["machine_id"] |
||||
|
machines = Version.objects.get_for_model(Machine) |
||||
|
machines = filter(lambda x: x.field_dict["id"] == machine_id, machines) |
||||
|
return machines[0] |
||||
|
|
||||
|
|
||||
|
def get_user_with_machine(machine): |
||||
|
""" |
||||
|
""" |
||||
|
user_id = machine.field_dict["user_id"] |
||||
|
user = User.objects.filter(id=user_id) |
||||
|
return user[0] |
||||
|
|
||||
|
|
||||
|
interfaces = get_interfaces_with_ip("10.0.0.0") |
||||
|
|
||||
|
output_dict = {} |
||||
|
for interface in interfaces: |
||||
|
mac = interface.field_dict["mac_address"] |
||||
|
machine = get_machine_with_interface(interface) |
||||
|
user = get_user_with_machine(machine) |
||||
|
output_dict[mac] = { |
||||
|
"machine": machine.field_dict["name"], |
||||
|
"user": user |
||||
|
} |
||||
|
|
||||
|
print(output_dict) |
||||
|
|
||||
Loading…
Reference in new issue