diff options
| author | Michael DeHaan <mdehaan@redhat.com> | 2008-12-19 11:21:32 -0500 |
|---|---|---|
| committer | Michael DeHaan <mdehaan@redhat.com> | 2008-12-19 11:21:32 -0500 |
| commit | 6f9db8046a9e2621855fce115ddf404bc0f9bb9f (patch) | |
| tree | 656d7bd866d306dbce81ee1ca24210ec236f133d /scripts | |
| parent | f4d7c84ac53cc7859adec139c66dba2938b043cd (diff) | |
| parent | fa705f6e45731206ba8fb31099461014f8cf57ce (diff) | |
| download | cobbler-6f9db8046a9e2621855fce115ddf404bc0f9bb9f.tar.gz cobbler-6f9db8046a9e2621855fce115ddf404bc0f9bb9f.tar.xz cobbler-6f9db8046a9e2621855fce115ddf404bc0f9bb9f.zip | |
Merge branch 'devel'
Conflicts:
AUTHORS
Makefile
cobbler.spec
cobbler/config.py
cobbler/remote.py
cobbler/templar.py
setup.py
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/cobbler-ext-nodes | 22 | ||||
| -rwxr-xr-x | scripts/cobblerd | 47 | ||||
| -rwxr-xr-x | scripts/index.py | 21 | ||||
| -rwxr-xr-x | scripts/services.py | 27 |
4 files changed, 90 insertions, 27 deletions
diff --git a/scripts/cobbler-ext-nodes b/scripts/cobbler-ext-nodes new file mode 100644 index 00000000..f9510c0d --- /dev/null +++ b/scripts/cobbler-ext-nodes @@ -0,0 +1,22 @@ +#!/usr/bin/python + +from cobbler import yaml as yaml +import urlgrabber +import sys + +if __name__ == "__main__": + hostname = None + try: + hostname = sys.argv[1] + except: + print "usage: cobbler-ext-nodes <hostname>" + + if hostname is not None: + conf = open("/etc/cobbler/settings") + data = conf.read() + conf.close() + server = yaml.load(data).next()["server"] + url = "http://%s/cblr/svc/op/puppet/hostname/%s" % (server, hostname) + print urlgrabber.urlread(url) + + diff --git a/scripts/cobblerd b/scripts/cobblerd index 3a476468..4fbbfc9d 100755 --- a/scripts/cobblerd +++ b/scripts/cobblerd @@ -20,22 +20,11 @@ import cobbler.api as bootapi import cobbler.cobblerd as app import logging import cobbler.utils as utils +import cobbler.sub_process as sub_process -#logger = logging.getLogger("cobbler.cobblerd") -#logger.setLevel(logging.DEBUG) -#ch = logging.FileHandler("/var/log/cobbler/cobblerd.log") -#ch.setLevel(logging.DEBUG) -#formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") -#ch.setFormatter(formatter) -#logger.addHandler(ch) - -api = bootapi.BootAPI() -logger = api.logger_remote - -if __name__ == "__main__": - - ############################################# +import optparse +def daemonize_self(logger): # daemonizing code: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66012 logger.info("cobblerd started") try: @@ -69,10 +58,38 @@ if __name__ == "__main__": os.dup2(dev_null.fileno(), sys.stdout.fileno()) os.dup2(dev_null.fileno(), sys.stderr.fileno()) - ################# +def main(): + op = optparse.OptionParser() + op.set_defaults(daemonize=True, log_level=None) + op.add_option('-B', '--daemonize', dest='daemonize', action='store_true', + help='run in background (default)') + op.add_option('-F', '--no-daemonize', dest='daemonize', action='store_false', + help='run in foreground (do not daemonize)') + op.add_option('-f', '--log-file', dest='log_file', metavar='NAME', + help='file to log to') + op.add_option('-l', '--log-level', dest='log_level', metavar='LEVEL', + help='log level (ie. INFO, WARNING, ERROR, CRITICAL)') + + options, args = op.parse_args() + + log_settings = {} + if options.log_file: + log_settings['log_file'] = options.log_file + if options.log_level: + log_level = logging.getLevelName(options.log_level) + if not isinstance(log_level, int): + op.error('Unrecognized log level %r given') + log_settings['log_level'] = log_level + api = bootapi.BootAPI(log_settings=log_settings) + logger = api.logger + + if options.daemonize: + daemonize_self(logger) try: app.core(logger=logger) except: utils.log_exc(logger) +if __name__ == "__main__": + main() diff --git a/scripts/index.py b/scripts/index.py index 160d0b51..26b86f36 100755 --- a/scripts/index.py +++ b/scripts/index.py @@ -21,6 +21,7 @@ import cgi import os from cobbler.webui import CobblerWeb import cobbler.utils as utils +import cobbler.yaml as yaml XMLRPC_SERVER = "http://127.0.0.1:25152" # was http://127.0.0.1/cobbler_api_rw" @@ -105,19 +106,25 @@ def handler(req): for x in fs.keys(): form[x] = str(fs.get(x,'default')) - http_port = utils.parse_settings_lame("http_port",default="80") + fd = open("/etc/cobbler/settings") + data = fd.read() + fd.close() + ydata = yaml.load(data).next() + remote_port = ydata.get("xmlrpc_rw_port", 25152) + + mode = form.get('mode','index') # instantiate a CobblerWeb object cw = CobblerWeb.CobblerWeb( apache = apache, token = token, base_url = "/cobbler/web/", - server = "http://127.0.0.1:%s/cobbler_api_rw" % http_port + mode = mode, + server = "http://127.0.0.1:%s" % remote_port ) # check for a valid path/mode # handle invalid paths gracefully - mode = form.get('mode','index') if mode in cw.modes(): func = getattr( cw, mode ) content = func( **form ) @@ -129,8 +136,12 @@ def handler(req): req.content_type = "text/html;charset=utf-8" req.write(unicode(content).encode('utf-8')) - return apache.OK - + if not content.startswith("# ERROR") and content.find("<!-- ERROR -->") == -1: + return apache.OK + else: + # catch Cheetah errors and web errors + return apache.HTTP_ERROR + #====================================================== def authenhandler(req): diff --git a/scripts/services.py b/scripts/services.py index 97a6f89c..051d5b65 100755 --- a/scripts/services.py +++ b/scripts/services.py @@ -20,6 +20,7 @@ import xmlrpclib import cgi import os from cobbler.services import CobblerSvc +import cobbler.yaml as yaml import cobbler.utils as utils #======================================= @@ -57,10 +58,8 @@ def handler(req): for t in tokens: if label: field = t - apache.log_error("field %s" % field) else: form[field] = t - apache.log_error("adding %s to %s" % (field,t)) label = not label # TESTING.. @@ -70,12 +69,16 @@ def handler(req): #form["REMOTE_MAC"] = req.subprocess_env.get("HTTP_X_RHN_PROVISIONING_MAC_0",None) form["REMOTE_MAC"] = form.get("HTTP_X_RHN_PROVISIONING_MAC_0",None) - http_port = utils.parse_settings_lame("http_port",default="80") - + fd = open("/etc/cobbler/settings") + data = fd.read() + fd.close() + ydata = yaml.load(data).next() + remote_port = ydata.get("xmlrpc_port",25151) + # instantiate a CobblerWeb object cw = CobblerSvc( apache = apache, - server = "http://127.0.0.1:%s/cobbler_api" % http_port + server = "http://127.0.0.1:%s" % remote_port ) # check for a valid path/mode @@ -88,7 +91,17 @@ def handler(req): # apache.log_error("%s:%s ... %s" % (my_user, my_uri, str(form))) req.content_type = "text/plain;charset=utf-8" content = unicode(content).encode('utf-8') - req.write(content) - return apache.OK + if content.find("# *** ERROR ***") != -1: + req.write(content) + apache.log_error("possible cheetah template error") + return apache.HTTP_ERROR + elif content.find("# profile not found") != -1 or content.find("# system not found") != -1 or content.find("# object not found") != -1: + req.content_type = "text/html;charset=utf-8" + req.write(" ") + apache.log_error("content not found") + return apache.HTTP_NOT_FOUND + else: + req.write(content) + return apache.OK |
