Exemplo n.º 1
0
 def test_disk_shares_and_exports(self):
     model = ComponentModel(
         type=ComponentType.share,
         name="3par share",
     )
     model.save()
     share = DiskShare(
         device=self.device,
         model=model,
         label="pr0n",
         size="2048",
         wwn="deadbeefcafe1234",
     )
     share.save()
     address = IPAddress(address='127.0.0.1')
     address.save()
     DiskShareMount(
         device=self.device,
         share=share,
         address=address,
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     exports = data['disk_exports']
     mounts = data['disk_shares']
     self.assertEqual(len(exports), 1)
     self.assertEqual(len(mounts), 1)
     self.assertEqual(mounts[0]['serial_number'], "deadbeefcafe1234")
Exemplo n.º 2
0
 def test_connections(self):
     model = DeviceModel.objects.create(type=DeviceType.rack_server, name="DevModel F1")
     master_device = Device.objects.create(model=model, sn="sn_1", name="dev1.dc1")
     connected_device_1 = Device.objects.create(model=model, sn="sn_2", name="dev2.dc1")
     IPAddress.objects.create(address="10.0.22.1", device=connected_device_1)
     connection = Connection.objects.create(
         connection_type=ConnectionType.network, outbound=master_device, inbound=connected_device_1
     )
     connected_device_2 = Device.objects.create(model=model, sn="sn_3", name="dev3.dc1")
     IPAddress.objects.create(address="10.0.22.2", device=connected_device_2)
     IPAddress.objects.create(address="10.0.22.3", device=connected_device_2)
     connection = Connection.objects.create(
         connection_type=ConnectionType.network, outbound=master_device, inbound=connected_device_2
     )
     NetworkConnection.objects.create(connection=connection, outbound_port="eth0", inbound_port="eth1")
     data = get_device_data(Device.objects.get(sn="sn_1"))
     self.assertEqual(
         data["connections"],
         [
             {
                 "connected_device_ip_addresses": "10.0.22.1",
                 "connected_device_mac_addresses": "",
                 "connected_device_serial_number": "sn_2",
                 "connection_details": {},
                 "connection_type": "network",
             },
             {
                 "connected_device_ip_addresses": "10.0.22.2,10.0.22.3",
                 "connected_device_mac_addresses": "",
                 "connected_device_serial_number": "sn_3",
                 "connection_details": {"inbound_port": "eth1", "outbound_port": "eth0"},
                 "connection_type": "network",
             },
         ],
     )
Exemplo n.º 3
0
 def test_subdevices(self):
     Device(parent=self.device, model=self.device_model, sn="1", name="ziew1").save()
     Device(parent=self.device, model=self.device_model, sn="2", name="ziew2").save()
     Device(parent=self.device, model=self.device_model, sn="3", name="ziew3").save()
     data = get_device_data(Device.objects.get(sn="123456789"))
     sub = data["subdevices"]
     self.assertEqual(len(sub), 3)
Exemplo n.º 4
0
 def test_disk_shares_and_exports(self):
     model = ComponentModel(
         type=ComponentType.share,
         name="3par share",
     )
     model.save()
     share = DiskShare(
         device=self.device,
         model=model,
         label="pr0n",
         size="2048",
         wwn="deadbeefcafe1234",
     )
     share.save()
     address = IPAddress(address='127.0.0.1')
     address.save()
     DiskShareMount(
         device=self.device,
         share=share,
         address=address,
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     exports = data['disk_exports']
     mounts = data['disk_shares']
     self.assertEqual(len(exports), 1)
     self.assertEqual(len(mounts), 1)
     self.assertEqual(mounts[0]['serial_number'], "deadbeefcafe1234")
Exemplo n.º 5
0
 def test_position(self):
     self.device.chassis_position = 3
     self.device.dc = 'dc3'
     self.device.rack = '232'
     self.device.save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     self.assertEqual(data['chassis_position'], 3)
     self.assertEqual(data['data_center'], 'dc3')
     self.assertEqual(data['rack'], '232')
Exemplo n.º 6
0
 def test_position(self):
     self.device.chassis_position = 3
     self.device.dc = 'dc3'
     self.device.rack = '232'
     self.device.save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     self.assertEqual(data['chassis_position'], 3)
     self.assertEqual(data['data_center'], 'dc3')
     self.assertEqual(data['rack'], '232')
Exemplo n.º 7
0
 def test_fc(self):
     model = ComponentModel(type=ComponentType.fibre, name="FC-336")
     model.save()
     FibreChannel(physical_id="deadbeefcafe", label="ziew", device=self.device, model=model).save()
     data = get_device_data(Device.objects.get(sn="123456789"))
     fc = data["fibrechannel_cards"]
     self.assertEqual(len(fc), 1)
     self.assertEqual(fc[0]["physical_id"], "deadbeefcafe")
     self.assertEqual(fc[0]["model_name"], "FC-336")
Exemplo n.º 8
0
 def test_parts(self):
     model = ComponentModel(type=ComponentType.management, name="weapons of mass destruction")
     model.save()
     GenericComponent(label="ziew", device=self.device, model=model).save()
     data = get_device_data(Device.objects.get(sn="123456789"))
     parts = data["parts"]
     self.assertEqual(parts[0]["type"], "management")
     self.assertEqual(parts[0]["model_name"], "weapons of mass destruction")
     self.assertEqual(len(parts), 1)
Exemplo n.º 9
0
 def test_position(self):
     self.device.chassis_position = 3
     self.device.dc = "dc3"
     self.device.rack = "232"
     self.device.save()
     data = get_device_data(Device.objects.get(sn="123456789"))
     self.assertEqual(data["chassis_position"], 3)
     self.assertEqual(data["data_center"], "dc3")
     self.assertEqual(data["rack"], "232")
Exemplo n.º 10
0
 def test_system(self):
     OperatingSystem.create(
         self.device, "Haiku", 0, version="1.0.0", memory="512", storage="2048", cores_count="4", family="BeOS"
     )
     data = get_device_data(Device.objects.get(sn="123456789"))
     self.assertEqual(data["system_memory"], 512)
     self.assertEqual(data["system_storage"], 2048)
     self.assertEqual(data["system_cores_count"], 4)
     self.assertEqual(data["system_family"], "BeOS")
     self.assertEqual(data["system_label"], "Haiku 1.0.0")
Exemplo n.º 11
0
 def test_memory(self):
     for i in xrange(8):
         m = Memory(label="ziew", size=128, device=self.device, index=i)
         m.save()
     data = get_device_data(Device.objects.get(sn="123456789"))
     memory = data["memory"]
     self.assertEqual(len(memory), 8)
     self.assertEqual(memory[0]["label"], "ziew")
     self.assertEqual(memory[0]["size"], 128)
     self.assertEqual(memory[3]["index"], 3)
Exemplo n.º 12
0
 def test_disks(self):
     model = ComponentModel(type=ComponentType.disk, name="HP DG0300BALVP SAS 307200MiB, 10000RPM")
     model.save()
     Storage(sn="abc3", device=self.device, label="ziew", mount_point="/dev/hda", model=model, size=307200).save()
     data = get_device_data(Device.objects.get(sn="123456789"))
     disks = data["disks"]
     self.assertEqual(len(disks), 1)
     self.assertEqual(disks[0]["size"], 307200)
     self.assertEqual(disks[0]["serial_number"], "abc3")
     self.assertEqual(disks[0]["mount_point"], "/dev/hda")
Exemplo n.º 13
0
 def test_software(self):
     model = ComponentModel(type=ComponentType.software, name="cobol")
     model.save()
     Software(
         label="cobol", device=self.device, model=model, version="1.0.0", path="/usr/bin/cobol", sn="0000001"
     ).save()
     data = get_device_data(Device.objects.get(sn="123456789"))
     soft = data["installed_software"]
     self.assertEqual(soft[0]["version"], "1.0.0")
     self.assertEqual(soft[0]["model_name"], "cobol")
     self.assertEqual(len(soft), 1)
Exemplo n.º 14
0
def _append_shares_to_device(ip, device, data, external_priorities={}):
    device_data = get_device_data(device)
    full_data = merge_data(
        data,
        {
            'database': {'device': device_data},
        },
        only_multiple=True,
    )
    append_merged_proposition(full_data, device, external_priorities)
    selected_data = select_data(full_data, external_priorities)
    for share_mount in selected_data.get('disk_shares', []):
        _create_or_update_share_mount(ip, device, share_mount)
Exemplo n.º 15
0
 def test_processors(self):
     model = ComponentModel(type=ComponentType.processor, name="CPU Xeon 2533MHz, 4-core")
     model.save()
     for i in xrange(4):
         p = Processor(label="ziew", model=model, device=self.device, index=i)
         p.save()
     data = get_device_data(Device.objects.get(sn="123456789"))
     processors = data["processors"]
     self.assertEqual(len(processors), 4)
     self.assertEqual(processors[0]["label"], "ziew")
     self.assertEqual(processors[0]["model_name"], "CPU Xeon 2533MHz, 4-core")
     self.assertEqual(processors[0]["cores"], 4)
     self.assertEqual(processors[3]["index"], 3)
Exemplo n.º 16
0
 def test_memory(self):
     for i in xrange(8):
         m = Memory(
             label="ziew",
             size=128,
             device=self.device,
             index=i,
         )
         m.save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     memory = data['memory']
     self.assertEqual(len(memory), 8)
     self.assertEqual(memory[0]['label'], "ziew")
     self.assertEqual(memory[0]['size'], 128)
     self.assertEqual(memory[3]['index'], 3)
Exemplo n.º 17
0
 def test_memory(self):
     for i in xrange(8):
         m = Memory(
             label="ziew",
             size=128,
             device=self.device,
             index=i,
         )
         m.save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     memory = data['memory']
     self.assertEqual(len(memory), 8)
     self.assertEqual(memory[0]['label'], "ziew")
     self.assertEqual(memory[0]['size'], 128)
     self.assertEqual(memory[3]['index'], 3)
Exemplo n.º 18
0
 def test_parts(self):
     model = ComponentModel(
         type=ComponentType.management,
         name="weapons of mass destruction",
     )
     model.save()
     GenericComponent(
         label='ziew',
         device=self.device,
         model=model,
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     parts = data['parts']
     self.assertEqual(parts[0]['type'], "management")
     self.assertEqual(parts[0]['model_name'], "weapons of mass destruction")
     self.assertEqual(len(parts), 1)
Exemplo n.º 19
0
 def test_parts(self):
     model = ComponentModel(
         type=ComponentType.management,
         name="weapons of mass destruction",
     )
     model.save()
     GenericComponent(
         label='ziew',
         device=self.device,
         model=model,
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     parts = data['parts']
     self.assertEqual(parts[0]['type'], "management")
     self.assertEqual(parts[0]['model_name'], "weapons of mass destruction")
     self.assertEqual(len(parts), 1)
Exemplo n.º 20
0
 def test_connections(self):
     model = DeviceModel.objects.create(type=DeviceType.rack_server,
                                        name="DevModel F1")
     master_device = Device.objects.create(model=model,
                                           sn='sn_1',
                                           name='dev1.dc1')
     connected_device_1 = Device.objects.create(model=model,
                                                sn='sn_2',
                                                name='dev2.dc1')
     IPAddress.objects.create(address="10.0.22.1",
                              device=connected_device_1)
     connection = Connection.objects.create(
         connection_type=ConnectionType.network,
         outbound=master_device,
         inbound=connected_device_1)
     connected_device_2 = Device.objects.create(model=model,
                                                sn='sn_3',
                                                name='dev3.dc1')
     IPAddress.objects.create(address="10.0.22.2",
                              device=connected_device_2)
     IPAddress.objects.create(address="10.0.22.3",
                              device=connected_device_2)
     connection = Connection.objects.create(
         connection_type=ConnectionType.network,
         outbound=master_device,
         inbound=connected_device_2)
     NetworkConnection.objects.create(connection=connection,
                                      outbound_port="eth0",
                                      inbound_port="eth1")
     data = get_device_data(Device.objects.get(sn='sn_1'))
     self.assertEqual(
         data['connections'], [{
             'connected_device_ip_addresses': '10.0.22.1',
             'connected_device_mac_addresses': '',
             'connected_device_serial_number': 'sn_2',
             'connection_details': {},
             'connection_type': 'network'
         }, {
             'connected_device_ip_addresses': '10.0.22.2,10.0.22.3',
             'connected_device_mac_addresses': '',
             'connected_device_serial_number': 'sn_3',
             'connection_details': {
                 'inbound_port': 'eth1',
                 'outbound_port': 'eth0'
             },
             'connection_type': 'network'
         }])
Exemplo n.º 21
0
 def test_fc(self):
     model = ComponentModel(
         type=ComponentType.fibre,
         name="FC-336",
     )
     model.save()
     FibreChannel(
         physical_id='deadbeefcafe',
         label='ziew',
         device=self.device,
         model=model,
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     fc = data['fibrechannel_cards']
     self.assertEqual(len(fc), 1)
     self.assertEqual(fc[0]['physical_id'], 'deadbeefcafe')
     self.assertEqual(fc[0]['model_name'], 'FC-336')
Exemplo n.º 22
0
 def test_system(self):
     OperatingSystem.create(
         self.device,
         "Haiku",
         0,
         version="1.0.0",
         memory='512',
         storage='2048',
         cores_count='4',
         family="BeOS",
     )
     data = get_device_data(Device.objects.get(sn='123456789'))
     self.assertEqual(data['system_memory'], 512)
     self.assertEqual(data['system_storage'], 2048)
     self.assertEqual(data['system_cores_count'], 4)
     self.assertEqual(data['system_family'], "BeOS")
     self.assertEqual(data['system_label'], "Haiku 1.0.0")
Exemplo n.º 23
0
def _append_shares_to_device(ip, device, data, external_priorities={}):
    device_data = get_device_data(device)
    full_data = merge_data(
        data,
        {
            'database': {'device': device_data},
        },
        only_multiple=True,
    )
    append_merged_proposition(full_data, device, external_priorities)
    selected_data = select_data(full_data, external_priorities)
    parsed_mounts = set()
    for share_mount in selected_data.get('disk_shares', []):
        status, mount = _create_or_update_share_mount(ip, device, share_mount)
        if mount:
            parsed_mounts.add(mount.pk)
    device.disksharemount_set.exclude(pk__in=parsed_mounts).delete()
Exemplo n.º 24
0
 def test_fc(self):
     model = ComponentModel(
         type=ComponentType.fibre,
         name="FC-336",
     )
     model.save()
     FibreChannel(
         physical_id='deadbeefcafe',
         label='ziew',
         device=self.device,
         model=model,
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     fc = data['fibrechannel_cards']
     self.assertEqual(len(fc), 1)
     self.assertEqual(fc[0]['physical_id'], 'deadbeefcafe')
     self.assertEqual(fc[0]['model_name'], 'FC-336')
Exemplo n.º 25
0
 def test_system(self):
     OperatingSystem.create(
         self.device,
         "Haiku",
         0,
         version="1.0.0",
         memory='512',
         storage='2048',
         cores_count='4',
         family="BeOS",
     )
     data = get_device_data(Device.objects.get(sn='123456789'))
     self.assertEqual(data['system_memory'], 512)
     self.assertEqual(data['system_storage'], 2048)
     self.assertEqual(data['system_cores_count'], 4)
     self.assertEqual(data['system_family'], "BeOS")
     self.assertEqual(data['system_label'], "Haiku 1.0.0")
Exemplo n.º 26
0
 def test_software(self):
     model = ComponentModel(
         type=ComponentType.software,
         name="cobol",
     )
     model.save()
     Software(
         label='cobol',
         device=self.device,
         model=model,
         version='1.0.0',
         path='/usr/bin/cobol',
         sn='0000001',
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     soft = data['installed_software']
     self.assertEqual(soft[0]['version'], "1.0.0")
     self.assertEqual(soft[0]['model_name'], "cobol")
     self.assertEqual(len(soft), 1)
Exemplo n.º 27
0
def _append_shares_to_device(ip, device, data, external_priorities={}):
    device_data = get_device_data(device)
    full_data = merge_data(
        data,
        {
            'database': {
                'device': device_data
            },
        },
        only_multiple=True,
    )
    append_merged_proposition(full_data, device, external_priorities)
    selected_data = select_data(full_data, external_priorities)
    parsed_mounts = set()
    for share_mount in selected_data.get('disk_shares', []):
        status, mount = _create_or_update_share_mount(ip, device, share_mount)
        if mount:
            parsed_mounts.add(mount.pk)
    device.disksharemount_set.exclude(pk__in=parsed_mounts).delete()
Exemplo n.º 28
0
 def test_software(self):
     model = ComponentModel(
         type=ComponentType.software,
         name="cobol",
     )
     model.save()
     Software(
         label='cobol',
         device=self.device,
         model=model,
         version='1.0.0',
         path='/usr/bin/cobol',
         sn='0000001',
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     soft = data['installed_software']
     self.assertEqual(soft[0]['version'], "1.0.0")
     self.assertEqual(soft[0]['model_name'], "cobol")
     self.assertEqual(len(soft), 1)
Exemplo n.º 29
0
 def test_disks(self):
     model = ComponentModel(
         type=ComponentType.disk,
         name="HP DG0300BALVP SAS 307200MiB, 10000RPM",
     )
     model.save()
     Storage(
         sn="abc3",
         device=self.device,
         label="ziew",
         mount_point="/dev/hda",
         model=model,
         size=307200,
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     disks = data['disks']
     self.assertEqual(len(disks), 1)
     self.assertEqual(disks[0]['size'], 307200)
     self.assertEqual(disks[0]['serial_number'], "abc3")
     self.assertEqual(disks[0]['mount_point'], "/dev/hda")
Exemplo n.º 30
0
def _append_connections_to_device(device, data, external_priorities):
    device_data = get_device_data(device)
    full_data = merge_data(
        data,
        {
            'database': {'device': device_data},
        },
        only_multiple=True,
    )
    append_merged_proposition(full_data, device, external_priorities)
    selected_data = select_data(full_data, external_priorities)
    parsed_connections = set()
    for conn_data in selected_data.get('connections', []):
        conn = _create_or_update_connection(device, conn_data)
        if conn:
            parsed_connections.add(conn.pk)
    Connection.objects.filter(
        Q(outbound=device),
        Q(connection_type=ConnectionType.network),
        ~Q(pk__in=parsed_connections),
    ).delete()
Exemplo n.º 31
0
def _append_connections_to_device(device, data, external_priorities):
    device_data = get_device_data(device)
    full_data = merge_data(
        data,
        {
            'database': {'device': device_data},
        },
        only_multiple=True,
    )
    append_merged_proposition(full_data, device, external_priorities)
    selected_data = select_data(full_data, external_priorities)
    parsed_connections = set()
    for conn_data in selected_data.get('connections', []):
        conn = _create_or_update_connection(device, conn_data)
        if conn:
            parsed_connections.add(conn.pk)
    Connection.objects.filter(
        Q(outbound=device),
        Q(connection_type=ConnectionType.network),
        ~Q(pk__in=parsed_connections),
    ).delete()
Exemplo n.º 32
0
 def test_processors(self):
     model = ComponentModel(
         type=ComponentType.processor,
         name="CPU Xeon 2533MHz, 4-core",
     )
     model.save()
     for i in xrange(4):
         p = Processor(
             label="ziew",
             model=model,
             device=self.device,
             index=i,
         )
         p.save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     processors = data['processors']
     self.assertEqual(len(processors), 4)
     self.assertEqual(processors[0]['label'], "ziew")
     self.assertEqual(processors[0]['model_name'], "CPU Xeon 2533MHz, 4-core")
     self.assertEqual(processors[0]['cores'], 4)
     self.assertEqual(processors[3]['index'], 3)
Exemplo n.º 33
0
 def test_subdevices(self):
     Device(
         parent=self.device,
         model=self.device_model,
         sn='1',
         name='ziew1',
     ).save()
     Device(
         parent=self.device,
         model=self.device_model,
         sn='2',
         name='ziew2',
     ).save()
     Device(
         parent=self.device,
         model=self.device_model,
         sn='3',
         name='ziew3',
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     sub = data['subdevices']
     self.assertEqual(len(sub), 3)
Exemplo n.º 34
0
 def test_processors(self):
     model = ComponentModel(
         type=ComponentType.processor,
         name="CPU Xeon 2533MHz, 4-core",
     )
     model.save()
     for i in xrange(4):
         p = Processor(
             label="ziew",
             model=model,
             device=self.device,
             index=i,
         )
         p.save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     processors = data['processors']
     self.assertEqual(len(processors), 4)
     self.assertEqual(processors[0]['label'], "ziew")
     self.assertEqual(processors[0]['model_name'],
                      "CPU Xeon 2533MHz, 4-core")
     self.assertEqual(processors[0]['cores'], 4)
     self.assertEqual(processors[3]['index'], 3)
Exemplo n.º 35
0
 def test_subdevices(self):
     Device(
         parent=self.device,
         model=self.device_model,
         sn='1',
         name='ziew1',
     ).save()
     Device(
         parent=self.device,
         model=self.device_model,
         sn='2',
         name='ziew2',
     ).save()
     Device(
         parent=self.device,
         model=self.device_model,
         sn='3',
         name='ziew3',
     ).save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     sub = data['subdevices']
     self.assertEqual(len(sub), 3)
Exemplo n.º 36
0
 def test_basic_data(self):
     data = get_device_data(Device.objects.get(sn='123456789'))
     self.assertEqual(data['serial_number'], '123456789')
     self.assertEqual(data['hostname'], 'ziew')
     self.assertEqual(data['type'], 'rack server')
     self.assertEqual(data['model_name'], 'ziew-X')
Exemplo n.º 37
0
 def test_management(self):
     self.device.management = IPAddress.objects.create(address='10.10.10.1')
     self.device.save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     self.assertEqual(data['management'], '10.10.10.1')
Exemplo n.º 38
0
 def test_connections(self):
     model = DeviceModel.objects.create(
         type=DeviceType.rack_server,
         name="DevModel F1"
     )
     master_device = Device.objects.create(
         model=model,
         sn='sn_1',
         name='dev1.dc1'
     )
     connected_device_1 = Device.objects.create(
         model=model,
         sn='sn_2',
         name='dev2.dc1'
     )
     IPAddress.objects.create(
         address="10.0.22.1",
         device=connected_device_1
     )
     connection = Connection.objects.create(
         connection_type=ConnectionType.network,
         outbound=master_device,
         inbound=connected_device_1
     )
     connected_device_2 = Device.objects.create(
         model=model,
         sn='sn_3',
         name='dev3.dc1'
     )
     IPAddress.objects.create(
         address="10.0.22.2",
         device=connected_device_2
     )
     IPAddress.objects.create(
         address="10.0.22.3",
         device=connected_device_2
     )
     connection = Connection.objects.create(
         connection_type=ConnectionType.network,
         outbound=master_device,
         inbound=connected_device_2
     )
     NetworkConnection.objects.create(
         connection=connection,
         outbound_port="eth0",
         inbound_port="eth1"
     )
     data = get_device_data(Device.objects.get(sn='sn_1'))
     self.assertEqual(
         data['connections'],
         [
             {
                 'connected_device_ip_addresses': '10.0.22.1',
                 'connected_device_mac_addresses': '',
                 'connected_device_serial_number': 'sn_2',
                 'connection_details': {},
                 'connection_type': 'network'
             },
             {
                 'connected_device_ip_addresses': '10.0.22.2,10.0.22.3',
                 'connected_device_mac_addresses': '',
                 'connected_device_serial_number': 'sn_3',
                 'connection_details': {
                     'inbound_port': 'eth1',
                     'outbound_port': 'eth0'
                 },
                 'connection_type': 'network'
             }
         ]
     )
Exemplo n.º 39
0
 def test_basic_data(self):
     data = get_device_data(Device.objects.get(sn="123456789"))
     self.assertEqual(data["serial_number"], "123456789")
     self.assertEqual(data["hostname"], "ziew")
     self.assertEqual(data["type"], "rack server")
     self.assertEqual(data["model_name"], "ziew-X")
Exemplo n.º 40
0
 def test_management(self):
     self.device.management = IPAddress.objects.create(address="10.10.10.1")
     self.device.save()
     data = get_device_data(Device.objects.get(sn="123456789"))
     self.assertEqual(data["management"], "10.10.10.1")
Exemplo n.º 41
0
 def test_management(self):
     self.device.management = IPAddress.objects.create(address='10.10.10.1')
     self.device.save()
     data = get_device_data(Device.objects.get(sn='123456789'))
     self.assertEqual(data['management'], '10.10.10.1')
Exemplo n.º 42
0
 def test_basic_data(self):
     data = get_device_data(Device.objects.get(sn='123456789'))
     self.assertEqual(data['serial_number'], '123456789')
     self.assertEqual(data['hostname'], 'ziew')
     self.assertEqual(data['type'], 'rack server')
     self.assertEqual(data['model_name'], 'ziew-X')
Exemplo n.º 43
0
def _save_job_results(job_id, start_ts):
    if (int(time.time()) - start_ts) > 86100:  # 24h - 5min
        return
    try:
        job = rq.job.Job.fetch(job_id, django_rq.get_connection())
    except rq.exceptions.NoSuchJobError:
        return  # job with this id does not exist...
    if job.result is None and not job.is_failed:
        # we must wait...
        _enqueue_save_job_results(job_id)
        return
    elif job.is_failed:
        # nothing to do...
        return
    external_priorities = get_external_results_priorities(job.result)
    # management?
    is_management = False
    if job.args:
        try:
            is_management = IPAddress.objects.filter(
                address=job.args[0]).values_list('is_management', flat=True)[0]
        except IndexError:
            pass
    # first... update device
    devices, ids_lookup, sn_lookup, macs_lookup = _find_devices(job.result)
    if len(devices) > 1:
        raise AutomergerError(
            'Many devices found for: ids=%s, sn=%s, macs=%s' %
            (ids_lookup, sn_lookup, macs_lookup))
    used_serial_numbers = set()
    used_mac_addresses = set()
    for device in devices:
        device_data = get_device_data(device)
        if 'serial_number' in device_data:
            used_serial_numbers |= set([device_data['serial_number']])
        if 'mac_addresses' in device_data:
            used_mac_addresses |= set(device_data['mac_addresses'])
        data = merge_data(
            job.result,
            {
                'database': {
                    'device': device_data
                },
            },
            only_multiple=True,
        )
        append_merged_proposition(data, device, external_priorities)
        selected_data = _select_data(data, external_priorities, is_management)
        set_device_data(device, selected_data, save_priority=SAVE_PRIORITY)
        device.save(priority=SAVE_PRIORITY)
    # now... we create new devices from `garbage`
    if not devices:
        garbage = {}
        for plugin_name, plugin_result in job.result.items():
            if 'device' not in plugin_result:
                continue
            if 'serial_number' in plugin_result['device']:
                if plugin_result['device'][
                        'serial_number'] in used_serial_numbers:
                    continue
            if 'mac_addresses' in plugin_result['device']:
                if set(plugin_result['device']['mac_addresses'], ) != set(
                        plugin_result['device']['mac_addresses'],
                ) - used_mac_addresses:
                    continue
            if any((
                    plugin_result['device'].get('serial_number'),
                    plugin_result['device'].get('mac_addresses'),
            )):
                garbage[plugin_name] = plugin_result
        if garbage:
            data = merge_data(garbage)
            selected_data = _select_data(data, external_priorities)
            if all((
                    any((
                        selected_data.get('serial_number'),
                        selected_data.get('mac_addresses', []),
                    )),
                    any((
                        selected_data.get('model_name'),
                        selected_data.get('type'),
                    )),
            )):
                device_from_data(selected_data, save_priority=SAVE_PRIORITY)
    # mark this scan results
    update_scan_summary(job)
Exemplo n.º 44
0
def _save_job_results(job_id, start_ts):
    if (int(time.time()) - start_ts) > 86100:  # 24h - 5min
        return
    try:
        job = rq.job.Job.fetch(job_id, django_rq.get_connection())
    except rq.exceptions.NoSuchJobError:
        return  # job with this id does not exist...
    if job.result is None and not job.is_failed:
        # we must wait...
        _enqueue_save_job_results(job_id)
        return
    elif job.is_failed:
        # nothing to do...
        return
    external_priorities = get_external_results_priorities(job.result)
    # management?
    is_management = False
    if job.args:
        try:
            is_management = IPAddress.objects.filter(
                address=job.args[0]
            ).values_list(
                'is_management', flat=True
            )[0]
        except IndexError:
            pass
    # first... update device
    devices, ids_lookup, sn_lookup, macs_lookup = _find_devices(job.result)
    if len(devices) > 1:
        raise AutomergerError(
            'Many devices found for: ids=%s, sn=%s, macs=%s' % (
                ids_lookup, sn_lookup, macs_lookup
            )
        )
    used_serial_numbers = set()
    used_mac_addresses = set()
    for device in devices:
        device_data = get_device_data(device)
        if 'serial_number' in device_data:
            used_serial_numbers |= set([device_data['serial_number']])
        if 'mac_addresses' in device_data:
            used_mac_addresses |= set(device_data['mac_addresses'])
        data = merge_data(
            job.result,
            {
                'database': {'device': device_data},
            },
            only_multiple=True,
        )
        append_merged_proposition(data, device, external_priorities)
        selected_data = select_data(data, external_priorities, is_management)
        set_device_data(device, selected_data, save_priority=SAVE_PRIORITY)
        device.save(priority=SAVE_PRIORITY)
    # now... we create new devices from `garbage`
    if not devices:
        garbage = {}
        for plugin_name, plugin_result in job.result.items():
            if 'device' not in plugin_result:
                continue
            if 'serial_number' in plugin_result['device']:
                if plugin_result['device'][
                    'serial_number'
                ] in used_serial_numbers:
                    continue
            if 'mac_addresses' in plugin_result['device']:
                if set(
                    plugin_result['device']['mac_addresses'],
                ) != set(
                    plugin_result['device']['mac_addresses'],
                ) - used_mac_addresses:
                    continue
            if any((
                plugin_result['device'].get('serial_number'),
                plugin_result['device'].get('mac_addresses'),
            )):
                garbage[plugin_name] = plugin_result
        if garbage:
            data = merge_data(garbage)
            selected_data = select_data(data, external_priorities)
            if all((
                any(
                    (
                        selected_data.get('serial_number'),
                        selected_data.get('mac_addresses', []),
                    )
                ),
                any(
                    (
                        selected_data.get('model_name'),
                        selected_data.get('type'),
                    )
                ),
            )):
                device_from_data(selected_data, save_priority=SAVE_PRIORITY)
    # mark this scan results
    update_scan_summary(job)