extras/iro.tac
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 06 Jul 2012 12:22:15 +0200
branchdevel
changeset 282 50cc13814bfb
parent 270 665c3ea02d35
child 286 ec5a280707f3
permissions -rw-r--r--
make iro working with python v2.6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()