bin/iro-install
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 24 Aug 2012 01:05:06 +0200
branchdevel
changeset 294 0e75bd39767d
parent 284 f3be8a77b3e2
permissions -rwxr-xr-x
adding LICENSE to all files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
237
eb3501d2cdc9 update setup.py file and moving some scripts to subdirs
Sandro Knauß <knauss@netzguerilla.net>
parents: 229
diff changeset
     1
#!/usr/bin/env python2.7
294
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
     2
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
     3
# Copyright (c) 2012 netzguerilla.net <iro@netzguerilla.net>
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
     4
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
     5
# This file is part of Iro.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
     6
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
     7
# Permission is hereby granted, free of charge, to any person obtaining a copy of
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
     8
# this software and associated documentation files (the "Software"), to deal in
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
     9
# the Software without restriction, including without limitation the rights to use,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    10
# copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    11
# #Software, and to permit persons to whom the Software is furnished to do so,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    12
# subject to the following conditions:
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    13
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    14
# The above copyright notice and this permission notice shall be included in
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    15
# all copies or substantial portions of the Software.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    16
# 
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    17
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    18
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    19
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    20
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    21
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    22
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
0e75bd39767d adding LICENSE to all files
Sandro Knauß <knauss@netzguerilla.net>
parents: 284
diff changeset
    23
227
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
from twisted.python import log
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
from sqlalchemy import create_engine, pool
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
from sqlalchemy.exc import ArgumentError
284
f3be8a77b3e2 iro-install: using nicer output
Sandro Knauß <knauss@netzguerilla.net>
parents: 270
diff changeset
    28
import sys,os
227
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
import logging
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    32
from iro.controller.pool import dbPool
237
eb3501d2cdc9 update setup.py file and moving some scripts to subdirs
Sandro Knauß <knauss@netzguerilla.net>
parents: 229
diff changeset
    33
from iro import config, __version__, install
227
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    35
observer = log.PythonLoggingObserver()
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    36
observer.start()
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    37
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s')
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    40
import argparse
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    41
284
f3be8a77b3e2 iro-install: using nicer output
Sandro Knauß <knauss@netzguerilla.net>
parents: 270
diff changeset
    42
parser = argparse.ArgumentParser(description='Iro installer.')
f3be8a77b3e2 iro-install: using nicer output
Sandro Knauß <knauss@netzguerilla.net>
parents: 270
diff changeset
    43
parser.add_argument('-v', '--version', action='version', version="%s %s"%(os.path.basename(sys.argv[0]),__version__))
227
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
parser.add_argument('--install', action='store_true',
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    45
                           help='will create the right database layout.')
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    46
parser.add_argument('--update', action='store_true',
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    47
                           help='will install all routes and providers.')
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    48
args = parser.parse_args()
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    49
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    50
if not install.checkConfig():
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    51
    install.createSampleConfig()
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    52
    logging.info("Please edit iro.conf")
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    53
    sys.exit(1)
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    54
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    55
config.init()
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    56
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    57
try:
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    58
    engine = create_engine(config.main.dburl,
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    59
           poolclass = pool.SingletonThreadPool,  pool_size=dbPool.maxthreads, )
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    60
except ArgumentError:
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    61
    logging.error("Can't connect to database")
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    62
    logging.info("Please edit iro.conf")
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    63
    sys.exit(1)
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    64
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    65
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    66
if not install.checkDatabaseConnection():
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    67
    logging.error("Can't connect to database")
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    68
    logging.info("Please edit iro.conf")
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    69
    sys.exit(1)
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    70
    
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    71
if not install.checkDatabase():
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    72
    logging.error("Database not in right format.")
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    73
    if args.install:
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    74
        install.createDatabase()
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    75
        logging.info("Database layout created.")
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    76
    else:
284
f3be8a77b3e2 iro-install: using nicer output
Sandro Knauß <knauss@netzguerilla.net>
parents: 270
diff changeset
    77
        logging.info("Please edit iro.conf and run %s --install"%os.path.basename(sys.argv[0]))
227
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    78
        sys.exit(1)
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    79
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    80
routes = [ s for s in config.configParser.sections() if not s in ["main",]]
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    81
ao =  install.getAllRoutes(routes, False)
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    82
for o in  ao["orphand"]:
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    83
    logging.info("Offer(%s) is orphand (no route using this offer)."%o)
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    84
if ao["added"]:
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    85
    if args.install or args.update:
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    86
        ao = install.getAllRoutes(routes,True)
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    87
        for a in  ao["added"]:
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    88
            logging.info("Added Offer(%s)"%a)
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    89
        logging.info('Updated offerlist.')
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    90
    else:
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    91
        logging.warning('offerlist is not up-to-date.')
284
f3be8a77b3e2 iro-install: using nicer output
Sandro Knauß <knauss@netzguerilla.net>
parents: 270
diff changeset
    92
        logging.info("Please run %s --update"%os.path.basename(sys.argv[0]))
270
665c3ea02d35 extras/iro.tac: now using check functions
Sandro Knauß <knauss@netzguerilla.net>
parents: 237
diff changeset
    93
        sys.exit(1)
227
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    94
237
eb3501d2cdc9 update setup.py file and moving some scripts to subdirs
Sandro Knauß <knauss@netzguerilla.net>
parents: 229
diff changeset
    95
logging.info("You can just start your iro server.")
229
1bd4c7f58b3f createing iro-service.tac
Sandro Knauß <knauss@netzguerilla.net>
parents: 227
diff changeset
    96
227
3379950505e6 adding iro.py
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    97