[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33940] trunk/blender/release/scripts/io/ netrender: netrender
Martin Poirier
theeth at yahoo.com
Wed Dec 29 19:34:44 CET 2010
Revision: 33940
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33940
Author: theeth
Date: 2010-12-29 19:34:43 +0100 (Wed, 29 Dec 2010)
Log Message:
-----------
netrender
Bugfix for job cancellation (reported by Carsten in email)
Ended up recoding part of the communication pipe (use json more consistently)
Fix bpy data modifications where it shouldn't happen (as a bonus, thumbnailing is now done out of process)
Modified Paths:
--------------
trunk/blender/release/scripts/io/netrender/__init__.py
trunk/blender/release/scripts/io/netrender/balancing.py
trunk/blender/release/scripts/io/netrender/master.py
trunk/blender/release/scripts/io/netrender/master_html.py
trunk/blender/release/scripts/io/netrender/netrender.js
trunk/blender/release/scripts/io/netrender/operators.py
trunk/blender/release/scripts/io/netrender/slave.py
trunk/blender/release/scripts/io/netrender/ui.py
trunk/blender/release/scripts/io/netrender/utils.py
Added Paths:
-----------
trunk/blender/release/scripts/io/netrender/thumbnail.py
Modified: trunk/blender/release/scripts/io/netrender/__init__.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/__init__.py 2010-12-29 18:21:57 UTC (rev 33939)
+++ trunk/blender/release/scripts/io/netrender/__init__.py 2010-12-29 18:34:43 UTC (rev 33940)
@@ -56,6 +56,12 @@
def register():
ui.addProperties()
+
+ import bpy
+ scene = bpy.context.scene
+ if scene:
+ netsettings = scene.network_render
+ ui.init_data(netsettings)
def unregister():
Modified: trunk/blender/release/scripts/io/netrender/balancing.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/balancing.py 2010-12-29 18:21:57 UTC (rev 33939)
+++ trunk/blender/release/scripts/io/netrender/balancing.py 2010-12-29 18:34:43 UTC (rev 33940)
@@ -25,6 +25,9 @@
def __init__(self):
self.enabled = True
+ def id(self):
+ return str(id(self))
+
def rate(self, job):
return 0
@@ -32,6 +35,9 @@
def __init__(self):
self.enabled = True
+ def id(self):
+ return str(id(self))
+
def test(self, job):
return False
@@ -39,6 +45,9 @@
def __init__(self):
self.enabled = True
+ def id(self):
+ return str(id(self))
+
def test(self, job):
return False
@@ -50,13 +59,13 @@
def ruleByID(self, rule_id):
for rule in self.rules:
- if id(rule) == rule_id:
+ if rule.id() == rule_id:
return rule
for rule in self.priorities:
- if id(rule) == rule_id:
+ if rule.id() == rule_id:
return rule
for rule in self.exceptions:
- if id(rule) == rule_id:
+ if rule.id() == rule_id:
return rule
return None
Modified: trunk/blender/release/scripts/io/netrender/master.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/master.py 2010-12-29 18:21:57 UTC (rev 33939)
+++ trunk/blender/release/scripts/io/netrender/master.py 2010-12-29 18:34:43 UTC (rev 33940)
@@ -27,6 +27,7 @@
import netrender.model
import netrender.balancing
import netrender.master_html
+import netrender.thumbnail as thumbnail
class MRenderFile(netrender.model.RenderFile):
def __init__(self, filepath, index, start, end, signature):
@@ -203,6 +204,15 @@
# is extremely slow due to some timeout..
sys.stderr.write("[%s] %s\n" % (self.log_date_time_string(), format%args))
+ def getInfoMap(self):
+ length = int(self.headers['content-length'])
+
+ if length > 0:
+ msg = str(self.rfile.read(length), encoding='utf8')
+ return json.loads(msg)
+ else:
+ return {}
+
def send_head(self, code = http.client.OK, headers = {}, content = "application/octet-stream"):
self.send_response(code)
self.send_header("Content-type", content)
@@ -299,7 +309,7 @@
elif frame.status == DONE:
filename = os.path.join(job.save_path, "%06d.exr" % frame_number)
- thumbname = thumbnail(filename)
+ thumbname = thumbnail.generate(filename)
if thumbname:
f = open(thumbname, 'rb')
@@ -518,8 +528,7 @@
job = self.server.getJobID(job_id)
if job:
- length = int(self.headers['content-length'])
- info_map = eval(str(self.rfile.read(length), encoding='utf8'))
+ info_map = self.getInfoMap()
job.edit(info_map)
self.send_head()
@@ -531,8 +540,7 @@
self.send_head(http.client.NO_CONTENT)
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
elif self.path == "/balance_limit":
- length = int(self.headers['content-length'])
- info_map = eval(str(self.rfile.read(length), encoding='utf8'))
+ info_map = self.getInfoMap()
for rule_id, limit in info_map.items():
try:
rule = self.server.balancer.ruleByID(rule_id)
@@ -544,8 +552,7 @@
self.send_head()
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
elif self.path == "/balance_enable":
- length = int(self.headers['content-length'])
- info_map = eval(str(self.rfile.read(length), encoding='utf8'))
+ info_map = self.getInfoMap()
for rule_id, enabled in info_map.items():
rule = self.server.balancer.ruleByID(rule_id)
if rule:
@@ -557,14 +564,9 @@
match = cancel_pattern.match(self.path)
if match:
- length = int(self.headers['content-length'])
+ info_map = self.getInfoMap()
+ clear = info_map.get("clear", False)
- if length > 0:
- info_map = eval(str(self.rfile.read(length), encoding='utf8'))
- clear = info_map.get("clear", False)
- else:
- clear = False
-
job_id = match.groups()[0]
job = self.server.getJobID(job_id)
@@ -584,14 +586,9 @@
match = pause_pattern.match(self.path)
if match:
- length = int(self.headers['content-length'])
+ info_map = self.getInfoMap()
+ status = info_map.get("status", None)
- if length > 0:
- info_map = eval(str(self.rfile.read(length), encoding='utf8'))
- status = info_map.get("status", None)
- else:
- status = None
-
job_id = match.groups()[0]
job = self.server.getJobID(job_id)
@@ -609,14 +606,9 @@
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
elif self.path == "/clear":
# cancel all jobs
- length = int(self.headers['content-length'])
+ info_map = self.getInfoMap()
+ clear = info_map.get("clear", False)
- if length > 0:
- info_map = eval(str(self.rfile.read(length), encoding='utf8'))
- clear = info_map.get("clear", False)
- else:
- clear = False
-
self.server.stats("", "Clearing jobs")
self.server.clear(clear)
Modified: trunk/blender/release/scripts/io/netrender/master_html.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/master_html.py 2010-12-29 18:21:57 UTC (rev 33939)
+++ trunk/blender/release/scripts/io/netrender/master_html.py 2010-12-29 18:34:43 UTC (rev 33940)
@@ -183,28 +183,28 @@
for rule in handler.server.balancer.rules:
rowTable(
"rating",
- checkbox("", rule.enabled, "balance_enable('%i', '%s')" % (id(rule), str(not rule.enabled))),
+ checkbox("", rule.enabled, "balance_enable('%s', '%s')" % (rule.id(), str(not rule.enabled).lower())),
rule,
rule.str_limit() +
- """<button title="edit limit" onclick="balance_edit('%i', '%s');">edit</button>""" % (id(rule), str(rule.limit)) if hasattr(rule, "limit") else " "
+ """<button title="edit limit" onclick="balance_edit('%s', '%s');">edit</button>""" % (rule.id(), str(rule.limit)) if hasattr(rule, "limit") else " "
)
for rule in handler.server.balancer.priorities:
rowTable(
"priority",
- checkbox("", rule.enabled, "balance_enable('%i', '%s')" % (id(rule), str(not rule.enabled))),
+ checkbox("", rule.enabled, "balance_enable('%s', '%s')" % (rule.id(), str(not rule.enabled).lower())),
rule,
rule.str_limit() +
- """<button title="edit limit" onclick="balance_edit('%i', '%s');">edit</button>""" % (id(rule), str(rule.limit)) if hasattr(rule, "limit") else " "
+ """<button title="edit limit" onclick="balance_edit('%s', '%s');">edit</button>""" % (rule.id(), str(rule.limit)) if hasattr(rule, "limit") else " "
)
for rule in handler.server.balancer.exceptions:
rowTable(
"exception",
- checkbox("", rule.enabled, "balance_enable('%i', '%s')" % (id(rule), str(not rule.enabled))),
+ checkbox("", rule.enabled, "balance_enable('%s', '%s')" % (rule.id(), str(not rule.enabled).lower())),
rule,
rule.str_limit() +
- """<button title="edit limit" onclick="balance_edit('%i', '%s');">edit</button>""" % (id(rule), str(rule.limit)) if hasattr(rule, "limit") else " "
+ """<button title="edit limit" onclick="balance_edit('%s', '%s');">edit</button>""" % (rule.id(), str(rule.limit)) if hasattr(rule, "limit") else " "
)
endTable()
Modified: trunk/blender/release/scripts/io/netrender/netrender.js
===================================================================
--- trunk/blender/release/scripts/io/netrender/netrender.js 2010-12-29 18:21:57 UTC (rev 33939)
+++ trunk/blender/release/scripts/io/netrender/netrender.js 2010-12-29 18:34:43 UTC (rev 33940)
@@ -20,9 +20,9 @@
var r=confirm("Also delete files on master?");
if (r==true) {
- request('/clear', "{'clear':True}");
+ request('/clear', '{"clear":true}');
} else {
- request('/clear', "{'clear':False}");
+ request('/clear', '{"clear":false}');
}
}
@@ -31,9 +31,9 @@
var r=confirm("Also delete files on master?");
if (r==true) {
- request('/cancel_' + id, "{'clear':True}");
+ request('/cancel_' + id, '{"clear":true}');
} else {
- request('/cancel_' + id, "{'clear':False}");
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list