[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25417] trunk/blender/release/scripts/io/ netrender: netrender
Martin Poirier
theeth at yahoo.com
Wed Dec 16 22:00:25 CET 2009
Revision: 25417
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25417
Author: theeth
Date: 2009-12-16 22:00:25 +0100 (Wed, 16 Dec 2009)
Log Message:
-----------
netrender
Display job status in web interface
Better use of Reports api for errors and success notifications
Don't show some Client options if server address is default (hasn't been scanned or entered manually yet)
Modified Paths:
--------------
trunk/blender/release/scripts/io/netrender/master.py
trunk/blender/release/scripts/io/netrender/master_html.py
trunk/blender/release/scripts/io/netrender/model.py
trunk/blender/release/scripts/io/netrender/operators.py
trunk/blender/release/scripts/io/netrender/ui.py
trunk/blender/release/scripts/io/netrender/utils.py
Modified: trunk/blender/release/scripts/io/netrender/master.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/master.py 2009-12-16 19:49:33 UTC (rev 25416)
+++ trunk/blender/release/scripts/io/netrender/master.py 2009-12-16 21:00:25 UTC (rev 25417)
@@ -67,11 +67,13 @@
if self.type == netrender.model.JOB_PROCESS:
self.chunks = 1
+ # Force WAITING status on creation
+ self.status = JOB_WAITING
+
# special server properties
self.last_update = 0
self.save_path = ""
self.files = [MRenderFile(rfile.filepath, rfile.index, rfile.start, rfile.end) for rfile in job_info.files]
- self.status = JOB_WAITING
def save(self):
if self.save_path:
Modified: trunk/blender/release/scripts/io/netrender/master_html.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/master_html.py 2009-12-16 19:49:33 UTC (rev 25416)
+++ trunk/blender/release/scripts/io/netrender/master_html.py 2009-12-16 21:00:25 UTC (rev 25417)
@@ -94,6 +94,7 @@
"priority",
"usage",
"wait",
+ "status",
"length",
"done",
"dispatched",
@@ -114,6 +115,7 @@
job.priority,
"%0.1f%%" % (job.usage * 100),
"%is" % int(time.time() - job.last_dispatched),
+ job.statusText(),
len(job),
results[DONE],
results[DISPATCHED],
Modified: trunk/blender/release/scripts/io/netrender/model.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/model.py 2009-12-16 19:49:33 UTC (rev 25416)
+++ trunk/blender/release/scripts/io/netrender/model.py 2009-12-16 21:00:25 UTC (rev 25417)
@@ -132,6 +132,7 @@
self.type = JOB_BLENDER
self.name = ""
self.category = "None"
+ self.status = JOB_WAITING
self.files = []
self.chunks = 0
self.priority = 0
@@ -145,6 +146,7 @@
self.type = job_info.type
self.name = job_info.name
self.category = job_info.category
+ self.status = job_info.status
self.files = job_info.files
self.chunks = job_info.chunks
self.priority = job_info.priority
@@ -172,6 +174,9 @@
def countSlaves(self):
return len(set((frame.slave for frame in self.frames if frame.status == DISPATCHED)))
+ def statusText(self):
+ return JOB_STATUS_TEXT[self.status]
+
def framesStatus(self):
results = {
QUEUED: 0,
@@ -207,6 +212,7 @@
"type": self.type,
"name": self.name,
"category": self.category,
+ "status": self.status,
"files": [f.serialize() for f in self.files if f.start == -1 or not frames or (f.start <= max_frame and f.end >= min_frame)],
"frames": [f.serialize() for f in self.frames if not frames or f in frames],
"chunks": self.chunks,
@@ -226,6 +232,7 @@
job.type = data["type"]
job.name = data["name"]
job.category = data["category"]
+ job.status = data["status"]
job.files = [RenderFile.materialize(f) for f in data["files"]]
job.frames = [RenderFrame.materialize(f) for f in data["frames"]]
job.chunks = data["chunks"]
@@ -245,7 +252,7 @@
self.command = command
def statusText(self):
- return STATUS_TEXT[self.status]
+ return FRAME_STATUS_TEXT[self.status]
def serialize(self):
return {
Modified: trunk/blender/release/scripts/io/netrender/operators.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/operators.py 2009-12-16 19:49:33 UTC (rev 25416)
+++ trunk/blender/release/scripts/io/netrender/operators.py 2009-12-16 21:00:25 UTC (rev 25417)
@@ -97,15 +97,12 @@
scene = context.scene
netsettings = scene.network_render
- try:
- conn = clientConnection(netsettings.server_address, netsettings.server_port)
+ conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
+ if conn:
# Sending file
scene.network_render.job_id = client.clientSendJob(conn, scene, True)
conn.close()
- except Exception as err:
- self.report('ERROR', str(err))
- conn = None
bpy.ops.screen.render('INVOKE_AREA', animation=True)
@@ -128,12 +125,13 @@
netsettings = scene.network_render
try:
- conn = clientConnection(netsettings.server_address, netsettings.server_port)
+ conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
- # Sending file
- scene.network_render.job_id = client.clientSendJob(conn, scene, True)
- conn.close()
- self.report('INFO', "Job sent to master")
+ if conn:
+ # Sending file
+ scene.network_render.job_id = client.clientSendJob(conn, scene, True)
+ conn.close()
+ self.report('INFO', "Job sent to master")
except Exception as err:
self.report('ERROR', str(err))
@@ -154,7 +152,7 @@
def execute(self, context):
netsettings = context.scene.network_render
- conn = clientConnection(netsettings.server_address, netsettings.server_port)
+ conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
if conn:
conn.request("GET", "/status")
@@ -255,7 +253,7 @@
def execute(self, context):
netsettings = context.scene.network_render
- conn = clientConnection(netsettings.server_address, netsettings.server_port)
+ conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
if conn:
conn.request("GET", "/slaves")
@@ -301,7 +299,7 @@
def execute(self, context):
netsettings = context.scene.network_render
- conn = clientConnection(netsettings.server_address, netsettings.server_port)
+ conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
if conn:
job = netrender.jobs[netsettings.active_job_index]
@@ -329,7 +327,7 @@
def execute(self, context):
netsettings = context.scene.network_render
- conn = clientConnection(netsettings.server_address, netsettings.server_port)
+ conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
if conn:
conn.request("POST", "/clear")
@@ -359,7 +357,7 @@
netsettings = context.scene.network_render
rd = context.scene.render_data
- conn = clientConnection(netsettings.server_address, netsettings.server_port)
+ conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
if conn:
job = netrender.jobs[netsettings.active_job_index]
@@ -400,7 +398,7 @@
return True
def execute(self, context):
- address, port = clientScan()
+ address, port = clientScan(self.report)
if address:
scene = context.scene
@@ -427,7 +425,7 @@
# open connection to make sure server exists
- conn = clientConnection(netsettings.server_address, netsettings.server_port)
+ conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
if conn:
conn.close()
Modified: trunk/blender/release/scripts/io/netrender/ui.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/ui.py 2009-12-16 19:49:33 UTC (rev 25416)
+++ trunk/blender/release/scripts/io/netrender/ui.py 2009-12-16 21:00:25 UTC (rev 25417)
@@ -85,7 +85,8 @@
def poll(self, context):
scene = context.scene
- return super().poll(context) and scene.network_render.mode == "RENDER_CLIENT"
+ return (super().poll(context)
+ and scene.network_render.mode == "RENDER_CLIENT")
def draw(self, context):
layout = self.layout
@@ -98,9 +99,10 @@
split = layout.split()
col = split.column()
- col.operator("render.netclientanim", icon='RENDER_ANIMATION')
- col.operator("render.netclientsend", icon='FILE_BLEND')
- col.operator("render.netclientweb", icon='QUESTION')
+ if scene.network_render.server_address != "[default]":
+ col.operator("render.netclientanim", icon='RENDER_ANIMATION')
+ col.operator("render.netclientsend", icon='FILE_BLEND')
+ col.operator("render.netclientweb", icon='QUESTION')
col.prop(scene.network_render, "job_name")
col.prop(scene.network_render, "job_category")
row = col.row()
@@ -114,7 +116,9 @@
def poll(self, context):
scene = context.scene
- return super().poll(context) and scene.network_render.mode == "RENDER_CLIENT"
+ return (super().poll(context)
+ and scene.network_render.mode == "RENDER_CLIENT"
+ and scene.network_render.server_address != "[default]")
def draw(self, context):
layout = self.layout
@@ -150,7 +154,9 @@
def poll(self, context):
scene = context.scene
- return super().poll(context) and scene.network_render.mode == "RENDER_CLIENT"
+ return (super().poll(context)
+ and scene.network_render.mode == "RENDER_CLIENT"
+ and scene.network_render.server_address != "[default]")
def draw(self, context):
layout = self.layout
@@ -185,7 +191,9 @@
def poll(self, context):
scene = context.scene
- return super().poll(context) and scene.network_render.mode == "RENDER_CLIENT"
+ return (super().poll(context)
+ and scene.network_render.mode == "RENDER_CLIENT"
+ and scene.network_render.server_address != "[default]")
def draw(self, context):
layout = self.layout
Modified: trunk/blender/release/scripts/io/netrender/utils.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/utils.py 2009-12-16 19:49:33 UTC (rev 25416)
+++ trunk/blender/release/scripts/io/netrender/utils.py 2009-12-16 21:00:25 UTC (rev 25417)
@@ -28,7 +28,7 @@
except:
bpy = None
-VERSION = b"0.7"
+VERSION = bytes("0.7", encoding='utf8')
# Jobs status
JOB_WAITING = 0 # before all data has been entered
@@ -36,13 +36,21 @@
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
QUEUED = 0
DISPATCHED = 1
DONE = 2
ERROR = 3
-STATUS_TEXT = {
+FRAME_STATUS_TEXT = {
QUEUED: "Queued",
DISPATCHED: "Dispatched",
DONE: "Done",
@@ -57,40 +65,66 @@
if bpy: bpy.ops.add(rna_op)
return rna_op
-def clientScan():
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
- s.settimeout(30)
+def reporting(report, message, errorType = None):
+ if errorType:
+ t = 'ERROR'
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list