Module: Chef::Mixin::Language

Included in:
RecipeDefinitionDSLCore, Recipe, Resource
Defined in:
lib/chef/mixin/language.rb

Defined Under Namespace

Classes: PlatformDependentValue

Instance Method Summary collapse

Instance Method Details

#data_bag(bag) ⇒ Object



143
144
145
146
147
148
149
150
# File 'lib/chef/mixin/language.rb', line 143

def data_bag(bag)
  DataBag.validate_name!(bag.to_s)
  rbag = DataBag.load(bag)
  rbag.keys
rescue Exception
  Log.error("Failed to list data bag items in data bag: #{bag.inspect}")
  raise
end

#data_bag_item(bag, item) ⇒ Object



152
153
154
155
156
157
158
159
# File 'lib/chef/mixin/language.rb', line 152

def data_bag_item(bag, item)
  DataBag.validate_name!(bag.to_s)
  DataBagItem.validate_id!(item)
  DataBagItem.load(bag, item)
rescue Exception
  Log.error("Failed to load data bag item: #{bag.inspect} #{item.inspect}")
  raise
end

#platform?(*args) ⇒ Boolean

Given a list of platforms, returns true if the current recipe is being run on a node with that platform, false otherwise.

Parameters

args

A list of platforms

Returns

true

If the current platform is in the list

false

If the current platform is not in the list



118
119
120
121
122
123
124
125
126
# File 'lib/chef/mixin/language.rb', line 118

def platform?(*args)
  has_platform = false

  args.flatten.each do |platform|
    has_platform = true if platform == node[:platform]
  end

  has_platform
end

#search(*args, &block) ⇒ Object



128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/chef/mixin/language.rb', line 128

def search(*args, &block)
  # If you pass a block, or have at least the start argument, do raw result parsing
  #
  # Otherwise, do the iteration for the end user
  if Kernel.block_given? || args.length >= 4
    Chef::Search::Query.new.search(*args, &block)
  else
    results = Array.new
    Chef::Search::Query.new.search(*args) do |o|
      results << o
    end
    results
  end
end

#value_for_platform(platform_hash) ⇒ Object

Given a hash similar to the one we use for Platforms, select a value from the hash. Supports per platform defaults, along with a single base default. Arrays may be passed as hash keys and will be expanded.

Parameters

platform_hash

A platform-style hash.

Returns

value

Whatever the most specific value of the hash is.



105
106
107
# File 'lib/chef/mixin/language.rb', line 105

def value_for_platform(platform_hash)
  PlatformDependentValue.new(platform_hash).value_for_node(node)
end