#/usr/bin/env python

import os,sys,time,re,traceback


class ceph_depoloy(object):
    def __init__(self):
        version = 1.0 

    #Log insert 
    def LOG(self,info):
        logfile = '/tmp/ceph-deploy.log'
        files = open(logfile,'a')
        try:
            files.write('%s : %s'%(time.ctime(),info))
        except IOError:
            files.close()
        files.close()
 
    #Disk format /dev/sd*
    def diskFormat(self,disk,count):
        try:
            key = os.popen("fdisk %s" %disk,"w")
            key.write('d \n')
            key.write('n \n')
            key.write('p \n')
            key.write('1 \n')
            key.write('\n \n')
            key.write('\n \n')
            key.write('w')
            key.flush()
            time.sleep(1)
            os.system("""mkdir -p /data%s""" %count)
            os.system("""mkfs.xfs -f -i size=1024 %s1 """ %disk)
            print """mkfs.xfs -f -i size=1024 %s1 """ %disk
            time.sleep(3)
            
            fp = open('/etc/fstab','r')
            for i in fp:
                if not re.search('sdb',i):
                    cmds = """%s1				/data1			xfs	defaults	 0 0 """ %disk
                    os.system("echo %s >> /etc/fstab" %cmds)
                    break
            
            self.LOG("Disk  %s format partion" %disk )
        except:
            self.LOG(traceback.format_exc())
    
    #Get disk tag 
    def disk_tag(self):
        disk_tags = list()
        disk_part = list()
        for ch in xrange(0x42, 0x5B): 
            disk_tags.append("sd%s" %unichr(ch).lower())
            disk_part.append("/dev/sd%s1" %unichr(ch).lower())
        return disk_tags

    def work(self):
        disks = list()
        disk_tags = self.disk_tag()
        
        devs = os.listdir('/dev/')
        count = 0 
        for d in disk_tags:
            if d in devs:
                count += 1
                disk = '/dev/%s' %d 
                self.diskFormat(disk.strip(),count)
 
 
if __name__ == "__main__":
    sc = ceph_depoloy()
    sc.work()