示例#1
0
文件: server.py 项目: carriercomm/vca
    def VpsClone(self, oldId, newId, ip, hostname):
        para = {"ipv4": ip, "name": hostname}

        oldVps = Vps(oldId)
        oldVps.stop()
        newVps = copy.copy(oldVps)
        newVps._id = newId

        os.mkdir("/vz/root/" + str(newVps._id))
        os.mkdir("/vz/private/" + str(newVps._id))
        shutil.copyfile("/etc/vz/conf/" + str(oldVps._id) + ".conf", "/etc/vz/conf/" + str(newVps._id) + ".conf")

        subprocess.call(
            "pushd /vz/private/"
            + str(oldVps._id)
            + "; tar c --numeric-owner * | tar x --numeric-owner -C /vz/private/"
            + str(newVps._id)
            + "; popd",
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.STDOUT,
        )
        newVps.modConf(para)

        oldVps.start()
        newVps.start()
示例#2
0
文件: server.py 项目: laszlo09/vca
 def VpsNew(self, newId, os, hostname):
     vps = Vps(newId)
     subprocess.call('vzctl create ' + str(vps._id) + ' --ostemplate ' +
                     os + ' --hostname ' + hostname,
                     shell=True,
                     stdout=subprocess.PIPE,
                     stderr=subprocess.STDOUT)
示例#3
0
    def vpsExec(self, id, command):
        vps = Vps(id)
        p = subprocess.Popen('vzctl exec '+vps._id+' '+command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

        text = ''
        for line in p.stdout.readlines():
            text += line
        
        return text
示例#4
0
 def VpsClone(self, oldId, newId, ip, hostname):
     para = {"ipv4": ip, "name": hostname}
     
     oldVps = Vps(oldId)
     oldVps.stop()
     newVps = copy.copy(oldVps)
     newVps._id = newId
     
     os.mkdir('/vz/root/'+str(newVps._id))
     os.mkdir('/vz/private/'+str(newVps._id))
     shutil.copyfile('/etc/vz/conf/'+str(oldVps._id)+'.conf', '/etc/vz/conf/'+str(newVps._id)+'.conf')
     
     subprocess.call('pushd /vz/private/'+str(oldVps._id)+'; tar c --numeric-owner * | tar x --numeric-owner -C /vz/private/'+str(newVps._id)+'; popd', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
     newVps.modConf(para)
     
     oldVps.start()
     newVps.start()
示例#5
0
文件: server.py 项目: carriercomm/vca
 def VpsDelete(self, newId):
     vps = Vps(newId)
     vps.stop()
     vps.destroy()
示例#6
0
文件: server.py 项目: carriercomm/vca
    def VpsList(self):
        VpsList = list()
        p = subprocess.Popen(
            "vzlist -H -ao ctid,numproc,status,ip,hostname,laverage,diskspace,physpages",
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.STDOUT,
        )
        for line in p.stdout.readlines():
            vps = re.sub("\s+", " ", line.decode()).strip()
            vpsInfo = vps.split()
            vpsCurrent = Vps(vpsInfo[0])
            if vpsInfo[1] == "-":
                vpsCurrent.nproc = 0
            else:
                vpsCurrent.nproc = vpsInfo[1]
            vpsCurrent.ip = vpsInfo[3]
            vpsCurrent.hostname = vpsInfo[4]
            vpsCurrent.loadavg = vpsInfo[5]
            vpsCurrent.diskspace_current = vpsInfo[6]

            if vpsInfo[7] == "-":
                vpsCurrent.ram_current = 0
            else:
                vpsCurrent.ram_current = int(vpsInfo[7]) * 4

            vpsCurrent.loadConf()
            VpsList.append(vpsCurrent)

        return json.dumps(VpsList, default=encodeVps)
示例#7
0
def vcaAction(action, serverDest, para):
    global localserver

    # Server And VPS
    if action == 'VpsList':
        return localserver.VpsList()
    elif action == 'create':
        if serverDest != 0:
            localserver.VpsNew(serverDest, para['os'], para['name'])
            vps = Vps(serverDest)
            vps.modConf(para)
    elif action == 'modConf':
        if int(serverDest) != 0:
            vps = Vps(serverDest)
            vps.modConf(para)
    elif action == 'start':
        if int(serverDest) != 0:
            vps = Vps(serverDest)
            vps.start()
    elif action == 'stop':
        if int(serverDest) != 0:
            vps = Vps(serverDest)
            vps.stop()
    elif action == 'restart':
        if int(serverDest) == 0:
            localserver.restart()
        else:
            vps = Vps(serverDest)
            vps.restart()
    elif action == 'delete':
        if int(serverDest) > 0:
            localserver.VpsDelete(serverDest)
    elif action == 'clone':
        if int(serverDest) > 0 and int(para['dest']) > 0:
            localserver.VpsClone(serverDest, para['dest'], para['ip'],
                                 para['hostname'])
    elif action == 'password':
        if int(serverDest) > 0:
            vps = Vps(serverDest)
            vps.password(para)
    elif action == 'cmd':
        if int(serverDest) > 0:
            vps = Vps(serverDest)
            return vps.cmd(para)
        return ''
    #Templates
    elif action == 'reinstall':
        if int(serverDest) > 0:
            vps = Vps(serverDest)
            vps.reinstall(para)
    elif action == 'move':
        if int(serverDest) > 0:
            vps = Vps(serverDest)
            vps.move(para)
    elif action == 'templateList':
        if int(serverDest) == 0:
            return localserver.templateList()
    elif action == 'templateRename':
        if int(serverDest) == 0:
            localserver.templateRename(para['old'], para['new'])
    elif action == 'templateAdd':
        if int(serverDest) == 0:
            localserver.templateAdd(para)
    elif action == 'templateDelete':
        if int(serverDest) == 0 and para != '':
            localserver.templateDelete(para)
    elif action == 'backupAdd':
        if int(serverDest) > 0:
            vps = Vps(serverDest)
            vps.backupAdd()
    elif action == 'backupDelete':
        if int(serverDest) > 0 and int(para) > 0:
            vps = Vps(serverDest)
            vps.backupDelete(para)
    elif action == 'backupList':
        if int(serverDest) > 0:
            vps = Vps(serverDest)
            return vps.backupList()
        else:
            return localserver.backupList()
    elif action == 'backupRestore':
        if int(serverDest) > 0 and int(para) > 0:
            pid = str(
                subprocess.call('vzlist -H -ao numproc ' + serverDest,
                                shell=True,
                                stdout=subprocess.PIPE,
                                stderr=subprocess.STDOUT))
            pid = pid.strip()
            vps = Vps(serverDest)
            if pid != '-':
                vps.stop()
            vps.backupRestore(para)
            if pid != '-':
                vps.start()
    elif action == 'backupDropbox':
        if int(serverDest) > 0:
            vps = Vps(serverDest)
            vps.backupDropbox(para['token'], para['pass'])
    elif action == "avScan":
        return localserver.avScan()
    else:
        return 'Nothing : ' + action
    return 'Nothing to return'
示例#8
0
def vcaAction(action, serverDest, para):
    global localserver
    
    # Server And VPS
    if action == 'VpsList':
        return localserver.VpsList()
    elif action == 'create':
        if serverDest != 0:
            localserver.VpsNew(serverDest, para['os'], para['name'])
            vps = Vps(serverDest)
            vps.modConf(para)
    elif action == 'modConf':
        if int(serverDest) != 0:
            vps = Vps(serverDest)
            vps.modConf(para)
    elif action == 'start':
        if int(serverDest) != 0:
            vps = Vps(serverDest)
            vps.start()
    elif action == 'stop':
        if int(serverDest) != 0:
            vps = Vps(serverDest)
            vps.stop()
    elif action == 'restart':
        if int(serverDest) == 0:
            localserver.restart()
        else:
            vps = Vps(serverDest)
            vps.restart()
    elif action == 'delete':
        if int(serverDest) > 0:
            localserver.VpsDelete(serverDest)
    elif action == 'clone':
        if int(serverDest) > 0 and int(para['dest']) > 0 :
            localserver.VpsClone(serverDest, para['dest'], para['ip'], para['hostname'])
    elif action == 'password':
        if int(serverDest) > 0 :
            vps = Vps(serverDest)
            vps.password(para)
    elif action == 'cmd':
        if int(serverDest) > 0 :
            vps = Vps(serverDest)
            return vps.cmd(para)
        return ''
    #Templates
    elif action == 'reinstall':
        if int(serverDest) > 0 :
            vps = Vps(serverDest)
            vps.reinstall(para)
    elif action == 'move':
        if int(serverDest) > 0 :
            vps = Vps(serverDest)
            vps.move(para)
    elif action == 'templateList':
        if int(serverDest) == 0:
            return localserver.templateList()
    elif action == 'templateRename':
        if int(serverDest) == 0:
            localserver.templateRename(para['old'], para['new'])
    elif action == 'templateAdd':
        if int(serverDest) == 0:
            localserver.templateAdd(para)
    elif action == 'templateDelete':
        if int(serverDest) == 0 and para != '':
            localserver.templateDelete(para)
    elif action == 'backupAdd':
        if int(serverDest) > 0 :
            vps = Vps(serverDest)
            vps.backupAdd()
    elif action == 'backupDelete':
        if int(serverDest) > 0 and int(para) > 0:
            vps = Vps(serverDest)
            vps.backupDelete(para)
    elif action == 'backupList':
        if int(serverDest) > 0 :
            vps = Vps(serverDest)
            return vps.backupList()
        else:
            return localserver.backupList()
    elif action == 'backupRestore':
        if int(serverDest) > 0 and int(para) > 0:
            pid  = str(subprocess.call('vzlist -H -ao numproc '+serverDest, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
            pid  = pid.strip()
            vps = Vps(serverDest)
            if pid != '-':
                vps.stop()
            vps.backupRestore(para)
            if pid != '-':
                vps.start()
    elif action == 'backupDropbox':
        if int(serverDest) > 0 :
            vps = Vps(serverDest)
            vps.backupDropbox(para['token'], para['pass'])
    elif action == "avScan":
        return localserver.avScan()
    else:
        return 'Nothing : '+action
    return 'Nothing to return'
示例#9
0
 def templateDownload(self):
     vps = Vps(newId)
示例#10
0
 def VpsDelete(self, newId):
     vps = Vps(newId)
     vps.stop()
     vps.destroy()
示例#11
0
    def VpsList(self):
        VpsList = list()
        p = subprocess.Popen('vzlist -H -ao ctid,numproc,status,ip,hostname,laverage,diskspace,physpages', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        for line in p.stdout.readlines():
                vps = re.sub( '\s+', ' ', line.decode()).strip()
                vpsInfo = vps.split()
                vpsCurrent = Vps(vpsInfo[0])
                if vpsInfo[1] == '-':
                    vpsCurrent.nproc = 0
                else:
                    vpsCurrent.nproc = vpsInfo[1]
                vpsCurrent.ip = vpsInfo[3]
                vpsCurrent.hostname = vpsInfo[4]
                vpsCurrent.loadavg = vpsInfo[5]
                vpsCurrent.diskspace_current = vpsInfo[6]
                
                if vpsInfo[7] == '-':
                    vpsCurrent.ram_current = 0
                else:
                    vpsCurrent.ram_current = int(vpsInfo[7])*4
                
                vpsCurrent.loadConf()
                VpsList.append(vpsCurrent)

        return json.dumps(VpsList, default=encodeVps)