summaryrefslogtreecommitdiffstats
path: root/func
diff options
context:
space:
mode:
authorAdrian Likins <alikins@redhat.com>2007-09-25 18:27:02 -0400
committerAdrian Likins <alikins@redhat.com>2007-09-25 18:27:02 -0400
commit4412e92e6d8d2a8314bd82ef0f212e01b6183fb8 (patch)
tree33717b6dc6ff33778419b2c2aa5fa608de129899 /func
parenta5a42f54eddda1ea17cf6833f1c3120f4e43db28 (diff)
downloadthird_party-func-4412e92e6d8d2a8314bd82ef0f212e01b6183fb8.tar.gz
third_party-func-4412e92e6d8d2a8314bd82ef0f212e01b6183fb8.tar.xz
third_party-func-4412e92e6d8d2a8314bd82ef0f212e01b6183fb8.zip
move code.py and utils.py to func/
update scripts/funcd and func/certmaster to use them
Diffstat (limited to 'func')
-rwxr-xr-xfunc/certmaster.py12
-rwxr-xr-xfunc/codes.py25
-rwxr-xr-xfunc/utils.py47
3 files changed, 81 insertions, 3 deletions
diff --git a/func/certmaster.py b/func/certmaster.py
index 5305b68..89b68a0 100755
--- a/func/certmaster.py
+++ b/func/certmaster.py
@@ -28,7 +28,8 @@ import sha
#from func.server import codes
import func
import func.certs
-import func.minion.utils
+import func.codes
+import func.utils
class SimpleConfigFile(object):
"""simple config file object:
@@ -164,6 +165,11 @@ class CertMaster(object):
return False, '', ''
return False, '', ''
+
+class CertmasterXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer):
+ def __init__(self, args):
+ self.allow_reuse_address = True
+ SimpleXMLRPCServer.SimpleXMLRPCServer.__init__(self, args)
def serve(xmlrpcinstance):
@@ -172,7 +178,7 @@ def serve(xmlrpcinstance):
Code for starting the XMLRPC service.
"""
- server = SimpleXMLRPCServer.SimpleXMLRPCServer((xmlrpcinstance.cfg.listen_addr, xmlrpcinstance.cfg.listen_port))
+ server = CertmasterXMLRPCServer((xmlrpcinstance.cfg.listen_addr, xmlrpcinstance.cfg.listen_port))
server.logRequests = 0 # don't print stuff to console
server.register_instance(xmlrpcinstance)
server.serve_forever()
@@ -192,7 +198,7 @@ def main(argv):
cm = CertMaster('/etc/func/certmaster.conf', defaults)
if "daemon" in argv or "--daemon" in argv:
- func.minion.utils.daemonize("/var/run/certmaster.pid")
+ func.utils.daemonize("/var/run/certmaster.pid")
else:
print "serving...\n"
diff --git a/func/codes.py b/func/codes.py
new file mode 100755
index 0000000..c549709
--- /dev/null
+++ b/func/codes.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+"""
+func
+
+Copyright 2007, Red Hat, Inc
+See AUTHORS
+
+This software may be freely redistributed under the terms of the GNU
+general public license.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+"""
+
+import exceptions
+
+
+class FuncException(exceptions.Exception):
+ pass
+
+class InvalidMethodException(FuncException):
+ pass
+
+# FIXME: more sub-exceptions maybe
diff --git a/func/utils.py b/func/utils.py
new file mode 100755
index 0000000..724c847
--- /dev/null
+++ b/func/utils.py
@@ -0,0 +1,47 @@
+#!/usr/bin/python
+
+"""
+Copyright 2007, Red Hat, Inc
+see AUTHORS
+
+This software may be freely redistributed under the terms of the GNU
+general public license.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+"""
+
+import os
+import string
+import sys
+import traceback
+
+# this is kind of handy, so keep it around for now
+# but we really need to fix out server side logging and error
+# reporting so we don't need it
+def trace_me():
+ x = traceback.extract_stack()
+ bar = string.join(traceback.format_list(x))
+ return bar
+
+
+def daemonize(pidfile=None):
+ """
+ Daemonize this process with the UNIX double-fork trick.
+ Writes the new PID to the provided file name if not None.
+ """
+
+ print pidfile
+ pid = os.fork()
+ if pid > 0:
+ sys.exit(0)
+ os.setsid()
+ os.umask(0)
+ pid = os.fork()
+
+
+ if pid > 0:
+ if pidfile is not None:
+ open(pidfile, "w").write(str(pid))
+ sys.exit(0)