qmemman: update for py3k

This just make the code compatible with py3k, but nothing more.
Converting to asyncio is probably the next step.
This commit is contained in:
Marek Marczykowski-Górecki 2017-02-23 00:15:38 +01:00
parent 2c3e112951
commit 33416f2549
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724
3 changed files with 17 additions and 16 deletions

View File

@ -26,6 +26,7 @@ import os
import string
import time
import functools
import xen.lowlevel.xc
import xen.lowlevel.xs
@ -91,7 +92,7 @@ class SystemState(object):
# at any time
# assumption: self.refresh_memactual was called before
# (so domdict[id].memory_actual is up to date)
assigned_but_unused = reduce(
assigned_but_unused = functools.reduce(
lambda acc, dom: acc + max(0, dom.last_target-dom.memory_current),
self.domdict.values(),
0
@ -113,7 +114,7 @@ class SystemState(object):
def refresh_memactual(self):
for domain in self.xc.domain_getinfo():
id = str(domain['domid'])
if self.domdict.has_key(id):
if id in self.domdict:
# real memory usage
self.domdict[id].memory_current = domain['mem_kb']*1024
# what VM is using or can use

View File

@ -32,9 +32,9 @@ class QMemmanClient:
fcntl.fcntl(self.sock.fileno(), fcntl.F_SETFD, flags)
self.sock.connect("/var/run/qubes/qmemman.sock")
self.sock.send(str(amount)+"\n")
self.received = self.sock.recv(1024).strip()
if self.received == 'OK':
self.sock.send(str(int(amount)).encode('ascii')+b"\n")
received = self.sock.recv(1024).strip()
if received == b'OK':
return True
else:
return False

View File

@ -20,14 +20,14 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
#
import ConfigParser
import SocketServer
import configparser
import socketserver
import logging
import logging.handlers
import os
import socket
import sys
import thread
import threading
import xen.lowlevel.xs
@ -39,7 +39,7 @@ SOCK_PATH = '/var/run/qubes/qmemman.sock'
LOG_PATH = '/var/log/qubes/qmemman.log'
system_state = qubes.qmemman.SystemState()
global_lock = thread.allocate_lock()
global_lock = threading.Lock()
# If XS_Watcher will
# handle meminfo event before @introduceDomain, it will use
# incomplete domain list for that and may redistribute memory
@ -161,7 +161,7 @@ class XS_Watcher(object):
token.fn(self, token.param)
class QMemmanReqHandler(SocketServer.BaseRequestHandler):
class QMemmanReqHandler(socketserver.BaseRequestHandler):
"""
The RequestHandler class for our server.
@ -196,10 +196,10 @@ class QMemmanReqHandler(SocketServer.BaseRequestHandler):
self.log.debug('global_lock acquired')
got_lock = True
if system_state.do_balloon(int(self.data)):
resp = "OK\n"
if system_state.do_balloon(int(self.data.decode('ascii'))):
resp = b"OK\n"
else:
resp = "FAIL\n"
resp = b"FAIL\n"
self.log.debug('resp={!r}'.format(resp))
self.request.send(resp)
except BaseException as e:
@ -253,7 +253,7 @@ def main():
log = logging.getLogger('qmemman.daemon')
config = ConfigParser.SafeConfigParser({
config = configparser.SafeConfigParser({
'vm-min-mem': str(qubes.qmemman.algo.MIN_PREFMEM),
'dom0-mem-boost': str(qubes.qmemman.algo.DOM0_MEM_BOOST),
'cache-margin-factor': str(qubes.qmemman.algo.CACHE_FACTOR)
@ -280,7 +280,7 @@ def main():
log.debug('instantiating server')
os.umask(0)
server = SocketServer.UnixStreamServer(SOCK_PATH, QMemmanReqHandler)
server = socketserver.UnixStreamServer(SOCK_PATH, QMemmanReqHandler)
os.umask(0o077)
# notify systemd
@ -294,5 +294,5 @@ def main():
s.sendall("READY=1")
s.close()
thread.start_new_thread(server.serve_forever, ())
threading.Thread(target=server.serve_forever).start()
XS_Watcher().watch_loop()