X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fserver%2Fsfa-start.py;h=cb14adb3335e6626a7a61ccf44f82b1060df592a;hb=31cc4fa991896f000abb106916662923f37bc3a6;hp=bca06ee80da80a4b12dbacd077e9439d35d90b32;hpb=04a3f20dc71bf8b3f96b1e3172623aa346a638a7;p=sfa.git diff --git a/sfa/server/sfa-start.py b/sfa/server/sfa-start.py index bca06ee8..cb14adb3 100755 --- a/sfa/server/sfa-start.py +++ b/sfa/server/sfa-start.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python2 # # PlanetLab SFA implementation # @@ -25,54 +25,32 @@ # TODO: Can all three servers use the same "registry" certificate? ## -# xxx todo not in the config yet -component_port = 12346 import os import os.path import traceback import sys from optparse import OptionParser -from sfa.util.sfalogging import logger +from sfa.util.sfalogging import init_logger, logger from sfa.util.xrn import get_authority, hrn_to_urn from sfa.util.config import Config + from sfa.trust.gid import GID from sfa.trust.trustedroots import TrustedRoots from sfa.trust.certificate import Keypair, Certificate from sfa.trust.hierarchy import Hierarchy from sfa.trust.gid import GID + from sfa.server.sfaapi import SfaApi from sfa.server.registry import Registries from sfa.server.aggregate import Aggregates -from sfa.client.return_value import ReturnValue -# after http://www.erlenstar.demon.co.uk/unix/faq_2.html - - -def daemon(): - """Daemonize the current process.""" - if os.fork() != 0: - os._exit(0) - os.setsid() - if os.fork() != 0: - os._exit(0) - os.umask(0) - devnull = os.open(os.devnull, os.O_RDWR) - os.dup2(devnull, 0) - # xxx fixme - this is just to make sure that nothing gets stupidly lost - - # should use devnull - logdir = '/var/log/httpd' - # when installed in standalone we might not have httpd installed - if not os.path.isdir(logdir): - os.mkdir('/var/log/httpd') - crashlog = os.open('%s/sfa_access_log' % logdir, os.O_RDWR | os.O_APPEND | os.O_CREAT, 0644) - os.dup2(crashlog, 1) - os.dup2(crashlog, 2) +from sfa.client.return_value import ReturnValue def install_peer_certs(server_key_file, server_cert_file): """ - Attempt to install missing trusted gids and db records for + Attempt to install missing trusted gids and db records for our federated interfaces """ # Attempt to get any missing peer gids @@ -128,18 +106,18 @@ def install_peer_certs(server_key_file, server_cert_file): gid.save_to_file(gid_filename, save_parents=True) message = "installed trusted cert for %s" % new_hrn # log the message - api.logger.info(message) - except: + logger.info(message) + except Exception: message = "interface: %s\tunable to install trusted gid for %s" % \ (api.interface, new_hrn) - api.logger.log_exc(message) + logger.log_exc(message) # doesnt matter witch one update_cert_records(peer_gids) def update_cert_records(gids): """ - Make sure there is a record in the registry for the specified gids. + Make sure there is a record in the registry for the specified gids. Removes old records from the db. """ # import db stuff here here so this module can be loaded by PlcComponentApi @@ -166,11 +144,12 @@ def update_cert_records(gids): record = dbsession.query(RegRecord).filter_by( hrn=hrn, type=type, pointer=-1).first() if not record: - record = RegRecord(dict={'type': type, - 'hrn': hrn, - 'authority': get_authority(hrn), - 'gid': gid.save_to_string(save_parents=True), - }) + record = RegRecord( + dict={'type': type, + 'hrn': hrn, + 'authority': get_authority(hrn), + 'gid': gid.save_to_string(save_parents=True), + }) dbsession.add(record) dbsession.commit() @@ -180,19 +159,15 @@ def main(): parser = OptionParser(usage="sfa-start.py [options]") parser.add_option("-r", "--registry", dest="registry", action="store_true", help="run registry server", default=False) - parser.add_option("-s", "--slicemgr", dest="sm", action="store_true", - help="run slice manager", default=False) parser.add_option("-a", "--aggregate", dest="am", action="store_true", help="run aggregate manager", default=False) - parser.add_option("-c", "--component", dest="cm", action="store_true", - help="run component server", default=False) - parser.add_option("-t", "--trusted-certs", dest="trusted_certs", action="store_true", + parser.add_option("-t", "--trusted-certs", + dest="trusted_certs", action="store_true", help="refresh trusted certs", default=False) - parser.add_option("-d", "--daemon", dest="daemon", action="store_true", - help="Run as daemon.", default=False) (options, args) = parser.parse_args() config = Config() + init_logger('server') logger.setLevelFromOptVerbose(config.SFA_API_LOGLEVEL) # ge the server's key and cert @@ -204,8 +179,6 @@ def main(): # ensure interface cert is present in trusted roots dir trusted_roots = TrustedRoots(config.get_trustedroots_dir()) trusted_roots.add_gid(GID(filename=server_cert_file)) - if (options.daemon): - daemon() if options.trusted_certs: install_peer_certs(server_key_file, server_cert_file) @@ -223,21 +196,9 @@ def main(): server_key_file, server_cert_file) a.start() - # start slice manager - if (options.sm): - from sfa.server.slicemgr import SliceMgr - s = SliceMgr("", config.SFA_SM_PORT, server_key_file, server_cert_file) - s.start() - - if (options.cm): - from sfa.server.component import Component - c = Component("", config.component_port, - server_key_file, server_cert_file) -# c = Component("", config.SFA_COMPONENT_PORT, server_key_file, server_cert_file) - c.start() - if __name__ == "__main__": try: main() - except: - logger.log_exc_critical("SFA server is exiting") + except Exception: + logger.log_exc("SFA server is exiting") + exit(1)