vagrant/plugins/provisioners/chef/config/chef_apply.rb

51 lines
1.2 KiB
Ruby
Raw Normal View History

require_relative "base"
2014-10-30 19:32:15 +00:00
module VagrantPlugins
module Chef
module Config
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
super
2014-10-30 19:32:15 +00:00
@recipe = UNSET_VALUE
2014-10-30 19:32:15 +00:00
@upload_path = UNSET_VALUE
end
def finalize!
super
2014-10-30 19:32:15 +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)
errors = validate_base(machine)
2014-10-30 19:32:15 +00:00
if missing?(recipe)
2014-10-30 19:32:15 +00:00
errors << I18n.t("vagrant.provisioners.chef.recipe_empty")
end
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