Views
PLIP2
- Description - Plone Controller - a cross-platform application to handle start/stop of Plone instances.
- Proposer - andym"
- Seconder - ?
- Status - Still talking
Contents
Definitions
- Controller
- a widget to fiddle with Zope
Proposal
A GUI Controller is akin to the existing Controller for Plone and Zope for Windows. It provides a simple GUI interface to the Zope functions, such as stop, start, configure and monitor the server. There are a few areas of functionality:
- configure: the ability to change the configuration of the Zope instance without having to know rather arcane Z2.py command line switches. On Windows this would involve changing the service settings. This would give the user the ability to change ports, debug mode settings and so on.
- basic admin functions: start, restart, pack, create emegency user, uptime etc...
- monitor: see the current status of the Zope instance, how busy it is, what threads are being used, cache sizes, databases sizes, ZEO stats... the list goes on
The current Controller runs on Windows and the Mac, each instance has a different code base. The new Controller will be written mostly in Python using a cross platform toolkit for that will allow us to run the Controller on at least: Windows, Mac and Linux. Whilst there will obviously be some different code to handle different platforms, the aim is to reuse as much code and functionality as possible. This is a major motivation behind the scheme.
The Contoller should be able to connect to multiple instances from one location, regardless of location. Allowing one user to remotely manage many Zope or Plone instances.
Motivation
The current code for the Controller is annoying to manage and update, partly because of the language and because it is not cross platform. We wish to add new features to the code including:
- ability to remotely administer a Zope instance
- ZEO configuration and stats
- product configuration and installation.
Implementation
There are two obvious cross platform windowing solutions: wxWindows and pyQt. Since pyQt does not have a few non-commercial Windows license, it is recommended that we use wxWindows.
Communicating with the instance
- this is the biggest issue and depends upon the amount of information want to collect. At its simplest level for administration and such we need a simple Zope product to provide a wrapper around some internal functions to provide access. This can then be accessed via XML-RPC. However if we want to communicate very frequently with the Zope instance, this can provide a huge drain on resources. Perhaps a wrapping around a more efficient low level API such as SNMP might be an option, although we would lose our cross platform functionality.
- when possible all communication should be HTTPS, but if the user only has HTTP, then we don't have much choice.
It would be nice to apply this technology to Plone or Zope and the code will keep in mind simple skinning so the names can be changed.
References
Zope Controller: http://www.zope.org/Members/richard
Screenshots of the Plone Controller on Windows: http://plone.org/documentation/book/2