summaryrefslogtreecommitdiffstats
path: root/abs
diff options
context:
space:
mode:
Diffstat (limited to 'abs')
-rw-r--r--abs/core/LinHES-system/add_storage.py149
1 files changed, 109 insertions, 40 deletions
diff --git a/abs/core/LinHES-system/add_storage.py b/abs/core/LinHES-system/add_storage.py
index 626640e..367106e 100644
--- a/abs/core/LinHES-system/add_storage.py
+++ b/abs/core/LinHES-system/add_storage.py
@@ -25,7 +25,7 @@ SG_MAP={ 'Default' :'tv',
'LiveTV' :'tv/live',
'Videos' :'video',
'Trailers' :'video_stuff/trailers',
- 'Coverart' :'video_stuff/converart',
+ 'Coverart' :'video_stuff/coverart',
'Fanart' :'video_stuff/fanart',
'Banners' :'video_stuff/banners',
'Screenshots':'video_stuff/screenshots',
@@ -259,13 +259,14 @@ class disk_device:
f.close()
return
- def mount_disk(self):
+ def mount_disk(self,mount=True):
try:
os.stat(self.new_mount_point)
except:
os.makedirs(self.new_mount_point)
- cmd = "mount %s" %self.new_mount_point
- runcmd(cmd)
+ if mount == True:
+ cmd = "mount %s" %self.new_mount_point
+ runcmd(cmd)
return
def mkdirs(self,FS_LIST):
@@ -281,7 +282,7 @@ class disk_device:
cmd="chmod -R 775 /%s" %self.new_mount_point
runcmd(cmd)
- def add_sg(self,DB,host,SG_MAP,weight='0'):
+ def add_sg(self,DB,host,SG_MAP,weight='0',install_call=False):
print " Adding to storage groups"
sgweight=int(weight)
for key in SG_MAP.iterkeys():
@@ -292,25 +293,28 @@ class disk_device:
#print dn
#print gn
#print hn
- with DB as c:
- try:
- c.execute("""insert into storagegroup (groupname,hostname,dirname) values (%s,%s,%s)""",(gn,hn,dn))
- print " Adding location: %s to storagegroup %s" %(dn,gn)
- except:
- print " *Error inserting %s into storage groups" %dn
-
- if sgweight > 0:
+ if install_call == True :
+ print "Will write SG for stuff after the fact"
+ else:
+ with DB as c:
try:
- #("SGweightPerDir:server2:/mnt/video", 99, "server2");
- sgw="SGweightPerDir:%s:%s" %(hn,dn)
- #print sgw
- #print sgweight
- #print hn
-
- c.execute("""insert into settings (value,data,hostname) values (%s,%s,%s)""",(sgw,sgweight,hn))
- print " Adding storage group weight of %s for %s\n" %(sgweight,gn)
+ c.execute("""insert into storagegroup (groupname,hostname,dirname) values (%s,%s,%s)""",(gn,hn,dn))
+ print " Adding location: %s to storagegroup %s" %(dn,gn)
except:
- print " *Error setting storage group weight %s for %s\n" %(sgweight,gn)
+ print " *Error inserting %s into storage groups" %dn
+
+ if sgweight > 0:
+ try:
+ #("SGweightPerDir:server2:/mnt/video", 99, "server2");
+ sgw="SGweightPerDir:%s:%s" %(hn,dn)
+ #print sgw
+ #print sgweight
+ #print hn
+
+ c.execute("""insert into settings (value,data,hostname) values (%s,%s,%s)""",(sgw,sgweight,hn))
+ print " Adding storage group weight of %s for %s\n" %(sgweight,gn)
+ except:
+ print " *Error setting storage group weight %s for %s\n" %(sgweight,gn)
return
@@ -336,6 +340,8 @@ class disk_device:
print " Creating symlink"
cmd = "ln -s %s %s/myth " %(self.new_mount_point, self.top_mount_dir)
runcmd(cmd)
+ cmd = "ln -s %s %s/data " %(self.new_mount_point, self.top_mount_dir)
+ runcmd(cmd)
@@ -420,6 +426,23 @@ def prompt_to_add(current_drive):
rc = False
return rc
+def prompt_to_continue():
+ loop = True
+ #while loop:
+ str1 = raw_input("\n Ready to start, press Y to continue, anything else to abort:")
+
+ #if str1 in ['Y','N','y','n']:
+ # loop = False
+ # break
+ #print "\n"
+ if str1 == 'Y' or str1 == 'y':
+ rc = True
+ else:
+ rc = False
+ return rc
+
+
+
def remove_pickle():
try:
print "* Resetting list of known drives."
@@ -430,7 +453,7 @@ def remove_pickle():
#--------------------------------------------
-def main(scan_only):
+def main(scan_only, destruction, no_mount, install_call):
global bus
bus = dbus.SystemBus()
@@ -493,20 +516,23 @@ def main(scan_only):
write_known_drive_list(system_drive_list)
if len(process_list) > 0:
print "\n Adding storage: \n"
- for i in process_list:
- print " Drive: %s" %(i.get_name())
- i.partition_disk()
- i.format_disk()
- i.add_fstab()
- i.mount_disk()
- i.mkdirs(FS_LIST)
- i.write_config()
- i.add_sg(DB,host,SG_MAP)
- print "-----"
+ if prompt_to_continue() == True:
+ for i in process_list:
+ print " Drive: %s" %(i.get_name())
+ if destruction == True:
+ i.partition_disk()
+ i.format_disk()
+ i.add_fstab()
+ i.mount_disk(no_mount)
+ if destruction == True:
+ i.mkdirs(FS_LIST)
+ i.write_config()
+ i.add_sg(DB,host,SG_MAP)
+ print "-----"
#i.add_sg(DB,host,SG_MAP)
-def myth_main():
+def myth_main(no_mount,install_call):
global bus
bus = dbus.SystemBus()
#search for root
@@ -543,26 +569,57 @@ def myth_main():
else:
print "Could'nt find root device in block list"
sys.exit(1)
+ if not install_call == True:
+ DB = MythDB()
+ host=gethostname()
+ else:
+ DB = None
+ host=gethostname()
- DB = MythDB()
- host=gethostname()
print " Drive: %s" %(i.get_name())
i.set_mmount(True)
i.set_partition("3")
i.add_fstab(True)
- i.mount_disk()
+ #if not install_call:
+ i.mount_disk(no_mount)
i.write_config()
- i.add_sg(DB,host,SG_MAP,'99')
+ i.add_sg(DB,host,SG_MAP,'99',install_call)
i.symlink()
+def usage():
+ help='''\n
+ Add storage is designed to find and setup new disks for mythtv usage.
+ It's a powerfull that could destroy data if not used correctly, so please be careful.
+ Normal operations include (in this order):
+ Partition the disk
+ Format the disk
+ Add disk to /etc/fstab
+ Mount the disk
+ Create the directory
+ Write out the config file to /etc/storage.d
+ Add new locations to mythtv storage groups
+
+ options:
+
+ --no_mount : Do not mount the disk, only add it to /etc/fstab and create the dir.
+ --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.
+ '''
+ print help
+ sys.exit(0)
+
if __name__ == "__main__":
scan_only = False
myth_mount = False
+ no_mount = False
+ destruction = True
+ install_call = False
try:
os.remove("/tmp/scan_report")
except:
@@ -571,6 +628,18 @@ if __name__ == "__main__":
if not os.geteuid()==0:
sys.exit("\nRoot access is required to run this program\n")
+ if "--help" in sys.argv:
+ usage()
+
+ if "--install_call" in sys.argv:
+ install_call = True
+
+ if "--no_mount" in sys.argv :
+ no_mount = True
+
+ if "--no_destruction" in sys.argv:
+ destruction = False
+
if "--new_init" in sys.argv :
remove_pickle()
@@ -578,9 +647,9 @@ if __name__ == "__main__":
scan_only = True
if "--double_myth" in sys.argv:
- myth_main()
+ myth_main(no_mount,install_call)
else:
- main(scan_only)
+ main(scan_only,destruction,no_mount, install_call)