Module: ChefMetal

Defined in:
lib/chef_metal/action_handler.rb,
lib/chef_metal.rb,
lib/chef_metal/driver.rb,
lib/chef_metal/machine.rb,
lib/chef_metal/version.rb,
lib/chef_metal/transport.rb,
lib/chef_metal/provisioner.rb,
lib/chef_metal/transport/ssh.rb,
lib/chef_metal/aws_credentials.rb,
lib/chef_metal/inline_resource.rb,
lib/chef_metal/transport/winrm.rb,
lib/chef_metal/convergence_strategy.rb,
lib/chef_metal/machine/unix_machine.rb,
lib/chef_metal/machine/basic_machine.rb,
lib/chef_metal/openstack_credentials.rb,
lib/chef_metal/machine/windows_machine.rb,
lib/chef_metal/provider_action_handler.rb,
lib/chef_metal/convergence_strategy/install_sh.rb,
lib/chef_metal/convergence_strategy/install_msi.rb,
lib/chef_metal/convergence_strategy/no_converge.rb,
lib/chef_metal/convergence_strategy/install_cached.rb,
lib/chef_metal/convergence_strategy/precreate_chef_objects.rb

Overview

This is included in the metal provisioners to proxy from generic requests needed to specific provider actions

Defined Under Namespace

Modules: ProviderActionHandler Classes: AWSCredentials, ActionHandler, ConvergenceStrategy, InlineResource, Machine, OpenstackCredentials, Provisioner, Transport

Constant Summary collapse

VERSION =
'0.8'
@@enclosing_provisioner =
nil
@@enclosing_provisioner_options =
nil
@@registered_provisioner_classes =
{}

Class Method Summary collapse

Class Method Details

.add_registered_provisioner_class(name, provisioner) ⇒ Object



59
60
61
# File 'lib/chef_metal.rb', line 59

def self.add_registered_provisioner_class(name, provisioner)
  @@registered_provisioner_classes[name] = provisioner
end

.enclosing_provisionerObject



42
43
44
# File 'lib/chef_metal.rb', line 42

def self.enclosing_provisioner
  @@enclosing_provisioner
end

.enclosing_provisioner=(provisioner) ⇒ Object



45
46
47
# File 'lib/chef_metal.rb', line 45

def self.enclosing_provisioner=(provisioner)
  @@enclosing_provisioner = provisioner
end

.enclosing_provisioner_optionsObject



50
51
52
# File 'lib/chef_metal.rb', line 50

def self.enclosing_provisioner_options
  @@enclosing_provisioner_options
end

.enclosing_provisioner_options=(provisioner_options) ⇒ Object



54
55
56
# File 'lib/chef_metal.rb', line 54

def self.enclosing_provisioner_options=(provisioner_options)
  @@enclosing_provisioner_options = provisioner_options
end

.inline_resource(action_handler, &block) ⇒ Object



37
38
39
# File 'lib/chef_metal.rb', line 37

def self.inline_resource(action_handler, &block)
  InlineResource.new(action_handler).instance_eval(&block)
end

.provisioner_for_node(node) ⇒ Object



63
64
65
66
67
68
69
# File 'lib/chef_metal.rb', line 63

def self.provisioner_for_node(node)
  provisioner_url = node['normal']['provisioner_output']['provisioner_url']
  cluster_type = provisioner_url.split(':', 2)[0]
  require "chef_metal/provisioner_init/#{cluster_type}_init"
  provisioner_class = @@registered_provisioner_classes[cluster_type]
  provisioner_class.inflate(node)
end

.with_provisioner(provisioner) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/chef_metal.rb', line 13

def self.with_provisioner(provisioner)
  old_provisioner = ChefMetal.enclosing_provisioner
  ChefMetal.enclosing_provisioner = provisioner
  if block_given?
    begin
      yield
    ensure
      ChefMetal.enclosing_provisioner = old_provisioner
    end
  end
end

.with_provisioner_options(provisioner_options) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/chef_metal.rb', line 25

def self.with_provisioner_options(provisioner_options)
  old_provisioner_options = ChefMetal.enclosing_provisioner_options
  ChefMetal.enclosing_provisioner_options = provisioner_options
  if block_given?
    begin
      yield
    ensure
      ChefMetal.enclosing_provisioner_options = old_provisioner_options
    end
  end
end