Class: Chef::RunList

Inherits:
Object
  • 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

Methods included from Mixin::ParamsValidate

#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_itemsObject (readonly) 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
# File 'lib/chef/run_list.rb', line 72

def ==(other)
  if other.kind_of?(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


100
101
102
# File 'lib/chef/run_list.rb', line 100

def [](pos)
  @run_list_items[pos]
end

#[]=(pos, item) ⇒ Object


104
105
106
# File 'lib/chef/run_list.rb', line 104

def []=(pos, item)
  @run_list_items[pos] = parse_entry(item)
end

#coerce_to_run_list_item(item) ⇒ Object


154
155
156
# File 'lib/chef/run_list.rb', line 154

def coerce_to_run_list_item(item)
  item.kind_of?(RunListItem) ? item : parse_entry(item)
end

#eachObject

FIXME: yard with @yield


109
110
111
# File 'lib/chef/run_list.rb', line 109

def each
  @run_list_items.each { |i| yield(i) }
end

#each_indexObject

FIXME: yard with @yield


114
115
116
# File 'lib/chef/run_list.rb', line 114

def each_index
  @run_list_items.each_index { |i| yield(i) }
end

#empty?Boolean

Returns:

  • (Boolean)

96
97
98
# File 'lib/chef/run_list.rb', line 96

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.


143
144
145
146
147
# File 'lib/chef/run_list.rb', line 143

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


158
159
160
161
162
163
164
165
# File 'lib/chef/run_list.rb', line 158

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_jsonObject


88
89
90
# File 'lib/chef/run_list.rb', line 88

def for_json
  to_a.map { |item| item.to_s }
end

#include?(item) ⇒ Boolean

Returns:

  • (Boolean)

118
119
120
# File 'lib/chef/run_list.rb', line 118

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.


150
151
152
# File 'lib/chef/run_list.rb', line 150

def parse_entry(entry)
  RunListItem.new(entry)
end

#recipe_namesObject 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


134
135
136
137
# File 'lib/chef/run_list.rb', line 134

def remove(item)
  @run_list_items.delete_if { |i| i == item }
  self
end

#reset!(*args) ⇒ Object


122
123
124
125
126
127
128
129
130
131
132
# File 'lib/chef/run_list.rb', line 122

def reset!(*args)
  @run_list_items.clear
  args.flatten.each do |item|
    if item.kind_of?(Chef::RunList)
      item.each { |r| self << r }
    else
      self << item
    end
  end
  self
end

#role_namesObject 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


92
93
94
# File 'lib/chef/run_list.rb', line 92

def to_json(*a)
  Chef::JSONCompat.to_json(for_json, *a)
end

#to_sObject


84
85
86
# File 'lib/chef/run_list.rb', line 84

def to_s
  @run_list_items.join(", ")
end