summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@redhat.com>2008-12-19 11:21:32 -0500
committerMichael DeHaan <mdehaan@redhat.com>2008-12-19 11:21:32 -0500
commit6f9db8046a9e2621855fce115ddf404bc0f9bb9f (patch)
tree656d7bd866d306dbce81ee1ca24210ec236f133d /scripts
parentf4d7c84ac53cc7859adec139c66dba2938b043cd (diff)
parentfa705f6e45731206ba8fb31099461014f8cf57ce (diff)
downloadcobbler-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-nodes22
-rwxr-xr-xscripts/cobblerd47
-rwxr-xr-xscripts/index.py21
-rwxr-xr-xscripts/services.py27
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