[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