Beispiel #1
0
 def test_ip_addresses(self):
     data = {
         "system_ip_addresses": ["127.0.0.1", "127.0.0.2"],
         "management_ip_addresses": ["127.0.0.3", "127.0.0.4"],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     system_addresses = list(device.ipaddress_set.filter(is_management=False).order_by("number"))
     management_addresses = list(device.ipaddress_set.filter(is_management=True).order_by("number"))
     self.assertEqual(len(system_addresses), 2)
     self.assertEqual(len(management_addresses), 2)
     self.assertEqual(system_addresses[0].is_management, False)
     self.assertEqual(management_addresses[0].is_management, True)
     self.assertEqual(system_addresses[0].address, "127.0.0.1")
     self.assertEqual(management_addresses[0].address, "127.0.0.3")
     data = {"system_ip_addresses": ["127.0.0.1"], "management_ip_addresses": ["127.0.0.2", "127.0.0.3"]}
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     system_addresses = list(device.ipaddress_set.filter(is_management=False).order_by("number"))
     management_addresses = list(device.ipaddress_set.filter(is_management=True).order_by("number"))
     self.assertEqual(len(system_addresses), 1)
     self.assertEqual(len(management_addresses), 2)
     address = IPAddress.objects.get(address="127.0.0.4")
     self.assertEqual(address.device, None)
Beispiel #2
0
 def test_processors(self):
     data = {
         'processors': [
             {
                 'model_name': 'CPU Xeon 2533MHz, 4-core',
                 'family': 'Xeon',
                 'cores': '4',
                 'speed': '2533',
             },
             {
                 'model_name': 'CPU Xeon 2533MHz, 4-core',
                 'family': 'Xeon',
                 'speed': '2533',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     processors = list(device.processor_set.order_by('index'))
     self.assertEqual(processors[0].model.name, 'CPU Xeon 2533MHz, 4-core')
     self.assertEqual(processors[0].model.type, ComponentType.processor)
     self.assertEqual(processors[0].cores, 4)
     self.assertEqual(processors[0].speed, 2533)
     self.assertEqual(len(processors), 2)
Beispiel #3
0
 def test_disk_exports_and_shares(self):
     data = {
         'disk_exports': [
             {
                 'serial_number': "deadbeefcafe1234",
                 'size': '2048',
                 'label': 'pr0n',
             },
         ],
         'disk_shares': [
             {
                 'serial_number': "deadbeefcafe1234",
                 'server': {
                     'device': {
                         'serial_number': '123456789',
                     },
                 },
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     export = device.diskshare_set.get()
     mount = device.disksharemount_set.get()
     self.assertEqual(export.label, "pr0n")
     self.assertEqual(export.size, 2048)
     self.assertEqual(export.wwn, "deadbeefcafe1234")
     self.assertEqual(mount.share, export)
     self.assertEqual(mount.server, device)
Beispiel #4
0
 def test_device_with_asset_ip_addresses(self):
     asset = DCAssetFactory()
     data = {
         'system_ip_addresses': [
             '127.0.0.1',
             '127.0.0.2',
         ],
         'management_ip_addresses': [
             '127.0.0.3',
             '127.0.0.4',
         ],
         'asset': asset,
     }
     warnings = []
     set_device_data(self.device, data, warnings=warnings)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     self.assertEqual(
         device.ipaddress_set.filter(is_management=False).count(),
         2,
     )
     self.assertEqual(
         device.ipaddress_set.filter(is_management=True).count(),
         0,
     )
     self.assertEqual(
         warnings,
         [
             'Management IP addresses (127.0.0.3, 127.0.0.4) have been '
             'ignored. To change them, please use the Assets module.',
         ],
     )
Beispiel #5
0
 def test_mac_addresses(self):
     data = {
         'mac_addresses': [
             'deadbeefcaf0',
             'deadbeefcaf1',
             'deadbeefcaf2',
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     ethernets = list(device.ethernet_set.order_by('label', 'mac'))
     self.assertEqual(len(ethernets), 3)
     self.assertEqual(ethernets[2].mac, 'DEADBEEFCAF2')
     data = {
         'mac_addresses': [
             'deadbeefcaf0',
             'deadbeefcaf1',
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     ethernets = list(device.ethernet_set.order_by('label', 'mac'))
     self.assertEqual(len(ethernets), 2)
     self.assertEqual(ethernets[1].mac, 'DEADBEEFCAF1')
Beispiel #6
0
 def test_processors(self):
     data = {
         'processors': [
             {
                 'model_name': 'CPU Xeon 2533MHz, 4-core',
                 'family': 'Xeon',
                 'cores': '4',
                 'speed': '2533',
             },
             {
                 'model_name': 'CPU Xeon 2533MHz, 4-core',
                 'family': 'Xeon',
                 'speed': '2533',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     processors = list(device.processor_set.order_by('index'))
     self.assertEqual(processors[0].model.name, 'CPU Xeon 2533MHz, 4-core')
     self.assertEqual(processors[0].model.type, ComponentType.processor)
     self.assertEqual(processors[0].cores, 4)
     self.assertEqual(processors[0].speed, 2533)
     self.assertEqual(len(processors), 2)
Beispiel #7
0
 def test_mac_addresses(self):
     data = {
         'mac_addresses': [
             'deadbeefcaf0',
             'deadbeefcaf1',
             'deadbeefcaf2',
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     ethernets = list(device.ethernet_set.order_by('label', 'mac'))
     self.assertEqual(len(ethernets), 3)
     self.assertEqual(ethernets[2].mac, 'DEADBEEFCAF2')
     data = {
         'mac_addresses': [
             'deadbeefcaf0',
             'deadbeefcaf1',
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     ethernets = list(device.ethernet_set.order_by('label', 'mac'))
     self.assertEqual(len(ethernets), 2)
     self.assertEqual(ethernets[1].mac, 'DEADBEEFCAF1')
Beispiel #8
0
 def test_disk_exports_and_shares(self):
     data = {
         'disk_exports': [
             {
                 'serial_number': "deadbeefcafe1234",
                 'size': '2048',
                 'label': 'pr0n',
             },
         ],
         'disk_shares': [
             {
                 'serial_number': "deadbeefcafe1234",
                 'server': {
                     'device': {
                         'serial_number': '123456789',
                     },
                 },
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     export = device.diskshare_set.get()
     mount = device.disksharemount_set.get()
     self.assertEqual(export.label, "pr0n")
     self.assertEqual(export.size, 2048)
     self.assertEqual(export.wwn, "deadbeefcafe1234")
     self.assertEqual(mount.share, export)
     self.assertEqual(mount.server, device)
Beispiel #9
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")
     Ethernet.objects.create(mac="112233AABBDD", device=connected_device_1)
     connected_device_2 = Device.objects.create(model=model, sn="sn_3", name="dev3.dc1")
     Ethernet.objects.create(mac="112233AABBEE", device=connected_device_2)
     data = {
         "connections": [
             {"connected_device_mac_addresses": "112233AABBDD", "connection_type": "network"},
             {
                 "connected_device_mac_addresses": "112233AABBEE",
                 "connection_type": "network",
                 "details": {"outbound_port": "eth1", "inbound_port": "gr2"},
             },
         ]
     }
     set_device_data(master_device, data)
     master_device.save()
     device = Device.objects.get(sn="sn_1")
     connections = device.outbound_connections.all()
     self.assertEqual(connections[0].inbound.id, connected_device_1.id)
     self.assertEqual(connections[1].inbound.id, connected_device_2.id)
     self.assertEqual(connections[1].networkconnection.outbound_port, "eth1")
     self.assertEqual(connections[1].networkconnection.inbound_port, "gr2")
Beispiel #10
0
 def test_basic_data_with_asset(self):
     asset = DCAssetFactory()
     asset.model.category.is_blade = False
     asset.model.category.save()
     data = {
         "serial_number": "aaa123456789",
         "hostname": "mervin",
         "data_center": "chicago",
         "barcode": "00000",
         "rack": "i31",
         "chassis_position": "4",
         "management": "10.10.10.2",
         "asset": asset,
     }
     warnings = []
     set_device_data(self.device, data, warnings=warnings)
     self.device.save()
     device = Device.objects.get(sn="aaa123456789")
     self.assertIsNone(device.dc)
     self.assertIsNone(device.rack)
     self.assertIsNone(device.chassis_position)
     self.assertIsNone(device.management)
     self.assertEqual(
         warnings,
         [
             "You can not set data for `chassis_position` here - skipped. " "Use assets module.",
             "You can not set data for `data_center` here - skipped. " "Use assets module.",
             "You can not set data for `rack` here - skipped. " "Use assets module.",
             "Management IP address (10.10.10.2) has been ignored. To " "change them, please use the Assets module.",
         ],
     )
Beispiel #11
0
 def test_basic_data_with_asset(self):
     asset = DCAssetFactory()
     asset.model.category.is_blade = False
     asset.model.category.save()
     data = {
         'serial_number': 'aaa123456789',
         'hostname': 'mervin',
         'data_center': 'chicago',
         'barcode': '00000',
         'rack': 'i31',
         'chassis_position': '4',
         'management': '10.10.10.2',
         'asset': asset,
     }
     warnings = []
     set_device_data(self.device, data, warnings=warnings)
     self.device.save()
     device = Device.objects.get(sn='aaa123456789')
     self.assertIsNone(device.dc)
     self.assertIsNone(device.rack)
     self.assertIsNone(device.chassis_position)
     self.assertIsNone(device.management)
     self.assertEqual(warnings, [
         'You can not set data for `chassis_position` here - skipped. '
         'Use assets module.',
         'You can not set data for `data_center` here - skipped. '
         'Use assets module.',
         'You can not set data for `rack` here - skipped. '
         'Use assets module.',
         'Management IP address (10.10.10.2) has been ignored. To '
         'change them, please use the Assets module.',
     ])
Beispiel #12
0
 def test_fc(self):
     data = {"fibrechannel_cards": [{"physical_id": "deadbeefcafe", "label": "ziew", "model_name": "FC-1000"}]}
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     fc = device.fibrechannel_set.get()
     self.assertEqual(fc.physical_id, "deadbeefcafe")
     self.assertEqual(fc.label, "ziew")
     self.assertEqual(fc.model.name, "FC-1000")
     self.assertEqual(fc.model.type, ComponentType.fibre)
Beispiel #13
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'
     )
     Ethernet.objects.create(mac='112233AABBDD', device=connected_device_1)
     connected_device_2 = Device.objects.create(
         model=model,
         sn='sn_3',
         name='dev3.dc1'
     )
     Ethernet.objects.create(mac='112233AABBEE', device=connected_device_2)
     data = {
         'connections': [
             {
                 'connected_device_mac_addresses': '112233AABBDD',
                 'connection_type': 'network'
             },
             {
                 'connected_device_mac_addresses': '112233AABBEE',
                 'connection_type': 'network',
                 'details': {
                     'outbound_port': 'eth1',
                     'inbound_port': 'gr2'
                 }
             }
         ]
     }
     set_device_data(master_device, data)
     master_device.save()
     device = Device.objects.get(sn='sn_1')
     connections = device.outbound_connections.all()
     self.assertEqual(connections[0].inbound.id, connected_device_1.id)
     self.assertEqual(connections[1].inbound.id, connected_device_2.id)
     self.assertEqual(
         connections[1].networkconnection.outbound_port,
         "eth1"
     )
     self.assertEqual(
         connections[1].networkconnection.inbound_port,
         "gr2"
     )
Beispiel #14
0
 def test_model_name(self):
     data = {"type": "blade_server", "model_name": "ziew-Y"}
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     self.assertEqual(device.model.name, "ziew-Y")
     self.assertEqual(device.model.type, DeviceType.blade_server)
     data = {"type": "rack_server", "model_name": "ziew-X"}
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     self.assertEqual(device.model.name, "ziew-X")
     self.assertEqual(device.model.type, DeviceType.rack_server)
Beispiel #15
0
 def test_mac_addresses(self):
     data = {"mac_addresses": ["deadbeefcaf0", "deadbeefcaf1", "deadbeefcaf2"]}
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     ethernets = list(device.ethernet_set.order_by("label", "mac"))
     self.assertEqual(len(ethernets), 3)
     self.assertEqual(ethernets[2].mac, "DEADBEEFCAF2")
     data = {"mac_addresses": ["deadbeefcaf0", "deadbeefcaf1"]}
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     ethernets = list(device.ethernet_set.order_by("label", "mac"))
     self.assertEqual(len(ethernets), 2)
     self.assertEqual(ethernets[1].mac, "DEADBEEFCAF1")
Beispiel #16
0
 def test_ip_addresses(self):
     data = {
         'system_ip_addresses': [
             '127.0.0.1',
             '127.0.0.2',
         ],
         'management_ip_addresses': [
             '127.0.0.3',
             '127.0.0.4',
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     system_addresses = list(
         device.ipaddress_set.filter(is_management=False).order_by('number')
     )
     management_addresses = list(
         device.ipaddress_set.filter(is_management=True).order_by('number')
     )
     self.assertEqual(len(system_addresses), 2)
     self.assertEqual(len(management_addresses), 2)
     self.assertEqual(system_addresses[0].is_management, False)
     self.assertEqual(management_addresses[0].is_management, True)
     self.assertEqual(system_addresses[0].address, '127.0.0.1')
     self.assertEqual(management_addresses[0].address, '127.0.0.3')
     data = {
         'system_ip_addresses': [
             '127.0.0.1',
         ],
         'management_ip_addresses': [
             '127.0.0.2',
             '127.0.0.3',
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     system_addresses = list(
         device.ipaddress_set.filter(is_management=False).order_by('number')
     )
     management_addresses = list(
         device.ipaddress_set.filter(is_management=True).order_by('number')
     )
     self.assertEqual(len(system_addresses), 1)
     self.assertEqual(len(management_addresses), 2)
     address = IPAddress.objects.get(address='127.0.0.4')
     self.assertEqual(address.device, None)
Beispiel #17
0
 def test_processors(self):
     data = {
         "processors": [
             {"model_name": "CPU Xeon 2533MHz, 4-core", "family": "Xeon", "cores": "4", "speed": "2533"},
             {"model_name": "CPU Xeon 2533MHz, 4-core", "family": "Xeon", "speed": "2533"},
         ]
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     processors = list(device.processor_set.order_by("index"))
     self.assertEqual(processors[0].model.name, "CPU Xeon 2533MHz, 4-core")
     self.assertEqual(processors[0].model.type, ComponentType.processor)
     self.assertEqual(processors[0].cores, 4)
     self.assertEqual(processors[0].speed, 2533)
     self.assertEqual(len(processors), 2)
Beispiel #18
0
 def test_memory(self):
     data = {"memory": [{"size": "128"}, {"size": "128"}, {"size": "128"}, {"size": "128"}]}
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     memory = list(device.memory_set.order_by("index"))
     self.assertEqual(memory[0].size, 128)
     self.assertEqual(memory[0].index, 0)
     self.assertEqual(len(memory), 4)
     data = {"memory": [{"size": "256"}, {"size": "256"}]}
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     memory = list(device.memory_set.order_by("index"))
     self.assertEqual(memory[0].size, 256)
     self.assertEqual(memory[0].index, 0)
     self.assertEqual(len(memory), 2)
Beispiel #19
0
 def test_disk_exports_and_shares(self):
     data = {
         "disk_exports": [{"serial_number": "deadbeefcafe1234", "size": "2048", "label": "pr0n"}],
         "disk_shares": [
             {"serial_number": "deadbeefcafe1234", "server": {"device": {"serial_number": "123456789"}}}
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     export = device.diskshare_set.get()
     mount = device.disksharemount_set.get()
     self.assertEqual(export.label, "pr0n")
     self.assertEqual(export.size, 2048)
     self.assertEqual(export.wwn, "deadbeefcafe1234")
     self.assertEqual(mount.share, export)
     self.assertEqual(mount.server, device)
Beispiel #20
0
 def test_fc(self):
     data = {
         'fibrechannel_cards': [
             {
                 'physical_id': "deadbeefcafe",
                 'label': "ziew",
                 'model_name': "FC-1000",
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     fc = device.fibrechannel_set.get()
     self.assertEqual(fc.physical_id, "deadbeefcafe")
     self.assertEqual(fc.label, "ziew")
     self.assertEqual(fc.model.name, "FC-1000")
     self.assertEqual(fc.model.type, ComponentType.fibre)
Beispiel #21
0
 def test_fc(self):
     data = {
         'fibrechannel_cards': [
             {
                 'physical_id': "deadbeefcafe",
                 'label': "ziew",
                 'model_name': "FC-1000",
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     fc = device.fibrechannel_set.get()
     self.assertEqual(fc.physical_id, "deadbeefcafe")
     self.assertEqual(fc.label, "ziew")
     self.assertEqual(fc.model.name, "FC-1000")
     self.assertEqual(fc.model.type, ComponentType.fibre)
Beispiel #22
0
 def test_basic_data(self):
     data = {
         'serial_number': 'aaa123456789',
         'hostname': 'mervin',
         'data_center': 'chicago',
         'barcode': '00000',
         'rack': 'i31',
         'chassis_position': '4',
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='aaa123456789')
     self.assertEqual(device.sn, 'aaa123456789')
     self.assertEqual(device.name, 'mervin')
     self.assertEqual(device.dc, 'chicago')
     self.assertEqual(device.barcode, '00000')
     self.assertEqual(device.rack, 'i31')
     self.assertEqual(device.chassis_position, 4)
Beispiel #23
0
 def test_model_name(self):
     data = {
         'type': 'blade_server',
         'model_name': 'ziew-Y',
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     self.assertEqual(device.model.name, 'ziew-Y')
     self.assertEqual(device.model.type, DeviceType.blade_server)
     data = {
         'type': 'rack_server',
         'model_name': 'ziew-X',
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     self.assertEqual(device.model.name, 'ziew-X')
     self.assertEqual(device.model.type, DeviceType.rack_server)
Beispiel #24
0
 def test_model_name(self):
     data = {
         'type': 'blade_server',
         'model_name': 'ziew-Y',
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     self.assertEqual(device.model.name, 'ziew-Y')
     self.assertEqual(device.model.type, DeviceType.blade_server)
     data = {
         'type': 'rack_server',
         'model_name': 'ziew-X',
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     self.assertEqual(device.model.name, 'ziew-X')
     self.assertEqual(device.model.type, DeviceType.rack_server)
Beispiel #25
0
 def test_system(self):
     data = {
         'system_label': 'Haiku 1.0.0',
         'system_memory': '512',
         'system_storage': '2048',
         'system_cores_count': 4,
         'system_family': 'BeOS',
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     system = device.operatingsystem_set.get()
     self.assertEqual(system.label, "Haiku 1.0.0")
     self.assertEqual(system.memory, 512)
     self.assertEqual(system.storage, 2048)
     self.assertEqual(system.cores_count, 4)
     self.assertEqual(system.model.name, "BeOS")
     self.assertEqual(system.model.family, "BeOS")
     self.assertEqual(system.model.type, ComponentType.os)
Beispiel #26
0
 def test_system(self):
     data = {
         'system_label': 'Haiku 1.0.0',
         'system_memory': '512',
         'system_storage': '2048',
         'system_cores_count': 4,
         'system_family': 'BeOS',
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     system = device.operatingsystem_set.get()
     self.assertEqual(system.label, "Haiku 1.0.0")
     self.assertEqual(system.memory, 512)
     self.assertEqual(system.storage, 2048)
     self.assertEqual(system.cores_count, 4)
     self.assertEqual(system.model.name, "BeOS")
     self.assertEqual(system.model.family, "BeOS")
     self.assertEqual(system.model.type, ComponentType.os)
Beispiel #27
0
 def test_system(self):
     data = {
         "system_label": "Haiku 1.0.0",
         "system_memory": "512",
         "system_storage": "2048",
         "system_cores_count": 4,
         "system_family": "BeOS",
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     system = device.operatingsystem_set.get()
     self.assertEqual(system.label, "Haiku 1.0.0")
     self.assertEqual(system.memory, 512)
     self.assertEqual(system.storage, 2048)
     self.assertEqual(system.cores_count, 4)
     self.assertEqual(system.model.name, "BeOS")
     self.assertEqual(system.model.family, "BeOS")
     self.assertEqual(system.model.type, ComponentType.os)
Beispiel #28
0
 def test_basic_data(self):
     data = {
         "serial_number": "aaa123456789",
         "hostname": "mervin",
         "data_center": "chicago",
         "barcode": "00000",
         "rack": "i31",
         "chassis_position": "4",
         "management": "10.10.10.2",
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="aaa123456789")
     self.assertEqual(device.sn, "aaa123456789")
     self.assertEqual(device.name, "mervin")
     self.assertEqual(device.dc, "chicago")
     self.assertEqual(device.barcode, "00000")
     self.assertEqual(device.rack, "i31")
     self.assertEqual(device.chassis_position, 4)
     self.assertEqual(device.management.address, "10.10.10.2")
Beispiel #29
0
 def test_software(self):
     data = {
         'installed_software': [
             {
                 'label': 'Doom 2',
                 'version': '2',
                 'path': '/usr/local/games/bin/doom',
                 'model_name': 'Doom',
                 'serial_number': 'Blooood!',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     soft = device.software_set.get()
     self.assertEqual(soft.label, "Doom 2")
     self.assertEqual(soft.version, "2")
     self.assertEqual(soft.model.name, "Doom")
     self.assertEqual(soft.model.type, ComponentType.software)
Beispiel #30
0
 def test_software(self):
     data = {
         'installed_software': [
             {
                 'label': 'Doom 2',
                 'version': '2',
                 'path': '/usr/local/games/bin/doom',
                 'model_name': 'Doom',
                 'serial_number': 'Blooood!',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     soft = device.software_set.get()
     self.assertEqual(soft.label, "Doom 2")
     self.assertEqual(soft.version, "2")
     self.assertEqual(soft.model.name, "Doom")
     self.assertEqual(soft.model.type, ComponentType.software)
Beispiel #31
0
 def test_parts(self):
     data = {
         'parts': [
             {
                 'serial_number': "abc123",
                 'type': 'management',
                 'label': "Terminator management",
                 'model_name': "T-500 management module",
                 'hard_firmware': "T-500-1",
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     part = device.genericcomponent_set.get()
     self.assertEqual(part.label, "Terminator management")
     self.assertEqual(part.model.name, "T-500 management module")
     self.assertEqual(part.model.type, ComponentType.management)
     self.assertEqual(part.sn, "abc123")
Beispiel #32
0
 def test_parts(self):
     data = {
         'parts': [
             {
                 'serial_number': "abc123",
                 'type': 'management',
                 'label': "Terminator management",
                 'model_name': "T-500 management module",
                 'hard_firmware': "T-500-1",
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     part = device.genericcomponent_set.get()
     self.assertEqual(part.label, "Terminator management")
     self.assertEqual(part.model.name, "T-500 management module")
     self.assertEqual(part.model.type, ComponentType.management)
     self.assertEqual(part.sn, "abc123")
Beispiel #33
0
 def test_device_with_asset_ip_addresses(self):
     asset = DCAssetFactory()
     data = {
         "system_ip_addresses": ["127.0.0.1", "127.0.0.2"],
         "management_ip_addresses": ["127.0.0.3", "127.0.0.4"],
         "asset": asset,
     }
     warnings = []
     set_device_data(self.device, data, warnings=warnings)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     self.assertEqual(device.ipaddress_set.filter(is_management=False).count(), 2)
     self.assertEqual(device.ipaddress_set.filter(is_management=True).count(), 0)
     self.assertEqual(
         warnings,
         [
             "Management IP addresses (127.0.0.3, 127.0.0.4) have been "
             "ignored. To change them, please use the Assets module."
         ],
     )
Beispiel #34
0
 def test_software(self):
     data = {
         "installed_software": [
             {
                 "label": "Doom 2",
                 "version": "2",
                 "path": "/usr/local/games/bin/doom",
                 "model_name": "Doom",
                 "serial_number": "Blooood!",
             }
         ]
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     soft = device.software_set.get()
     self.assertEqual(soft.label, "Doom 2")
     self.assertEqual(soft.version, "2")
     self.assertEqual(soft.model.name, "Doom")
     self.assertEqual(soft.model.type, ComponentType.software)
Beispiel #35
0
 def test_parts(self):
     data = {
         "parts": [
             {
                 "serial_number": "abc123",
                 "type": "management",
                 "label": "Terminator management",
                 "model_name": "T-500 management module",
                 "hard_firmware": "T-500-1",
             }
         ]
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     part = device.genericcomponent_set.get()
     self.assertEqual(part.label, "Terminator management")
     self.assertEqual(part.model.name, "T-500 management module")
     self.assertEqual(part.model.type, ComponentType.management)
     self.assertEqual(part.sn, "abc123")
Beispiel #36
0
 def test_memory(self):
     data = {
         'memory': [
             {
                 'size': '128',
             },
             {
                 'size': '128',
             },
             {
                 'size': '128',
             },
             {
                 'size': '128',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     memory = list(device.memory_set.order_by('index'))
     self.assertEqual(memory[0].size, 128)
     self.assertEqual(memory[0].index, 0)
     self.assertEqual(len(memory), 4)
     data = {
         'memory': [
             {
                 'size': '256',
             },
             {
                 'size': '256',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     memory = list(device.memory_set.order_by('index'))
     self.assertEqual(memory[0].size, 256)
     self.assertEqual(memory[0].index, 0)
     self.assertEqual(len(memory), 2)
Beispiel #37
0
 def test_memory(self):
     data = {
         'memory': [
             {
                 'size': '128',
             },
             {
                 'size': '128',
             },
             {
                 'size': '128',
             },
             {
                 'size': '128',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     memory = list(device.memory_set.order_by('index'))
     self.assertEqual(memory[0].size, 128)
     self.assertEqual(memory[0].index, 0)
     self.assertEqual(len(memory), 4)
     data = {
         'memory': [
             {
                 'size': '256',
             },
             {
                 'size': '256',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     memory = list(device.memory_set.order_by('index'))
     self.assertEqual(memory[0].size, 256)
     self.assertEqual(memory[0].index, 0)
     self.assertEqual(len(memory), 2)
Beispiel #38
0
 def test_subdevices(self):
     data = {
         "subdevices": [
             {
                 "serial_number": "1",
                 "type": "virtual_server",
                 "hostname": "ziew1",
                 "model_name": "XEN Virtual Server",
             },
             {
                 "mac_addresses": ["beefcafedead"],
                 "type": "virtual_server",
                 "hostname": "ziew2",
                 "model_name": "XEN Virtual Server",
             },
         ]
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     subdevices = list(device.child_set.order_by("name"))
     self.assertEqual(len(subdevices), 2)
     self.assertEqual(subdevices[0].name, "ziew1")
     self.assertEqual(subdevices[1].name, "ziew2")
Beispiel #39
0
 def test_subdevices(self):
     data = {
         'subdevices': [
             {
                 'serial_number': '1',
                 'type': 'virtual_server',
                 'hostname': 'ziew1',
                 'model_name': 'XEN Virtual Server',
             },
             {
                 'mac_addresses': ['beefcafedead'],
                 'type': 'virtual_server',
                 'hostname': 'ziew2',
                 'model_name': 'XEN Virtual Server',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     subdevices = list(device.child_set.order_by('name'))
     self.assertEqual(len(subdevices), 2)
     self.assertEqual(subdevices[0].name, 'ziew1')
     self.assertEqual(subdevices[1].name, 'ziew2')
Beispiel #40
0
 def test_subdevices(self):
     data = {
         'subdevices': [
             {
                 'serial_number': '1',
                 'type': 'virtual_server',
                 'hostname': 'ziew1',
                 'model_name': 'XEN Virtual Server',
             },
             {
                 'mac_addresses': ['beefcafedead'],
                 'type': 'virtual_server',
                 'hostname': 'ziew2',
                 'model_name': 'XEN Virtual Server',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     subdevices = list(device.child_set.order_by('name'))
     self.assertEqual(len(subdevices), 2)
     self.assertEqual(subdevices[0].name, 'ziew1')
     self.assertEqual(subdevices[1].name, 'ziew2')
Beispiel #41
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')
     Ethernet.objects.create(mac='112233AABBDD', device=connected_device_1)
     connected_device_2 = Device.objects.create(model=model,
                                                sn='sn_3',
                                                name='dev3.dc1')
     Ethernet.objects.create(mac='112233AABBEE', device=connected_device_2)
     data = {
         'connections': [{
             'connected_device_mac_addresses': '112233AABBDD',
             'connection_type': 'network'
         }, {
             'connected_device_mac_addresses': '112233AABBEE',
             'connection_type': 'network',
             'details': {
                 'outbound_port': 'eth1',
                 'inbound_port': 'gr2'
             }
         }]
     }
     set_device_data(master_device, data)
     master_device.save()
     device = Device.objects.get(sn='sn_1')
     connections = device.outbound_connections.all()
     self.assertEqual(connections[0].inbound.id, connected_device_1.id)
     self.assertEqual(connections[1].inbound.id, connected_device_2.id)
     self.assertEqual(connections[1].networkconnection.outbound_port,
                      "eth1")
     self.assertEqual(connections[1].networkconnection.inbound_port, "gr2")
Beispiel #42
0
 def test_disks(self):
     data = {
         "disks": [
             {
                 "serial_number": "1234",
                 "size": "128",
                 "mount_point": "/dev/sda",
                 "label": "sda",
                 "family": "Simpsons",
             },
             {"size": "512", "mount_point": "/dev/sdb", "label": "sdb", "family": "Jetsons"},
         ]
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     disks = list(device.storage_set.order_by("label"))
     self.assertEqual(disks[0].mount_point, "/dev/sda")
     self.assertEqual(disks[0].sn, "1234")
     self.assertEqual(disks[0].model.family, "Simpsons")
     self.assertEqual(disks[1].sn, None)
     self.assertEqual(disks[1].mount_point, "/dev/sdb")
     self.assertEqual(disks[1].model.family, "Jetsons")
     self.assertEqual(len(disks), 2)
     data = {
         "disks": [
             {"mount_point": "/dev/sda", "family": "Simpsons"},
             {"serial_number": "12346", "mount_point": "/dev/sdb"},
         ]
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     disks = list(device.storage_set.order_by("label"))
     self.assertEqual(disks[0].mount_point, "/dev/sda")
     self.assertEqual(disks[0].sn, "1234")
     self.assertEqual(disks[0].model.family, "Simpsons")
     self.assertEqual(disks[1].sn, "12346")
     self.assertEqual(disks[1].mount_point, "/dev/sdb")
     self.assertEqual(disks[1].model.family, "Jetsons")
     self.assertEqual(len(disks), 2)
     data = {"disks": [{"mount_point": "/dev/sda", "family": "Simpsons"}]}
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn="123456789")
     disks = list(device.storage_set.order_by("label"))
     self.assertEqual(disks[0].mount_point, "/dev/sda")
     self.assertEqual(disks[0].sn, "1234")
     self.assertEqual(disks[0].model.family, "Simpsons")
     self.assertEqual(len(disks), 1)
Beispiel #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)
Beispiel #44
0
 def test_disks(self):
     data = {
         'disks': [
             {
                 'serial_number': '1234',
                 'size': '128',
                 'mount_point': '/dev/sda',
                 'label': 'sda',
                 'family': 'Simpsons',
             },
             {
                 'size': '512',
                 'mount_point': '/dev/sdb',
                 'label': 'sdb',
                 'family': 'Jetsons',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     disks = list(device.storage_set.order_by('label'))
     self.assertEqual(disks[0].mount_point, '/dev/sda')
     self.assertEqual(disks[0].sn, '1234')
     self.assertEqual(disks[0].model.family, 'Simpsons')
     self.assertEqual(disks[1].sn, None)
     self.assertEqual(disks[1].mount_point, '/dev/sdb')
     self.assertEqual(disks[1].model.family, 'Jetsons')
     self.assertEqual(len(disks), 2)
     data = {
         'disks': [
             {
                 'mount_point': '/dev/sda',
                 'family': 'Simpsons',
             },
             {
                 'serial_number': '12346',
                 'mount_point': '/dev/sdb',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     disks = list(device.storage_set.order_by('label'))
     self.assertEqual(disks[0].mount_point, '/dev/sda')
     self.assertEqual(disks[0].sn, '1234')
     self.assertEqual(disks[0].model.family, 'Simpsons')
     self.assertEqual(disks[1].sn, '12346')
     self.assertEqual(disks[1].mount_point, '/dev/sdb')
     self.assertEqual(disks[1].model.family, 'Jetsons')
     self.assertEqual(len(disks), 2)
     data = {
         'disks': [
             {
                 'mount_point': '/dev/sda',
                 'family': 'Simpsons',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     disks = list(device.storage_set.order_by('label'))
     self.assertEqual(disks[0].mount_point, '/dev/sda')
     self.assertEqual(disks[0].sn, '1234')
     self.assertEqual(disks[0].model.family, 'Simpsons')
     self.assertEqual(len(disks), 1)
Beispiel #45
0
 def test_disks(self):
     data = {
         'disks': [
             {
                 'serial_number': '1234',
                 'size': '128',
                 'mount_point': '/dev/sda',
                 'label': 'sda',
                 'family': 'Simpsons',
             },
             {
                 'size': '512',
                 'mount_point': '/dev/sdb',
                 'label': 'sdb',
                 'family': 'Jetsons',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     disks = list(device.storage_set.order_by('label'))
     self.assertEqual(disks[0].mount_point, '/dev/sda')
     self.assertEqual(disks[0].sn, '1234')
     self.assertEqual(disks[0].model.family, 'Simpsons')
     self.assertEqual(disks[1].sn, None)
     self.assertEqual(disks[1].mount_point, '/dev/sdb')
     self.assertEqual(disks[1].model.family, 'Jetsons')
     self.assertEqual(len(disks), 2)
     data = {
         'disks': [
             {
                 'mount_point': '/dev/sda',
                 'family': 'Simpsons',
             },
             {
                 'serial_number': '12346',
                 'mount_point': '/dev/sdb',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     disks = list(device.storage_set.order_by('label'))
     self.assertEqual(disks[0].mount_point, '/dev/sda')
     self.assertEqual(disks[0].sn, '1234')
     self.assertEqual(disks[0].model.family, 'Simpsons')
     self.assertEqual(disks[1].sn, '12346')
     self.assertEqual(disks[1].mount_point, '/dev/sdb')
     self.assertEqual(disks[1].model.family, 'Jetsons')
     self.assertEqual(len(disks), 2)
     data = {
         'disks': [
             {
                 'mount_point': '/dev/sda',
                 'family': 'Simpsons',
             },
         ],
     }
     set_device_data(self.device, data)
     self.device.save()
     device = Device.objects.get(sn='123456789')
     disks = list(device.storage_set.order_by('label'))
     self.assertEqual(disks[0].mount_point, '/dev/sda')
     self.assertEqual(disks[0].sn, '1234')
     self.assertEqual(disks[0].model.family, 'Simpsons')
     self.assertEqual(len(disks), 1)