Class: Chef::Recipe

Inherits:
Object
  • Object
show all
Includes:
Mixin::Deprecation, Mixin::FromFile, Mixin::Language, Mixin::LanguageIncludeRecipe, Mixin::RecipeDefinitionDSLCore
Defined in:
lib/chef/recipe.rb

Overview

Chef::Recipe

A Recipe object is the context in which Chef recipes are evaluated.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixin::Deprecation

#deprecated_ivar

Methods included from Mixin::RecipeDefinitionDSLCore

#method_missing

Methods included from Mixin::Language

#data_bag, #data_bag_item, #platform?, #search, #value_for_platform

Methods included from Mixin::ConvertToClassName

#convert_to_class_name, #convert_to_snake_case, #filename_to_qualified_string, #snake_case_basename

Methods included from Mixin::LanguageIncludeRecipe

#include_recipe, #require_recipe

Methods included from Mixin::FromFile

#class_from_file, #from_file

Constructor Details

#initialize(cookbook_name, recipe_name, run_context) ⇒ Recipe

Returns a new instance of Recipe.



58
59
60
61
62
63
64
65
# File 'lib/chef/recipe.rb', line 58

def initialize(cookbook_name, recipe_name, run_context)
  @cookbook_name = cookbook_name
  @recipe_name = recipe_name
  @run_context = run_context
  # TODO: 5/19/2010 cw/tim: determine whether this can be removed
  @params = Hash.new
  @node = deprecated_ivar(run_context.node, :node, :warn)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Chef::Mixin::RecipeDefinitionDSLCore

Instance Attribute Details

#cookbook_nameObject

Returns the value of attribute cookbook_name.



39
40
41
# File 'lib/chef/recipe.rb', line 39

def cookbook_name
  @cookbook_name
end

#paramsObject

Returns the value of attribute params.



39
40
41
# File 'lib/chef/recipe.rb', line 39

def params
  @params
end

#recipeObject

Returns the value of attribute recipe.



39
40
41
# File 'lib/chef/recipe.rb', line 39

def recipe
  @recipe
end

#recipe_nameObject

Returns the value of attribute recipe_name.



39
40
41
# File 'lib/chef/recipe.rb', line 39

def recipe_name
  @recipe_name
end

#run_contextObject

Returns the value of attribute run_context.



39
40
41
# File 'lib/chef/recipe.rb', line 39

def run_context
  @run_context
end

Class Method Details

.parse_recipe_name(recipe_name) ⇒ Object

Parses a potentially fully-qualified recipe name into its cookbook name and recipe short name.

For example:

"aws::elastic_ip" returns [:aws, "elastic_ip"]
"aws" returns [:aws, "default"]

– TODO: Duplicates functionality of RunListItem



49
50
51
52
53
54
55
56
# File 'lib/chef/recipe.rb', line 49

def self.parse_recipe_name(recipe_name)
  rmatch = recipe_name.match(/(.+?)::(.+)/)
  if rmatch
    [ rmatch[1].to_sym, rmatch[2] ]
  else
    [ recipe_name.to_sym, "default" ]
  end
end

Instance Method Details

#nodeObject

Used in DSL mixins



68
69
70
# File 'lib/chef/recipe.rb', line 68

def node
  run_context.node
end

#resources(*args) ⇒ Object

Used by the DSL to look up resources when executing in the context of a recipe. – what does this do? and what is args? TODO 5-14-2010.



76
77
78
# File 'lib/chef/recipe.rb', line 76

def resources(*args)
  run_context.resource_collection.find(*args)
end

#tag(*tags) ⇒ Object

Sets a tag, or list of tags, for this node. Syntactic sugar for run_context.node.

With no arguments, returns the list of tags.

Parameters

tags<Array>

A list of tags to add - can be a single string

Returns

tags<Array>

The contents of run_context.node



90
91
92
93
94
95
96
97
98
99
# File 'lib/chef/recipe.rb', line 90

def tag(*tags)
  if tags.length > 0
    tags.each do |tag|
      run_context.node[:tags] << tag unless run_context.node[:tags].include?(tag)
    end
    run_context.node[:tags]
  else
    run_context.node[:tags]
  end
end

#tagged?(*tags) ⇒ Boolean

Returns true if the node is tagged with all of the supplied tags.

Parameters

tags<Array>

A list of tags

Returns

true<TrueClass>

If all the parameters are present

false<FalseClass>

If any of the parameters are missing

Returns:

  • (Boolean)


109
110
111
112
113
114
# File 'lib/chef/recipe.rb', line 109

def tagged?(*tags)
  tags.each do |tag|
    return false unless run_context.node[:tags].include?(tag)
  end
  true
end

#untag(*tags) ⇒ Object

Removes the list of tags from the node.

Parameters

tags<Array>

A list of tags

Returns

tags<Array>

The current list of run_context.node



123
124
125
126
127
# File 'lib/chef/recipe.rb', line 123

def untag(*tags)
  tags.each do |tag|
    run_context.node[:tags].delete(tag)
  end
end