summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorAdam Jacob <adam@hjksolutions.com>2008-05-19 01:44:05 -0700
committerAdam Jacob <adam@hjksolutions.com>2008-05-19 01:44:05 -0700
commit4ce7356d6d08cf02dde23b6e2fe2066a26ec45b2 (patch)
tree9e9953b6240efe270603a19151d91c9c8a0508dc /bin
parenta125c8a450c4368bfdb1668679dd7153d53757c6 (diff)
downloadchef-4ce7356d6d08cf02dde23b6e2fe2066a26ec45b2.tar.gz
Working on network layer
Diffstat (limited to 'bin')
-rwxr-xr-xbin/chef-indexer87
-rw-r--r--bin/chef-server12
-rwxr-xr-xbin/chef-solo1
3 files changed, 99 insertions, 1 deletions
diff --git a/bin/chef-indexer b/bin/chef-indexer
new file mode 100755
index 0000000000..bb5d181599
--- /dev/null
+++ b/bin/chef-indexer
@@ -0,0 +1,87 @@
+#!/usr/bin/ruby
+#
+# ./chef-indexer - Build indexes from Chef Queues!
+#
+# Author:: Adam Jacob (<adam@hjksolutions.com>)
+# Copyright:: Copyright (c) 2008 HJK Solutions, LLC
+# License:: GNU General Public License version 2 or later
+#
+# This program and entire repository is free software; you can
+# redistribute it and/or modify it under the terms of the GNU
+# General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+$: << File.join(File.dirname(__FILE__), "..", "lib")
+
+require 'optparse'
+require 'chef'
+require 'rubygems'
+require 'facter'
+
+config = {
+ :config_file => "/etc/chef/config.rb",
+ :log_level => :info
+}
+opts = OptionParser.new do |opts|
+ opts.banner = "Usage: #{$0} [-d DIR|-r FILE] (options)"
+ opts.on("-c CONFIG", "--config CONFIG", "The Chef Config file to use") do |c|
+ config[:config_file] = c
+ end
+ opts.on_tail("-l LEVEL", "--loglevel LEVEL", "Set the log level (debug, info, warn, error, fatal)") do |l|
+ config[:log_level] = l.to_sym
+ end
+ opts.on_tail("-h", "--help", "Show this message") do
+ puts opts
+ exit
+ end
+end
+opts.parse!(ARGV)
+
+unless File.exists?(config[:config_file]) && File.readable?(config[:config_file])
+ puts "I cannot find or read the config file: #{config[:config_file]}"
+ puts opts
+ exit
+end
+
+# Load our config file
+Chef::Config.from_file(config[:config_file])
+if config[:log_level]
+ Chef::Log.level(config[:log_level].to_sym)
+end
+
+# Get a Chef::SearchIndex object
+indexer = Chef::SearchIndex.new
+Chef::Queue.connect
+Chef::Queue.subscribe(:queue, "node_index")
+Chef::Queue.subscribe(:queue, "node_remove")
+while 1
+ begin
+ object, headers = Chef::Queue.receive_msg
+ if headers["destination"] =~ /index$/
+ start_timer = Time.new
+ indexer.add(object)
+ final_timer = Time.new
+ Chef::Log.info("Indexed object from #{headers['destination']} in #{final_timer - start_timer} seconds")
+ elsif headers["destination"] =~ /remove$/
+ start_timer = Time.new
+ indexer.delete(object)
+ final_timer = Time.new
+ Chef::Log.info("Removed object from #{headers['destination']} in #{final_timer - start_timer} seconds")
+ end
+ rescue Exception => e
+ if e.kind_of?(Interrupt)
+ raise e
+ end
+ Chef::Log.error("Received Exception: #{e.to_str} continuing")
+ end
+end
diff --git a/bin/chef-server b/bin/chef-server
new file mode 100644
index 0000000000..8b264ec5a7
--- /dev/null
+++ b/bin/chef-server
@@ -0,0 +1,12 @@
+#!/usr/bin/env ruby
+require "merb-core"
+
+if ARGV[0] && ARGV[0] =~ /^[^-]/
+ ARGV.push "-H"
+end
+
+unless %w[-a --adapter -i --irb-console -r --script-runner].any? { |o| ARGV.index(o) }
+ ARGV.push *%w[-a mongrel]
+end
+
+Merb.start
diff --git a/bin/chef-solo b/bin/chef-solo
index 747c672b32..8fa9c1ee3e 100755
--- a/bin/chef-solo
+++ b/bin/chef-solo
@@ -27,7 +27,6 @@ require 'optparse'
require 'chef'
require 'rubygems'
require 'facter'
-require 'yaml'
config = {
:config_file => "/etc/chef/config.rb",