From 11f9af48eacb4a109936361cbf963bd834d7e3c8 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 11 Dec 2012 12:44:12 -0600
Subject: LinHES-system: add_storage  added --add_be_sg and --add_fe_sg to the
 cmd line. These flags control which storage groups are added. Additionaly
 when running add_storage from the command line it will prompt the user which
 Storage group class to use.

refs #880
---
 abs/core/LinHES-system/PKGBUILD       |   4 +-
 abs/core/LinHES-system/add_storage.py | 111 +++++++++++++++++++++++++++-------
 2 files changed, 90 insertions(+), 25 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 524b090..7497028 100755
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=2
-pkgrel=126
+pkgrel=127
 arch=('i686' 'x86_64')
 MVDIR=$startdir/pkg/usr/LH
 BINDIR=$startdir/pkg/usr/bin
@@ -98,7 +98,7 @@ md5sums=('06bc649bce56c22b9a1f56890e0765b6'
          'ceec78815ed01af733cdbca14cb0942b'
          '1be1d3dfc83f828eede93055713882ae'
          '47e093e8cfe4b5b96602358e1f540832'
-         '72313342e619acdb520d9d14bc05d5a2'
+         'fd7dbbf960080619ef18d6843f6374d8'
          'b9b0a8370f46f0b5e144a66897e8eefb'
          '6519d209e151cdc39ae7e1091d189c3e'
          '8f474e019d5fcb775497aca355d61b0b'
diff --git a/abs/core/LinHES-system/add_storage.py b/abs/core/LinHES-system/add_storage.py
index d03da59..5e85260 100644
--- a/abs/core/LinHES-system/add_storage.py
+++ b/abs/core/LinHES-system/add_storage.py
@@ -302,7 +302,7 @@ class disk_device:
                 runcmd(cmd)
 
     def add_sg(self,DB,host,SG_MAP,weight='0',install_call=False):
-        print "    Adding to storage groups"
+        print "    Adding storage groups"
         sgweight=int(weight)
         for key in SG_MAP.iterkeys():
             #print key," : ", SG_MAP[key]
@@ -455,7 +455,8 @@ def prompt_to_add(current_drive):
 def prompt_to_continue():
     loop = True
     #while loop:
-    str1 = raw_input("\n    Ready to start, press Y to continue, anything else to abort:")
+    print "\n\n\n\n"
+    str1 = raw_input("\n    Ready to add additional storage!\n    Press Y to continue, anything else to abort:")
 
         #if str1 in ['Y','N','y','n']:
         #    loop = False
@@ -465,9 +466,62 @@ def prompt_to_continue():
         rc = True
     else:
         rc = False
+    print "-----"
     return rc
 
+def prompt_sg(dir_be_sg,dir_fe_sg):
+    #check for backend storage groups
+    if dir_be_sg != True:
+        loop = True
+        print "@@@@@@@@@@@@@@@@@@@@@@"
+        prompt_string='''
+    Backend Storage Groups are used for things like
+    TV Recordings and database backups.
 
+    The content on these storage groups will
+    only be available while the system is online.
+
+    Do you wish enable this system for Backend Storage Groups(Y/N)?:'''
+
+        while loop:
+            str1 = raw_input(prompt_string)
+            if str1 in ['Y','N','y','n']:
+                loop = False
+                break
+            print "\n"
+
+        if str1 == 'Y' or str1 == 'y':
+            dir_be_sg = True
+            print "    ** Will add Backend Storage Groups!"
+        else:
+            print "    ** Will NOT add Backend Storage Groups!"
+            dir_be_sg = False
+
+    #now for frontend storage groups
+    if dir_fe_sg != True:
+        loop = True
+        print "++++++++++++++++++++++++"
+        prompt_string='''
+    Frontend Storage Groups are used for videos.
+    The content on these storage groups will
+    only be available while the system is online.
+
+    Do you wish enable this system for Frontend Storage Groups(Y/N)?:'''
+        while loop:
+            str1 = raw_input(prompt_string)
+            if str1 in ['Y','N','y','n']:
+                loop = False
+                break
+            print "\n"
+
+        if str1 == 'Y' or str1 == 'y':
+            dir_fe_sg = True
+            print "    ** Will add Frontend Storage Groups!"
+        else:
+            dir_fe_sg = False
+            print "    ** Will NOT add Frontend Storage Groups!"
+
+    return dir_be_sg,dir_fe_sg
 
 def remove_pickle():
     try:
@@ -487,7 +541,7 @@ def last_disk_num():
     return num_list[-1]
 #--------------------------------------------
 
-def main(scan_only, destruction, no_mount, install_call , dir_fe_only):
+def main(scan_only, destruction, no_mount, install_call , dir_fe_sg, dir_be_sg):
     global bus
     bus = dbus.SystemBus()
 
@@ -530,6 +584,7 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_only):
                 process_list.append(i)
     print "    End of scan"
     print "---------------------------------------"
+
     if scan_only:
         if len(process_list) > 0:
             f = open('/tmp/scan_report', 'w')
@@ -537,8 +592,8 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_only):
                 f.write("drive: %s , location: %s ,size: %s \n" %(i.model,i.block_path,i.device_size))
                 print "drive: %s , location: %s ,size: %s \n" %(i.model,i.block_path,i.device_size)
             f.close()
-
         sys.exit(0)
+
     for i in no_process_list:
         system_drive_list.append(i)
 
@@ -561,7 +616,9 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_only):
 
 
     if len(process_list) > 0:
-        print "\n    Adding storage: \n"
+        print "    Will add %s disks to systems" %len(process_list)
+
+        dir_be_sg , dir_fe_sg = prompt_sg(dir_be_sg,dir_fe_sg)
         if prompt_to_continue() == True:
             write_known_drive_list(system_drive_list)
             disk_num = last_disk_num()
@@ -574,27 +631,29 @@ def main(scan_only, destruction, no_mount, install_call , dir_fe_only):
                 i.add_fstab()
                 i.mount_disk(no_mount)
                 if destruction == True:
-                    if dir_fe_only != True:
+                    if dir_fe_sg == True:
+                        i.mkdirs(FS_LIST_FE)
+                    if dir_be_sg == True:
                         i.mkdirs(FS_LIST_BE)
-                    i.mkdirs(FS_LIST_FE)
+
                 i.set_disk_num(disk_num)
                 i.write_config()
                 system_drive_list.append(i)
                 write_known_drive_list(system_drive_list)
 
                 i.symlink_disk()
-                #always create the FE groups(video)..do not need to create Be
-                if dir_fe_only != True:
-                    i.add_sg(DB,host,SG_MAP_BE)
 
-                i.add_sg(DB,host,SG_MAP_FE)
+                if dir_fe_sg == True:
+                    i.add_sg(DB,host,SG_MAP_FE)
+                if dir_be_sg == True:
+                        i.add_sg(DB,host,SG_MAP_BE)
 
                 print "-----"
             cmd = "systemconfig.py -m fileshare"
             runcmd(cmd)
         #i.add_sg(DB,host,SG_MAP)
 
-def myth_main(no_mount,install_call,dir_fe_only):
+def myth_main(no_mount,install_call,dir_fe_sg):
     global bus
     bus = dbus.SystemBus()
     #search for root
@@ -629,7 +688,7 @@ def myth_main(no_mount,install_call,dir_fe_only):
         if i.block_path == device:
             break
     else:
-        print "Could'nt find root device in block list"
+        print "Couldn't find root device in block list"
         sys.exit(1)
     if not install_call == True:
         DB = MythDB()
@@ -647,12 +706,12 @@ def myth_main(no_mount,install_call,dir_fe_only):
     #if not install_call:
     i.mount_disk(no_mount)
     i.write_config()
-    #always create the FE groups(video)..do not need to create Be
-    if dir_fe_only != True:
+    #no need to make the sub directories because the install process has taken care of it.
+    if dir_fe_sg == True:
+        i.add_sg(DB,host,SG_MAP_FE,'99',install_call)
+    if dir_be_sg == True:
         i.add_sg(DB,host,SG_MAP_BE,'99',install_call)
 
-    i.add_sg(DB,host,SG_MAP_FE,'99',install_call)
-
     i.symlink()
     cmd = "systemconfig.py -m fileshare"
     runcmd(cmd)
@@ -826,7 +885,8 @@ def usage():
     --no_destruction:  Will not  partition or format the disk
     --new_init :  Erase the list of new disks and rescan.
     --report :  will scan the disks and print out if it found new storage.
-    --fe_only :  Will only create the storage group dir for videos..excludes tv
+    --add_fe_sg :  Will only create the storage group dir for videos..excludes tv
+    --add_be_sg :  Will only create the storage group dir for TV, backups, streaming
     '''
     print help
     sys.exit(0)
@@ -840,7 +900,8 @@ if __name__ == "__main__":
     no_mount = False
     destruction = True
     install_call = False
-    dir_fe_only = False
+    dir_fe_sg = False
+    dir_be_sg = False
     reconstruct = False
     try:
         os.remove("/tmp/scan_report")
@@ -868,18 +929,22 @@ if __name__ == "__main__":
     if "--report" in sys.argv :
         scan_only = True
 
-    if "--fe_only" in sys.argv:
-        dir_fe_only = True
+    if "--add_fe_sg" in sys.argv:
+        dir_fe_sg = True
+
+    if "--add_be_sg" in sys.argv:
+        dir_be_sg = True
+
 
     if "--reconstruct" in sys.argv:
         reconstruct = True
 
     if "--double_myth" in sys.argv:
-        myth_main(no_mount,install_call,dir_fe_only)
+        myth_main(no_mount,install_call,dir_fe_sg)
     elif reconstruct == True:
         reconstruct_mounts(no_mount)
     else:
-        main(scan_only,destruction,no_mount, install_call, dir_fe_only)
+        main(scan_only,destruction,no_mount, install_call, dir_fe_sg, dir_be_sg)
 
 
 
-- 
cgit v0.12

