[Cherokee-commits] [1784] cherokee/trunk:

SVN at cherokee-project.com SVN at cherokee-project.com
Tue Aug 12 17:01:28 CEST 2008


Revision: 1784
          http://svn.cherokee-project.com/changeset/1784
Author:   alo
Date:     2008-08-12 17:01:28 +0200 (Tue, 12 Aug 2008)

Log Message:
-----------


Modified Paths:
--------------
    cherokee/trunk/ChangeLog
    cherokee/trunk/admin/CherokeeManagement.py
    cherokee/trunk/admin/Page.py
    cherokee/trunk/admin/pyscgi.py
    cherokee/trunk/admin/server.py

Modified: cherokee/trunk/ChangeLog
===================================================================
--- cherokee/trunk/ChangeLog	2008-08-12 12:17:31 UTC (rev 1783)
+++ cherokee/trunk/ChangeLog	2008-08-12 15:01:28 UTC (rev 1784)
@@ -1,5 +1,10 @@
 2008-08-12  Alvaro Lopez Ortega  <alvaro at alobbs.com>
 
+	* admin/pyscgi.py, admin/server.py, admin/Page.py,
+	admin/CherokeeManagement.py: Adds a option in the left hand menu
+	bar to allow users to reset the server at the same time that the
+	new configuration is written.
+
 	* admin/server.py (main): It should only bind to localhost. Fixes
 	http://code.google.com/p/cherokee/issues/detail?id=91
 

Modified: cherokee/trunk/admin/CherokeeManagement.py
===================================================================
--- cherokee/trunk/admin/CherokeeManagement.py	2008-08-12 12:17:31 UTC (rev 1783)
+++ cherokee/trunk/admin/CherokeeManagement.py	2008-08-12 15:01:28 UTC (rev 1784)
@@ -43,7 +43,6 @@
     global cherokee_management
     cherokee_management = None
 
-
 # Cherokee Management class
 #
 
@@ -55,9 +54,14 @@
     # Public
     #
 
-    def save (self, restart=True):
+    def save (self, restart=None):
         self._cfg.save()
-        if restart:
+
+        if not restart:
+            return
+        if restart.lower() == 'graceful':
+            self._restart (graceful=True)
+        else:
             self._restart()
 
     def is_alive (self):
@@ -145,11 +149,14 @@
             pid_file = os.path.join (CHEROKEE_VAR_RUN, "cherokee-guardian.pid")
         return self.__read_pid_file (pid_file)
 
-    def _restart (self):
+    def _restart (self, graceful):
         if not self._pid:
             return
         try:
-            os.kill (self._pid, signal.SIGUSR1)
+            if graceful:
+                os.kill (self._pid, signal.SIGHUP)
+            else:
+                os.kill (self._pid, signal.SIGUSR1)
         except:
             pass
 

Modified: cherokee/trunk/admin/Page.py
===================================================================
--- cherokee/trunk/admin/Page.py	2008-08-12 12:17:31 UTC (rev 1783)
+++ cherokee/trunk/admin/Page.py	2008-08-12 15:01:28 UTC (rev 1784)
@@ -2,6 +2,7 @@
 from Theme import *
 from Entry import *
 from configured import *
+from CherokeeManagement import *
         
 PAGE_BASIC_LAYOUT = """
     <div id="container">
@@ -44,13 +45,33 @@
 </ul>
 
 <br />
+
+<h2>Save Changes</h2>
+
+<div style="padding-top: 2px;">
+ <p>%(menu_save_desc)s</p>
+</div>
+
 <form id="form-apply" action="/apply" method="post">
- <div style="float: center;">
-  <a class="button" href="#" onclick="this.blur(); $('#form-apply').submit(); return false;"><span>Apply</span></a>
+ %(menu_save_dropdown)s
+
+ <div style="float: center; padding-top: 4px;">
+  <a class="button" href="#" onclick="this.blur(); $('#form-apply').submit(); return false;"><span>Save</span></a>
  </div>
 </form>
+
 """
 
+MENU_SAVE_IS_ALIVE = """
+  <div style="padding-top: 2px;">
+    <select name="restart">
+      <option value="graceful">Graceful restart</option>
+      <option value="hard">Hard restart</option>
+      <option value="no">Do not restart</option>
+    </select>
+  </div>
+"""
+
 class Page (WebComponent):
     def __init__ (self, id, cfg=None):
         WebComponent.__init__ (self, id, cfg)
@@ -75,6 +96,13 @@
     def __init__ (self, id, cfg):
         Page.__init__ (self, id, cfg)
 
+        manager = cherokee_management_get (cfg)
+        if manager.is_alive():
+            self.AddMacroContent ('menu_save_dropdown', MENU_SAVE_IS_ALIVE)
+            self.AddMacroContent ('menu_save_desc', 'Commit to disk and apply changes to the running server')
+        else:
+            self.AddMacroContent ('menu_save_dropdown', '')
+            self.AddMacroContent ('menu_save_desc', 'Commit all the changes permanently')
+
         self.AddMacroContent ('body', PAGE_MENU_LAYOUT)
         self.AddMacroContent ('menu', PAGE_MENU_MENU)
-

Modified: cherokee/trunk/admin/pyscgi.py
===================================================================
--- cherokee/trunk/admin/pyscgi.py	2008-08-12 12:17:31 UTC (rev 1783)
+++ cherokee/trunk/admin/pyscgi.py	2008-08-12 15:01:28 UTC (rev 1784)
@@ -41,7 +41,7 @@
 import errno
 import sys
 
-__version__ = '1.6'
+__version__ = '1.7'
 __author__  = 'Alvaro Lopez Ortega'
 
 
@@ -53,14 +53,17 @@
 
     def __safe_read (self, lenght):
          while True: 
-            try:
-                return self.rfile.read(lenght)
-            except socket.error, (err, strerr):
-                if err == errno.EAGAIN or \
-                   err == errno.EWOULDBLOCK or \
-                   err == errno.EINPROGRESS:
-                    continue
-            raise
+             try:
+                 chunk = self.rfile.read(lenght)
+                 return chunk
+             except socket.error, (err, strerr):
+                 if err == errno.EAGAIN or \
+                    err == errno.EWOULDBLOCK or \
+                    err == errno.EINPROGRESS:
+                     if chunk:
+                         return chunk
+                     continue
+             raise
 
     def send(self, buf):
         pending = len(buf)
@@ -110,6 +113,8 @@
     def handle_post (self):
         if not self.env.has_key('CONTENT_LENGTH'):
             return
+        if self.post:
+            return
         length = int(self.env['CONTENT_LENGTH'])
         self.post = self.__safe_read(length)
 

Modified: cherokee/trunk/admin/server.py
===================================================================
--- cherokee/trunk/admin/server.py	2008-08-12 12:17:31 UTC (rev 1783)
+++ cherokee/trunk/admin/server.py	2008-08-12 15:01:28 UTC (rev 1784)
@@ -94,8 +94,11 @@
             else:
                 page = PageVServer(cfg)
         elif uri.startswith('/apply'):
-            manager = cherokee_management_get (cfg)
-            manager.save()
+            self.handle_post()
+            post = Post(self.post)
+ 
+            manager = cherokee_management_get (cfg)            
+            manager.save (restart = post.get_val('restart'))
             cherokee_management_reset()
             body = "/"
         elif uri.startswith('/launch'):
@@ -140,7 +143,6 @@
         # Send result
         content = 'Status: %s\r\n' % (status) + \
                   headers + '\r\n' + body
-
         return self.send (content)
 
 
@@ -171,7 +173,7 @@
     global cfg
     cfg = Config(cfg_file)
     
-    print ("Server %s running.. PID=%d" % (VERSION, os.getpid()))
+    print ("Server %s running.. PID=%d Port=%d" % (VERSION, os.getpid(), scgi_port))
 
     # Iterate until the user exists
     try:

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.octality.com/pipermail/cherokee-commits/attachments/20080812/aa1db788/attachment.htm 


More information about the Cherokee-commits mailing list