[Durian-svn] [2771] Some more fixes & tweaks, should be ready to use now after we add the extra nodes.

brecht institute at blender.org
Mon May 3 15:12:26 CEST 2010


Revision: 2771
          https://blenderinstitute.dyndns.org/durian-svn/?do=log&project=durian&path=/&rev=2771
Author:   brecht
Date:     2010-05-03 15:12:26 +0200 (Mon, 03 May 2010)
Log Message:
-----------
Some more fixes & tweaks, should be ready to use now after we add the extra nodes.

Modified Paths:
--------------
    frm/master_ui.py
    frm/new_master.py
    frm/new_node_command.sh
    frm/new_node_update_movie.sh

Modified: frm/master_ui.py
===================================================================
--- frm/master_ui.py	2010-05-03 13:07:26 UTC (rev 2770)
+++ frm/master_ui.py	2010-05-03 13:12:26 UTC (rev 2771)
@@ -21,6 +21,7 @@
 HTTPD_PORT = 8333
 RESTART = False
 GENERATE_AVI = False
+MOVE_OLD_FRAMES = None
 
 def latest_svn_info():
     command = "svnlook youngest " + REPO_PATH
@@ -118,8 +119,8 @@
     JOBS.append(job)
     Job.dump()
 
-    import new_master
-    new_master.move_old_frames(job)
+    if MOVE_OLD_FRAMES:
+        MOVE_OLD_FRAMES(job)
 
 def job_remove(id):
     # disabling first ensures that any slaves rendering this stop the job
@@ -273,15 +274,22 @@
             else:
                 output("""<button onclick='request("/exec", "%s")'>%s</button>""" % (function, name))
 
-        def return_file(path, content_type):
+        def return_file(path, content_type, maxlines=0):
             self.send_response(http.client.OK)
             self.send_header("Content-type", content_type)
             self.end_headers()
 
             try:
-                f = open(path, 'rb')
-                shutil.copyfileobj(f, self.wfile)
-                f.close()
+                if maxlines:
+                    f = open(path, 'r')
+                    lines = f.readlines()[-maxlines:]
+                    for line in lines:
+                        self.wfile.write(bytes(line, encoding='utf8'))
+                    f.close()
+                else:
+                    f = open(path, 'rb')
+                    shutil.copyfileobj(f, self.wfile)
+                    f.close()
             except IOError:
                 print("error opening file", path)
                 pass
@@ -293,7 +301,7 @@
         elif self.path == '/preview.png':
             return_file(os.path.join(FARM_DIR, 'slideshow/preview_small00001.png'), 'image/png')
         elif self.path.startswith("/logs"):
-            return_file(os.path.join(FARM_DIR, self.path[1:]), 'text/plain')
+            return_file(os.path.join(FARM_DIR, self.path[1:]), 'text/plain', 1000)
         else:
             # headers
             self.send_response(http.client.OK)
@@ -302,7 +310,7 @@
 
             # html begin
             output("<html><head>\n")
-            output("<meta http-equiv='refresh' content=30>\n")
+            output("<meta http-equiv='refresh' content=5>\n")
             output("<title>Durian Farm</title>\n")
             output("<link rel='stylesheet' href='master_ui.css' type='text/css'>\n")
             output("<script src='master_ui.js' type='text/javascript'></script>")

Modified: frm/new_master.py
===================================================================
--- frm/new_master.py	2010-05-03 13:07:26 UTC (rev 2770)
+++ frm/new_master.py	2010-05-03 13:12:26 UTC (rev 2771)
@@ -3,7 +3,7 @@
 # TODO
 # * auto-generate avis after job is done, non-blocking
 # * detect crashes so it does not get stuck on these frames
-# * httpd address already in use happens sometimes on kill
+# * link durian directory to durian_farm_svn on nodes
 
 import os
 import time
@@ -68,7 +68,10 @@
 
             for slave in master_ui.SLAVES:
                 if slave.ip == ip:
-                    slave.status = open(busy_path, "r").read().strip()
+                    try:
+                        slave.status = open(busy_path, "r").read().strip()
+                    except IOError:
+                        pass
 
 def jobs_status_update():
     total_done = 0
@@ -191,6 +194,8 @@
             if os.path.exists(image):
                 make_old(image)
 
+master_ui.MOVE_OLD_FRAMES = move_old_frames
+
 def is_busy(ip):
     return os.path.exists(log_file(ip, ext="busy"))
 
@@ -268,13 +273,13 @@
         # add/remove available slaves
         slaves = available_slaves()
         
-        for slave in sorted(slaves - slaves_prev):
+        for slave in slaves - slaves_prev:
             # new systems
             print("Adding:", slave.ip)
             slaves_state[slave.ip] = (None, 0, 0)
             changed = True
 
-        for slave in sorted(slaves_prev - slaves):
+        for slave in slaves_prev - slaves:
             # removed systems
             print("Removing:", slave.ip)
             clear_busy(slave.ip)
@@ -345,11 +350,14 @@
 
 def main():
     import time
-    while 1:
-        stage_in()
-    #clear_all()
-    # while 1:
-    #     time.sleep(2)
+    try:
+        while 1:
+            stage_in()
+        #clear_all()
+        # while 1:
+        #     time.sleep(2)
+    except KeyboardInterrupt:
+        pass
     master_ui.close()
 
 if __name__ == "__main__":

Modified: frm/new_node_command.sh
===================================================================
--- frm/new_node_command.sh	2010-05-03 13:07:26 UTC (rev 2770)
+++ frm/new_node_command.sh	2010-05-03 13:12:26 UTC (rev 2771)
@@ -1,4 +1,5 @@
 #!/bin/bash
 # wrapper so we can do a simple killall to stop any a command 
+echo $@
 $@
 

Modified: frm/new_node_update_movie.sh
===================================================================
--- frm/new_node_update_movie.sh	2010-05-03 13:07:26 UTC (rev 2770)
+++ frm/new_node_update_movie.sh	2010-05-03 13:12:26 UTC (rev 2771)
@@ -2,18 +2,20 @@
 PATH=$PATH:/shared/software/durian_farm
 export IP=`ip.sh`
 BUSY=$FARM_DIR/logs/$IP.busy
+SVN_IP="192.168.1.14"
 
 DIR="/media/data/durian_farm_svn"
 
 echo "Updating Movie Files" > $BUSY
 
-if [ -d $DIR ]; then
+if [ -d $DIR/pro ]; then
 	cd $DIR/pro
 	svn cleanup
+	svn revert -R .
 	$FARM_DIR/new_node_command.sh svn up --force -r$1
 else
-	mkdir $DIR
-	$FARM_DIR/new_node_command.sh svn co --force svn://biserver/durian/pro $DIR/pro
+	mkdir -p $DIR
+	$FARM_DIR/new_node_command.sh svn co --force -r$1 svn://$SVN_IP/durian/pro $DIR/pro
 fi
 
 rm $BUSY



More information about the Durian-svn mailing list