| author | Sandro Knauß <knauss@netzguerilla.net> |
| Fri, 30 Mar 2012 16:39:12 +0200 | |
| branch | devel |
| changeset 270 | 665c3ea02d35 |
| parent 237 | eb3501d2cdc9 |
| child 286 | ec5a280707f3 |
| permissions | -rw-r--r-- |
|
229
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
1 |
from twisted.application.service import Service, Application |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
2 |
from twisted.application import internet |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
3 |
from twisted.web import resource, server |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
4 |
from twisted.internet import reactor |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
5 |
from twisted.python import log |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
6 |
|
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
7 |
from sqlalchemy import create_engine, pool |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
8 |
|
|
270
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
9 |
from iro import config, install |
|
229
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
10 |
from iro.view import xmlrpc |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
11 |
from iro.model import setEngine, setPool |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
12 |
from iro.controller.pool import startPool, dbPool |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
13 |
|
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
14 |
class IroService(Service): |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
15 |
def startService(self): |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
16 |
log.msg("Starting service...") |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
17 |
engine = create_engine(config.main.dburl, |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
18 |
poolclass = pool.SingletonThreadPool, pool_size=dbPool.maxthreads, ) |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
19 |
|
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
20 |
setEngine(engine) |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
21 |
startPool(reactor) |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
22 |
setPool(dbPool) |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
23 |
reactor.callWhenRunning(config.readConfig) |
|
270
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
24 |
Service.startService(self) |
|
229
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
25 |
|
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
26 |
|
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
27 |
def get_application(): |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
28 |
app = Application("Iro") |
|
270
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
29 |
if not install.checkConfig(): |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
30 |
log.err("You can create a sample configuration file by running iro-install") |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
31 |
raise Exception("Please update or create your configuration file iro.conf.") |
|
229
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
32 |
config.init() |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
33 |
|
|
270
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
34 |
if not install.checkDatabaseConnection(): |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
35 |
raise Exception("Can't connect to database") |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
36 |
|
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
37 |
if not install.checkDatabase(): |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
38 |
raise Exception("Database not in right format. Please run iro-install --install") |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
39 |
|
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
40 |
routes = [ s for s in config.configParser.sections() if not s in ["main",]] |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
41 |
ao = install.getAllRoutes(routes, False) |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
42 |
for o in ao["orphand"]: |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
43 |
log.msg("Offer(%s) is orphand (no route using this offer)."%o) |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
44 |
if ao["added"]: |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
45 |
raise Exception("offerlist is not up-to-date.\nPlease run iro-install --update") |
|
665c3ea02d35
extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents:
237
diff
changeset
|
46 |
|
|
229
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
47 |
root = resource.Resource() |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
48 |
root = xmlrpc.appendResource(root) |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
49 |
|
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
50 |
v2 = resource.Resource() |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
51 |
v2 = xmlrpc.appendResource(root) |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
52 |
root.putChild('2.0', v2) |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
53 |
|
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
54 |
internet.TCPServer(config.main.port, server.Site(root)).setServiceParent(app) |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
55 |
IroService().setServiceParent(app) |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
56 |
return app |
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
57 |
|
|
1bd4c7f58b3f
createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
58 |
application = get_application() |