lib/chef_metal.rb in chef-metal-0.14.2 vs lib/chef_metal.rb in chef-metal-0.15

- old
+ new

@@ -1,87 +2 @@ -# Include recipe basics so require 'chef_metal' will load everything -require 'chef_metal/recipe_dsl' -require 'chef/server_api' -require 'cheffish/basic_chef_client' -require 'cheffish/merged_config' - -module ChefMetal - def self.inline_resource(action_handler, &block) - events = ActionHandlerForward.new(action_handler) - Cheffish::BasicChefClient.converge_block(nil, events, &block) - end - - class ActionHandlerForward < Chef::EventDispatch::Base - def initialize(action_handler) - @action_handler = action_handler - end - - attr_reader :action_handler - - def resource_update_applied(resource, action, update) - prefix = action_handler.should_perform_actions ? "" : "Would " - update = Array(update).flatten.map { |u| "#{prefix}#{u}"} - action_handler.performed_action(update) - end - end - - # Helpers for driver inflation - @@registered_driver_classes = {} - def self.register_driver_class(name, driver) - @@registered_driver_classes[name] = driver - end - - def self.default_driver(config = Cheffish.profiled_config) - driver_for_url(config[:driver], config) - end - - def self.driver_for_url(driver_url, config = Cheffish.profiled_config, allow_different_config = false) - # - # Create and cache the driver - # - # - # Figure out the driver class - # - scheme = driver_url.split(':', 2)[0] - require "chef_metal/driver_init/#{scheme}" - driver_class = @@registered_driver_classes[scheme] - - # - # Merge in any driver-specific config - # - if config[:drivers] && config[:drivers][driver_url] - config = Cheffish::MergedConfig.new(config[:drivers][driver_url], config) - end - - # - # Canonicalize the URL - # - canonicalized_url, canonicalized_config = driver_class.canonicalize_url(driver_url, config) - config = canonicalized_config if canonicalized_config - - # - # Merge in config from the canonicalized URL if it is different - # - if canonicalized_url != driver_url - if config[:drivers] && config[:drivers][canonicalized_url] - config = Cheffish::MergedConfig.new(config[:drivers][canonicalized_url], config) - end - end - - driver_class.from_url(canonicalized_url, config) - end - - def self.connect_to_machine(machine_spec, config = Cheffish.profiled_config) - chef_server = Cheffish.default_chef_server(config) - if machine_spec.is_a?(String) - machine_spec = ChefMachineSpec.get(machine_spec, chef_server) - end - driver = driver_for_url(machine_spec.driver_url, config) - if driver - machine_options = { :convergence_options => { :chef_server => chef_server } } - machine_options = Cheffish::MergedConfig.new(config[:machine_options], machine_options) if config[:machine_options] - driver.connect_to_machine(machine_spec, machine_options) - else - nil - end - end -end +require 'chef/provisioning'