class Nucleon::Action::Node::Provision

Public Class Methods

describe() click to toggle source
Calls superclass method
   # File lib/nucleon/action/node/provision.rb
10 def self.describe
11   super(:node, :provision, 615)
12 end

Public Instance Methods

arguments() click to toggle source
   # File lib/nucleon/action/node/provision.rb
31 def arguments
32   [ :environment ]
33 end
configure() click to toggle source
Calls superclass method
   # File lib/nucleon/action/node/provision.rb
17 def configure
18   super do
19     codes :provision_failure
20 
21     register_bool :build, false
22     register_bool :dry_run, false
23     register_bool :check_profiles, false
24 
25     register_str :environment
26   end
27 end
execute() click to toggle source
Calls superclass method
   # File lib/nucleon/action/node/provision.rb
38 def execute
39   super do |node|
40     ensure_node(node) do
41       success = true
42 
43       settings.delete(:environment) if settings[:environment] == ''
44 
45       if settings.has_key?(:environment)
46         CORL.create_fact(:corl_environment, settings[:environment])
47       end
48 
49       unless settings[:check_profiles]
50         info('start', { :provider => node.plugin_provider, :name => node.plugin_name })
51       end
52 
53       if settings[:build] ||
54         settings.has_key?(:environment) ||
55         ! ( node.build_time && File.directory?(network.build_directory) )
56 
57         info('build', { :provider => node.plugin_provider, :name => node.plugin_name })
58         success = node.build(settings)
59       end
60 
61       if success
62         provisioner_info = node.provisioner_info
63 
64         node.provisioners.each do |provider, collection|
65           provider_info = provisioner_info[provider]
66           profiles      = provider_info[:profiles]
67 
68           collection.each do |name, provisioner|
69             if supported_profiles = provisioner.supported_profiles(node, profiles)
70               provisioner.profile_dependencies(node, supported_profiles).each do |profile|
71                 info('profile', { :provider => yellow(provider), :profile => green(profile.to_s) })
72               end
73               if CORL.admin? && ! settings[:check_profiles]
74                 profile_success = provisioner.provision(node, supported_profiles, settings)
75                 success         = false unless profile_success
76               end
77             end
78           end
79         end
80         unless settings[:check_profiles]
81           success('complete', { :provider => node.plugin_provider, :name => node.plugin_name, :time => Time.now.to_s }) if success
82         end
83         myself.status = code.provision_failure unless success
84       end
85     end
86   end
87 end