def save_storage(storage, dev): mount_points = [] for item in storage: sn = item.get('sn') mount_point = item.get('mountpoint') if not sn or not mount_point: continue label = item.get('label') try: size = int(item.get('size')) except ValueError: continue model_name = '{} {}MiB'.format(label, size) model, c = ComponentModel.create( ComponentType.disk, size=size, family=model_name, priority=SAVE_PRIORITY, ) stor = None try: stor = Storage.objects.get(device=dev, mount_point=mount_point) if stor.sn != sn: try: stor_found_by_sn = Storage.objects.get(sn=sn) if all((stor_found_by_sn.model == model, stor_found_by_sn.size == size, stor_found_by_sn.label == label)): stor.mount_point = None stor.save(priotity=SAVE_PRIORITY) stor = stor_found_by_sn stor.device = dev stor.mount_point = mount_point else: stor = None except Storage.DoesNotExist: stor.sn = sn except Storage.DoesNotExist: try: stor = Storage.objects.get(sn=sn) if all((stor.model == model, stor.size == size, stor.label == label)): stor.device = dev stor.mount_point = mount_point else: stor = None except Storage.DoesNotExist: stor = Storage(device=dev, mount_point=mount_point, sn=sn) if stor: stor.model = model stor.label = label stor.size = size stor.save(priority=SAVE_PRIORITY) mount_points.append(mount_point) dev.storage_set.exclude(mount_point__in=mount_points).update( mount_point=None)
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")
def create_device(device, cpu=None, memory=None, storage=None): dev = Device.create( model=device.get('model'), model_name=device.get('model_name'), model_type=device.get('model_type'), sn=device.get('sn'), venture=device.get('venture'), parent=device.get('parent'), price=device.get('price'), deprecation_kind=device.get('deprecation_kind'), purchase_date=device.get('purchase_date'), ) dev.name = device.get('name') dev.save() if cpu: model = create_model(device, cpu, ComponentType.processor) for cpu in duplicate_item(cpu): Processor( device=dev, model=model, label=cpu.get('label'), ).save() if memory: model = create_model(device, memory, ComponentType.memory) for memory in duplicate_item(memory): Memory( device=dev, model=model, speed=memory.get('speed'), size=memory.get('size'), label=memory.get('label'), ).save() if storage: model = create_model(device, storage, ComponentType.disk) for storage in duplicate_item(storage): Storage( device=dev, model=model, label=storage.get('label'), ).save() return dev