More robust IOUVM support

This commit is contained in:
Julien Duponchelle 2015-03-17 22:18:55 +01:00
parent 386b311755
commit 6330e99ff1
2 changed files with 16 additions and 5 deletions

View File

@ -23,6 +23,7 @@ import asyncio
import tempfile
from ..utils.asyncio import wait_run_in_executor
from .vm_error import VMError
log = logging.getLogger(__name__)
@ -132,7 +133,10 @@ class BaseVM:
@property
def temporary_directory(self):
if self._temporary_directory is None:
self._temporary_directory = tempfile.mkdtemp()
try:
self._temporary_directory = tempfile.mkdtemp()
except OSError as e:
raise VMError("Can't create temporary directory: {}".format(e))
return self._temporary_directory
def create(self):

View File

@ -332,14 +332,21 @@ class IOUVM(BaseVM):
@property
def iourc_content(self):
with open(os.path.join(self.temporary_directory, "iourc")) as f:
return f.read()
try:
with open(os.path.join(self.temporary_directory, "iourc")) as f:
return f.read()
except OSError:
return None
@iourc_content.setter
def iourc_content(self, value):
if value is not None:
with open(os.path.join(self.temporary_directory, "iourc"), "w+") as f:
f.write(value)
path = os.path.join(self.temporary_directory, "iourc")
try:
with open(path, "w+") as f:
f.write(value)
except OSError as e:
raise IOUError("Could not write iourc file {}: {}".format(path, e))
@asyncio.coroutine
def _library_check(self):