From 1cd4034784b18ecb3600268977a0eb104e4a84a1 Mon Sep 17 00:00:00 2001 From: Fabien Castan Date: Thu, 23 Nov 2017 20:07:06 +0100 Subject: [PATCH] [core] status: add packageName, packageVersion, hostname, sessionUid --- meshroom/core/__init__.py | 7 ++++++- meshroom/core/graph.py | 25 +++++++++++++++++++------ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/meshroom/core/__init__.py b/meshroom/core/__init__.py index 778e90e7..e343d0e7 100644 --- a/meshroom/core/__init__.py +++ b/meshroom/core/__init__.py @@ -1,15 +1,20 @@ from __future__ import print_function +from contextlib import contextmanager import importlib import inspect import os import re import tempfile -from contextlib import contextmanager +import uuid from meshroom.core.submitter import BaseSubmitter from . import desc + +# make a UUID based on the host ID and current time +sessionUid = str(uuid.uuid1()) + cacheFolderName = 'MeshroomCache' defaultCacheFolder = os.environ.get('MESHROOM_CACHE', os.path.join(tempfile.gettempdir(), cacheFolderName)) defaultCacheFolder = defaultCacheFolder.replace("\\", "/") diff --git a/meshroom/core/graph.py b/meshroom/core/graph.py index 60c7e92e..4aef11c2 100644 --- a/meshroom/core/graph.py +++ b/meshroom/core/graph.py @@ -430,29 +430,38 @@ class StatusData: """ 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.nodeName = nodeName self.nodeType = nodeType + self.packageName = packageName + self.packageVersion = packageVersion self.graph = '' self.commandLine = None self.env = None self.startDateTime = "" self.endDateTime = "" self.elapsedTime = 0 + self.hostname = "" + self.sessionUid = meshroom.core.sessionUid def reset(self): + self.sessionUid = meshroom.core.sessionUid self.status = Status.NONE self.graph = '' self.commandLine = None self.env = None 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) # 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) @property @@ -468,12 +477,16 @@ class StatusData: self.status = Status._member_map_[d['status']] self.nodeName = d.get('nodeName', '') self.nodeType = d.get('nodeType', '') + self.packageName = d.get('packageName', '') + self.packageVersion = d.get('packageVersion', '') self.graph = d.get('graph', '') self.commandLine = d.get('commandLine', '') self.env = d.get('env', '') self.startDateTime = d.get('startDateTime', '') self.endDateTime = d.get('endDateTime', '') self.elapsedTime = d.get('elapsedTime', '') + self.hostname = d.get('hostname', '') + self.sessionUid = d.get('sessionUid', '') runningProcesses = {} @@ -490,7 +503,7 @@ class NodeChunk(BaseObject): super(NodeChunk, self).__init__(node) self.node = node 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._subprocess = None @@ -598,7 +611,7 @@ class NodeChunk(BaseObject): return global runningProcesses runningProcesses[self.name] = self - self.status.initStartDateTime() + self.status.initStartCompute() startTime = time.time() self.upgradeStatusTo(Status.RUNNING) self.statThread = stats.StatisticsThread(self) @@ -612,7 +625,7 @@ class NodeChunk(BaseObject): self.upgradeStatusTo(Status.STOPPED) raise finally: - self.status.initEndDateTime() + self.status.initEndCompute() self.status.elapsedTime = time.time() - startTime print(' - elapsed time:', self.status.elapsedTimeStr) # ask and wait for the stats thread to stop