[Durian-svn] [5977] farm scripts: various updates, multiple renders per slave, magic overview.blend

brecht institute at blender.org
Tue Jun 29 17:00:28 CEST 2010


Revision: 5977
          https://blenderinstitute.dyndns.org/durian-svn/?do=log&project=durian&path=/&rev=5977
Author:   brecht
Date:     2010-06-29 17:00:28 +0200 (Tue, 29 Jun 2010)
Log Message:
-----------
farm scripts: various updates, multiple renders per slave, magic overview.blend

Modified Paths:
--------------
    frm/blender_exr_to_avi.py
    frm/cron_rsync_finals.sh
    frm/ips.py
    frm/master_avi_gen.py
    frm/master_ui.css
    frm/master_ui.py
    frm/new_blend_2_frames.py
    frm/new_blender_setup.py
    frm/new_master.py
    frm/new_node_update_clear.sh
    frm/new_node_update_frames.sh
    frm/new_node_update_movie.sh

Modified: frm/blender_exr_to_avi.py
===================================================================
--- frm/blender_exr_to_avi.py	2010-06-29 14:47:54 UTC (rev 5976)
+++ frm/blender_exr_to_avi.py	2010-06-29 15:00:28 UTC (rev 5977)
@@ -9,8 +9,8 @@
 blendfile = sys.argv[-1]
 # image_dir = "/shared/software/durian_farm/frames/03.4f/"
 
-if not image_dir.endswith(os.path.sep):
-    image_dir += os.path.sep
+if not image_dir.endswith("/"):
+    image_dir += "/"
 
 frames = new_blend_2_frames.blend_2_frames(blendfile)
 files = []

Modified: frm/cron_rsync_finals.sh
===================================================================
--- frm/cron_rsync_finals.sh	2010-06-29 14:47:54 UTC (rev 5976)
+++ frm/cron_rsync_finals.sh	2010-06-29 15:00:28 UTC (rev 5977)
@@ -1,3 +1,4 @@
+#!/bin/bash
 TMPFILE=`mktemp`
 find /shared/render/ -name "*.exr" | grep final > $TMPFILE
 rsync --progress -ave 'ssh -p 22' --files-from=$TMPFILE / guest at 192.168.3.18:/media/data/render/

Modified: frm/ips.py
===================================================================
--- frm/ips.py	2010-06-29 14:47:54 UTC (rev 5976)
+++ frm/ips.py	2010-06-29 15:00:28 UTC (rev 5977)
@@ -1,5 +1,23 @@
 ips_all = []
 
+ips_all += ["192.168.3.103"] # Ben 
+ips_all += ["192.168.3.26"] # Brecht
+ips_all += ["192.168.3.10"] # Campbell
+ips_all += ["192.168.3.23"] # Colin
+ips_all += ["192.168.3.30"] # Display System
+ips_all += ["192.168.3.11"] # Dolf
+ips_all += ["192.168.3.18"] # Pablo
+ips_all += ["192.168.3.27"] # Soenke
+ips_all += ["192.168.3.29"] # Weekly
+
+#ips_all += ["192.168.3.105"] # Unknown
+ips_all += ["192.168.3.107"] # Unknown
+ips_all += ["192.168.3.13"] # Beourne
+ips_all += ["192.168.3.22"] # Unknown
+ips_all += ["192.168.3.24"] # Unknown
+ips_all += ["192.168.3.28"] # Unknown
+
+
 '''
 ips_all += ["192.168.1.11"] # brecht's/amd
 ips_all += ["192.168.1.12"] # ben
@@ -16,9 +34,4 @@
 ips_all += ["192.168.1.27"] # nathan
 '''
 
-ips_all += ["192.168.1.205"]
-ips_all += ["192.168.1.206"]
-ips_all += ["192.168.1.207"]
-ips_all += ["192.168.1.208"]
-
 ips_all_farm = ips_all[:]

Modified: frm/master_avi_gen.py
===================================================================
--- frm/master_avi_gen.py	2010-06-29 14:47:54 UTC (rev 5976)
+++ frm/master_avi_gen.py	2010-06-29 15:00:28 UTC (rev 5977)
@@ -9,7 +9,7 @@
 
 
 # assume guest
-BIN = "/shared/bin/blender_farm.sh"
+BIN = "/shared/bin/blender_avi.sh"
 SCRIPT = os.path.join(FARM_DIR, "blender_exr_to_avi.py")
 
 def file_date(path):

Modified: frm/master_ui.css
===================================================================
--- frm/master_ui.css	2010-06-29 14:47:54 UTC (rev 5976)
+++ frm/master_ui.css	2010-06-29 15:00:28 UTC (rev 5977)
@@ -1,8 +1,9 @@
 body {
 	background-color:#000;
-	color: #ddd;
-	font-size:11px;
+	color: #cdc;
+	font-size:10px;
 	font-family: "Lucida Sans","Lucida Sans Unicode","Lucida Grande",Lucida,sans-serif;
+	cursor: default;
 }
 a {
 	text-decoration:none;
@@ -21,6 +22,7 @@
 h2 {
     font-size:120%;
     margin: 1px; 
+    color: #aaa;
 
 }
 
@@ -34,7 +36,9 @@
 h3 {
        clear:both;
         font-size:150%;
+	letter-spacing: -1px;
         margin: 2px 0 5px 0;
+	color: #7a7;
 }
 
 hr {
@@ -63,7 +67,6 @@
 
 .toggle {
 	text-decoration: underline;
-	cursor: pointer;
 }
 
 .cache {
@@ -81,12 +84,12 @@
 
 img.thumb {
 	display: none;
-	cursor: pointer;
+
 }
 
 span.thumb {
 	text-decoration: underline;
-	cursor: pointer;
+
 }
 
 input {
@@ -110,39 +113,48 @@
        clear:both;
 }
 
+table {
+    border-color: #000;
+    border-spacing: 0px;
+    border-collapse:collapse;
+    border-radius: 6px;
+    -moz-border-radius: 6px;
+    font-size: 120%;
+}
+
 #table-jobs {
-	background-color: #222;
-	border-radius: 6px;
-	-moz-border-radius: 6px;
-	padding: 1px;
-       width: 100%;
-       color: #ccc;
+    background-color: #111;
+    width: 100%;
+    color: #aaa;
 }
 
 #table-jobs td {
-	border-bottom: thin solid #333;
-       word-wrap:break-word;
-       padding-left: 10px;
+	border-bottom: thin solid #222;
+    word-wrap: break-word;
+    padding: 0px 0px 0px 5px;
 }
 
 #td-toggle {
        width: 12px !important;
-       background-color: #000 !important;
+       background-color: #000 ;
        text-align: center;
        padding: 1px 10px 1px 0px;
-/*       border: thin solid #333; */
 }
 
+#td-toggle:hover {
+       background-color: #800;
+}
+
 thead{
        font-size:80%;
-	color: #ccc;
+	color: #aca;
 	padding: 0px;
-       background-color: #111 !important;
+    background-color: #111 !important;
 }
 
 tr {
-       font-size: 12px !important;
-	background-color: #111;
+	letter-spacing: -1px;
+	background-color: #101313; 
 }
 
 tr:hover {
@@ -151,23 +163,31 @@
        color: #fff;
 }
 
-.job-dir {color: #aaa}
-.job-file {font-weight: bold}
+.job-dir {color: #666}
+.job-file {font-weight: solid}
 
 .job-add{
     width:140px;
     font-weight: bold;
-    border: 2px solid #840;
-    background: #620;
+    border: 2px solid #500;
+    background: #800;
     cursor: pointer;
+    padding:2px;
+       text-shadow: 0px 0px 4px #000;
 }
 
+.job-add:hover{
+    border: 2px solid #800;
+    background: #b11;
+       color: #fff;
+}
+
 #status-disabled {
 	text-align:center;
-	background-color: #880000 !important;
-	color: #fff;
-       text-shadow: 1px 1px 3px #000;
-       cursor: default;
+	background-color: #770000 !important;
+	color: #fff !important;
+    text-shadow: 1px 1px 3px #000;
+    padding:0px;
 }
 #status-disabled:hover {
 	background-color: #990000 !important;
@@ -180,7 +200,6 @@
 	color: #fff;
 	border: thin solid #000;
        text-shadow: 1px 1px 3px #000;
-       cursor: default;
 }
 
 #status-inprogress:hover {
@@ -194,7 +213,6 @@
 	color: #fff;
 	font-weight: bold;
        text-shadow: 1px 1px 3px #000;
-       cursor: default;
 }
 
 #status-done:hover {

Modified: frm/master_ui.py
===================================================================
--- frm/master_ui.py	2010-06-29 14:47:54 UTC (rev 5976)
+++ frm/master_ui.py	2010-06-29 15:00:28 UTC (rev 5977)
@@ -16,6 +16,8 @@
 from render_dirs import GEN_AVI_LOG
 from render_dirs import GEN_AVI_BUSY
 
+#FARM_DIR = "/tmp"
+
 TOTAL_PROGRESS = "No statistics yet."
 JOBS = []
 SLAVES = []
@@ -23,11 +25,13 @@
 SLAVES_FILE = os.path.join(FARM_DIR, "slaves.pkl")
 REPO_PATH = "/media/data/svnroot/durian"
 HTTPD_IP = "192.168.3.14"
+#HTTPD_IP = "127.0.0.1"
 HTTPD_PORT = 8333
 RESTART = False
 GENERATE_AVI = False
 STOP_AVI = False
 MOVE_OLD_FRAMES = None
+OVERVIEW_BLEND = "overview.blend"
 
 def latest_svn_info():
     command = "svnlook youngest " + REPO_PATH
@@ -41,7 +45,7 @@
             p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
             log = p.communicate()[0].decode("utf-8").strip()
 
-            logs += "revision %d: %s<br/>\n" % (i, log)
+            logs += "[%d]: %s<br/>\n" % (i, log)
 
         return logs, rev
     else:
@@ -124,9 +128,10 @@
         if job.id == id: # only one job per file supported
             return
 
-    command = "svn up -r %s %s" % (revision, os.path.join(FARM_DIR, id))
-    print(command)
-    os.system(command)
+    if id != OVERVIEW_BLEND:
+        command = "svn up -r %s %s" % (revision, os.path.join(FARM_DIR, id))
+        print(command)
+        os.system(command)
 
     job = Job(id, revision, quality)
     JOBS.append(job)
@@ -266,6 +271,9 @@
         def title(text):
             output("<h1>" + text + "</h1>\n")
 
+        def subtitle(text):
+            output("<h2>" + text + "</h2>\n")
+
         def section(text):
             output("<h3>" + text + "</h3>\n")
 
@@ -341,8 +349,11 @@
             return_file(os.path.join(FARM_DIR, self.path[1:]), 'text/plain', 1000)
         elif self.path == '/graph.html':
             return_file('frames/rrd/graph.html', 'text/html')
+        elif self.path.startswith("/progress_"):
+            return_file('progressbar%s' % self.path, 'image/png')
         elif self.path.endswith('png'):
             return_file('frames/rrd/%s' % self.path, 'image/png')
+
         else:
             # headers
             self.send_response(http.client.OK)
@@ -368,7 +379,7 @@
                 output("<td id='td-toggle'>")
                 checkbox('job_set_enabled', job.id, job.enabled)
                 output("</td>\n")
-                output("<td>" + job.id + "</td>\n")
+                output("<td><span class='job-dir'>" + job.id[:11] + "</span><span class='job-file'>" + job.id[11:] + "</span></td>\n")
                 output("<td>" + job.revision + "</td>\n")
                 output("<td>" + job.quality + "</td>\n")
                 if job.status=='Disabled':
@@ -397,7 +408,7 @@
 
             output("<form method='post' action='/job_add'>\n")
             output("<input name='id' value='' size='50'/>\n")
-            output("<input name='latest' type='checkbox' onchange='this.form.revision.disabled = this.checked;'>Latest</input>\n")
+            output("<input name='latest' checked='yes' type='checkbox' onchange='this.form.revision.disabled = this.checked;'>Latest</input>\n")
             output("<input name='revision' value='%s' size='10'/>\n" % (revision,))
             output("<select name='quality'>\n")
             for option in Job.quality_types:
@@ -406,36 +417,53 @@
                 output("\t<option %s value='%s'>%s</option>\n" % (state, option, option))
             output("</select>\n")
 
-            output("<input type='submit' value='Add Job'/>\n")
+            output("<input type='submit' class='job-add' value='Add Job'/>\n")
             output("</form>\n")
 
             output("<hr/>\n")
 
-            output("<div id='extrainfo'>\n")
+            output("<div id='progressbars'>\n")
+            section("Per Scene Progress")
+            subtitle("Scene 01 <img src='progress_01.png' />")
+            subtitle("Scene 02 <img src='progress_02.png' />")
+            subtitle("Scene 03 <img src='progress_03.png' />")
+            subtitle("Scene 04 <img src='progress_04.png' />")
+            subtitle("Scene 05 <img src='progress_05.png' />")
+            subtitle("Scene 06 <img src='progress_06.png' />")
+            subtitle("Scene 07 <img src='progress_07.png' />")
+            subtitle("Scene 08 <img src='progress_08.png' />")
+            subtitle("Scene 09 <img src='progress_09.png' />")
+            output("</div>")
+
+            # latest image
+            output("<div id='latest-render'>")
+            section("Latest Render")
+            output("<a href='preview_big.png' target='_blank'><img src='preview.png' alt='latest render image'></a>")

@@ Diff output truncated at 10240 characters. @@


More information about the Durian-svn mailing list