def doInstall(stt, ppc, rootdisk, event): rootdevice = get_rootdevice() percentage = stt trootsize = _getLiveSize(rootdevice) root_osimg = os.path.normpath(rootdevice) osfd_root = os.open(root_osimg, os.O_RDONLY) rootfd = os.open(rootdisk, os.O_WRONLY) os.lseek(osfd_root, 0, 0) os.lseek(rootfd, 0, 0) copied = 0 percentage_s = "0" # set the rootdisk to have the right type. this lets things work readamt = 1024 * 1024 * 8 # 8 megs at a time while copied < trootsize: time.sleep(0.1) try: buf = os.read(osfd_root, readamt) written = os.write(rootfd, buf) except: os.lseek(osfd_root, 0, 0) os.lseek(rootfd, 0, 0) copied = 0 percentage_s = "0" syslog.syslog( syslog.LOG_ERR, 'INSTALL TO HARDDISK ERROR,REWRITE HARDDISK DEVICE.') continue if (written < readamt) and (written < len(buf)): return (False, "Error copying filesystem!") #@@ if (written < readamt) and (written == len(buf)): syslog.syslog(syslog.LOG_ERR, 'INSTALL TO HARDDISK written %d' % written) syslog.syslog(syslog.LOG_ERR, 'INSTALL TO HARDDISK copied %d' % copied) # return (False, "error copying filesystem!") copied += written try: pct = copied / float(trootsize) percentage_cur = int(pct * ppc) if (percentage_cur - int(percentage_s)) >= 1: percentage_s = "%d" % percentage_cur npercentage = percentage + int(percentage_s) updateinfo = {"uuid": event.uuid, "progress": npercentage} optevent_db_op.update_optevent(updateinfo) except: pass os.close(osfd_root) os.close(rootfd) return (True, "Install successed")
def set_ad_quota_user(event): eventexestat = "successed" flag,message=set_ad_quota_user_op(event) if not flag: eventexestat = "failed" updateinfo = {"uuid":event.uuid,"eventexestat":eventexestat,"progress":100, "message":message} optevent_db_op.update_optevent(updateinfo,event) return (True, "suc")
def quit_domain(event): eventexestat = "successed" flag,message=quit_domain_op(event) if not flag: eventexestat = "failed" updateinfo = {"uuid":event.uuid,"eventexestat":eventexestat,"progress":100, "message":message} optevent_db_op.update_optevent(updateinfo,event) return (True, "suc")
def replace_brick(event): eventexestat = "successed" flag,message=replace_brick_op(event) operation.gluster.volume_clr.clear_resources() if not flag: eventexestat = "failed" updateinfo = {"uuid":event.uuid,"eventexestat":eventexestat,"progress":100, "message":message} optevent_db_op.update_optevent(updateinfo,event) return (True, "suc")
def doInstall(stt, ppc, rootdisk, event): rootdevice = get_rootdevice() percentage = stt trootsize = _getLiveSize(rootdevice) root_osimg = os.path.normpath(rootdevice) osfd_root = os.open(root_osimg, os.O_RDONLY) rootfd = os.open(rootdisk, os.O_WRONLY) os.lseek(osfd_root, 0, 0) os.lseek(rootfd, 0, 0) copied = 0 percentage_s = "0" # set the rootdisk to have the right type. this lets things work readamt = 1024*1024*8 # 8 megs at a time while copied < trootsize: time.sleep(0.1) try: buf = os.read(osfd_root, readamt) written = os.write(rootfd, buf) except: os.lseek(osfd_root, 0, 0) os.lseek(rootfd, 0, 0) copied = 0 percentage_s = "0" syslog.syslog(syslog.LOG_ERR,'INSTALL TO HARDDISK ERROR,REWRITE HARDDISK DEVICE.') continue if (written < readamt) and (written < len(buf)): return (False, "Error copying filesystem!") #@@ if (written < readamt) and (written == len(buf)): syslog.syslog(syslog.LOG_ERR,'INSTALL TO HARDDISK written %d' % written) syslog.syslog(syslog.LOG_ERR,'INSTALL TO HARDDISK copied %d' % copied) # return (False, "error copying filesystem!") copied += written try: pct = copied/float(trootsize) percentage_cur = int(pct*ppc) if (percentage_cur - int(percentage_s)) >= 1: percentage_s = "%d" % percentage_cur npercentage = percentage + int(percentage_s) updateinfo = {"uuid":event.uuid,"progress":npercentage} optevent_db_op.update_optevent(updateinfo) except: pass os.close(osfd_root) os.close(rootfd) return (True, "Install successed")
def join_domain(event): eventexestat = "successed" flag,message=join_domain_op(event) if not flag: modify_smb_to_user() recover_user_dns() excute_samba_cmds() vsuuid = support.uuid_op.get_vs_uuid()[1] operation.vhost.domain_db.delete_domain_info(vsuuid) eventexestat = "failed" updateinfo = {"uuid":event.uuid,"eventexestat":eventexestat,"progress":100, "message":message} optevent_db_op.update_optevent(updateinfo,event) return (True, "suc")
def installvcenter(event): instPath = "/mnt/sysimage" harddisk = event.param["harddisk"] (flag, params) = check_create_parttion(event) if not flag: return (False, params) bootdisk = params["bootdisk"] rootdisk = params["rootdisk"] bootsize = params["bootsize"] rootsize = params["rootsize"] clear_tmp_dir() (flag, stat) = create_bootdisk_fs(bootdisk) if not flag: return (False, stat) (flag, stat) = makedir(instPath) if not flag: return (False, stat) ppc = 80 - 20 stt = 20 (flag, stat) = doInstall(stt, ppc, rootdisk, event) if not flag: return (False, stat) # e.g diskinfo = {"rootuuid":rootuuid, "bootuuid":bootuuid} (flag, diskinfo) = doPostInstall(instPath, rootdisk, bootdisk) if not flag: return (False, diskinfo) rootuuid = diskinfo["rootuuid"] bootuuid = diskinfo["bootuuid"] updateinfo = {"uuid": event.uuid, "progress": 85} optevent_db_op.update_optevent(updateinfo) updateinfo = {"uuid": event.uuid, "progress": 90} optevent_db_op.update_optevent(updateinfo) os.system("/bin/sync") time.sleep(20) # e.g install for vcenter kernel install os.system("/usr/bin/python /usr/vmd/installvckernel.pyc") os.system("/bin/sync") time.sleep(20) (flag, stat) = setup_grub(bootdisk, harddisk, rootuuid) if not flag: return (False, stat) file_name = "/mnt/sysimage/etc/installtype.txt" FileOption(file_name).write_file("HardDisk") updateinfo = {"uuid": event.uuid, "progress": 95} optevent_db_op.update_optevent(updateinfo) umount_tmp_mount() return (True, "Successed")
def installvserver(event): instPath = "/mnt/sysimage" harddisk = event.param["harddisk"] (flag, params) = check_create_parttion(event) if not flag: return (False, params) bootdisk = params["bootdisk"] rootdisk = params["rootdisk"] bootsize = params["bootsize"] rootsize = params["rootsize"] clear_tmp_dir() (flag, stat) = create_bootdisk_fs(bootdisk) if not flag: return (False, stat) (flag, stat) = makedir(instPath) if not flag: return (False, stat) ppc = 80 - 20 stt = 20 (flag, stat) = doInstall(stt, ppc, rootdisk, event) if not flag: return (False, stat) # e.g diskinfo = {"rootuuid":rootuuid, "bootuuid":bootuuid} (flag, diskinfo) = doPostInstall(instPath, rootdisk, bootdisk) if not flag: return (False, diskinfo) updateinfo = {"uuid":event.uuid,"progress":85} optevent_db_op.update_optevent(updateinfo) rootuuid = diskinfo["rootuuid"] bootuuid = diskinfo["bootuuid"] (flag, stat) = setup_grub(bootdisk, harddisk, rootuuid) if not flag: return (False, stat) updateinfo = {"uuid":event.uuid,"progress":90} optevent_db_op.update_optevent(updateinfo) file_name = "/mnt/sysimage/etc/installtype.txt" FileOption(file_name).write_file("HardDisk") os.system("/bin/sync") time.sleep(20) os.system("/usr/bin/python /usr/vmd/plyscript.pyc") os.system("/bin/sync") time.sleep(20) updateinfo = {"uuid":event.uuid,"progress":95} optevent_db_op.update_optevent(updateinfo) umount_tmp_mount() return (True, "Successed")