[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2957] trunk/py/scripts/addons/ netrender: netrender (features coded by Philippe van Hecke)

Martin Poirier theeth at yahoo.com
Mon Jan 30 02:17:22 CET 2012


Revision: 2957
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2957
Author:   theeth
Date:     2012-01-30 01:17:06 +0000 (Mon, 30 Jan 2012)
Log Message:
-----------
netrender (features coded by Philippe van Hecke)

Support for secure connections between Master/client/slave using SSL/HTTPS

Fixed a bug with total job time on web interface (wrong value)

Modified Paths:
--------------
    trunk/py/scripts/addons/netrender/client.py
    trunk/py/scripts/addons/netrender/js/netrender.js
    trunk/py/scripts/addons/netrender/master.py
    trunk/py/scripts/addons/netrender/master_html.py
    trunk/py/scripts/addons/netrender/operators.py
    trunk/py/scripts/addons/netrender/slave.py
    trunk/py/scripts/addons/netrender/ui.py
    trunk/py/scripts/addons/netrender/utils.py

Modified: trunk/py/scripts/addons/netrender/client.py
===================================================================
--- trunk/py/scripts/addons/netrender/client.py	2012-01-29 22:20:22 UTC (rev 2956)
+++ trunk/py/scripts/addons/netrender/client.py	2012-01-30 01:17:06 UTC (rev 2957)
@@ -112,10 +112,10 @@
     elif netsettings.job_type == "JOB_VCS":
         job.type = netrender.model.JOB_VCS
 
-def sendJob(conn, scene, anim = False):
+def sendJob(conn, scene, anim = False, can_save = True):
     netsettings = scene.network_render
     if netsettings.job_type == "JOB_BLENDER":
-        return sendJobBlender(conn, scene, anim)
+        return sendJobBlender(conn, scene, anim, can_save)
     elif netsettings.job_type == "JOB_VCS":
         return sendJobVCS(conn, scene, anim)
 
@@ -171,7 +171,7 @@
 
     return job_id
 
-def sendJobBaking(conn, scene):
+def sendJobBaking(conn, scene, can_save = True):
     netsettings = scene.network_render
     job = netrender.model.RenderJob()
 
@@ -179,6 +179,9 @@
     
     if not os.path.exists(filename):
         raise RuntimeError("Current file path not defined\nSave your file before sending a job")
+
+    if can_save and netsettings.save_before_job:
+        bpy.ops.wm.save_mainfile(filepath=filename, check_existing=False)
     
     job.addFile(filename)
 
@@ -248,7 +251,7 @@
 
     return job_id
     
-def sendJobBlender(conn, scene, anim = False):
+def sendJobBlender(conn, scene, anim = False, can_save = True):
     netsettings = scene.network_render
     job = netrender.model.RenderJob()
 
@@ -263,7 +266,7 @@
     if not os.path.exists(filename):
         raise RuntimeError("Current file path not defined\nSave your file before sending a job")
     
-    if netsettings.save_before_job:
+    if can_save and netsettings.save_before_job:
         bpy.ops.wm.save_mainfile(filepath=filename, check_existing=False)
 
     job.addFile(filename)
@@ -371,7 +374,10 @@
                          force = netsettings.use_master_force_upload,
                          path = bpy.path.abspath(netsettings.path),
                          update_stats = self.update_stats,
-                         test_break = self.test_break)
+                         test_break = self.test_break,
+                         use_ssl=netsettings.use_ssl,
+                         cert_path=netsettings.cert_path,
+                         key_path=netsettings.key_path)
 
 
     def render_slave(self, scene):
@@ -382,7 +388,7 @@
         self.update_stats("", "Network render client initiation")
 
 
-        conn = clientConnection(netsettings.server_address, netsettings.server_port)
+        conn = clientConnection(netsettings)
 
         if conn:
             # Sending file
@@ -404,7 +410,7 @@
 
             if response.status == http.client.NO_CONTENT:
                 new_job = True
-                netsettings.job_id = sendJob(conn, scene)
+                netsettings.job_id = sendJob(conn, scene, can_save = False)
                 job_id = netsettings.job_id
 
                 requestResult(conn, job_id, scene.frame_current)

Modified: trunk/py/scripts/addons/netrender/js/netrender.js
===================================================================
--- trunk/py/scripts/addons/netrender/js/netrender.js	2012-01-29 22:20:22 UTC (rev 2956)
+++ trunk/py/scripts/addons/netrender/js/netrender.js	2012-01-30 01:17:06 UTC (rev 2957)
@@ -23,7 +23,7 @@
 var framesTableHeader = ["no", "status", "render time", "slave", "log", "result"];
 var JOB_TYPES = ["None", "Blender", "Process", "Versioned"];
 var JOB_STATUS_TEXT = ["Waiting", "Paused", "Finished", "Queued"];
-var JOB_SUBTYPE = ["BLENDER", "CYCLE"];
+var JOB_SUBTYPE = ["None", "BLENDER", "CYCLE"];
 var FRAME_STATUS_TEXT = ["Queued", "Dispatched", "Done", "error"];
 var JOB_TYPE_NONE = 0;
 var JOB_TYPE_BLENDER = 1;
@@ -86,7 +86,7 @@
 		}
 
 		if(name == "type") {
-			return JOB_TYPES[row.type] + "[" + JOB_SUBTYPE[row.subtype] + "]";
+			return JOB_TYPES[row.type] + "[" + row.render + "]";
 		}
 
 		if(name == "status") {
@@ -283,14 +283,13 @@
 function showJob(id, name) {
 
 	var job = {};
-
+    
 	function general(tab_name) {
-
-		var rendertime = 0;
+		var cumulate_rendertime = 0;
 		$.each(job.frames, function(index, frame) {
-			rendertime += frame.time;
+			cumulate_rendertime += frame.time;
 		});
-		var info = [new namevalue("resolution", job.resolution[0] + 'x' + job.resolution[1] + ' at ' + job.resolution[2] + '%'), new namevalue("tags", job.tags), new namevalue("result", getresult(id)), new namevalue("frames", job.frames.length), new namevalue("status", job.status), new namevalue("job name", job.name), new namevalue("type", job.type), new namevalue("render", job.subtype), new namevalue("render time:", secondsToHms(rendertime))];
+		var info = [new namevalue("resolution", job.resolution[0] + 'x' + job.resolution[1] + ' at ' + job.resolution[2] + '%'), new namevalue("tags", job.tags), new namevalue("result", getresult(id)), new namevalue("frames", job.frames.length), new namevalue("status", job.status), new namevalue("job name", job.name), new namevalue("type", job.type), new namevalue("render", job.subtype), new namevalue("render time", secondsToHms(job.wktime)), new namevalue("cumulate render time", secondsToHms(cumulate_rendertime))];
 
 		function cellview(name, row) {
 
@@ -313,7 +312,7 @@
 					case "type":
 						return JOB_TYPES[job.type];
 					case "render":
-						return JOB_SUBTYPE[job.subtype];
+						return job.render;
 
 					default:
 						return row.value;

Modified: trunk/py/scripts/addons/netrender/master.py
===================================================================
--- trunk/py/scripts/addons/netrender/master.py	2012-01-29 22:20:22 UTC (rev 2956)
+++ trunk/py/scripts/addons/netrender/master.py	2012-01-30 01:17:06 UTC (rev 2957)
@@ -4,7 +4,7 @@
 #  modify it under the terms of the GNU General Public License
 #  as published by the Free Software Foundation; either version 2
 #  of the License, or (at your option) any later version.
-#
+#s
 #  This program is distributed in the hope that it will be useful,
 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
@@ -24,6 +24,7 @@
 import select # for select.error
 import json
 
+
 from netrender.utils import *
 import netrender.model
 import netrender.balancing
@@ -59,6 +60,7 @@
         super().__init__(slave_info)
         self.id = hashlib.md5(bytes(repr(slave_info.name) + repr(slave_info.address), encoding='utf8')).hexdigest()
         self.last_seen = time.time()
+        
 
         self.job = None
         self.job_frames = []
@@ -82,7 +84,8 @@
         super().__init__(job_info)
         self.id = job_id
         self.last_dispatched = time.time()
-
+        self.start_time = time.time()
+        self.finish_time = self.start_time
         # force one chunk for process jobs
         if self.type == netrender.model.JOB_PROCESS:
             self.chunks = 1
@@ -136,6 +139,7 @@
                 break
         else:
             self.status = JOB_FINISHED
+            self.finish_time=time.time()
 
     def pause(self, status = None):
         if self.status not in {JOB_PAUSED, JOB_QUEUED}:
@@ -150,6 +154,7 @@
 
     def start(self):
         self.status = JOB_QUEUED
+        
 
     def addLog(self, frames):
         frames = sorted(frames)
@@ -1149,11 +1154,13 @@
     with open(filepath, 'wb') as f:
         pickle.dump((httpd.path, httpd.jobs, httpd.slaves), f, pickle.HIGHEST_PROTOCOL)
 
-def runMaster(address, broadcast, clear, force, path, update_stats, test_break):
+def runMaster(address, broadcast, clear, force, path, update_stats, test_break,use_ssl=False,cert_path="",key_path=""):
     httpd = createMaster(address, clear, force, path)
     httpd.timeout = 1
     httpd.stats = update_stats
-
+    if use_ssl:
+        import ssl
+        httpd.socket=ssl.wrap_socket(httpd.socket,certfile=cert_path,server_side=True,keyfile=key_path,ciphers="ALL",ssl_version=ssl.PROTOCOL_SSLv3)
     if broadcast:
         s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
         s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

Modified: trunk/py/scripts/addons/netrender/master_html.py
===================================================================
--- trunk/py/scripts/addons/netrender/master_html.py	2012-01-29 22:20:22 UTC (rev 2956)
+++ trunk/py/scripts/addons/netrender/master_html.py	2012-01-30 01:17:06 UTC (rev 2957)
@@ -142,7 +142,8 @@
              tot_cache, tot_fluid, tot_other = countFiles(job)
              serializedJob["totcache"] = tot_cache
              serializedJob["totfluid"] = tot_fluid
-             serializedJob["totother"] = tot_other                    
+             serializedJob["totother"] = tot_other  
+             serializedJob["wktime"] = (time.time()-job.start_time ) if job.status != JOB_FINISHED else (job.finish_time-job.start_time)             
         else:
              serializedJob={"name":"invalid job"}
            

Modified: trunk/py/scripts/addons/netrender/operators.py
===================================================================
--- trunk/py/scripts/addons/netrender/operators.py	2012-01-29 22:20:22 UTC (rev 2956)
+++ trunk/py/scripts/addons/netrender/operators.py	2012-01-30 01:17:06 UTC (rev 2957)
@@ -42,7 +42,7 @@
         netsettings = scene.network_render
 
         try:
-            conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
+            conn = clientConnection(netsettings, report = self.report)
 
             if conn:
                 # Sending file
@@ -70,7 +70,7 @@
         scene = context.scene
         netsettings = scene.network_render
 
-        conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
+        conn = clientConnection(netsettings, report = self.report)
 
         if conn:
             # Sending file
@@ -115,7 +115,7 @@
         netsettings = scene.network_render
 
         try:
-            conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)
+            conn = clientConnection(netsettings, report = self.report)
 
             if conn:
                 # Sending file
@@ -145,7 +145,7 @@
         netsettings = scene.network_render
 
         try:
-            conn = clientConnection(netsettings.server_address, netsettings.server_port, self.report)

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list