[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