2014-10-30 19:32:15 +00:00
|
|
|
module VagrantPlugins
|
|
|
|
module Chef
|
|
|
|
module Config
|
2014-10-31 18:22:09 +00:00
|
|
|
class ChefApply < Base
|
2014-10-30 19:32:15 +00:00
|
|
|
# The raw recipe text (as a string) to execute via chef-apply.
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :recipe
|
|
|
|
|
|
|
|
# The path (on the guest) where the uploaded apply recipe should be
|
|
|
|
# written (/tmp/vagrant-chef-apply-#.rb).
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :upload_path
|
|
|
|
|
|
|
|
def initialize
|
2014-10-31 18:22:09 +00:00
|
|
|
super
|
2014-10-30 19:32:15 +00:00
|
|
|
|
2014-10-31 18:22:09 +00:00
|
|
|
@recipe = UNSET_VALUE
|
2014-10-30 19:32:15 +00:00
|
|
|
@upload_path = UNSET_VALUE
|
|
|
|
end
|
|
|
|
|
|
|
|
def finalize!
|
2014-10-31 18:22:09 +00:00
|
|
|
super
|
2014-10-30 19:32:15 +00:00
|
|
|
|
2014-10-31 18:22:09 +00:00
|
|
|
@recipe = nil if @recipe == UNSET_VALUE
|
2014-10-30 19:32:15 +00:00
|
|
|
|
|
|
|
if @upload_path == UNSET_VALUE
|
|
|
|
counter = self.class.get_and_update_counter(:chef_apply)
|
|
|
|
@upload_path = "/tmp/vagrant-chef-apply-#{counter}"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def validate(machine)
|
2014-10-31 18:22:09 +00:00
|
|
|
errors = validate_base(machine)
|
2014-10-30 19:32:15 +00:00
|
|
|
|
2014-10-31 18:22:09 +00:00
|
|
|
if missing?(recipe)
|
2014-10-30 19:32:15 +00:00
|
|
|
errors << I18n.t("vagrant.provisioners.chef.recipe_empty")
|
|
|
|
end
|
|
|
|
|
2014-10-31 18:22:09 +00:00
|
|
|
if missing?(upload_path)
|
2014-10-30 19:32:15 +00:00
|
|
|
errors << I18n.t("vagrant.provisioners.chef.upload_path_empty")
|
|
|
|
end
|
|
|
|
|
|
|
|
{ "chef apply provisioner" => errors }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|