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 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)