Files
CyberPanel/hypervisor/hypervisor.py
2018-09-10 01:45:43 +05:00

144 lines
5.5 KiB
Python

#!/usr/local/CyberCP/bin/python2
import os
import os.path
import sys
import django
sys.path.append('/usr/local/CyberCP')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
django.setup()
import json
import subprocess
import shlex
from django.shortcuts import HttpResponse, render
from loginSystem.models import Administrator
from plogical.aclVMM import vmmACLManager
from plogical.acl import ACLManager
from models import HyberVisors
class HVManager:
def loadHVHome(self, request = None, userID = None,):
try:
return render(request, 'hypervisor/indexVMM.html', {})
except BaseException, msg:
return HttpResponse(str(msg))
def createHypervisor(self, request = None, userID = None,):
try:
currentACL = ACLManager.loadedACL(userID)
if vmmACLManager.currentContextPermission(currentACL, 'createHypervisor') == 0:
return ACLManager.loadError()
ownerNames = ACLManager.loadAllUsers(userID)
return render(request, 'hypervisor/createHyperVisor.html', {'ownerNames' : ownerNames})
except BaseException, msg:
return HttpResponse(str(msg))
def listHVs(self, request = None, userID = None,):
try:
currentACL = ACLManager.loadedACL(userID)
if vmmACLManager.currentContextPermission(currentACL, 'listHV') == 0:
return ACLManager.loadError()
serverObjs = vmmACLManager.findServersObjs(currentACL, userID)
hvs = vmmACLManager.prepareServers(serverObjs)
ownerNames = ACLManager.loadAllUsers(userID)
return render(request, 'hypervisor/listHV.html', {'hvs' : hvs, 'ownerNames' : ownerNames})
except BaseException, msg:
return HttpResponse(str(msg))
def submitCreateHyperVisor(self, userID = None, data = None):
try:
currentACL = ACLManager.loadedACL(userID)
if vmmACLManager.currentContextPermission(currentACL, 'createHypervisor') == 0:
return ACLManager.loadErrorJson()
if HyberVisors.objects.all().count() == 1:
final_json = json.dumps({'status': 0, 'errorMessage': "Only one server is allowed at this time."})
return HttpResponse(final_json)
name = data['name']
serverOwner = data['serverOwner']
serverIP = data['serverIP']
userName = data['userName']
password = data['password']
storagePath = data['storagePath']
hvOwner = Administrator.objects.get(userName=serverOwner)
newHV = HyberVisors(hypervisorOwner=hvOwner,
hypervisorName=name,
hypervisorIP=serverIP,
hypervisorUserName=userName,
hypervisorPassword=password,
hypervisorStoragePath=storagePath)
newHV.save()
final_json = json.dumps({'status': 1, 'errorMessage': "None"})
return HttpResponse(final_json)
except BaseException, msg:
final_json = json.dumps({'status': 0, 'errorMessage': str(msg)})
return HttpResponse(final_json)
def submitHyperVisorChanges(self, userID = None, data = None):
try:
currentACL = ACLManager.loadedACL(userID)
if vmmACLManager.currentContextPermission(currentACL, 'listHV') == 0:
return ACLManager.loadErrorJson()
name = data['name']
serverOwner = data['serverOwner']
userName = data['userName']
password = data['password']
storagePath = data['storagePath']
hvOwner = Administrator.objects.get(userName=serverOwner)
modifyHV = HyberVisors.objects.get(hypervisorName=name)
modifyHV.hypervisorOwner = hvOwner
modifyHV.hypervisorUserName = userName
modifyHV.hypervisorPassword = password
modifyHV.hypervisorStoragePath = storagePath
modifyHV.save()
final_json = json.dumps({'status': 1, 'errorMessage': "None"})
return HttpResponse(final_json)
except BaseException, msg:
final_json = json.dumps({'status': 0, 'errorMessage': str(msg)})
return HttpResponse(final_json)
def controlCommands(self, userID = None, data = None):
try:
currentACL = ACLManager.loadedACL(userID)
if vmmACLManager.currentContextPermission(currentACL, 'listHV') == 0:
return ACLManager.loadErrorJson()
hypervisorIP = data['hypervisorIP']
action = data['action']
hv = HyberVisors.objects.get(hypervisorIP=hypervisorIP)
if hypervisorIP == '127.0.0.1':
if action == 'restart':
command = 'sudo reboot'
ACLManager.executeCall(command)
elif action == 'shutdown':
command = 'sudo shutdown'
ACLManager.executeCall(command)
elif action == 'delete':
final_json = json.dumps({'status': 0, 'errorMessage': "Local Server can not be deleted."})
return HttpResponse(final_json)
final_json = json.dumps({'status': 1, 'errorMessage': "None"})
return HttpResponse(final_json)
except BaseException, msg:
final_json = json.dumps({'status': 0, 'errorMessage': str(msg)})
return HttpResponse(final_json)