diff options
Diffstat (limited to 'ogcp')
-rw-r--r-- | ogcp/views.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/ogcp/views.py b/ogcp/views.py index 3bbd933..fde7590 100644 --- a/ogcp/views.py +++ b/ogcp/views.py @@ -735,7 +735,7 @@ def action_image_restore(): form = ImageRestoreForm(request.form) if request.method == 'POST': ips = form.ips.data.split(' ') - disk, partition, part_code = form.partition.data.split(' ') + disk, partition, part_code, part_size = form.partition.data.split(' ') part_type = PART_TYPE_CODES.get(int(part_code), 'UNKNOWN') invalid_part_types = ['EMPTY', 'LINUX-SWAP', 'CACHE', 'EFI', 'WIN-RECOV'] @@ -756,6 +756,13 @@ def action_image_restore(): if not image: flash(_(f'Image to restore was not found'), category='error') return redirect(url_for('commands')) + + image_datasize = int(image['datasize']) + part_size = int(part_size) * 1024 + if image_datasize > part_size: + flash(_(f'The image size is bigger than the target partition'), category='error') + return redirect(url_for('commands')) + try: repository = get_repository(image['repo_id'], server) except ServerError: @@ -825,8 +832,9 @@ def action_image_restore(): continue part_code = partition['code'] filesystem = partition['filesystem'] + part_size = partition['size'] - choice_value = (disk_id, part_id, part_code, filesystem) + choice_value = (disk_id, part_id, part_code, filesystem, part_size) parts.append(choice_value) if not part_choices: # Use first computer as reference part setup conf @@ -836,11 +844,11 @@ def action_image_restore(): return redirect(url_for('commands')) form.partition.choices = [ - (f"{disk_id} {part_id} {part_code}", + (f"{disk_id} {part_id} {part_code} {part_size}", f"Disk {disk_id} | Partition {part_id} " f"| {PART_TYPE_CODES.get(part_code, 'UNKNOWN')} " f"{FS_CODES.get(filesystem, 'UNKNOWN')}") - for disk_id, part_id, part_code, filesystem in part_choices ] + for disk_id, part_id, part_code, filesystem, part_size in part_choices ] scopes, clients = get_scopes(set(ips)) selected_clients = list(get_selected_clients(scopes['scope']).items()) |