From 7aceba3e2de7f50ad648959b270fc065c4cabdc8 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 26 Feb 2024 21:44:18 -0500
Subject: linhes-system: balance_storage_groups.py: when busy wait instead
 quitting

---
 linhes/linhes-system/PKGBUILD                  |  4 +--
 linhes/linhes-system/balance_storage_groups.py | 44 ++++++++++++++++----------
 2 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/linhes/linhes-system/PKGBUILD b/linhes/linhes-system/PKGBUILD
index c67f521..942975d 100755
--- a/linhes/linhes-system/PKGBUILD
+++ b/linhes/linhes-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=linhes-system
 pkgver=9.0.0
-pkgrel=74
+pkgrel=76
 arch=('x86_64')
 #install=$pkgname.install
 pkgdesc="Everything that makes LinHES a system"
@@ -27,7 +27,7 @@ source=($binfiles
     'system-sudo.rules' 'linhes-profile.sh' 'lh_sqlserver.cnf' 'lh_restart_needed.hook'
     'lh_system_start.sh.desktop' 'rc6_mce.toml' 'recordings.cron' 'rsyslog.mythtv.conf')
 sha256sums=('e6eaa2fb4819fa60cb05b4d2e7328d2914af3a73028a735ec4d56e7ece33ecc0'
-            '1ec3c266cafb0c1b231e88df88b97fec1a1b7465b5d95a0c1e64c8cb727b7c47'
+            '1115809a2d80c1ead7cfc5df05e1d6427255912a8303594574b3be23d3d3e4f1'
             '97fe9e851c782fa9f85c5b69b110ccff2817dd4fa2a6d9ff6ee225dc558677e4'
             'ff261f41efec8a9963f9f59100cbe75f015028a2ed3a863ce0cb473f2ebb7b76'
             '8b54c31b8efde3917f603c5307bebb0a2a00239ad9a983c2f5d8120003256449'
diff --git a/linhes/linhes-system/balance_storage_groups.py b/linhes/linhes-system/balance_storage_groups.py
index e525a27..d91da60 100755
--- a/linhes/linhes-system/balance_storage_groups.py
+++ b/linhes/linhes-system/balance_storage_groups.py
@@ -1,7 +1,8 @@
 #!/usr/bin/python
 
-import argparse, glob, operator, os, random, shutil, subprocess, sys, signal
+import argparse, glob, operator, os, random, shutil, subprocess, sys, signal, time
 shouldQuit = False
+movingFiles = False
 
 def getFreeSpaceForDir(dir):
     stats = os.statvfs(dir)
@@ -24,9 +25,12 @@ def sizeof_fmt(num, suffix='B'):
     return "%.1f %s%s" % (num, 'Yi', suffix)
 
 def signal_handler(signal, frame):
-    print("\nWill quit when file has been moved.\nMoving File...")
-    global shouldQuit
-    shouldQuit = True
+    if movingFiles:
+        print("\nWill quit when file has been moved.\nMoving File...")
+        global shouldQuit
+        shouldQuit = True
+    else:
+        sys.exit(0)
 
 if __name__ == '__main__':
     parser = argparse.ArgumentParser()
@@ -116,26 +120,33 @@ if __name__ == '__main__':
             print(filePathToMove + " is too big to move to " + leastFull[0])
             sys.exit()
 
-        print("------------------------------------------------")
-        print("Move File:")
-        print("  " + filePathToMove)
-        print("  Size: " + sizeof_fmt(os.path.getsize(filePathToMove)))
-        print("To:")
-        print("  " + leastFull[0])
-        print("  Available: " + sizeof_fmt(getFreeSpaceForDir(leastFull[0])))
-
         # Move file
         if cmdargs.checkonly:
             print("------------------------------------------------")
             print("Check Only option was used. No files were moved.")
             shouldQuit = True
         else:
+            isBusy = True
+            while isBusy:
+                if shouldQuit:
+                    sys.exit(0)
+                print("------------------------------------------------")
+                print("Checking System Status...")
+                if subprocess.call(["/usr/bin/python", "/usr/bin/idle.py", "-s"]):
+                    print("  System is busy. The file will not be moved.")
+                    print("  Waiting 5 minutes before trying again.")
+                    time.sleep(300)
+                else:
+                    isBusy = False
             print("------------------------------------------------")
-            print("Checking System Status...")
-            if subprocess.call(["/usr/bin/python", "/usr/bin/idle.py", "-s"]):
-                print("  System is busy. The file will not be moved.")
-                sys.exit()
+            print("Move File:")
+            print("  " + filePathToMove)
+            print("  Size: " + sizeof_fmt(os.path.getsize(filePathToMove)))
+            print("To:")
+            print("  " + leastFull[0])
+            print("  Available: " + sizeof_fmt(getFreeSpaceForDir(leastFull[0])))
             print("Moving File...")
+            movingFiles = True
             try:
                 shutil.move(filePathToMove, leastFull[0])
             # eg. src and dest are the same file
@@ -151,3 +162,4 @@ if __name__ == '__main__':
             for p in pngFiles:
                 os.remove(p)
                 print("  " + p)
+            movingFiles = False
-- 
cgit v0.12

