X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=geni%2Fplc.py;h=5b6bedf09cc7f29f28c268fd28f5955aa06eb653;hb=ab408b29200030c54a3dbaf6091cfe1b167fdcc9;hp=a1157907c415a5ee94a8e0edaa78a736f08f2eec;hpb=1d53363bdbaecfeefc63275c268dd60ea3167fcf;p=sfa.git diff --git a/geni/plc.py b/geni/plc.py index a1157907..5b6bedf0 100644 --- a/geni/plc.py +++ b/geni/plc.py @@ -1,3 +1,4 @@ +#!/usr/bin/python ## # GENI PLC Wrapper # @@ -36,10 +37,25 @@ from optparse import OptionParser from geni.util.hierarchy import Hierarchy from geni.util.trustedroot import TrustedRootList from geni.util.cert import Keypair, Certificate +from geni.util.config import Config from geni.registry import Registry from geni.aggregate import Aggregate from geni.slicemgr import SliceMgr +# 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 + crashlog = os.open('/var/log/geni.daemon', os.O_RDWR | os.O_APPEND | os.O_CREAT, 0644) + os.dup2(crashlog, 1) + os.dup2(crashlog, 2) + def main(): global AuthHierarchy global TrustedRoots @@ -57,10 +73,16 @@ def main(): help="run aggregate manager", default=False) parser.add_option("-v", "--verbose", dest="verbose", action="store_true", help="verbose mode", default=False) + parser.add_option("-d", "--daemon", dest="daemon", action="store_true", + help="Run as daemon.", default=False) (options, args) = parser.parse_args() - - key_file = "server.key" - cert_file = "server.cert" + + config = Config() + path = config.basepath + key_file = path + os.sep + "server.key" + cert_file = path + os.sep + "server.cert" + + if (options.daemon): daemon() if (os.path.exists(key_file)) and (not os.path.exists(cert_file)): # If private key exists and cert doesnt, recreate cert @@ -88,20 +110,20 @@ def main(): # start registry server if (options.registry): r = Registry("", registry_port, key_file, cert_file) - r.trusted_cert_list = TrustedRoots.get_list() - r.hierarchy = AuthHierarchy + #r.trusted_cert_list = TrustedRoots.get_list() + #r.hierarchy = AuthHierarchy r.start() # start aggregate manager if (options.am): a = Aggregate("", aggregate_port, key_file, cert_file) - a.trusted_cert_list = TrustedRoots.get_list() + #a.trusted_cert_list = TrustedRoots.get_list() a.start() # start slice manager if (options.sm): s = SliceMgr("", slicemgr_port, key_file, cert_file) - s.trusted_cert_list = TrustedRoots.get_list() + #s.trusted_cert_list = TrustedRoots.get_list() s.start() if __name__ == "__main__":