diff options
author | Ezra Zygmuntowicz <ez@engineyard.com> | 2008-10-08 14:19:52 -0700 |
---|---|---|
committer | Ezra Zygmuntowicz <ez@engineyard.com> | 2008-10-08 14:19:52 -0700 |
commit | c5d33c1298834ce40b8fbf344f281045771b5371 (patch) | |
tree | 1f0d4c7eab1eb379b544282a7ce48052acf719a5 /lib/chef/runner.rb | |
parent | 3d14601aea23dee3899d097324875274da419d84 (diff) | |
download | chef-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.rb | 100 |
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 |