---
aux/anamon.init | 101 ++++++++++++++++++++++++++++++++++++
cobbler.spec | 2 +
setup.py | 5 +-
triggers/clear_anamon_logs.trigger | 39 ++++++++++++++
4 files changed, 145 insertions(+), 2 deletions(-)
create mode 100644 aux/anamon.init
create mode 100755 triggers/clear_anamon_logs.trigger
diff --git a/aux/anamon.init b/aux/anamon.init
new file mode 100644
index 0000000..b2fd982
--- /dev/null
+++ b/aux/anamon.init
@@ -0,0 +1,101 @@
+#!/bin/bash
+## BEGIN INIT INFO
+# Provides: anamon
+# Default-Start: 3 5
+# Default-Stop: 0 1 2 4 6
+# Required-Start:
+# Should-Start: $network
+# Short-Description: Starts the cobbler anamon boot notification program
+# Description: anamon runs the first time a machine is booted after
+# installation.
+## END INIT INFO
+
+#
+# anamon: Starts the cobbler post-install boot notification program
+#
+# chkconfig: 35 99 95
+#
+# description: anamon runs the first time a machine is booted after
+# installation.
+#
+
+LOCKFILE="/var/lock/subsys/anamon"
+CFGFILE="/etc/sysconfig/anamon"
+
+# Source function library.
+. /etc/init.d/functions
+
+# Source anamon config
+. $CFGFILE
+
+LOGFILES=${LOGFILES:-/var/log/boot.log}
+
+# FIXME - can we rely on the koan snippet to update /etc/profile.d/cobbler.sh?
+if [ -z "$COBBLER_SERVER" ]; then
+ echo "No COBBLER_SERVER defined in $CFGFILE"
+ exit 1
+fi
+
+if [ -z "$COBBLER_NAME" ]; then
+ echo "No COBBLER_NAME defined in $CFGFILE"
+ exit 1
+fi
+
+if [ -z "$LOGFILES" ]; then
+ echo "No LOGFILES defined in $CFGFILE"
+ exit 1
+fi
+
+start() {
+ echo -n $"Starting anamon: "
+ daemon /usr/local/sbin/anamon.py --watchfile \"$LOGFILES\" --name
$COBBLER_NAME --server $COBBLER_SERVER --port ${COBBLER_PORT:-80} --exit
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && touch $LOCKFILE
+ echo
+
+ # Disable service start
+ chkconfig anamon off
+
+ return $RETVAL
+}
+
+stop () {
+ echo -n $"Shutting down anamon: "
+ killproc /usr/local/sbin/anamon.py
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && rm -f $LOCKFILE
+ echo
+ return $RETVAL
+}
+
+restart() {
+ stop
+ start
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ restart
+ ;;
+ condrestart)
+ if [ -f $LOCKFILE ]; then
+ restart
+ fi
+ ;;
+ status)
+ status anamon.py
+ RETVAL=$?
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|status|restart|condrestart}"
+ RETVAL=2
+ ;;
+esac
+
+exit $RETVAL
diff --git a/cobbler.spec b/cobbler.spec
index 4b2b351..0f5ac05 100644
--- a/cobbler.spec
+++ b/cobbler.spec
@@ -250,6 +250,7 @@ test "x$RPM_BUILD_ROOT" != "x" && rm -rf $RPM_BUILD_ROOT
%defattr(744,root,root)
%config(noreplace) /var/lib/cobbler/triggers/sync/post/restart-services.trigger
%config(noreplace) /var/lib/cobbler/triggers/install/pre/status_pre.trigger
+%config(noreplace)
/var/lib/cobbler/triggers/install/pre/clear_anamon_logs.trigger
%config(noreplace) /var/lib/cobbler/triggers/install/post/status_post.trigger
%defattr(664,root,root)
@@ -267,6 +268,7 @@ test "x$RPM_BUILD_ROOT" != "x" && rm -rf $RPM_BUILD_ROOT
%config(noreplace) /var/lib/cobbler/snippets/download_config_files
%config(noreplace) /var/lib/cobbler/snippets/koan_environment
%config(noreplace) /var/lib/cobbler/snippets/pre_anamon
+%config(noreplace) /var/lib/cobbler/snippets/post_anamon
%config(noreplace) /var/lib/cobbler/snippets/redhat_register
/var/lib/cobbler/elilo-3.8-ia64.efi
/var/lib/cobbler/menu.c32
diff --git a/setup.py b/setup.py
index 45cd5ea..3adaca1 100644
--- a/setup.py
+++ b/setup.py
@@ -262,6 +262,7 @@ if __name__ == "__main__":
(snippetpath,
['snippets/download_config_files']),
(snippetpath, ['snippets/koan_environment']),
(snippetpath, ['snippets/pre_anamon']),
+ (snippetpath, ['snippets/post_anamon']),
(snippetpath, ['snippets/redhat_register']),
# documentation
@@ -347,7 +348,7 @@ if __name__ == "__main__":
(wwwcon,
['webui_content/cobblerweb.css']),
# Anamon script
- (vw_aux, ['aux/anamon.py']),
+ (vw_aux, ['aux/anamon.py',
'aux/anamon.init']),
# Directories to hold cobbler triggers
("%s/add/distro/pre" % trigpath, []),
@@ -367,7 +368,7 @@ if __name__ == "__main__":
("%s/delete/repo/pre" % trigpath, []),
("%s/delete/repo/post" % trigpath, []),
("%s/delete/repo/post" % trigpath, []),
- ("%s/install/pre" % trigpath, [
"triggers/status_pre.trigger"]),
+ ("%s/install/pre" % trigpath, [
"triggers/status_pre.trigger", "triggers/clear_anamon_logs.trigger"]),
("%s/install/post" % trigpath, [
"triggers/status_post.trigger"]),
("%s/sync/pre" % trigpath, []),
("%s/sync/post" % trigpath, [
"triggers/restart-services.trigger" ])
diff --git a/triggers/clear_anamon_logs.trigger
b/triggers/clear_anamon_logs.trigger
new file mode 100755
index 0000000..1c5da65
--- /dev/null
+++ b/triggers/clear_anamon_logs.trigger
@@ -0,0 +1,39 @@
+#!/usr/bin/python
+
+import os
+import glob
+import sys
+import cobbler.api as capi
+
+if len(sys.argv) < 3:
+ print "Missing required arguments"
+ sys.exit(1)
+
+objtype = sys.argv[1] # "system" or "profile"
+name = sys.argv[2] # name of system or profile
+ip = sys.argv[3] # ip or "?"
+
+# TODO - check if anamon is enabled first
+bootapi = capi.BootAPI()
+settings = bootapi.settings()
+anamon_enabled = settings.anamon_enabled
+print "anamon_enabled = %s" % anamon_enabled
+
+# Remove any files matched with the given glob pattern
+def unlink_files(globex):
+ for f in glob.glob(globex):
+ if os.path.isfile(f):
+ try:
+ print "unlinking '%s'" % f
+ os.unlink(f)
+ except OSError, e:
+ print "failed to unlink '%s'" % f
+ pass
+
+if anamon_enabled in [True, 1, "1"]:
+ dirname = "/var/log/cobbler/anamon/%s" % name
+ if os.path.isdir(dirname):
+ unlink_files(os.path.join(dirname, "*"))
+
+# TODO - log somewhere that we cleared a systems anamon logs
+sys.exit(0)
--
1.6.0.6
_______________________________________________
cobbler mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/cobbler