module Cheffish::NodeProperties
Attributes
attribute_modifiers[RW]
attribute 'ip_address', '127.0.0.1' attribute [ 'pushy', 'port' ], '9000' attribute 'ip_addresses' do |existing_value|
(existing_value || []) + [ '127.0.0.1' ]
end attribute 'ip_address', :delete
run_list_modifiers[RW]
Order matters–if two things here are in the wrong order, they will be flipped in the run list recipe 'apache', 'mysql' recipe 'recipe@version' recipe 'recipe' role ''
run_list_removers[RW]
Public Class Methods
new(*args)
click to toggle source
Grab environment from with_environment
Calls superclass method
Cheffish::BaseProperties::new
# File lib/cheffish/node_properties.rb, line 8 def initialize(*args) super chef_environment run_context.cheffish.current_environment end
Public Instance Methods
attribute(attribute_path, value = Chef::NOT_PASSED, &block)
click to toggle source
# File lib/cheffish/node_properties.rb, line 25 def attribute(attribute_path, value = Chef::NOT_PASSED, &block) @attribute_modifiers ||= [] if value != Chef::NOT_PASSED @attribute_modifiers << [ attribute_path, value ] elsif block @attribute_modifiers << [ attribute_path, block ] else raise "attribute requires either a value or a block" end end
recipe(*recipes)
click to toggle source
# File lib/cheffish/node_properties.rb, line 79 def recipe(*recipes) if recipes.size == 0 raise ArgumentError, "At least one recipe must be specified" end @run_list_modifiers ||= [] @run_list_modifiers += recipes.map { |recipe| Chef::RunList::RunListItem.new("recipe[#{recipe}]") } end
remove_recipe(*recipes)
click to toggle source
# File lib/cheffish/node_properties.rb, line 97 def remove_recipe(*recipes) if recipes.size == 0 raise ArgumentError, "At least one recipe must be specified" end @run_list_removers ||= [] @run_list_removers += recipes.map { |recipe| Chef::RunList::RunListItem.new("recipe[#{recipe}]") } end
remove_role(*roles)
click to toggle source
# File lib/cheffish/node_properties.rb, line 106 def remove_role(*roles) if roles.size == 0 raise ArgumentError, "At least one role must be specified" end @run_list_removers ||= [] @run_list_removers += roles.map { |role| Chef::RunList::RunListItem.new("role[#{role}]") } end
remove_tag(*tags)
click to toggle source
# File lib/cheffish/node_properties.rb, line 50 def remove_tag(*tags) attribute "tags" do |existing_tags| if existing_tags tags.each do |tag| existing_tags.delete(tag.to_s) end end existing_tags end end
role(*roles)
click to toggle source
# File lib/cheffish/node_properties.rb, line 88 def role(*roles) if roles.size == 0 raise ArgumentError, "At least one role must be specified" end @run_list_modifiers ||= [] @run_list_modifiers += roles.map { |role| Chef::RunList::RunListItem.new("role[#{role}]") } end
tag(*tags)
click to toggle source
Patchy tags tag 'webserver', 'apache', 'myenvironment'
# File lib/cheffish/node_properties.rb, line 38 def tag(*tags) attribute "tags" do |existing_tags| existing_tags ||= [] tags.each do |tag| unless existing_tags.include?(tag.to_s) existing_tags << tag.to_s end end existing_tags end end