[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