[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2853] trunk/py/scripts/addons/ render_renderfarmfi.py: Updates needed to work with the upgraded BURP backend of Renderfarm.fi
Nathan Letwory
nathan at letworyinteractive.com
Sun Jan 1 20:37:56 CET 2012
Revision: 2853
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2853
Author: jesterking
Date: 2012-01-01 19:37:49 +0000 (Sun, 01 Jan 2012)
Log Message:
-----------
Updates needed to work with the upgraded BURP backend of Renderfarm.fi
Modified Paths:
--------------
trunk/py/scripts/addons/render_renderfarmfi.py
Modified: trunk/py/scripts/addons/render_renderfarmfi.py
===================================================================
--- trunk/py/scripts/addons/render_renderfarmfi.py 2012-01-01 17:15:41 UTC (rev 2852)
+++ trunk/py/scripts/addons/render_renderfarmfi.py 2012-01-01 19:37:49 UTC (rev 2853)
@@ -16,11 +16,13 @@
#
# ##### END GPL LICENSE BLOCK #####
+DEV = False
+
bl_info = {
"name": "Renderfarm.fi",
"author": "Nathan Letwory <nathan at letworyinteractive.com>, Jesse Kaukonen <jesse.kaukonen at gmail.com>",
- "version": (12,),
- "blender": (2, 6, 0),
+ "version": (13,),
+ "blender": (2, 6, 1),
"api": 41934,
"location": "Render > Engine > Renderfarm.fi",
"description": "Send .blend as session to http://www.renderfarm.fi to render",
@@ -86,6 +88,15 @@
bpy.simulationWarning = False
bpy.ready = False
+if DEV:
+ rffi_xmlrpc_secure = r'http://192.168.0.109/burp/xmlrpc'
+ rffi_xmlrpc = r'http://192.168.0.109/burp/xmlrpc'
+ rffi_xmlrpc_upload = '192.168.0.109'
+else:
+ rffi_xmlrpc_secure = r'https://xmlrpc.renderfarm.fi/burp/xmlrpc'
+ rffi_xmlrpc = r'http://xmlrpc.renderfarm.fi/burp/xmlrpc'
+ rffi_xmlrpc_upload = 'xmlrpc.renderfarm.fi'
+
def renderEngine(render_engine):
bpy.utils.register_class(render_engine)
return render_engine
@@ -221,9 +232,9 @@
t = type(node)
return t==bpy.types.CompositorNodeBlur or t==bpy.types.CompositorNodeDBlur
-def changeSettings(context):
+def changeSettings():
- sce = context.scene
+ sce = bpy.context.scene
rd = sce.render
ore = sce.ore_render
@@ -249,12 +260,12 @@
else:
bpy.simulationWarning = False
-def prepareScene(context):
- sce = context.scene
+def prepareScene():
+ sce = bpy.context.scene
rd = sce.render
ore = sce.ore_render
- changeSettings(context)
+ changeSettings()
print("Packing external textures...")
# Pack all external textures
@@ -304,8 +315,8 @@
bl_idname = "ore.switch_to_renderfarm_render"
def execute(self, context):
- changeSettings(context)
- context.scene.render.engine = 'RENDERFARMFI_RENDER'
+ changeSettings()
+ bpy.context.scene.render.engine = 'RENDERFARMFI_RENDER'
return {'FINISHED'}
class OpSwitchBlenderRender(bpy.types.Operator):
@@ -313,7 +324,7 @@
bl_idname = "ore.switch_to_blender_render"
def execute(self, context):
- context.scene.render.engine = 'BLENDER_RENDER'
+ bpy.context.scene.render.engine = 'BLENDER_RENDER'
return {'FINISHED'}
# Copies start & end frame + others from render settings to ore settings
@@ -322,7 +333,7 @@
bl_idname = "ore.copy_settings"
def execute(self, context):
- sce = context.scene
+ sce = bpy.context.scene
rd = sce.render
ore = sce.ore_render
ore.resox = rd.resolution_x
@@ -339,13 +350,12 @@
def draw(self, context):
layout = self.layout
- sce = context.scene
- rd = sce.render
+ rd = context.scene.render
row = layout.row()
row.operator("ore.switch_to_renderfarm_render", text="Renderfarm.fi", icon='WORLD')
row.operator("ore.switch_to_blender_render", text="Blender Render", icon='BLENDER')
row = layout.row()
- if (sce.render.engine == 'BLENDER_RENDER'):
+ if (bpy.context.scene.render.engine == 'BLENDER_RENDER'):
row.operator("render.render", text="Image", icon='RENDER_STILL')
row.operator("render.render", text="Animation", icon='RENDER_ANIMATION').animation = True
layout.prop(rd, "display_mode", text="Display")
@@ -367,13 +377,12 @@
def draw(self, context):
layout = self.layout
- sce = context.scene
- rd = sce.render
+ rd = context.scene.render
row = layout.row()
row.operator("ore.switch_to_renderfarm_render", text="Renderfarm.fi", icon='WORLD')
row.operator("ore.switch_to_blender_render", text="Blender Render", icon='BLENDER')
row = layout.row()
- if (rd.engine == 'RENDERFARMFI_RENDER'):
+ if (bpy.context.scene.render.engine == 'RENDERFARMFI_RENDER'):
if bpy.found_newer_version == True:
layout.operator('ore.open_download_location')
else:
@@ -390,7 +399,7 @@
layout = self.layout
ore = context.scene.ore_render
- if ore.loginInserted == True:
+ if (ore.loginInserted == True):
layout.operator('ore.completed_sessions')
layout.operator('ore.accept_sessions')
layout.operator('ore.active_sessions')
@@ -618,9 +627,10 @@
return body, headers
-def send_post(url, data, files):
- connection = http.client.HTTPConnection('xmlrpc.renderfarm.fi')
- connection.request('POST', '/file', *encode_multipart_data(data, files))
+def send_post(data, files):
+ connection = http.client.HTTPConnection(rffi_xmlrpc_upload)
+ print("posting to ", rffi_xmlrpc_upload)
+ connection.request('POST', '/burp/storage', *encode_multipart_data(data, files)) # was /file
response = connection.getresponse()
res = response.read()
return res
@@ -636,7 +646,7 @@
md5hash.update(data)
return md5hash.hexdigest()
-def upload_file(key, userid, sessionid, server, path):
+def upload_file(key, userid, sessionid, path):
assert isabs(path)
assert isfile(path)
data = {
@@ -648,14 +658,14 @@
files = {
'blenderfile': path
}
- r = send_post(server, data, files)
- #print 'Uploaded %r' % (path)
+ r = send_post(data, files)
return r
def run_upload(key, userid, sessionid, path):
- #print('Upload', path)
- r = upload_file(key, userid, sessionid, r'http://xmlrpc.renderfarm.fi/file', path)
+ print('Upload', path)
+ r = upload_file(key, userid, sessionid, path)
+ print("uploaded, now preparing for loads")
o = xmlrpc.client.loads(r)
print("Done!")
return o[0][0]
@@ -668,16 +678,19 @@
op.report(set(['ERROR']), 'Your user or scene information is not complete')
bpy.infoError = True
bpy.errorStartTime = time.time()
- sce.render.engine = 'RENDERFARMFI_RENDER'
+ bpy.context.scene.render.engine = 'RENDERFARMFI_RENDER'
return {'CANCELLED'}
try:
- authproxy = xmlrpc.client.ServerProxy(r'https://xmlrpc.renderfarm.fi/auth')
+ print("ore_upload start")
+ authproxy = xmlrpc.client.ServerProxy(rffi_xmlrpc_secure)
res = authproxy.auth.getSessionKey(ore.username, ore.hash)
key = res['key']
userid = res['userId']
- proxy = xmlrpc.client.ServerProxy(r'http://xmlrpc.renderfarm.fi/session')
+ print("ore_upload authenticated")
+ proxy = xmlrpc.client.ServerProxy(rffi_xmlrpc) #r'http://xmlrpc.renderfarm.fi/session')
proxy._ServerProxy__transport.user_agent = 'Renderfarm.fi Uploader/%s' % (bpy.CURRENT_VERSION)
res = proxy.session.createSession(userid, key)
+ print("session created", res)
sessionid = res['sessionId']
key = res['key']
res = run_upload(key, userid, sessionid, bpy.data.filepath)
@@ -700,16 +713,16 @@
res = proxy.session.submit(userid, res['key'], sessionid)
op.report(set(['INFO']), 'Submission sent to Renderfarm.fi')
except xmlrpc.client.Error as v:
- sce.render.engine = 'RENDERFARMFI_RENDER'
+ bpy.context.scene.render.engine = 'RENDERFARMFI_RENDER'
print('ERROR:', v)
op.report(set(['ERROR']), 'An error occurred while sending submission to Renderfarm.fi')
except Exception as e:
- sce.render.engine = 'RENDERFARMFI_RENDER'
+ bpy.context.scene.render.engine = 'RENDERFARMFI_RENDER'
print('Unhandled error:', e)
op.report(set(['ERROR']), 'An error occurred while sending submission to Renderfarm.fi')
- sce.render.engine = 'RENDERFARMFI_RENDER'
- doRefresh(context)
+ bpy.context.scene.render.engine = 'RENDERFARMFI_RENDER'
+ doRefresh(op)
return {'FINISHED'}
def setStatus(property, status):
@@ -752,61 +765,82 @@
def percentageComplete(self):
totFrames = self.endframe - self.startframe
+ done = 0
if totFrames != 0:
done = math.floor((self.frames / totFrames)*100)
- else:
- done = math.floor((self.frames / (totFrames+0.01))*100)
if done > 100:
done = 100
return done
-def xmlSessionsToOreSessions(sessions, queue):
- #bpy.ore_sessions = []
+def xmlSessionsToOreSessions(sessions, stage=None): #, queue):
output = []
- sessionFilter = []
- sessionFilter = sessions[queue]
- for sid in sessionFilter:
- s = sessionFilter[sid]['title']
- t = sessionFilter[sid]['timestamps']
- sinfo = OreSession(sid, s)
- if queue in ('completed', 'active'):
- sinfo.frames = sessionFilter[sid]['framesRendered']
- sinfo.startframe = sessionFilter[sid]['startFrame']
- sinfo.endframe = sessionFilter[sid]['endFrame']
- #bpy.ore_sessions.append(sinfo)
+ for session in sessions:
+ s = session['title']
+ print("\n\n\n")
+ print(session)
+ print("\n\n\n")
+ if stage:
+ s = s + ' (' + stage + ')'
+ #t = session['timestamps']
+ sinfo = OreSession(session['sessionId'], s)
+ if stage in ('Completed', 'Active'):
+ sinfo.frames = session['framesRendered']
+ sinfo.startframe = session['startFrame']
+ sinfo.endframe = session['endFrame']
output.append(sinfo)
return output
-def doRefresh(context):
- sce = context.scene
+def doRefresh(op, rethrow=False):
+ sce = bpy.context.scene
ore = sce.ore_render
try:
- userproxy = xmlrpc.client.ServerProxy(r'https://xmlrpc.renderfarm.fi/user')
- sessions = userproxy.user.getAllSessions(ore.username, ore.hash, 'completed')
+
+ proxy = xmlrpc.client.ServerProxy(rffi_xmlrpc_secure)
+ res = proxy.auth.getSessionKey(ore.username, ore.hash)
+ userid = res['userID']
+ proxy = xmlrpc.client.ServerProxy(rffi_xmlrpc)
+
bpy.ore_sessions = []
- bpy.ore_sessions = xmlSessionsToOreSessions(sessions, 'completed')
+
+ sessions = proxy.session.getSessions(userid, 'accept', 0, 100, 'full')
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list