summaryrefslogtreecommitdiff
path: root/lib/chef/runner.rb
diff options
context:
space:
mode:
authorEzra Zygmuntowicz <ez@engineyard.com>2008-10-08 14:19:52 -0700
committerEzra Zygmuntowicz <ez@engineyard.com>2008-10-08 14:19:52 -0700
commitc5d33c1298834ce40b8fbf344f281045771b5371 (patch)
tree1f0d4c7eab1eb379b544282a7ce48052acf719a5 /lib/chef/runner.rb
parent3d14601aea23dee3899d097324875274da419d84 (diff)
downloadchef-c5d33c1298834ce40b8fbf344f281045771b5371.tar.gz
big refactor of the repo layout. move to a chef gem and a chef-server gem all with proper deps
Diffstat (limited to 'lib/chef/runner.rb')
-rw-r--r--lib/chef/runner.rb100
1 files changed, 0 insertions, 100 deletions
diff --git a/lib/chef/runner.rb b/lib/chef/runner.rb
deleted file mode 100644
index b943ef5ec4..0000000000
--- a/lib/chef/runner.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-#
-# Author:: Adam Jacob (<adam@hjksolutions.com>)
-# Copyright:: Copyright (c) 2008 HJK Solutions, LLC
-# License:: Apache License, Version 2.0
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-require File.join(File.dirname(__FILE__), "mixin", "params_validate")
-
-class Chef
- class Runner
-
- include Chef::Mixin::ParamsValidate
-
- def initialize(node, collection)
- validate(
- {
- :node => node,
- :collection => collection,
- },
- {
- :node => {
- :kind_of => Chef::Node,
- },
- :collection => {
- :kind_of => Chef::ResourceCollection,
- },
- }
- )
- @node = node
- @collection = collection
- end
-
- def build_provider(resource)
- provider_klass = resource.provider
- if provider_klass == nil
- provider_klass = Chef::Platform.find_provider_for_node(@node, resource)
- end
- Chef::Log.debug("#{resource} using #{provider_klass.to_s}")
- provider = provider_klass.new(@node, resource)
- provider.load_current_resource
- provider
- end
-
- def converge
- start_time = Time.now
- Chef::Log.info("Starting Chef Run")
- delayed_actions = Array.new
-
- @collection.each do |resource|
- begin
- Chef::Log.debug("Processing #{resource}")
- action_list = resource.action.kind_of?(Array) ? resource.action : [ resource.action ]
- action_list.each do |ra|
- provider = build_provider(resource)
- provider.send("action_#{ra}")
- if resource.updated
- resource.actions.each_key do |action|
- if resource.actions[action].has_key?(:immediate)
- resource.actions[action][:immediate].each do |r|
- Chef::Log.info("#{resource} sending #{action} action to #{r} (immediate)")
- build_provider(r).send("action_#{action}")
- end
- end
- if resource.actions[action].has_key?(:delayed)
- resource.actions[action][:delayed].each do |r|
- delayed_actions << lambda {
- Chef::Log.info("#{resource} sending #{action} action to #{r} (delayed)")
- build_provider(r).send("action_#{action}")
- }
- end
- end
- end
- end
- end
- rescue => e
- Chef::Log.error("#{resource} (#{resource.source_line}) had an error:")
- raise
- end
- end
-
- # Run all our :delayed actions
- delayed_actions.each { |da| da.call }
- end_time = Time.now
- Chef::Log.info("Chef Run complete in #{end_time - start_time} seconds")
- true
- end
- end
-end