mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2026-01-19 05:52:05 +01:00
669 lines
23 KiB
Python
Executable File
669 lines
23 KiB
Python
Executable File
from CyberTronLogger import CyberTronLogger as logger
|
|
from inspect import stack
|
|
from shlex import split
|
|
from subprocess import call, CalledProcessError
|
|
from os.path import join
|
|
from os import remove,path
|
|
from random import randint
|
|
from shutil import move
|
|
from time import sleep
|
|
from logLevel import logLevel
|
|
from multiprocessing import Process
|
|
|
|
class virtualMachineAPIOpenVZ:
|
|
## os.path.join
|
|
templatesPath = join('/var', 'lib', 'libvirt', 'templates')
|
|
imagesPath = join('/vz', 'root')
|
|
defaultInterface = 'eth0'
|
|
backupPath = join('/vz','dump')
|
|
|
|
@staticmethod
|
|
def setupNetworkingFiles(vmName, osName, ipAddress, netmask, gateway, hostName):
|
|
try:
|
|
|
|
if logLevel.debug == True:
|
|
logger.operationsLog('Setting up network for: ' + vmName + '.', 'Debug', stack()[0][3])
|
|
|
|
uploadSource = []
|
|
|
|
if osName.find("centos") > -1:
|
|
###### /etc/sysconfig/network-scripts/ifcfg-eth0
|
|
|
|
eth0 = "ifcfg-eth0_" + str(randint(10000, 99999))
|
|
eth0File = open(eth0, 'w')
|
|
|
|
eth0File.writelines('DEVICE="eth0"\n')
|
|
eth0File.writelines('NM_CONTROLLED="yes"\n')
|
|
eth0File.writelines('ONBOOT=yes\n')
|
|
eth0File.writelines('TYPE=Ethernet\n')
|
|
eth0File.writelines('BOOTPROTO=static\n')
|
|
eth0File.writelines('NAME="System eth0"\n')
|
|
eth0File.writelines('IPADDR=' + ipAddress + '\n')
|
|
eth0File.writelines('NETMASK=' + netmask + '\n')
|
|
|
|
eth0File.close()
|
|
|
|
uploadSource.append(eth0)
|
|
|
|
###### /etc/sysconfig/network
|
|
|
|
network = "network_" + str(randint(10000, 99999) + 1)
|
|
networkFile = open(network, 'w')
|
|
|
|
networkFile.writelines('NETWORKING=yes\n')
|
|
networkFile.writelines('HOSTNAME=' + hostName + '\n')
|
|
networkFile.writelines('GATEWAY=' + gateway + '\n')
|
|
|
|
networkFile.close()
|
|
|
|
uploadSource.append(network)
|
|
|
|
###### /etc/resolv.conf
|
|
|
|
resolv = "resolv_" + str(randint(10000, 99999) + 2)
|
|
resolvFile = open(resolv, 'w')
|
|
|
|
resolvFile.writelines("nameserver 8.8.8.8\n")
|
|
|
|
resolvFile.close()
|
|
|
|
uploadSource.append(resolv)
|
|
elif osName.find("debian") > -1 or osName.find("ubuntu") > -1:
|
|
|
|
###### /etc/network/interfaces
|
|
|
|
eth0 = "interfaces_" + str(randint(10000, 99999))
|
|
eth0File = open(eth0, 'w')
|
|
|
|
eth0File.writelines('# This file describes the network interfaces available on your system\n')
|
|
eth0File.writelines('# and how to activate them. For more information, see interfaces(5).\n')
|
|
|
|
eth0File.writelines('\n')
|
|
|
|
eth0File.writelines('# The loopback network interface\n')
|
|
eth0File.writelines('auto lo\n')
|
|
eth0File.writelines('iface lo inet loopback\n')
|
|
|
|
eth0File.writelines('\n')
|
|
|
|
## To deal with Debian 9.3 and ubuntu 16.04 issue.
|
|
|
|
eth0File.writelines('# The primary network interface\n')
|
|
|
|
|
|
eth0File.writelines('allow-hotplug eth0\n')
|
|
eth0File.writelines('iface eth0 inet static\n')
|
|
|
|
eth0File.writelines(' address ' + ipAddress + '\n')
|
|
eth0File.writelines(' netmask ' + netmask + '\n')
|
|
eth0File.writelines(' gateway ' + gateway + '\n')
|
|
eth0File.writelines('# dns-* options are implemented by the resolvconf package, if installed\n')
|
|
eth0File.writelines('dns-nameservers 8.8.8.8\n')
|
|
eth0File.writelines('dns-search com\n')
|
|
|
|
eth0File.close()
|
|
|
|
uploadSource.append(eth0)
|
|
elif osName.find("fedora") > -1:
|
|
|
|
###### /etc/sysconfig/network-scripts/ifcfg-ens3
|
|
|
|
eth0 = "interfaces_" + str(randint(10000, 99999))
|
|
eth0File = open(eth0, 'w')
|
|
|
|
eth0File.writelines('TYPE=Ethernet\n')
|
|
eth0File.writelines('PROXY_METHOD=none\n')
|
|
|
|
eth0File.writelines('BROWSER_ONLY=no\n')
|
|
eth0File.writelines('BOOTPROTO=none\n')
|
|
eth0File.writelines('DEFROUTE=yes\n')
|
|
|
|
eth0File.writelines('IPV4_FAILURE_FATAL=no\n')
|
|
eth0File.writelines('IPV6INIT=yes\n')
|
|
eth0File.writelines('IPV6_AUTOCONF=yes\n')
|
|
|
|
eth0File.writelines('IPV6_DEFROUTE=yes\n')
|
|
eth0File.writelines('IPV6_FAILURE_FATAL=no\n')
|
|
eth0File.writelines('IPV6_ADDR_GEN_MODE=stable-privacy\n')
|
|
eth0File.writelines('NAME=eth0\n')
|
|
eth0File.writelines('ONBOOT=yes\n')
|
|
eth0File.writelines('AUTOCONNECT_PRIORITY=-999\n')
|
|
|
|
eth0File.writelines('DEVICE=eth0\n')
|
|
eth0File.writelines('IPADDR=' + ipAddress + '\n')
|
|
eth0File.writelines('NETMASK=' + netmask + '\n')
|
|
eth0File.writelines('GATEWAY=' + gateway + '\n')
|
|
eth0File.writelines('DNS1=8.8.8.8\n')
|
|
eth0File.writelines('IPV6_PRIVACY=no\n')
|
|
|
|
eth0File.close()
|
|
uploadSource.append(eth0)
|
|
|
|
if logLevel.debug == True:
|
|
logger.operationsLog('Network settings installed for: ' + vmName + '.', 'Debug', stack()[0][3])
|
|
|
|
return uploadSource
|
|
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
|
|
@staticmethod
|
|
def createContainer(vmName, containerID, osTemplate):
|
|
try:
|
|
|
|
command = "vzctl create " + containerID + " --ostemplate " + osTemplate
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
|
|
if logLevel.debug == True:
|
|
logger.operationsLog("Container successfully created for: " + vmName + ".", "Debug",
|
|
stack()[0][3])
|
|
return 1
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
|
|
@staticmethod
|
|
def bootVirtualMachine(vmName, osTemplate, containerID, rootPassword, hostName, macAddress, uploadSource, cpuUnits,
|
|
cpuPercentage, vmVCPUs, vmRam, vmSwap, burstVMRam, size,
|
|
dnsNSOne="8.8.8.8", dnsNSTwo="8.8.4.4",
|
|
ioPriority=3, uploadSpeed=0, bandwidthSuspend=1, debug=False):
|
|
try:
|
|
ioPriority = str(ioPriority)
|
|
|
|
command = "vzctl set " + containerID + " --save --name " + vmName + " --onboot yes --hostname " + hostName + \
|
|
" --netif_add eth0,,," + macAddress + " --nameserver " + dnsNSOne + " --nameserver " + dnsNSTwo + \
|
|
" --cpus " + vmVCPUs + " --ram " + vmRam + " --swap " + vmSwap + " --diskspace " + size + \
|
|
" --userpasswd root:" + rootPassword + " --ioprio " + ioPriority + " --cpuunits " + cpuUnits + \
|
|
" --cpulimit " + cpuPercentage
|
|
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
|
|
|
|
command = "vzctl start " + containerID
|
|
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
sleep(2)
|
|
|
|
finalVMPath = join(virtualMachineAPIOpenVZ.imagesPath,containerID)
|
|
|
|
if osTemplate.find('centos') > -1:
|
|
move(uploadSource[0],finalVMPath + '/etc/sysconfig/network-scripts/ifcfg-eth0')
|
|
move(uploadSource[1], finalVMPath + '/etc/sysconfig/network')
|
|
move(uploadSource[2], finalVMPath + '/etc/resolv.conf')
|
|
elif osTemplate.find('debian') > -1:
|
|
move(uploadSource[0], finalVMPath + '/etc/network/interfaces')
|
|
elif osTemplate.find('ubuntu') > -1:
|
|
move(uploadSource[0], finalVMPath + '/etc/network/interfaces')
|
|
elif osTemplate.find('fedora') > -1:
|
|
move(uploadSource[0], finalVMPath + '/etc/sysconfig/network-scripts/ifcfg-eth0')
|
|
|
|
command = "vzctl exec " + containerID + " /etc/init.d/network restart"
|
|
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
return 1
|
|
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
|
|
|
|
|
|
"""
|
|
|
|
vmName = Name of the virtual machine, usually the IP Address.
|
|
containerID = Container ID of VPS, which usually identify OpenVZ VPS. Starts 100 and above.
|
|
osTemplate = osTemplate that will be used to boot OpenVZ Container.
|
|
rootPassword = VPS Root Password.
|
|
size = Size in GBs of OpenVZ Container.
|
|
vmRam = Guranteed dedicated virtual machine ram.
|
|
burstVMRam = Burstable ram, ram that VM can acquire if it is avaiable by host node.
|
|
bandwidth = Bandwidth allowed to container.
|
|
"""
|
|
|
|
@staticmethod
|
|
def createVirtualMachine(vmName, containerID, osTemplate, rootPassword, size, vmRam, vmSwap, burstVMRam, bandwidth, cpuUnits,
|
|
vmVCPUs,cpuPercentage, ipAddress, netmask, gateway, hostName, macAddress,
|
|
dnsNSOne = "8.8.8.8", dnsNSTwo = "8.8.4.4", networkSpeed = '0',
|
|
ioPriority = 3, uploadSpeed = 0, bandwidthSuspend = 1):
|
|
try:
|
|
|
|
logger.operationsLog('Starting to create virtual machine: ' + vmName, 'Info', stack()[0][3])
|
|
|
|
##
|
|
|
|
uploadSource = virtualMachineAPIOpenVZ.setupNetworkingFiles(vmName, osTemplate, ipAddress, netmask, gateway, hostName)
|
|
|
|
##
|
|
|
|
if virtualMachineAPIOpenVZ.createContainer(vmName, containerID, osTemplate) == 0:
|
|
raise BaseException("Failed to create container.")
|
|
|
|
##
|
|
|
|
if virtualMachineAPIOpenVZ.bootVirtualMachine(vmName, osTemplate, containerID, rootPassword, hostName, macAddress, uploadSource,
|
|
cpuUnits, cpuPercentage, vmVCPUs, vmRam, vmSwap, burstVMRam,
|
|
size, dnsNSOne, dnsNSTwo,
|
|
ioPriority, uploadSpeed,bandwidthSuspend) == 0:
|
|
raise BaseException("Failed to boot container.")
|
|
|
|
|
|
#if virtualMachineAPIOpenVZ.limitContainerSpeed(containerID, ipAddress, virtualMachineAPIOpenVZ.defaultInterface, networkSpeed) == 0:
|
|
# raise BaseException("Failed to set network limits.")
|
|
|
|
##
|
|
|
|
logger.operationsLog('Virtual machine ' + vmName + ' successfully created.', 'Success', stack()[0][3])
|
|
|
|
return 1
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
|
|
@staticmethod
|
|
def deleteVirtualMachine(containerID):
|
|
try:
|
|
|
|
result = virtualMachineAPIOpenVZ.hardShutdown(containerID)
|
|
|
|
if result[0] == 1:
|
|
|
|
command = "vzctl destroy " + containerID
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
return 1,'No error.'
|
|
|
|
else:
|
|
return 0, 'Failed to stop virtual machine.'
|
|
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
|
|
@staticmethod
|
|
def softReboot(containerID):
|
|
try:
|
|
|
|
command = "vzctl restart " + containerID
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
return 1,'No error.'
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
|
|
@staticmethod
|
|
def hardShutdown(containerID):
|
|
try:
|
|
|
|
command = "vzctl stop " + containerID
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
return 1,'No error.'
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
|
|
@staticmethod
|
|
def startContainer(containerID):
|
|
try:
|
|
|
|
command = "vzctl start " + containerID
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
return 1,'No error.'
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
|
|
@staticmethod
|
|
def suspendContainer(containerID):
|
|
try:
|
|
|
|
command = "vzctl suspend " + containerID
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
return 1,'No error.'
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
|
|
@staticmethod
|
|
def resumeContainer(containerID):
|
|
try:
|
|
command = "vzctl resume " + containerID
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
return 1, 'No error.'
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0, str(msg)
|
|
|
|
@staticmethod
|
|
def limitContainerSpeed(containerID, containerIP, interface, interfaceLimit):
|
|
try:
|
|
## Creating class
|
|
|
|
command = 'tc class add dev ' + interface + ' parent 2:1 classid ' + '2:' + containerID + ' htb rate '+ interfaceLimit
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
## Create IP Filter.
|
|
|
|
command = 'tc filter add dev ' + interface + ' parent 2:0 protocol ip prio 1 u32 match ip src ' + containerIP + ' flowid 2:' + containerID
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
return 1
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
|
|
@staticmethod
|
|
def removeContainerSpeedLimit(containerID, interface):
|
|
try:
|
|
## Removing filter.
|
|
|
|
command = 'tc filter del dev ' + interface + ' parent 2:0 protocol ip prio 1 u32 flowid 2:' + containerID
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
## Removing class.
|
|
|
|
command = 'tc class del dev ' + interface + ' classid 2:' + containerID
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
return 1
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
|
|
|
|
@staticmethod
|
|
def createBackup(containerID, suspend = False , stop = False):
|
|
try:
|
|
|
|
statusFilePath = join(virtualMachineAPIOpenVZ.backupPath, 'vzdump-' + containerID + '.log')
|
|
|
|
if path.exists(statusFilePath):
|
|
remove(statusFilePath)
|
|
|
|
if suspend == True:
|
|
command = 'vzdump --compress --suspend ' + containerID
|
|
elif stop == True:
|
|
command = 'vzdump --compress --stop ' + containerID
|
|
else:
|
|
command = 'vzdump --compress ' + containerID
|
|
|
|
result = call(split(command))
|
|
|
|
if result == 1:
|
|
raise CalledProcessError
|
|
else:
|
|
pass
|
|
|
|
return 1
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
|
|
@staticmethod
|
|
def initiateBackup(containerID, suspend=False, stop=False):
|
|
try:
|
|
p = Process(target=virtualMachineAPIOpenVZ.createBackup, args=(containerID, suspend, stop,))
|
|
p.start()
|
|
# pid = open(backupPath + 'pid', "w")
|
|
# pid.write(str(p.pid))
|
|
# pid.close()
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
|
|
|
|
@staticmethod
|
|
def checkBackupCreationStatus(containerID):
|
|
try:
|
|
|
|
statusFilePath = join(virtualMachineAPIOpenVZ.backupPath,'vzdump-' + containerID + '.log')
|
|
|
|
statusFile = open(statusFilePath, 'r')
|
|
dataInStatusFile = statusFile.read()
|
|
statusFile.close()
|
|
|
|
if dataInStatusFile.find('Finished Backup of') > -1:
|
|
return 1,dataInStatusFile
|
|
else:
|
|
return 0,dataInStatusFile
|
|
|
|
|
|
except BaseException, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
except CalledProcessError, msg:
|
|
if logLevel.debug == True:
|
|
logger.operationsLog(str(msg), "Error", stack()[0][3])
|
|
logger.writeToFile(str(msg), "Error", stack()[0][3])
|
|
return 0
|
|
|
|
|
|
def main():
|
|
|
|
virtualMachineAPIOpenVZ.initiateBackup('105')
|
|
|
|
while(1):
|
|
retValue = virtualMachineAPIOpenVZ.checkBackupCreationStatus('105')
|
|
|
|
if retValue[0] == 0:
|
|
print retValue[1]
|
|
else:
|
|
print "Completed"
|
|
break
|
|
|
|
#main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
virtualMachineAPIOpenVZ.createVirtualMachine('192.111.145.235','102',"centos-7-x86_64-minimal","litespeed12",
|
|
'70G','4G','2G','6G','100GB','900','2','20%','192.111.145.235','255.255.255.248',
|
|
'192.111.145.233','cybertronproject.com','FE:FF:FF:FF:FF:FF', '8.8.8.8', '8.8.4.4',
|
|
'2Mbit', 4, 0, 1)
|
|
|
|
|
|
#virtualMachineAPIOpenVZ.removeContainerSpeedLimit('105','eth0')
|
|
#virtualMachineAPIOpenVZ.limitContainerSpeed('105','192.111.145.238','eth0','256Kbit')
|
|
|
|
#print virtualMachineAPI.deleteVirtualMachine('109.238.12.214')
|
|
|
|
#print virtualMachineAPI.revertToSnapshot('109.238.12.214','CyberPanel')
|
|
|
|
#virtualMachineAPIOpenVZ.deleteVirtualMachine('102')
|
|
#virtualMachineAPIOpenVZ.softReboot('102')
|
|
#virtualMachineAPIOpenVZ.hardShutdown('102')
|
|
#virtualMachineAPIOpenVZ.startContainer('102')
|