Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Poirier <theeth@yahoo.com>2012-04-23 01:06:02 +0400
committerMartin Poirier <theeth@yahoo.com>2012-04-23 01:06:02 +0400
commit395bca8bda4dcd8b57ac64abeb103a456491c0bf (patch)
tree6362e358dea6d8d2006a93282d45b1ecb53c47c9 /netrender
parent4dd5ac39b82cec6302d4fd699ef13ceb5ccceb53 (diff)
netrender
job and frame status cleanup (move to the model module) record transitions between states in job to be able to get (among others) the started and finished time.
Diffstat (limited to 'netrender')
-rw-r--r--netrender/balancing.py6
-rw-r--r--netrender/master.py54
-rw-r--r--netrender/master_html.py44
-rw-r--r--netrender/model.py122
-rw-r--r--netrender/operators.py4
-rw-r--r--netrender/slave.py26
-rw-r--r--netrender/ui.py6
-rw-r--r--netrender/utils.py27
8 files changed, 182 insertions, 107 deletions
diff --git a/netrender/balancing.py b/netrender/balancing.py
index cd2f12da..ee347452 100644
--- a/netrender/balancing.py
+++ b/netrender/balancing.py
@@ -167,7 +167,7 @@ class NewJobPriority(PriorityRule):
return "Priority to new jobs"
def test(self, job):
- return job.countFrames(status = FRAME_DONE) < self.limit
+ return job.countFrames(status = netrender.model.FRAME_DONE) < self.limit
def serialize(self):
return { "type": "priority",
"enabled": self.enabled,
@@ -193,7 +193,7 @@ class MinimumTimeBetweenDispatchPriority(PriorityRule):
return "Priority to jobs that haven't been dispatched recently"
def test(self, job):
- return job.countFrames(status = FRAME_DISPATCHED) == 0 and (time.time() - job.last_dispatched) / 60 > self.limit
+ return job.countFrames(status = netrender.model.FRAME_DISPATCHED) == 0 and (time.time() - job.last_dispatched) / 60 > self.limit
def serialize(self):
return { "type": "priority",
@@ -214,7 +214,7 @@ class ExcludeQueuedEmptyJob(ExclusionRule):
return "Exclude non queued or empty jobs"
def test(self, job):
- return job.status != JOB_QUEUED or job.countFrames(status = FRAME_QUEUED) == 0
+ return job.status != netrender.model.JOB_QUEUED or job.countFrames(status = netrender.model.FRAME_QUEUED) == 0
def serialize(self):
return { "type": "exception",
diff --git a/netrender/master.py b/netrender/master.py
index 69a185b1..593ee727 100644
--- a/netrender/master.py
+++ b/netrender/master.py
@@ -91,7 +91,7 @@ class MRenderJob(netrender.model.RenderJob):
self.chunks = 1
# Force WAITING status on creation
- self.status = JOB_WAITING
+ self.status = netrender.model.JOB_WAITING
# special server properties
self.last_update = 0
@@ -135,25 +135,25 @@ class MRenderJob(netrender.model.RenderJob):
def testFinished(self):
for f in self.frames:
- if f.status == FRAME_QUEUED or f.status == FRAME_DISPATCHED:
+ if f.status == netrender.model.FRAME_QUEUED or f.status == netrender.model.FRAME_DISPATCHED:
break
else:
- self.status = JOB_FINISHED
+ self.status = netrender.model.JOB_FINISHED
self.finish_time=time.time()
def pause(self, status = None):
- if self.status not in {JOB_PAUSED, JOB_QUEUED}:
+ if self.status not in {netrender.model.JOB_PAUSED, netrender.model.JOB_QUEUED}:
return
if status is None:
- self.status = JOB_PAUSED if self.status == JOB_QUEUED else JOB_QUEUED
+ self.status = netrender.model.JOB_PAUSED if self.status == netrender.model.JOB_QUEUED else netrender.model.JOB_QUEUED
elif status:
- self.status = JOB_QUEUED
+ self.status = netrender.model.JOB_QUEUED
else:
- self.status = JOB_PAUSED
+ self.status = netrender.model.JOB_PAUSED
def start(self):
- self.status = JOB_QUEUED
+ self.status = netrender.model.JOB_QUEUED
def addLog(self, frames):
@@ -176,12 +176,12 @@ class MRenderJob(netrender.model.RenderJob):
f.reset(all)
if all:
- self.status = JOB_QUEUED
+ self.status = netrender.model.JOB_QUEUED
def getFrames(self):
frames = []
for f in self.frames:
- if f.status == FRAME_QUEUED:
+ if f.status == netrender.model.FRAME_QUEUED:
self.last_dispatched = time.time()
frames.append(f)
if len(frames) >= self.chunks:
@@ -198,7 +198,7 @@ class MRenderFrame(netrender.model.RenderFrame):
self.number = frame
self.slave = None
self.time = 0
- self.status = FRAME_QUEUED
+ self.status = netrender.model.FRAME_QUEUED
self.command = command
self.log_path = None
@@ -210,11 +210,11 @@ class MRenderFrame(netrender.model.RenderFrame):
return "%06d.exr" % self.number
def reset(self, all):
- if all or self.status == FRAME_ERROR:
+ if all or self.status == netrender.model.FRAME_ERROR:
self.log_path = None
self.slave = None
self.time = 0
- self.status = FRAME_QUEUED
+ self.status = netrender.model.FRAME_QUEUED
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -311,9 +311,9 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
frame = job[frame_number]
if frame:
- if frame.status in (FRAME_QUEUED, FRAME_DISPATCHED):
+ if frame.status in (netrender.model.FRAME_QUEUED, netrender.model.FRAME_DISPATCHED):
self.send_head(http.client.ACCEPTED)
- elif frame.status == FRAME_DONE:
+ elif frame.status == netrender.model.FRAME_DONE:
self.server.stats("", "Sending result to client")
filename = job.getResultPath(frame.getRenderFilename())
@@ -322,7 +322,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
self.send_head(content = "image/x-exr")
shutil.copyfileobj(f, self.wfile)
f.close()
- elif frame.status == FRAME_ERROR:
+ elif frame.status == netrender.model.FRAME_ERROR:
self.send_head(http.client.PARTIAL_CONTENT)
else:
# no such frame
@@ -348,7 +348,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
zip_filepath = job.getResultPath("results.zip")
with zipfile.ZipFile(zip_filepath, "w") as zfile:
for frame in job.frames:
- if frame.status == FRAME_DONE:
+ if frame.status == netrender.model.FRAME_DONE:
for filename in frame.results:
filepath = job.getResultPath(filename)
@@ -379,9 +379,9 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
frame = job[frame_number]
if frame:
- if frame.status in (FRAME_QUEUED, FRAME_DISPATCHED):
+ if frame.status in (netrender.model.FRAME_QUEUED, netrender.model.FRAME_DISPATCHED):
self.send_head(http.client.ACCEPTED)
- elif frame.status == FRAME_DONE:
+ elif frame.status == netrender.model.FRAME_DONE:
filename = job.getResultPath(frame.getRenderFilename())
thumbname = thumbnail.generate(filename)
@@ -394,7 +394,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
else: # thumbnail couldn't be generated
self.send_head(http.client.PARTIAL_CONTENT)
return
- elif frame.status == FRAME_ERROR:
+ elif frame.status == netrender.model.FRAME_ERROR:
self.send_head(http.client.PARTIAL_CONTENT)
else:
# no such frame
@@ -419,7 +419,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
frame = job[frame_number]
if frame:
- if not frame.log_path or frame.status in (FRAME_QUEUED, FRAME_DISPATCHED):
+ if not frame.log_path or frame.status in (netrender.model.FRAME_QUEUED, netrender.model.FRAME_DISPATCHED):
self.send_head(http.client.PROCESSING)
else:
self.server.stats("", "Sending log to client")
@@ -488,7 +488,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
if job and frames:
for f in frames:
print("dispatch", f.number)
- f.status = FRAME_DISPATCHED
+ f.status = netrender.model.FRAME_DISPATCHED
f.slave = slave
slave.job = job
@@ -838,11 +838,11 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
self.send_head(content = None)
if job.hasRenderResult():
- if job_result == FRAME_DONE:
+ if job_result == netrender.model.FRAME_DONE:
frame.addDefaultRenderResult()
self.write_file(job.getResultPath(frame.getRenderFilename()))
- elif job_result == FRAME_ERROR:
+ elif job_result == netrender.model.FRAME_ERROR:
# blacklist slave on this job on error
# slaves might already be in blacklist if errors on the whole chunk
if not slave.id in job.blacklist:
@@ -885,7 +885,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
self.send_head(content = None)
- if job_result == FRAME_DONE:
+ if job_result == netrender.model.FRAME_DONE:
result_filename = self.headers['result-filename']
frame.results.append(result_filename)
@@ -1045,7 +1045,7 @@ class RenderMasterServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
if slave.job:
for f in slave.job_frames:
- slave.job[f].status = FRAME_ERROR
+ slave.job[f].status = netrender.model.FRAME_ERROR
for slave in removed:
self.removeSlave(slave)
@@ -1075,7 +1075,7 @@ class RenderMasterServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
def getJobs(self):
return self.jobs
- def countJobs(self, status = JOB_QUEUED):
+ def countJobs(self, status = netrender.model.JOB_QUEUED):
total = 0
for j in self.jobs:
if j.status == status:
diff --git a/netrender/master_html.py b/netrender/master_html.py
index 39c7f811..8ee0fe4f 100644
--- a/netrender/master_html.py
+++ b/netrender/master_html.py
@@ -134,16 +134,16 @@ def get(handler):
serializedJob = job.serialize(withFiles=includeFiles, withFrames=includeFrames)
serializedJob["p_rule"] = handler.server.balancer.applyPriorities(job)
serializedJob["e_rule"] = handler.server.balancer.applyExceptions(job)
- serializedJob["wait"] = int(time.time() - job.last_dispatched) if job.status != JOB_FINISHED else "N/A"
+ serializedJob["wait"] = int(time.time() - job.last_dispatched) if job.status != netrender.model.JOB_FINISHED else "N/A"
serializedJob["length"] = len(job);
- serializedJob["done"] = results[FRAME_DONE]
- serializedJob["dispatched"] = results[FRAME_DISPATCHED]
- serializedJob["error"] = results[FRAME_ERROR]
+ serializedJob["done"] = results[netrender.model.FRAME_DONE]
+ serializedJob["dispatched"] = results[netrender.model.FRAME_DISPATCHED]
+ serializedJob["error"] = results[netrender.model.FRAME_ERROR]
tot_cache, tot_fluid, tot_other = countFiles(job)
serializedJob["totcache"] = tot_cache
serializedJob["totfluid"] = tot_fluid
serializedJob["totother"] = tot_other
- serializedJob["wktime"] = (time.time()-job.start_time ) if job.status != JOB_FINISHED else (job.finish_time-job.start_time)
+ serializedJob["wktime"] = (time.time()-job.start_time ) if job.status != netrender.model.JOB_FINISHED else (job.finish_time-job.start_time)
else:
serializedJob={"name":"invalid job"}
@@ -327,13 +327,19 @@ def get(handler):
"dispatched",
"error",
"priority",
- "exception"
+ "exception",
+ "started",
+ "finished"
)
handler.server.balance()
for job in handler.server.jobs:
results = job.framesStatus()
+
+ time_finished = job.time_finished
+ time_started = job.time_started
+
rowTable(
"""<button title="cancel job" onclick="cancel_job('%s');">X</button>""" % job.id +
"""<button title="pause job" onclick="request('/pause_%s', null);">P</button>""" % job.id +
@@ -350,15 +356,17 @@ def get(handler):
"""<button title="increase priority" onclick="request('/edit_%s', &quot;{'priority': %i}&quot;);">+</button>""" % (job.id, job.priority + 1) +
"""<button title="decrease priority" onclick="request('/edit_%s', &quot;{'priority': %i}&quot;);" %s>-</button>""" % (job.id, job.priority - 1, "disabled=True" if job.priority == 1 else ""),
"%0.1f%%" % (job.usage * 100),
- "%is" % int(time.time() - job.last_dispatched) if job.status != JOB_FINISHED else "N/A",
+ "%is" % int(time.time() - job.last_dispatched) if job.status != netrender.model.JOB_FINISHED else "N/A",
job.statusText(),
len(job),
- results[FRAME_DONE],
- results[FRAME_DISPATCHED],
- str(results[FRAME_ERROR]) +
- """<button title="reset error frames" onclick="request('/reset_%s_0', null);" %s>R</button>""" % (job.id, "disabled=True" if not results[FRAME_ERROR] else ""),
+ results[netrender.model.FRAME_DONE],
+ results[netrender.model.FRAME_DISPATCHED],
+ str(results[netrender.model.FRAME_ERROR]) +
+ """<button title="reset error frames" onclick="request('/reset_%s_0', null);" %s>R</button>""" % (job.id, "disabled=True" if not results[netrender.model.FRAME_ERROR] else ""),
"yes" if handler.server.balancer.applyPriorities(job) else "no",
- "yes" if handler.server.balancer.applyExceptions(job) else "no"
+ "yes" if handler.server.balancer.applyExceptions(job) else "no",
+ time.ctime(time_started) if time_started else "Not Started",
+ time.ctime(time_finished) if time_finished else "Not Finished"
)
endTable()
@@ -503,6 +511,16 @@ def get(handler):
endTable()
+ output("<h2>Transitions</h2>")
+
+ startTable()
+ headerTable("Event", "Time")
+
+ for transition, time_value in job.transitions:
+ rowTable(transition, time.ctime(time_value))
+
+ endTable()
+
output("<h2>Frames</h2>")
startTable()
@@ -518,7 +536,7 @@ def get(handler):
frame.slave.name if frame.slave else "&nbsp;",
link("view log", logURL(job_id, frame.number)) if frame.log_path else "&nbsp;",
link("view result", renderURL(job_id, frame.number)) + " [" +
- tag("span", "show", attr="class='thumb' onclick='showThumb(%s, %i)'" % (job.id, frame.number)) + "]" if frame.status == FRAME_DONE else "&nbsp;",
+ tag("span", "show", attr="class='thumb' onclick='showThumb(%s, %i)'" % (job.id, frame.number)) + "]" if frame.status == netrender.model.FRAME_DONE else "&nbsp;",
"<img name='thumb%i' title='hide thumbnails' src='' class='thumb' onclick='showThumb(%s, %i)'>" % (frame.number, job.id, frame.number)
)
else:
diff --git a/netrender/model.py b/netrender/model.py
index d4d00bbf..4153f936 100644
--- a/netrender/model.py
+++ b/netrender/model.py
@@ -19,6 +19,70 @@
import netrender.versioning as versioning
from netrender.utils import *
+import time
+
+# Jobs status
+JOB_WAITING = 0 # before all data has been entered
+JOB_PAUSED = 1 # paused by user
+JOB_FINISHED = 2 # finished rendering
+JOB_QUEUED = 3 # ready to be dispatched
+
+JOB_STATUS_TEXT = {
+ JOB_WAITING: "Waiting",
+ JOB_PAUSED: "Paused",
+ JOB_FINISHED: "Finished",
+ JOB_QUEUED: "Queued"
+ }
+
+JOB_TRANSITION_STARTED = "Started"
+JOB_TRANSITION_PAUSED = "Paused"
+JOB_TRANSITION_RESUMED = "Resumed"
+JOB_TRANSITION_FINISHED = "Finished"
+JOB_TRANSITION_RESTARTED = "Restarted"
+
+JOB_TRANSITIONS = {
+ (JOB_WAITING, JOB_QUEUED) : JOB_TRANSITION_STARTED,
+ (JOB_QUEUED, JOB_PAUSED) : JOB_TRANSITION_PAUSED,
+ (JOB_PAUSED, JOB_QUEUED) : JOB_TRANSITION_RESUMED,
+ (JOB_QUEUED, JOB_FINISHED) : JOB_TRANSITION_FINISHED,
+ (JOB_FINISHED, JOB_QUEUED) : JOB_TRANSITION_RESTARTED
+ }
+
+# Job types (depends on the dependency type)
+JOB_BLENDER = 1
+JOB_PROCESS = 2
+JOB_VCS = 3
+
+JOB_TYPES = {
+ JOB_BLENDER: "Blender",
+ JOB_PROCESS: "Process",
+ JOB_VCS: "Versioned",
+ }
+
+JOB_SUB_RENDER = 1
+JOB_SUB_BAKING = 2
+
+# Job subtypes
+JOB_SUBTYPES = {
+ JOB_SUB_RENDER: "Render",
+ JOB_SUB_BAKING: "Baking",
+ }
+
+
+# Frames status
+FRAME_QUEUED = 0
+FRAME_DISPATCHED = 1
+FRAME_DONE = 2
+FRAME_ERROR = 3
+
+FRAME_STATUS_TEXT = {
+ FRAME_QUEUED: "Queued",
+ FRAME_DISPATCHED: "Dispatched",
+ FRAME_DONE: "Done",
+ FRAME_ERROR: "Error"
+ }
+
+# Tags
TAG_BAKING = "baking"
TAG_RENDER = "render"
@@ -106,24 +170,6 @@ class RenderSlave:
return slave
-JOB_BLENDER = 1
-JOB_PROCESS = 2
-JOB_VCS = 3
-
-JOB_TYPES = {
- JOB_BLENDER: "Blender",
- JOB_PROCESS: "Process",
- JOB_VCS: "Versioned",
- }
-
-JOB_SUB_RENDER = 1
-JOB_SUB_BAKING = 2
-
-JOB_SUBTYPES = {
- JOB_SUB_RENDER: "Render",
- JOB_SUB_BAKING: "Baking",
- }
-
class VersioningInfo:
def __init__(self, info = None):
self._system = None
@@ -219,7 +265,10 @@ class RenderJob:
self.usage = 0.0
self.last_dispatched = 0.0
self.frames = []
-
+ self.transitions = []
+
+ self._status = None
+
if info:
self.type = info.type
self.subtype = info.subtype
@@ -247,6 +296,39 @@ class RenderJob:
self.version_info = None
self.render = "BLENDER_RENDER"
+ @property
+ def status(self):
+ """Status of the job (waiting, paused, finished or queued)"""
+ return self._status
+
+ @status.setter
+ def status(self, value):
+ transition = JOB_TRANSITIONS.get((self.status, value), None)
+ if transition:
+ self.transitions.append((transition, time.time()))
+
+ self._status = value
+
+ @property
+ def time_started(self):
+ started_time = None
+ for transition, time_value in self.transitions:
+ if transition == JOB_TRANSITION_STARTED:
+ started_time = time_value
+ break
+
+ return started_time
+
+ @property
+ def time_finished(self):
+ finished_time = None
+ if self.status == JOB_FINISHED:
+ for transition, time_value in self.transitions:
+ if transition == JOB_TRANSITION_FINISHED:
+ finished_time = time_value
+
+ return finished_time
+
def hasRenderResult(self):
return self.subtype == JOB_SUB_RENDER
@@ -332,6 +414,7 @@ class RenderJob:
"category": self.category,
"tags": tuple(self.tags),
"status": self.status,
+ "transitions": self.transitions,
"chunks": self.chunks,
"priority": self.priority,
"usage": self.usage,
@@ -361,6 +444,7 @@ class RenderJob:
job.category = data["category"]
job.tags = set(data["tags"])
job.status = data["status"]
+ job.transitions = data["transitions"]
job.files = [RenderFile.materialize(f) for f in data["files"]]
job.frames = [RenderFrame.materialize(f) for f in data["frames"]]
job.chunks = data["chunks"]
diff --git a/netrender/operators.py b/netrender/operators.py
index a3a5ef7d..74b2a285 100644
--- a/netrender/operators.py
+++ b/netrender/operators.py
@@ -410,9 +410,9 @@ class netclientdownload(bpy.types.Operator):
nb_missing = 0
for frame in job.frames:
- if frame.status == FRAME_DONE:
+ if frame.status == netrender.model.FRAME_DONE:
finished_frames.append(frame.number)
- elif frame.status == FRAME_ERROR:
+ elif frame.status == netrender.model.FRAME_ERROR:
nb_error += 1
else:
nb_missing += 1
diff --git a/netrender/slave.py b/netrender/slave.py
index c3b1f113..bf3819ba 100644
--- a/netrender/slave.py
+++ b/netrender/slave.py
@@ -65,8 +65,8 @@ def testCancel(conn, job_id, frame_number):
else:
return False
-def testFile(conn, job_id, slave_id, rfile, JOB_PREFIX, main_path=None):
- job_full_path = createLocalPath(rfile, JOB_PREFIX, main_path, rfile.force)
+def testFile(conn, job_id, slave_id, rfile, job_prefix, main_path=None):
+ job_full_path = createLocalPath(rfile, job_prefix, main_path, rfile.force)
found = os.path.exists(job_full_path)
@@ -80,9 +80,9 @@ def testFile(conn, job_id, slave_id, rfile, JOB_PREFIX, main_path=None):
if not found:
# Force prefix path if not found
- job_full_path = createLocalPath(rfile, JOB_PREFIX, main_path, True)
+ job_full_path = createLocalPath(rfile, job_prefix, main_path, True)
print("Downloading", job_full_path)
- temp_path = os.path.join(JOB_PREFIX, "slave.temp")
+ temp_path = os.path.join(job_prefix, "slave.temp")
with ConnectionContext():
conn.request("GET", fileURL(job_id, rfile.index), headers={"slave-id":slave_id})
response = conn.getresponse()
@@ -166,24 +166,24 @@ def render_slave(engine, netsettings, threads):
job = netrender.model.RenderJob.materialize(json.loads(str(response.read(), encoding='utf8')))
engine.update_stats("", "Network render processing job from master")
- JOB_PREFIX = os.path.join(NODE_PREFIX, "job_" + job.id)
- verifyCreateDir(JOB_PREFIX)
+ job_prefix = os.path.join(NODE_PREFIX, "job_" + job.id)
+ verifyCreateDir(job_prefix)
# set tempdir for fsaa temp files
# have to set environ var because render is done in a subprocess and that's the easiest way to propagate the setting
- os.environ["TMP"] = JOB_PREFIX
+ os.environ["TMP"] = job_prefix
if job.type == netrender.model.JOB_BLENDER:
job_path = job.files[0].original_path # original path of the first file
main_path, main_file = os.path.split(job_path)
- job_full_path = testFile(conn, job.id, slave_id, job.files[0], JOB_PREFIX)
+ job_full_path = testFile(conn, job.id, slave_id, job.files[0], job_prefix)
print("Fullpath", job_full_path)
print("File:", main_file, "and %i other files" % (len(job.files) - 1,))
for rfile in job.files[1:]:
- testFile(conn, job.id, slave_id, rfile, JOB_PREFIX, main_path)
+ testFile(conn, job.id, slave_id, rfile, job_prefix, main_path)
print("\t", rfile.filepath)
netrender.repath.update(job)
@@ -225,7 +225,7 @@ def render_slave(engine, netsettings, threads):
frame_args += ["-f", str(frame.number)]
with NoErrorDialogContext():
- process = subprocess.Popen([BLENDER_PATH, "-b", "-noaudio", job_full_path, "-t", str(threads), "-o", os.path.join(JOB_PREFIX, "######"), "-E", job.render, "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ process = subprocess.Popen([BLENDER_PATH, "-b", "-noaudio", job_full_path, "-t", str(threads), "-o", os.path.join(job_prefix, "######"), "-E", job.render, "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
elif job.subtype == netrender.model.JOB_SUB_BAKING:
tasks = []
@@ -354,13 +354,13 @@ def render_slave(engine, netsettings, threads):
if status == 0: # non zero status is error
- headers["job-result"] = str(FRAME_DONE)
+ headers["job-result"] = str(netrender.model.FRAME_DONE)
for frame in job.frames:
headers["job-frame"] = str(frame.number)
if job.hasRenderResult():
# send image back to server
- filename = os.path.join(JOB_PREFIX, "%06d.exr" % frame.number)
+ filename = os.path.join(job_prefix, "%06d.exr" % frame.number)
# thumbnail first
if netsettings.use_slave_thumb:
@@ -403,7 +403,7 @@ def render_slave(engine, netsettings, threads):
if responseStatus(conn) == http.client.NO_CONTENT:
continue
else:
- headers["job-result"] = str(FRAME_ERROR)
+ headers["job-result"] = str(netrender.model.FRAME_ERROR)
for frame in job.frames:
headers["job-frame"] = str(frame.number)
# send error result back to server
diff --git a/netrender/ui.py b/netrender/ui.py
index fbf17c8d..4aa085c9 100644
--- a/netrender/ui.py
+++ b/netrender/ui.py
@@ -26,7 +26,7 @@ from netrender.utils import *
from bpy.props import PointerProperty, StringProperty, BoolProperty, EnumProperty, IntProperty, CollectionProperty
-VERSION = b"0.3"
+VERSION = b"0.5"
PATH_PREFIX = "/tmp/"
@@ -352,8 +352,8 @@ class RENDER_PT_network_jobs(NeedValidAddress, NetRenderButtonsPanel, bpy.types.
layout.label(text="Name: %s" % job.name)
layout.label(text="Length: %04i" % len(job))
- layout.label(text="Done: %04i" % job.results[FRAME_DONE])
- layout.label(text="Error: %04i" % job.results[FRAME_ERROR])
+ layout.label(text="Done: %04i" % job.results[netrender.model.FRAME_DONE])
+ layout.label(text="Error: %04i" % job.results[netrender.model.FRAME_ERROR])
import bl_ui.properties_render as properties_render
class RENDER_PT_network_output(NeedValidAddress, NetRenderButtonsPanel, bpy.types.Panel):
diff --git a/netrender/utils.py b/netrender/utils.py
index 7a2abb6b..ac219210 100644
--- a/netrender/utils.py
+++ b/netrender/utils.py
@@ -30,33 +30,6 @@ except:
VERSION = bytes(".".join((str(n) for n in netrender.bl_info["version"])), encoding='utf8')
-# Jobs status
-JOB_WAITING = 0 # before all data has been entered
-JOB_PAUSED = 1 # paused by user
-JOB_FINISHED = 2 # finished rendering
-JOB_QUEUED = 3 # ready to be dispatched
-
-JOB_STATUS_TEXT = {
- JOB_WAITING: "Waiting",
- JOB_PAUSED: "Paused",
- JOB_FINISHED: "Finished",
- JOB_QUEUED: "Queued"
- }
-
-
-# Frames status
-FRAME_QUEUED = 0
-FRAME_DISPATCHED = 1
-FRAME_DONE = 2
-FRAME_ERROR = 3
-
-FRAME_STATUS_TEXT = {
- FRAME_QUEUED: "Queued",
- FRAME_DISPATCHED: "Dispatched",
- FRAME_DONE: "Done",
- FRAME_ERROR: "Error"
- }
-
try:
system = platform.system()
except UnicodeDecodeError: