Module: Cheffish::NodeProperties
- Includes:
- BaseProperties
- Included in:
- Chef::Resource::ChefNode
- Defined in:
- lib/cheffish/node_properties.rb
Constant Summary
Constants included from BaseProperties
Instance Attribute Summary collapse
-
#attribute_modifiers ⇒ Object
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 ⇒ Object
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 ⇒ Object
Returns the value of attribute run_list_removers.
Instance Method Summary collapse
- #attribute(attribute_path, value = Chef::NOT_PASSED, &block) ⇒ Object
-
#initialize(*args) ⇒ Object
Grab environment from with_environment.
- #recipe(*recipes) ⇒ Object
- #remove_recipe(*recipes) ⇒ Object
- #remove_role(*roles) ⇒ Object
- #remove_tag(*tags) ⇒ Object
- #role(*roles) ⇒ Object
-
#tag(*tags) ⇒ Object
Patchy tags tag ‘webserver’, ‘apache’, ‘myenvironment’.
-
#tags(*tags) ⇒ Object
NON-patchy tags tags :a, :b, :c # removes all other tags.
Instance Attribute Details
#attribute_modifiers ⇒ Object
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
24 25 26 |
# File 'lib/cheffish/node_properties.rb', line 24 def attribute_modifiers @attribute_modifiers end |
#run_list_modifiers ⇒ Object
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 ”
77 78 79 |
# File 'lib/cheffish/node_properties.rb', line 77 def run_list_modifiers @run_list_modifiers end |
#run_list_removers ⇒ Object
Returns the value of attribute run_list_removers.
78 79 80 |
# File 'lib/cheffish/node_properties.rb', line 78 def run_list_removers @run_list_removers end |
Instance Method Details
#attribute(attribute_path, value = Chef::NOT_PASSED, &block) ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# 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 |
#initialize(*args) ⇒ Object
Grab environment from with_environment
8 9 10 11 |
# File 'lib/cheffish/node_properties.rb', line 8 def initialize(*args) super chef_environment run_context.cheffish.current_environment end |
#recipe(*recipes) ⇒ Object
79 80 81 82 83 84 85 86 |
# 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) ⇒ Object
97 98 99 100 101 102 103 104 |
# 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) ⇒ Object
106 107 108 109 110 111 112 113 |
# 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) ⇒ Object
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/cheffish/node_properties.rb', line 50 def remove_tag(*) attribute "tags" do || if .each do |tag| .delete(tag.to_s) end end end end |
#role(*roles) ⇒ Object
88 89 90 91 92 93 94 95 |
# 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) ⇒ Object
Patchy tags tag ‘webserver’, ‘apache’, ‘myenvironment’
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/cheffish/node_properties.rb', line 38 def tag(*) attribute "tags" do || ||= [] .each do |tag| unless .include?(tag.to_s) << tag.to_s end end end end |
#tags(*tags) ⇒ Object
NON-patchy tags tags :a, :b, :c # removes all other tags
63 64 65 66 67 68 69 70 |
# File 'lib/cheffish/node_properties.rb', line 63 def (*) if .size == 0 attribute("tags") else = [0] if .size == 1 && [0].is_a?(Array) attribute("tags", .map(&:to_s)) end end |