Updated mcollective.init according to OSCI-658
[packages/precise/mcollective.git] / bin / mcollectived
diff --git a/bin/mcollectived b/bin/mcollectived
new file mode 100755 (executable)
index 0000000..4f0d1d8
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/env ruby
+
+require 'mcollective'
+require 'getoptlong'
+
+opts = GetoptLong.new(
+  [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
+  [ '--config', '-c', GetoptLong::REQUIRED_ARGUMENT],
+  [ '--pidfile', '-p', GetoptLong::REQUIRED_ARGUMENT]
+)
+
+configfile = "/etc/mcollective/server.cfg"
+pid = ""
+
+opts.each do |opt, arg|
+  case opt
+    when '--help'
+      puts "Usage: mcollectived.rb [--config /path/to/config] [--pidfile /path/to/pid]"
+      exit
+    when '--config'
+      configfile = arg
+    when '--pidfile'
+      pid = arg
+  end
+end
+
+config = MCollective::Config.instance
+
+config.loadconfig(configfile) unless config.configured
+
+MCollective::Log.info("The Marionette Collective #{MCollective::VERSION} started logging at #{config.loglevel} level")
+
+if config.daemonize
+  MCollective::Log.debug("Starting in the background (#{config.daemonize})")
+
+  if MCollective::Util.windows?
+    require 'mcollective/windows_daemon'
+
+    MCollective::WindowsDaemon.daemonize_runner
+  else
+    require 'mcollective/unix_daemon'
+
+    MCollective::UnixDaemon.daemonize_runner(pid)
+  end
+else
+  MCollective::Log.debug("Starting in the foreground")
+  runner = MCollective::Runner.new(configfile)
+  runner.run
+end