From e151c113e9e7153efb6cbf4216f2114b834d57ff Mon Sep 17 00:00:00 2001
From: Christian Poessinger <christian@poessinger.com>
Date: Sat, 4 Dec 2021 07:33:53 +0100
Subject: op-mode: disk: T4045: cleanup code to use python f'ormat strings

(cherry picked from commit 467eb1f18ec971d6d3913d9ecc58b241db104f0d)
---
 src/op_mode/format_disk.py | 67 +++++++++++++++++++---------------------------
 1 file changed, 28 insertions(+), 39 deletions(-)

(limited to 'src/op_mode/format_disk.py')

diff --git a/src/op_mode/format_disk.py b/src/op_mode/format_disk.py
index df4486bce..b68948e40 100755
--- a/src/op_mode/format_disk.py
+++ b/src/op_mode/format_disk.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# Copyright (C) 2019 VyOS maintainers and contributors
+# Copyright (C) 2019-2021 VyOS maintainers and contributors
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 or later as
@@ -17,11 +17,10 @@
 import argparse
 import os
 import re
-import sys
+
 from datetime import datetime
-from time import sleep
 
-from vyos.util import is_admin, ask_yes_no
+from vyos.util import ask_yes_no
 from vyos.util import call
 from vyos.util import cmd
 from vyos.util import DEVNULL
@@ -38,7 +37,7 @@ def list_disks():
 
 def is_busy(disk: str):
     """Check if given disk device is busy by re-reading it's partition table"""
-    return call(f'sudo blockdev --rereadpt /dev/{disk}', stderr=DEVNULL) != 0
+    return call(f'blockdev --rereadpt /dev/{disk}', stderr=DEVNULL) != 0
 
 
 def backup_partitions(disk: str):
@@ -65,11 +64,11 @@ def list_partitions(disk: str):
 
 
 def delete_partition(disk: str, partition_idx: int):
-    cmd(f'sudo /sbin/parted /dev/{disk} rm {partition_idx}')
+    cmd(f'parted /dev/{disk} rm {partition_idx}')
 
 
 def format_disk_like(target: str, proto: str):
-    cmd(f'sudo /sbin/sfdisk -d /dev/{proto} | sudo /sbin/sfdisk --force /dev/{target}')
+    cmd(f'sfdisk -d /dev/{proto} | sfdisk --force /dev/{target}')
 
 
 if __name__ == '__main__':
@@ -79,10 +78,6 @@ if __name__ == '__main__':
     group.add_argument('-p', '--proto', type=str, required=True, help='Prototype device to use as reference')
     args = parser.parse_args()
 
-    if not is_admin():
-        print('Must be admin or root to format disk')
-        sys.exit(1)
-
     target_disk = args.target
     eligible_target_disks = list_disks()
 
@@ -90,54 +85,48 @@ if __name__ == '__main__':
     eligible_proto_disks = eligible_target_disks.copy()
     eligible_proto_disks.remove(target_disk)
 
-    fmt = {
-        'target_disk': target_disk,
-        'proto_disk': proto_disk,
-    }
-
     if proto_disk == target_disk:
         print('The two disk drives must be different.')
-        sys.exit(1)
+        exit(1)
 
-    if not os.path.exists('/dev/' + proto_disk):
-        print('Device /dev/{proto_disk} does not exist'.format_map(fmt))
-        sys.exit(1)
+    if not os.path.exists(f'/dev/{proto_disk}'):
+        print(f'Device /dev/{proto_disk} does not exist')
+        exit(1)
 
     if not os.path.exists('/dev/' + target_disk):
-        print('Device /dev/{target_disk} does not exist'.format_map(fmt))
-        sys.exit(1)
+        print(f'Device /dev/{target_disk} does not exist')
+        exit(1)
 
     if target_disk not in eligible_target_disks:
-        print('Device {target_disk} can not be formatted'.format_map(fmt))
-        sys.exit(1)
+        print(f'Device {target_disk} can not be formatted')
+        exit(1)
 
     if proto_disk not in eligible_proto_disks:
-        print('Device {proto_disk} can not be used as a prototype for {target_disk}'.format_map(fmt))
-        sys.exit(1)
+        print(f'Device {proto_disk} can not be used as a prototype for {target_disk}')
+        exit(1)
 
     if is_busy(target_disk):
-        print("Disk device {target_disk} is busy. Can't format it now".format_map(fmt))
-        sys.exit(1)
+        print(f'Disk device {target_disk} is busy, unable to format')
+        exit(1)
 
-    print('This will re-format disk {target_disk} so that it has the same disk\n'
-          'partion sizes and offsets as {proto_disk}. This will not copy\n'
-          'data from {proto_disk} to {target_disk}. But this will erase all\n'
-          'data on {target_disk}.\n'.format_map(fmt))
+    print(f'\nThis will re-format disk {target_disk} so that it has the same disk'
+          f'\npartion sizes and offsets as {proto_disk}. This will not copy'
+          f'\ndata from {proto_disk} to {target_disk}. But this will erase all'
+          f'\ndata on {target_disk}.\n')
 
-    if not ask_yes_no("Do you wish to proceed?"):
-        print('OK. Disk drive {target_disk} will not be re-formated'.format_map(fmt))
-        sys.exit(0)
+    if not ask_yes_no('Do you wish to proceed?'):
+        print(f'Disk drive {target_disk} will not be re-formated')
+        exit(0)
 
-    print('OK. Re-formating disk drive {target_disk}...'.format_map(fmt))
+    print(f'Re-formating disk drive {target_disk}...')
 
     print('Making backup copy of partitions...')
     backup_partitions(target_disk)
-    sleep(1)
 
     print('Deleting old partitions...')
     for p in list_partitions(target_disk):
         delete_partition(disk=target_disk, partition_idx=p)
 
-    print('Creating new partitions on {target_disk} based on {proto_disk}...'.format_map(fmt))
+    print(f'Creating new partitions on {target_disk} based on {proto_disk}...')
     format_disk_like(target=target_disk, proto=proto_disk)
-    print('Done.')
+    print('Done!')
-- 
cgit v1.2.3