cubicweb/etwist/twctl.py
changeset 11057 0b59724cb3f2
parent 10898 c96d67251a9d
child 11989 309cf6a2c24f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cubicweb/etwist/twctl.py	Sat Jan 16 13:48:51 2016 +0100
@@ -0,0 +1,79 @@
+# copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
+#
+# This file is part of CubicWeb.
+#
+# CubicWeb is free software: you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation, either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License along
+# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
+"""cubicweb-clt handlers for twisted"""
+
+from cubicweb.toolsutils import CommandHandler
+from cubicweb.web.webctl import WebCreateHandler, WebUpgradeHandler
+
+# trigger configuration registration
+import cubicweb.etwist.twconfig # pylint: disable=W0611
+
+class TWCreateHandler(WebCreateHandler):
+    cfgname = 'twisted'
+
+class TWStartHandler(CommandHandler):
+    cmdname = 'start'
+    cfgname = 'twisted'
+
+    def start_server(self, config):
+        from cubicweb.etwist import server
+        return server.run(config)
+
+class TWStopHandler(CommandHandler):
+    cmdname = 'stop'
+    cfgname = 'twisted'
+
+    def poststop(self):
+        pass
+
+class TWUpgradeHandler(WebUpgradeHandler):
+    cfgname = 'twisted'
+
+
+try:
+    from cubicweb.server import serverctl
+    class AllInOneCreateHandler(serverctl.RepositoryCreateHandler,
+                                TWCreateHandler):
+        """configuration to get an instance running in a twisted web server
+        integrating a repository server in the same process
+        """
+        cfgname = 'all-in-one'
+
+        def bootstrap(self, cubes, automatic=False, inputlevel=0):
+            """bootstrap this configuration"""
+            serverctl.RepositoryCreateHandler.bootstrap(self, cubes, automatic, inputlevel)
+            TWCreateHandler.bootstrap(self, cubes, automatic, inputlevel)
+
+    class AllInOneStartHandler(TWStartHandler):
+        cmdname = 'start'
+        cfgname = 'all-in-one'
+        subcommand = 'cubicweb-twisted'
+
+    class AllInOneStopHandler(CommandHandler):
+        cmdname = 'stop'
+        cfgname = 'all-in-one'
+        subcommand = 'cubicweb-twisted'
+
+        def poststop(self):
+            pass
+
+    class AllInOneUpgradeHandler(TWUpgradeHandler):
+        cfgname = 'all-in-one'
+
+except ImportError:
+    pass