def start(self, id): VPS_DB = database.DB_VPS() VPS = VPS_DB.getVPS(id) self.execbhyve(VPS_DB.startCommand(RootPath), str(id)) return "Started VPS {}\n".format(id)
def createDiskImg(self, id): vps = database.DB_VPS() # return vps.getImage() '''cnx = mysql.connector.connect(**config) cursor = cnx.cursor() cursor.execute("select size,vps_id from disk where id=%s",(id,)) Disk = cursor.fetchone()''' Disk = vps.getDisk(id) vps_id = Disk[1] size = Disk[0] Interface = 2 vps.getVPS(vps_id) ID = vps.getID() Name = vps.getName() RAM = vps.getRAM() Console = vps.getConsole() Image = vps.getImage() Path = vps.getPath() StartScript = vps.getStartScript() StopScript = vps.getStopScript() # return "Create Disk for VPS 1\n" Disks = vps.getDisks(vps_id) VPSPath = self.getVPSPath(Path, vps_id) self.setImagePath(Image) Devices = vps.getDevices(vps_id) NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices( Devices, Interface) BootDrive, Drives, Interface, LinuxBoot = self.genDisks( Disks, Interface, ID, Path) create_disk = "truncate -s {}GB {}/{}/{}".format( size, RootPath, vps_id, id) output = subprocess.Popen(['/bin/sh', '-c', create_disk], stdout=subprocess.PIPE) BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands( RAM, BootDrive, Name, NetInt, Drives, Console, ID, VPSPath) StartScript = "{}{}/start.sh".format(RootPath, vps_id) StartScriptData = self.getScriptData(AddBridges, AddTaps, Bhyve, BhyveLoad, GrubBhyve, GrubBhyve2, Image, ShellInABox) self.generateScript(StartScript, StartScriptData) return "Create Disk for VPS {}\n".format(vps_id)
def stop(self, id): VPS_DB = database.DB_VPS() VPS = VPS_DB.getVPS(id) #VPS_Con = modules.vps.VMFunc() self.execbhyve(VPS_DB.stopCommand(RootPath), str(id)) self.execbhyve(VPS_DB.stopConsole(RootPath), str(id)) return "Stopped VPS {}\n".format(id)
def checkStatus(self, vps_id): self.id = vps_id VPS_Conn = database.DB_VPS() VPS = VPS_Conn.getVPS(self.id) vps_id = str(VPS[0]) vps_name = VPS[1] vps_startscript = VPS[5] if (vps_startscript == ""): vps_name = str(self.id) if (os.path.exists("/dev/vmm/" + str(vps_id))): return "Running" else: return "Stopped"
def checkStatus(self, vps_id): self.id = vps_id VPS_Conn = database.DB_VPS() VPS = VPS_Conn.getVPS(self.id) vps_id = str(VPS[0]) vps_name = VPS[1] vps_startscript = VPS[5] if (vps_startscript == ""): vps_name = str(self.id) # print "{}{}/installing.txt".format(RootPath,vps_id) if (os.path.exists(RootPath + str(vps_id) + "/installing.txt")): return "Installing" if (os.path.exists("/dev/vmm/" + str(vps_id))): return "Running" else: return "Stopped"
def deleteDisk(self, id): vps = database.DB_VPS() vps_id = vps.getDiskVPSID(id) vps.getVPS(vps_id) ID = vps.getID() Name = vps.getName() RAM = vps.getRAM() Console = vps.getConsole() Image = vps.getImage() Path = vps.getPath() StartScript = vps.getStartScript() StopScript = vps.getStopScript() if (Path == ""): VPSPath = RootPath + "/" + str(vps_id) else: VPSPath = Path if (Image == 1): SrcImg = SrcImgFreeBSD elif (Image == 2): SrcImg = SrcImgUbuntu elif (Image == 3): SrcImg = SrcImgCentos delete_disk = "rm {}/{}".format(VPSPath, id) output = subprocess.Popen(['/bin/sh', '-c', delete_disk], stdout=subprocess.PIPE) vps.deleteDisk(id) #### # # Regenerate Scripts # #### Disks = vps.getDisks(vps_id) Devices = vps.getDevices(vps_id) Interface = 2 NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices( Devices, Interface) BootDrive, Drives, Interface, LinuxBoot = self.genDisks( Disks, Interface, ID, VPSPath) BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands( RAM, BootDrive, Name, NetInt, Drives, Console, ID, VPSPath) StartScript = "{}/start.sh".format(VPSPath) # FreeBSD if (Image == 1): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox) elif (Image == 2): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox) elif (Image == 3): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox) StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox) self.generateScript(StartScript, StartScriptData) return "Disk Delete"
def createDisk(self, id): cnx = mysql.connector.connect(**config) cursor = cnx.cursor() cursor.execute("select size,vps_id from disk where id=%s", (id, )) Disk = cursor.fetchone() vps_id = Disk[1] size = Disk[0] Interface = 2 vps = database.DB_VPS() vps.getVPS(vps_id) ID = vps.getID() Name = vps.getName() RAM = vps.getRAM() Console = vps.getConsole() Image = vps.getImage() Path = vps.getPath() StartScript = vps.getStartScript() StopScript = vps.getStopScript() Disks = vps.getDisks(vps_id) if (Path == ""): VPSPath = RootPath + "/" + str(vps_id) else: VPSPath = Path if (Image == 1): SrcImg = SrcImgFreeBSD elif (Image == 2): SrcImg = SrcImgUbuntu elif (Image == 3): SrcImg = SrcImgCentos Devices = vps.getDevices(vps_id) NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices( Devices, Interface) BootDrive, Drives, Interface, LinuxBoot = self.genDisks( Disks, Interface, ID, Path) create_disk = "truncate -s {}GB {}/{}/{}".format( size, RootPath, vps_id, id) output = subprocess.Popen(['/bin/sh', '-c', create_disk], stdout=subprocess.PIPE) BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands( RAM, BootDrive, Name, NetInt, Drives, Console, ID, VPSPath) StartScript = "{}{}/start.sh".format(RootPath, vps_id) # FreeBSD if (Image == 1): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox) elif (Image == 2): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox) elif (Image == 3): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox) self.generateScript(StartScript, StartScriptData) return "Create Disk for VPS {}\n".format(vps_id)
def updateVPS(self, vps_id): vps = database.DB_VPS() #vpsConn = modules.vps.VMFunc() vps.getVPS(vps_id) ID = vps.getID() Name = vps.getName() RAM = vps.getRAM() Console = vps.getConsole() Image = vps.getImage() Path = vps.getPath() StartScript = vps.getStartScript() StopScript = vps.getStopScript() Disks = vps.getDisks(vps_id) if (Path == ""): VPSPath = RootPath + "/" + str(vps_id) else: VPSPath = Path print "VPS Path: {}".format(VPSPath) Devices = vps.getDevices(vps_id) StopShellInABox = "/usr/bin/sockstat -4 -l | grep :{}{}".format( ShellInABoxPref, ID) Interface = 2 NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices( Devices, Interface) BootDrive, Drives, Interface, LinuxBoot = self.genDisks( Disks, Interface, ID, VPSPath) BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands( RAM, BootDrive, Name, NetInt, Drives, Console, ID, VPSPath) StartScript = "{}/start.sh".format(VPSPath) StopScript = "{}/stop.sh".format(VPSPath) DeviceMapScript = "{}/device.map".format(VPSPath) StartConsole = "{}/startconsole.sh".format(VPSPath) StopConsole = "{}/stopconsole.sh".format(VPSPath) StopScriptData = "{} --destroy --vm={}\n".format(Bhyvectl, ID) # FreeBSD if (Image == 1): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox) # Ubuntu elif (Image == 2): DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format(VPSPath, LinuxBoot) self.generateScript(DeviceMapScript, DevicemapData) StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox) print "Linux Device - Image 2 = {}".format(DevicemapData) # Centos elif (Image == 3): DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format(VPSPath, LinuxBoot) self.generateScript(DeviceMapScript, DevicemapData) StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox) print "Linux Device - Image 3 = {}".format(StartScriptData) StartConsoleScript = ShellInABox StopConsoleScript = StopShellInABox self.generateScript(StartConsole, StartConsoleScript) self.generateScript(StopConsole, StopConsoleScript) self.generateScript(StartScript, StartScriptData) self.generateScript(StopScript, StopScriptData) return "Updated"
def createvps(self, id): vps = database.DB_VPS() vps.getVPS(id) ID = vps.getID() Name = vps.getName() RAM = vps.getRAM() Console = vps.getConsole() Image = vps.getImage() Path = vps.getPath() StartScript = vps.getStartScript() StopScript = vps.getStopScript() Disks = vps.getDisks(id) Devices = vps.getDevices(id) if (Path == ""): Path = RootPath + "/" + str(ID) Interface = 2 NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices( Devices, Interface) BootDrive, Drives, Interface, LinuxBoot = self.genDisks( Disks, Interface, ID, Path) BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands( RAM, BootDrive, Name, NetInt, Drives, Console, ID, Path) StopShellInABox = "/usr/bin/sockstat -4 -l | grep :{}{}".format( ShellInABoxPref, ID) Network = "/sbin/ifconfig " DstImg = Path + "/" + "disk.img" if (Image == 1): SrcImg = SrcImgFreeBSD elif (Image == 2): SrcImg = SrcImgUbuntu elif (Image == 3): SrcImg = SrcImgCentos if not os.path.exists(Path): os.makedirs(Path) if (self.createDisk == "on"): print "Copying file..." shutil.copyfile(SrcImg, BootDrive) StartScript = "{}/start.sh".format(Path) StopScript = "{}/stop.sh".format(Path) StartConsole = "{}/startconsole.sh".format(Path) StopConsole = "{}/stopconsole.sh".format(Path) DeviceMapScript = "{}/device.map".format(Path) # FreeBSD if (Image == 1): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox) elif (Image == 2): DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format( Path, LinuxBoot) self.generateScript(DeviceMapScript, DevicemapData) StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox) print "Linux Device - Image 2 = {}".format(DevicemapData) elif (Image == 3): DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format( Path, LinuxBoot) self.generateScript(DeviceMapScript, DevicemapData) StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox) print "Linux Device - Image 3 = {}".format(DevicemapData) StopScriptData = "{} --destroy --vm={}\n".format(Bhyvectl, ID) StartConsoleScript = ShellInABox StopConsoleScript = StopShellInABox self.generateScript(StartScript, StartScriptData) self.generateScript(StopScript, StopScriptData) self.generateScript(StartConsole, StartConsoleScript) self.generateScript(StopConsole, StopConsoleScript) return "Created VPS: {}\n".format(id)
def deleteDisk(self, id): vps = database.DB_VPS() vps_id = vps.getDiskVPSID(id) vps.getVPS(vps_id) ID = vps.getID() Name = vps.getName() RAM = vps.getRAM() Console = vps.getConsole() Image = vps.getImage() Path = vps.getPath() StartScript = vps.getStartScript() StopScript = vps.getStopScript() VPSPath = self.getVPSPath(Path, vps_id) SrcImg = self.setImagePath(Image) if SrcImg == "Error: no image found": return "Error: no image found" #print Image '''if (Image == 1): SrcImg = SrcImgFreeBSD elif (Image == 2): SrcImg = SrcImgUbuntu elif (Image == 3): SrcImg = SrcImgCentos else: return "Error: no image found"''' delete_disk = "rm {}/{}".format(VPSPath, id) try: process = subprocess.Popen(['/bin/sh', '-c', delete_disk], stdout=subprocess.PIPE) output, err = process.communicate() except: # return process.returncode return "Delete disk failed" vps.deleteDisk(id) #### # # Regenerate Scripts # #### Disks = vps.getDisks(vps_id) Devices = vps.getDevices(vps_id) Interface = 2 NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices( Devices, Interface) BootDrive, Drives, Interface, LinuxBoot = self.genDisks( Disks, Interface, ID, VPSPath) BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands( RAM, BootDrive, Name, NetInt, Drives, Console, ID, VPSPath) StartScript = "{}/start.sh".format(VPSPath) # FreeBSD if (Image == 1): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox) elif (Image == 2): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox) elif (Image == 3): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox) StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox) if (self.generateScript(StartScript, StartScriptData)): return "An error occurred generating script" return "Disk {} Delete\n".format(id)
def createvps(self, id): vps = database.DB_VPS() vps.getVPS(id) ID = vps.getID() Name = vps.getName() RAM = vps.getRAM() Console = vps.getConsole() Image = vps.getImage() Path = vps.getPath() StartScript = vps.getStartScript() StopScript = vps.getStopScript() Disks = vps.getDisks(id) Devices = vps.getDevices(id) if (Path == ""): Path = RootPath + "/" + str(ID) Interface = 2 NetInt, AddTaps, DelTaps, AddBridges, Interface = self.genDevices( Devices, Interface) BootDrive, Drives, Interface, LinuxBoot = self.genDisks( Disks, Interface, ID, Path) BhyveLoad, GrubBhyve, GrubBhyve2, Bhyve, ShellInABox = self.genBhyveCommands( RAM, BootDrive, Name, NetInt, Drives, Console, ID, Path) StopShellInABox = "/usr/bin/sockstat -4 -l | grep :{}{}".format( ShellInABoxPref, ID) Network = "/sbin/ifconfig " DstImg = Path + "/" + "disk.img" # Note: find a better way!!! if (Image == self.FreeBSD): SrcImg = SrcImgFreeBSD elif (Image == self.Ubuntu): SrcImg = SrcImgUbuntu elif (Image == self.Centos): SrcImg = SrcImgCentos elif (Image == self.Win10): SrcImg = SrcImgWin10 if not os.path.exists(Path): if (ZFSEnable == 1): cmd = ZFSCmd + " create " + ZFSRoot + "/" + str(ID) # print "ZFS Command = {}\n".format(cmd) self.execcmd(cmd) else: os.makedirs(Path) if (self.createDisk == "on"): # print "Copying file... {} to {}".format(SrcImg,BootDrive) cmd = Touch + " " + RootPath + str( ID ) + "/installing.txt" + " && " + CP + " " + SrcImg + " " + BootDrive + " && " + RM + " " + RootPath + str( ID) + "/installing.txt" # print "{}\n".format(cmd) self.execcmdFork(cmd) StartScript = "{}/start.sh".format(Path) StopScript = "{}/stop.sh".format(Path) StartConsole = "{}/startconsole.sh".format(Path) StopConsole = "{}/stopconsole.sh".format(Path) DeviceMapScript = "{}/device.map".format(Path) # FreeBSD if (Image == 1): StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, BhyveLoad, Bhyve, AddBridges, ShellInABox) elif (Image == 2): DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format( Path, LinuxBoot) self.generateScript(DeviceMapScript, DevicemapData) StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve, Bhyve, AddBridges, ShellInABox) elif (Image == 3): DevicemapData = "(hd0) {}/{}\n(cd0) .\n".format( Path, LinuxBoot) self.generateScript(DeviceMapScript, DevicemapData) StartScriptData = "{}\n{}\n{}\n{}\n{}\n".format( AddTaps, GrubBhyve2, Bhyve, AddBridges, ShellInABox) StopScriptData = "{} --destroy --vm={}\n".format(Bhyvectl, ID) StartConsoleScript = ShellInABox StopConsoleScript = StopShellInABox self.generateScript(StartScript, StartScriptData) self.generateScript(StopScript, StopScriptData) self.generateScript(StartConsole, StartConsoleScript) self.generateScript(StopConsole, StopConsoleScript) return "Created VPS: {}\n".format(id)