1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-03-23 11:04:49 +00:00

Add support get screenshot VM

Add support get screenshot VM
This commit is contained in:
savichev 2015-07-15 16:52:22 +05:00
parent d7dffcd883
commit c78442f4c4

View file

@ -1,6 +1,9 @@
import libvirt import libvirt
import threading import threading
import socket import socket
import io
import os.path
from PIL import Image, ImageFont, ImageDraw
from vrtManager import util from vrtManager import util
from rwlock import ReadWriteLock from rwlock import ReadWriteLock
from django.conf import settings from django.conf import settings
@ -456,8 +459,60 @@ class wvmConnect(object):
vcpu = util.get_xml_path(dom.XMLDesc(0), "/domain/vcpu") vcpu = util.get_xml_path(dom.XMLDesc(0), "/domain/vcpu")
return {'name': dom.name(), 'status': dom.info()[0], 'uuid': dom.UUIDString(), 'vcpu': vcpu, 'memory': mem} return {'name': dom.name(), 'status': dom.info()[0], 'uuid': dom.UUIDString(), 'vcpu': vcpu, 'memory': mem}
def get_user_instances_screenshot(self, domname):
img_file_path = settings.SCREENSHOT_PATH + '/'
file_name = img_file_path + domname
screen = 0
try:
dom = self.wvm.lookupByName(domname)
if dom.info()[0] == 1:
stream = self.wvm.newStream()
dom.screenshot(stream, screen, 0)
buff = io.BytesIO()
stream.recvAll(saver, buff)
stream.finish()
buff.seek(0)
image = Image.open(buff)
image.load()
image.thumbnail((200,200),Image.ANTIALIAS)
image.save(file_name + '.png', "PNG")
result = True
if dom.info()[0] == 3:
if not os.path.exists(img_file_path + 'vm_is_suspend.png'):
image = Image.new('RGBA',(200, 150),(0,0,0,255))
fnt = ImageFont.truetype('static/fonts/sans-serif.ttf', 36)
draw = ImageDraw.Draw(image)
draw.text((15, 50),"VM is SUSPEND",fill=(255,255,255,255),font=fnt)
image.save(img_file_path + 'vm_is_suspend.png', "PNG")
result = True
if dom.info()[0] == 5:
if not os.path.exists(img_file_path + 'vm_is_off.png'):
image = Image.new('RGBA',(200, 150),(0,0,0,255))
fnt = ImageFont.truetype('static/fonts/sans-serif.ttf', 36)
draw = ImageDraw.Draw(image)
draw.text((15, 50),"VM is OFF",fill=(255,255,255,255),font=fnt)
image.save(img_file_path + 'vm_is_off.png', "PNG")
result = True
except IOError as e:
print "I/O error({0}): {1}".format(e.errno, e.strerror)
pass
result = False
return result
def close(self): def close(self):
"""Close connection""" """Close connection"""
# to-do: do not close connection ;) # to-do: do not close connection ;)
# self.wvm.close() # self.wvm.close()
pass pass
def saver(stream, data, buff_):
return buff_.write(data)