Class: Chef::RunList
- Inherits:
-
Object
show all
- Includes:
- Mixin::ParamsValidate, Enumerable
- Defined in:
- lib/chef/run_list.rb,
lib/chef/run_list/run_list_item.rb,
lib/chef/run_list/run_list_expansion.rb,
lib/chef/run_list/versioned_recipe_list.rb
Defined Under Namespace
Classes: RunListExpansion, RunListExpansionFromAPI, RunListExpansionFromDisk, RunListItem, VersionedRecipeList
Instance Attribute Summary collapse
Instance Method Summary
collapse
#lazy, #set_or_return, #validate
Constructor Details
#initialize(*run_list_items) ⇒ RunList
Returns a new instance of RunList.
45
46
47
|
# File 'lib/chef/run_list.rb', line 45
def initialize(*run_list_items)
@run_list_items = run_list_items.map { |i| coerce_to_run_list_item(i) }
end
|
Instance Attribute Details
#run_list_items ⇒ Object
Also known as:
run_list
execute in order. RunListItems can load from and convert to the string
forms users set on roles and nodes.
For example:
@run_list_items = ['recipe[foo::bar]', 'role[webserver]']
Thus,
self.role_names would return ['webserver']
self.recipe_names would return ['foo::bar']
40
41
42
|
# File 'lib/chef/run_list.rb', line 40
def run_list_items
@run_list_items
end
|
Instance Method Details
#<<(run_list_item) ⇒ Object
Also known as:
push, add
Add an item of the form "recipe[foo::bar]" or "role[webserver]";
takes a String or a RunListItem
63
64
65
66
67
|
# File 'lib/chef/run_list.rb', line 63
def <<(run_list_item)
run_list_item = coerce_to_run_list_item(run_list_item)
@run_list_items << run_list_item unless @run_list_items.include?(run_list_item)
self
end
|
#==(other) ⇒ Object
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/chef/run_list.rb', line 72
def ==(other)
if other.is_a?(Chef::RunList)
other.run_list_items == @run_list_items
else
return false unless other.respond_to?(:size) && (other.size == @run_list_items.size)
other_run_list_items = other.dup
other_run_list_items.map! { |item| coerce_to_run_list_item(item) }
other_run_list_items == @run_list_items
end
end
|
#[](pos) ⇒ Object
101
102
103
|
# File 'lib/chef/run_list.rb', line 101
def [](pos)
@run_list_items[pos]
end
|
#[]=(pos, item) ⇒ Object
105
106
107
|
# File 'lib/chef/run_list.rb', line 105
def []=(pos, item)
@run_list_items[pos] = parse_entry(item)
end
|
#coerce_to_run_list_item(item) ⇒ Object
155
156
157
|
# File 'lib/chef/run_list.rb', line 155
def coerce_to_run_list_item(item)
item.is_a?(RunListItem) ? item : parse_entry(item)
end
|
#each ⇒ Object
110
111
112
|
# File 'lib/chef/run_list.rb', line 110
def each
@run_list_items.each { |i| yield(i) }
end
|
#each_index ⇒ Object
115
116
117
|
# File 'lib/chef/run_list.rb', line 115
def each_index
@run_list_items.each_index { |i| yield(i) }
end
|
#empty? ⇒ Boolean
97
98
99
|
# File 'lib/chef/run_list.rb', line 97
def empty?
@run_list_items.length == 0 ? true : false
end
|
#expand(environment, data_source = "server", expansion_opts = {}) ⇒ Object
Expands this run_list: recursively expand roles into their included
recipes.
Returns a RunListExpansion object.
144
145
146
147
148
|
# File 'lib/chef/run_list.rb', line 144
def expand(environment, data_source = "server", expansion_opts = {})
expansion = expansion_for_data_source(environment, data_source, expansion_opts)
expansion.expand
expansion
end
|
#expansion_for_data_source(environment, data_source, opts = {}) ⇒ Object
159
160
161
162
163
164
165
166
|
# File 'lib/chef/run_list.rb', line 159
def expansion_for_data_source(environment, data_source, opts = {})
case data_source.to_s
when "disk"
RunListExpansionFromDisk.new(environment, @run_list_items)
when "server"
RunListExpansionFromAPI.new(environment, @run_list_items, opts[:rest])
end
end
|
#for_json ⇒ Object
89
90
91
|
# File 'lib/chef/run_list.rb', line 89
def for_json
to_a.map(&:to_s)
end
|
#include?(item) ⇒ Boolean
119
120
121
|
# File 'lib/chef/run_list.rb', line 119
def include?(item)
@run_list_items.include?(parse_entry(item))
end
|
#parse_entry(entry) ⇒ Object
Converts a string run list entry to a RunListItem object.
151
152
153
|
# File 'lib/chef/run_list.rb', line 151
def parse_entry(entry)
RunListItem.new(entry)
end
|
#recipe_names ⇒ Object
Also known as:
recipes
55
56
57
|
# File 'lib/chef/run_list.rb', line 55
def recipe_names
@run_list_items.inject([]) { |memo, run_list_item| memo << run_list_item.name if run_list_item.recipe?; memo }
end
|
#remove(item) ⇒ Object
Also known as:
delete
135
136
137
138
|
# File 'lib/chef/run_list.rb', line 135
def remove(item)
@run_list_items.delete_if { |i| i == item }
self
end
|
#reset!(*args) ⇒ Object
123
124
125
126
127
128
129
130
131
132
133
|
# File 'lib/chef/run_list.rb', line 123
def reset!(*args)
@run_list_items.clear
args.flatten.each do |item|
if item.is_a?(Chef::RunList)
item.each { |r| self << r }
else
self << item
end
end
self
end
|
#role_names ⇒ Object
Also known as:
roles
49
50
51
|
# File 'lib/chef/run_list.rb', line 49
def role_names
@run_list_items.inject([]) { |memo, run_list_item| memo << run_list_item.name if run_list_item.role?; memo }
end
|
#to_json(*a) ⇒ Object
93
94
95
|
# File 'lib/chef/run_list.rb', line 93
def to_json(*a)
Chef::JSONCompat.to_json(for_json, *a)
end
|
#to_s ⇒ Object
85
86
87
|
# File 'lib/chef/run_list.rb', line 85
def to_s
@run_list_items.join(", ")
end
|