def detachVolume(): volumeid = int(request.args.get('volumeid')) volumeDetails=query_db('select * from volumes where volumeid=?',[volumeid]); if volumeDetails: volumeDetails=volumeDetails[0]; status=volumeDetails[1]; name=volumeDetails[2]; cid=volumeDetails[3]; size=volumeDetails[4]; if status=="attached": clientDetails=query_db('select * from clients where cid=?',[cid], one=True); if clientDetails: vmid=clientDetails[1]; mid=clientDetails[4]; machineDetails=query_db('select * from machines where mid=?',[mid], one=True); targetMachine=machineDetails[1]; retVal=col.detachVolume(targetMachine,volumeDetails,vmid) else: return jsonify({'status':0}) else: return jsonify({'status':0}) if retVal!=-1: db = get_db() db.execute('''update volumes set status="available",vmid=0,volxml='' where volumeid=?''',[volumeid]); db.commit() return jsonify({'status':1}) else: return jsonify({'status':0}) else: return jsonify({'status':0})
def destroyVM(): jsonpFunc = str(request.args.get('jsonp_callback')) cid = int(request.args.get('vmid')) clientDetails=query_db('select * from clients where cid=?',[cid]); destroy={'status':1} if clientDetails: clientDetails=clientDetails[0]; machineDetails=query_db('select * from machines where mid=?',[clientDetails[4]], one=True); path=machineDetails[1] vmid=clientDetails[1] #detach the volume from this vm volumeDetails=query_db('select * from volumes where vmid=?',[cid]); if volumeDetails: for i in volumeDetails: retVal=col.detachVolume(path,i,vmid); if retVal!=-1: db = get_db(); db.execute('''update volumes set status="available",vmid=0,volxml='' where volumeid=?''',[i[0]]); db.commit(); else: destroy={'status':0} print destroy['status'] if destroy['status']!=0: print destroy['status'] #destroy this vm at host path with this vmid retVal=col.destroyVM(path,vmid); if retVal!=-1: instance_type=query_db('select * from vmTypes where tid=?',[clientDetails[3]], one=True); cpu=instance_type[1] ram=instance_type[2] disk=instance_type[3] db = get_db() db.execute('''update machines set ram=?,cpu=? where mid=?''',[machineDetails[3]+ram,machineDetails[2]+cpu,machineDetails[0]]); db.commit() db.execute('''delete from clients where cid=?''',[clientDetails[0]]); db.commit() destroy={'status':1} else: destroy={'status':0} else: destroy={'status':0} else: destroy={'status':0} if jsonpFunc!='None': ast=jsonpFunc+'('+json.dumps(destroy)+')' print ast return ast return jsonify(destroy)
def destroyVolume(): jsonpFunc = str(request.args.get('jsonp_callback')) volumeid = int(request.args.get('volumeid')) volumeDetails=query_db('select * from volumes where volumeid=?',[volumeid]); destroy={'status':1} if volumeDetails: volumeDetails=volumeDetails[0]; status=volumeDetails[1]; name=volumeDetails[2]; cid=volumeDetails[3]; size=volumeDetails[4]; if status=="attached": clientDetails=query_db('select * from clients where cid=?',[cid]); if clientDetails: clientDetails=clientDetails[0]; machineDetails=query_db('select * from machines where mid=?',[clientDetails[4]], one=True); path=machineDetails[1]; vmid=clientDetails[1]; retVal=col.detachVolume(path,volumeDetails,vmid); if retVal!=-1: db = get_db() db.execute('''update volumes set status="available",vmid=0,volxml='' where volumeid=?''',[volumeid]); db.commit() else: destroy={'status':0} if destroy['status']!=0: # destroy volume retVal=col.destroyVolume(volumeDetails) if retVal!=-1: db = get_db() db.execute('''delete from volumes where volumeid=?''',[volumeid]); db.commit() destroy={'status':1} else: destroy={'status':0} else: destroy={'status':0} else: destroy={'status':0} if jsonpFunc!='None': ast=jsonpFunc+'('+json.dumps(destroy)+')' print ast return ast return jsonify(destroy);
def destroyVM(): cid = int(request.args.get('vmid')) clientDetails=query_db('select * from clients where cid=?',[cid]); if clientDetails: clientDetails=clientDetails[0]; machineDetails=query_db('select * from machines where mid=?',[clientDetails[4]], one=True); path=machineDetails[1] vmid=clientDetails[1] #detach the volume from this vm volumeDetails=query_db('select * from volumes where vmid=?',[cid]); if volumeDetails: for i in volumeDetails: retVal=col.detachVolume(path,i,vmid); if retVal!=-1: db = get_db(); db.execute('''update volumes set status="available",vmid=0,volxml='' where volumeid=?''',[i[0]]); db.commit(); else: return jsonify({'status':0}) #destroy this vm at host path with this vmid retVal=col.destroyVM(path,vmid); if retVal!=-1: instance_type=query_db('select * from vmTypes where tid=?',[clientDetails[3]], one=True); cpu=instance_type[1] ram=instance_type[2] disk=instance_type[3] db = get_db() db.execute('''update machines set ram=?,cpu=? where mid=?''',[machineDetails[3]+ram,machineDetails[2]+cpu,machineDetails[0]]); db.commit() db.execute('''delete from clients where cid=?''',[clientDetails[0]]); db.commit() return jsonify({'status':1}) else: return jsonify({'status':0}) else: return jsonify({'status':0})