Class: Chef::Application::Apply
Instance Method Summary
collapse
#auto_log_level?, #configure_chef, #configure_logging, #configure_stdout_logger, debug_stacktrace, exit!, fatal!, #resolve_log_level, #run_chef_client, #setup_application, #using_output_formatter?, #want_additional_logger?
Constructor Details
#initialize ⇒ Apply
Returns a new instance of Apply.
77
78
79
|
# File 'lib/chef/application/apply.rb', line 77
def initialize
super
end
|
Instance Method Details
#get_recipe_and_run_context ⇒ Object
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/chef/application/apply.rb', line 96
def get_recipe_and_run_context
Chef::Config[:solo] = true
@chef_client = Chef::Client.new
@chef_client.run_ohai
@chef_client.load_node
@chef_client.build_node
run_context = if @chef_client.events.nil?
Chef::RunContext.new(@chef_client.node, {})
else
Chef::RunContext.new(@chef_client.node, {}, @chef_client.events)
end
recipe = Chef::Recipe.new("(chef-apply cookbook)", "(chef-apply recipe)", run_context)
[recipe, run_context]
end
|
#read_recipe_file(file_name) ⇒ Object
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/chef/application/apply.rb', line 85
def read_recipe_file(file_name)
recipe_path = file_name
unless File.exist?(recipe_path)
Chef::Application.fatal!("No file exists at #{recipe_path}", 1)
end
recipe_path = File.expand_path(recipe_path)
recipe_fh = open(recipe_path)
recipe_text = recipe_fh.read
[recipe_text, recipe_fh]
end
|
81
82
83
|
# File 'lib/chef/application/apply.rb', line 81
def reconfigure
configure_logging
end
|
155
156
157
158
|
# File 'lib/chef/application/apply.rb', line 155
def run
reconfigure
run_application
end
|
#run_chef_recipe ⇒ Object
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
# File 'lib/chef/application/apply.rb', line 120
def run_chef_recipe
if config[:execute]
@recipe_text = config[:execute]
temp_recipe_file
elsif config[:stdin]
@recipe_text = STDIN.read
temp_recipe_file
else
@recipe_filename = ARGV[0]
@recipe_text,@recipe_fh = read_recipe_file @recipe_filename
end
recipe,run_context = get_recipe_and_run_context
recipe.instance_eval(@recipe_text, @recipe_filename, 1)
runner = Chef::Runner.new(run_context)
begin
runner.converge
ensure
@recipe_fh.close
end
end
|
#temp_recipe_file ⇒ Object
write recipe to temp file, so in case of error, user gets error w/ context
113
114
115
116
117
118
|
# File 'lib/chef/application/apply.rb', line 113
def temp_recipe_file
@recipe_fh = Tempfile.open('recipe-temporary-file')
@recipe_fh.write(@recipe_text)
@recipe_fh.rewind
@recipe_filename = @recipe_fh.path
end
|