[core] status: add packageName, packageVersion, hostname, sessionUid

This commit is contained in:
Fabien Castan 2017-11-23 20:07:06 +01:00
parent 286012d55f
commit 1cd4034784
2 changed files with 25 additions and 7 deletions

View file

@ -1,15 +1,20 @@
from __future__ import print_function from __future__ import print_function
from contextlib import contextmanager
import importlib import importlib
import inspect import inspect
import os import os
import re import re
import tempfile import tempfile
from contextlib import contextmanager import uuid
from meshroom.core.submitter import BaseSubmitter from meshroom.core.submitter import BaseSubmitter
from . import desc from . import desc
# make a UUID based on the host ID and current time
sessionUid = str(uuid.uuid1())
cacheFolderName = 'MeshroomCache' cacheFolderName = 'MeshroomCache'
defaultCacheFolder = os.environ.get('MESHROOM_CACHE', os.path.join(tempfile.gettempdir(), cacheFolderName)) defaultCacheFolder = os.environ.get('MESHROOM_CACHE', os.path.join(tempfile.gettempdir(), cacheFolderName))
defaultCacheFolder = defaultCacheFolder.replace("\\", "/") defaultCacheFolder = defaultCacheFolder.replace("\\", "/")

View file

@ -430,29 +430,38 @@ class StatusData:
""" """
dateTimeFormatting = '%Y-%m-%d %H:%M:%S.%f' dateTimeFormatting = '%Y-%m-%d %H:%M:%S.%f'
def __init__(self, nodeName, nodeType): def __init__(self, nodeName, nodeType, packageName, packageVersion):
self.status = Status.NONE self.status = Status.NONE
self.nodeName = nodeName self.nodeName = nodeName
self.nodeType = nodeType self.nodeType = nodeType
self.packageName = packageName
self.packageVersion = packageVersion
self.graph = '' self.graph = ''
self.commandLine = None self.commandLine = None
self.env = None self.env = None
self.startDateTime = "" self.startDateTime = ""
self.endDateTime = "" self.endDateTime = ""
self.elapsedTime = 0 self.elapsedTime = 0
self.hostname = ""
self.sessionUid = meshroom.core.sessionUid
def reset(self): def reset(self):
self.sessionUid = meshroom.core.sessionUid
self.status = Status.NONE self.status = Status.NONE
self.graph = '' self.graph = ''
self.commandLine = None self.commandLine = None
self.env = None self.env = None
self.elapsedTime = 0 self.elapsedTime = 0
def initStartDateTime(self): def initStartCompute(self):
import platform
self.sessionUid = meshroom.core.sessionUid
self.hostname = platform.node()
self.startDateTime = datetime.datetime.now().strftime(self.dateTimeFormatting) self.startDateTime = datetime.datetime.now().strftime(self.dateTimeFormatting)
# to get datetime obj: datetime.datetime.strptime(obj, self.dateTimeFormatting) # to get datetime obj: datetime.datetime.strptime(obj, self.dateTimeFormatting)
def initEndDateTime(self): def initEndCompute(self):
self.sessionUid = meshroom.core.sessionUid
self.endDateTime = datetime.datetime.now().strftime(self.dateTimeFormatting) self.endDateTime = datetime.datetime.now().strftime(self.dateTimeFormatting)
@property @property
@ -468,12 +477,16 @@ class StatusData:
self.status = Status._member_map_[d['status']] self.status = Status._member_map_[d['status']]
self.nodeName = d.get('nodeName', '') self.nodeName = d.get('nodeName', '')
self.nodeType = d.get('nodeType', '') self.nodeType = d.get('nodeType', '')
self.packageName = d.get('packageName', '')
self.packageVersion = d.get('packageVersion', '')
self.graph = d.get('graph', '') self.graph = d.get('graph', '')
self.commandLine = d.get('commandLine', '') self.commandLine = d.get('commandLine', '')
self.env = d.get('env', '') self.env = d.get('env', '')
self.startDateTime = d.get('startDateTime', '') self.startDateTime = d.get('startDateTime', '')
self.endDateTime = d.get('endDateTime', '') self.endDateTime = d.get('endDateTime', '')
self.elapsedTime = d.get('elapsedTime', '') self.elapsedTime = d.get('elapsedTime', '')
self.hostname = d.get('hostname', '')
self.sessionUid = d.get('sessionUid', '')
runningProcesses = {} runningProcesses = {}
@ -490,7 +503,7 @@ class NodeChunk(BaseObject):
super(NodeChunk, self).__init__(node) super(NodeChunk, self).__init__(node)
self.node = node self.node = node
self.range = range self.range = range
self.status = StatusData(node.name, node.nodeType) self.status = StatusData(node.name, node.nodeType, node.packageName, node.packageVersion)
self.statistics = stats.Statistics() self.statistics = stats.Statistics()
self._subprocess = None self._subprocess = None
@ -598,7 +611,7 @@ class NodeChunk(BaseObject):
return return
global runningProcesses global runningProcesses
runningProcesses[self.name] = self runningProcesses[self.name] = self
self.status.initStartDateTime() self.status.initStartCompute()
startTime = time.time() startTime = time.time()
self.upgradeStatusTo(Status.RUNNING) self.upgradeStatusTo(Status.RUNNING)
self.statThread = stats.StatisticsThread(self) self.statThread = stats.StatisticsThread(self)
@ -612,7 +625,7 @@ class NodeChunk(BaseObject):
self.upgradeStatusTo(Status.STOPPED) self.upgradeStatusTo(Status.STOPPED)
raise raise
finally: finally:
self.status.initEndDateTime() self.status.initEndCompute()
self.status.elapsedTime = time.time() - startTime self.status.elapsedTime = time.time() - startTime
print(' - elapsed time:', self.status.elapsedTimeStr) print(' - elapsed time:', self.status.elapsedTimeStr)
# ask and wait for the stats thread to stop # ask and wait for the stats thread to stop