chef 0.7.16 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of chef might be problematic. Click here for more details.

Files changed (180) hide show
  1. data/README.rdoc +11 -10
  2. data/bin/chef-client +2 -2
  3. data/bin/chef-solo +1 -1
  4. data/bin/knife +27 -0
  5. data/bin/shef +49 -0
  6. data/distro/README +2 -0
  7. data/distro/{debian → common}/man/man1/chef-indexer.1 +0 -0
  8. data/distro/{debian → common}/man/man1/chef-server.1 +0 -0
  9. data/distro/{debian → common}/man/man8/chef-client.8 +0 -0
  10. data/distro/{debian → common}/man/man8/chef-solo.8 +0 -0
  11. data/distro/common/man/man8/knife.8 +375 -0
  12. data/distro/redhat/etc/init.d/chef-client +8 -4
  13. data/distro/redhat/etc/init.d/chef-server +16 -15
  14. data/distro/redhat/etc/init.d/chef-server-webui +78 -0
  15. data/distro/redhat/etc/init.d/chef-solr +76 -0
  16. data/distro/redhat/etc/init.d/chef-solr-indexer +75 -0
  17. data/distro/redhat/etc/sysconfig/chef-client +10 -0
  18. data/distro/redhat/etc/sysconfig/chef-server +10 -0
  19. data/distro/redhat/etc/sysconfig/chef-server-webui +10 -0
  20. data/distro/redhat/etc/sysconfig/chef-solr +9 -0
  21. data/distro/redhat/etc/sysconfig/chef-solr-indexer +7 -0
  22. data/distro/suse/etc/init.d/chef-client +121 -0
  23. data/lib/chef.rb +1 -1
  24. data/lib/chef/api_client.rb +263 -0
  25. data/lib/chef/application.rb +1 -1
  26. data/lib/chef/application/client.rb +21 -3
  27. data/lib/chef/application/knife.rb +144 -0
  28. data/lib/chef/application/server.rb +2 -1
  29. data/lib/chef/application/solo.rb +9 -2
  30. data/lib/chef/cache.rb +61 -0
  31. data/lib/chef/cache/checksum.rb +70 -0
  32. data/lib/chef/certificate.rb +154 -0
  33. data/lib/chef/client.rb +123 -220
  34. data/lib/chef/compile.rb +9 -21
  35. data/lib/chef/config.rb +67 -10
  36. data/lib/chef/cookbook.rb +49 -22
  37. data/lib/chef/cookbook/metadata.rb +85 -5
  38. data/lib/chef/cookbook_loader.rb +4 -4
  39. data/lib/chef/couchdb.rb +99 -30
  40. data/lib/chef/daemon.rb +1 -1
  41. data/lib/chef/data_bag.rb +215 -0
  42. data/lib/chef/data_bag_item.rb +219 -0
  43. data/lib/chef/exceptions.rb +3 -0
  44. data/lib/chef/index_queue.rb +29 -0
  45. data/lib/chef/index_queue/amqp_client.rb +106 -0
  46. data/lib/chef/index_queue/consumer.rb +76 -0
  47. data/lib/chef/index_queue/indexable.rb +74 -0
  48. data/lib/chef/knife.rb +309 -0
  49. data/lib/chef/knife/client_bulk_delete.rb +40 -0
  50. data/lib/chef/knife/client_create.rb +62 -0
  51. data/lib/chef/knife/client_delete.rb +37 -0
  52. data/lib/chef/knife/client_edit.rb +37 -0
  53. data/lib/chef/knife/client_list.rb +40 -0
  54. data/lib/chef/knife/client_reregister.rb +48 -0
  55. data/lib/chef/knife/client_show.rb +42 -0
  56. data/lib/chef/knife/configure.rb +123 -0
  57. data/lib/chef/knife/cookbook_bulk_delete.rb +46 -0
  58. data/lib/chef/knife/cookbook_delete.rb +41 -0
  59. data/lib/chef/knife/cookbook_download.rb +57 -0
  60. data/lib/chef/knife/cookbook_list.rb +41 -0
  61. data/lib/chef/knife/cookbook_metadata.rb +87 -0
  62. data/lib/chef/knife/cookbook_show.rb +75 -0
  63. data/lib/chef/knife/cookbook_upload.rb +179 -0
  64. data/lib/chef/knife/data_bag_create.rb +43 -0
  65. data/lib/chef/knife/data_bag_delete.rb +43 -0
  66. data/lib/chef/knife/data_bag_edit.rb +49 -0
  67. data/lib/chef/knife/data_bag_list.rb +42 -0
  68. data/lib/chef/knife/data_bag_show.rb +40 -0
  69. data/lib/chef/knife/ec2_instance_data.rb +46 -0
  70. data/lib/chef/knife/index_rebuild.rb +51 -0
  71. data/lib/chef/knife/node_bulk_delete.rb +43 -0
  72. data/lib/chef/knife/node_create.rb +39 -0
  73. data/lib/chef/knife/node_delete.rb +36 -0
  74. data/lib/chef/knife/node_edit.rb +36 -0
  75. data/lib/chef/knife/node_from_file.rb +42 -0
  76. data/lib/chef/knife/node_list.rb +41 -0
  77. data/lib/chef/knife/node_run_list_add.rb +64 -0
  78. data/lib/chef/knife/node_run_list_remove.rb +45 -0
  79. data/lib/chef/knife/node_show.rb +46 -0
  80. data/lib/chef/knife/role_bulk_delete.rb +44 -0
  81. data/lib/chef/knife/role_create.rb +44 -0
  82. data/lib/chef/knife/role_delete.rb +36 -0
  83. data/lib/chef/knife/role_edit.rb +37 -0
  84. data/lib/chef/knife/role_from_file.rb +46 -0
  85. data/lib/chef/knife/role_list.rb +40 -0
  86. data/lib/chef/knife/role_show.rb +43 -0
  87. data/lib/chef/knife/search.rb +94 -0
  88. data/lib/chef/knife/ssh.rb +170 -0
  89. data/lib/chef/log.rb +30 -8
  90. data/lib/chef/mixin/checksum.rb +2 -7
  91. data/lib/chef/mixin/command.rb +32 -13
  92. data/lib/chef/mixin/convert_to_class_name.rb +15 -0
  93. data/lib/chef/mixin/deep_merge.rb +199 -11
  94. data/lib/chef/mixin/generate_url.rb +18 -9
  95. data/lib/chef/mixin/language.rb +29 -1
  96. data/lib/chef/mixin/language_include_attribute.rb +56 -0
  97. data/lib/chef/mixin/language_include_recipe.rb +53 -0
  98. data/lib/chef/mixin/params_validate.rb +25 -12
  99. data/lib/chef/mixin/recipe_definition_dsl_core.rb +2 -0
  100. data/lib/chef/mixin/template.rb +11 -1
  101. data/lib/chef/mixin/xml_escape.rb +87 -0
  102. data/lib/chef/node.rb +144 -122
  103. data/lib/chef/openid_registration.rb +12 -5
  104. data/lib/chef/platform.rb +89 -47
  105. data/lib/chef/provider/breakpoint.rb +36 -0
  106. data/lib/chef/provider/cron.rb +5 -6
  107. data/lib/chef/provider/deploy.rb +43 -10
  108. data/lib/chef/provider/deploy/revision.rb +2 -3
  109. data/lib/chef/provider/erl_call.rb +72 -0
  110. data/lib/chef/provider/file.rb +8 -4
  111. data/lib/chef/provider/git.rb +10 -5
  112. data/lib/chef/provider/group/dscl.rb +128 -0
  113. data/lib/chef/provider/http_request.rb +6 -2
  114. data/lib/chef/provider/ifconfig.rb +1 -0
  115. data/lib/chef/provider/link.rb +1 -1
  116. data/lib/chef/provider/log.rb +53 -0
  117. data/lib/chef/provider/mdadm.rb +88 -0
  118. data/lib/chef/provider/mount/mount.rb +1 -1
  119. data/lib/chef/provider/package.rb +1 -1
  120. data/lib/chef/provider/package/easy_install.rb +106 -0
  121. data/lib/chef/provider/package/pacman.rb +101 -0
  122. data/lib/chef/provider/package/portage.rb +1 -1
  123. data/lib/chef/provider/package/rpm.rb +10 -8
  124. data/lib/chef/provider/package/yum-dump.py +22 -3
  125. data/lib/chef/provider/package/yum.rb +32 -8
  126. data/lib/chef/provider/package/zypper.rb +132 -0
  127. data/lib/chef/provider/remote_directory.rb +58 -49
  128. data/lib/chef/provider/remote_file.rb +1 -1
  129. data/lib/chef/provider/route.rb +136 -80
  130. data/lib/chef/provider/ruby_block.rb +18 -1
  131. data/lib/chef/provider/service/arch.rb +109 -0
  132. data/lib/chef/provider/service/freebsd.rb +0 -1
  133. data/lib/chef/provider/service/simple.rb +2 -3
  134. data/lib/chef/provider/service/upstart.rb +191 -0
  135. data/lib/chef/provider/subversion.rb +12 -4
  136. data/lib/chef/provider/template.rb +85 -53
  137. data/lib/chef/provider/user.rb +1 -1
  138. data/lib/chef/provider/user/dscl.rb +277 -0
  139. data/lib/chef/provider/user/useradd.rb +1 -0
  140. data/lib/chef/recipe.rb +2 -41
  141. data/lib/chef/resource.rb +9 -3
  142. data/lib/chef/resource/breakpoint.rb +35 -0
  143. data/lib/chef/resource/deploy.rb +16 -2
  144. data/lib/chef/resource/easy_install_package.rb +41 -0
  145. data/lib/chef/resource/erl_call.rb +83 -0
  146. data/lib/chef/resource/freebsd_package.rb +35 -0
  147. data/lib/chef/resource/log.rb +62 -0
  148. data/lib/chef/resource/mdadm.rb +82 -0
  149. data/lib/chef/resource/pacman_package.rb +33 -0
  150. data/lib/chef/resource/ruby_block.rb +21 -2
  151. data/lib/chef/resource/scm.rb +8 -0
  152. data/lib/chef/resource/subversion.rb +1 -0
  153. data/lib/chef/resource/user.rb +5 -2
  154. data/lib/chef/resource/yum_package.rb +36 -0
  155. data/lib/chef/resource_collection.rb +17 -9
  156. data/lib/chef/resource_collection/stepable_iterator.rb +124 -0
  157. data/lib/chef/rest.rb +166 -81
  158. data/lib/chef/role.rb +114 -38
  159. data/lib/chef/run_list.rb +15 -6
  160. data/lib/chef/runner.rb +13 -11
  161. data/lib/chef/search/query.rb +60 -0
  162. data/lib/chef/shef.rb +220 -0
  163. data/lib/chef/shef/ext.rb +297 -0
  164. data/lib/chef/shef/shef_session.rb +175 -0
  165. data/lib/chef/streaming_cookbook_uploader.rb +187 -0
  166. data/lib/chef/tasks/chef_repo.rake +53 -155
  167. data/lib/chef/util/file_edit.rb +94 -96
  168. data/lib/chef/webui_user.rb +233 -0
  169. metadata +219 -63
  170. data/distro/debian/etc/init.d/chef-indexer +0 -175
  171. data/distro/redhat/etc/chef/client.rb +0 -16
  172. data/distro/redhat/etc/chef/indexer.rb +0 -10
  173. data/distro/redhat/etc/chef/server.rb +0 -22
  174. data/distro/redhat/etc/init.d/chef-indexer +0 -76
  175. data/lib/chef/application/indexer.rb +0 -141
  176. data/lib/chef/queue.rb +0 -145
  177. data/lib/chef/search.rb +0 -88
  178. data/lib/chef/search/result.rb +0 -64
  179. data/lib/chef/search_index.rb +0 -77
  180. data/lib/chef/util/fileedit.rb +0 -121
@@ -97,6 +97,7 @@ class Chef
97
97
  opts << " -d '#{@new_resource.home}'"
98
98
  end
99
99
  end
100
+ opts << " -o" if @new_resource.supports[:non_unique]
100
101
  opts << " #{@new_resource.username}"
101
102
  opts
102
103
  end
@@ -21,17 +21,18 @@ require 'chef/resource'
21
21
  Dir[File.join(File.dirname(__FILE__), 'resource/**/*.rb')].sort.each { |lib| require lib }
22
22
  require 'chef/mixin/from_file'
23
23
  require 'chef/mixin/language'
24
+ require 'chef/mixin/language_include_recipe'
24
25
  require 'chef/mixin/recipe_definition_dsl_core'
25
26
  require 'chef/resource_collection'
26
27
  require 'chef/cookbook_loader'
27
28
  require 'chef/rest'
28
- require 'chef/search/result'
29
29
 
30
30
  class Chef
31
31
  class Recipe
32
32
 
33
33
  include Chef::Mixin::FromFile
34
34
  include Chef::Mixin::Language
35
+ include Chef::Mixin::LanguageIncludeRecipe
35
36
  include Chef::Mixin::RecipeDefinitionDSLCore
36
37
 
37
38
  attr_accessor :cookbook_name, :recipe_name, :recipe, :node, :collection,
@@ -47,50 +48,10 @@ class Chef
47
48
  @params = Hash.new
48
49
  end
49
50
 
50
- def include_recipe(*args)
51
- args.flatten.each do |recipe|
52
- if @node.run_state[:seen_recipes].has_key?(recipe)
53
- Chef::Log.debug("I am not loading #{recipe}, because I have already seen it.")
54
- next
55
- end
56
-
57
- Chef::Log.debug("Loading Recipe #{recipe} via include_recipe")
58
- @node.run_state[:seen_recipes][recipe] = true
59
-
60
- rmatch = recipe.match(/(.+?)::(.+)/)
61
- if rmatch
62
- cookbook = @cookbook_loader[rmatch[1]]
63
- cookbook.load_recipe(rmatch[2], @node, @collection, @definitions, @cookbook_loader)
64
- else
65
- cookbook = @cookbook_loader[recipe]
66
- cookbook.load_recipe("default", @node, @collection, @definitions, @cookbook_loader)
67
- end
68
- end
69
- end
70
-
71
- def require_recipe(*args)
72
- include_recipe(*args)
73
- end
74
-
75
51
  def resources(*args)
76
52
  @collection.resources(*args)
77
53
  end
78
54
 
79
- def search(type, query, attributes=[], &block)
80
- Chef::Log.debug("Searching #{type} index with #{query}")
81
- r = Chef::REST.new(Chef::Config[:search_url])
82
-
83
- results = r.get_rest("search/#{type}?q=#{query}&a=#{attributes.join(',')}")
84
- Chef::Log.debug("Searching #{type} index with #{query} returned #{results.length} entries")
85
- if block
86
- results.each do |sr|
87
- block.call(sr)
88
- end
89
- else
90
- results
91
- end
92
- end
93
-
94
55
  # Sets a tag, or list of tags, for this node. Syntactic sugar for
95
56
  # @node[:tags].
96
57
  #
@@ -33,7 +33,7 @@ class Chef
33
33
  include Chef::Mixin::ConvertToClassName
34
34
 
35
35
  attr_accessor :actions, :params, :provider, :updated, :allowed_actions, :collection, :cookbook_name, :recipe_name, :enclosing_provider
36
- attr_reader :resource_name, :source_line, :node
36
+ attr_reader :resource_name, :source_line, :node, :not_if_args, :only_if_args
37
37
 
38
38
  def initialize(name, collection=nil, node=nil)
39
39
  @name = name
@@ -54,7 +54,9 @@ class Chef
54
54
  @supports = {}
55
55
  @ignore_failure = false
56
56
  @not_if = nil
57
+ @not_if_args = {}
57
58
  @only_if = nil
59
+ @only_if_args = {}
58
60
  sline = caller(4).shift
59
61
  if sline
60
62
  @source_line = sline.gsub!(/^(.+):(.+):.+$/, '\1 line \2')
@@ -219,20 +221,24 @@ class Chef
219
221
  instance_vars
220
222
  end
221
223
 
222
- def only_if(arg=nil, &blk)
224
+ def only_if(arg=nil, args = {}, &blk)
223
225
  if Kernel.block_given?
224
226
  @only_if = blk
227
+ @only_if_args = args
225
228
  else
226
229
  @only_if = arg if arg
230
+ @only_if_args = args if arg
227
231
  end
228
232
  @only_if
229
233
  end
230
234
 
231
- def not_if(arg=nil, &blk)
235
+ def not_if(arg=nil, args = {}, &blk)
232
236
  if Kernel.block_given?
233
237
  @not_if = blk
238
+ @not_if_args = args
234
239
  else
235
240
  @not_if = arg if arg
241
+ @not_if_args = args if arg
236
242
  end
237
243
  @not_if
238
244
  end
@@ -0,0 +1,35 @@
1
+ #
2
+ # Author:: Daniel DeLeo (<dan@kallistec.com>)
3
+ # Copyright:: Copyright (c) 2008 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+
20
+ require 'chef/resource'
21
+
22
+ class Chef
23
+ class Resource
24
+ class Breakpoint < Chef::Resource
25
+
26
+ def initialize(action="break", *args)
27
+ @name = caller.first
28
+ super(@name, *args)
29
+ @action = "break"
30
+ @allowed_actions << :break
31
+ @provider = Chef::Provider::Breakpoint
32
+ end
33
+ end
34
+ end
35
+ end
@@ -70,13 +70,14 @@ class Chef
70
70
  @enable_submodules = false
71
71
  @shallow_clone = false
72
72
  @scm_provider = Chef::Provider::Git
73
+ @svn_force_export = false
73
74
  @provider = Chef::Provider::Deploy::Timestamped
74
75
  @allowed_actions.push(:force_deploy, :deploy, :rollback)
75
76
  end
76
77
 
77
78
  # where the checked out/cloned code goes
78
79
  def destination
79
- @destination ||= shared_path + "/#{@repository_cache}/"
80
+ @destination ||= shared_path + "/#{@repository_cache}"
80
81
  end
81
82
 
82
83
  # where shared stuff goes, i.e., logs, tmp, etc. goes here
@@ -244,13 +245,26 @@ class Chef
244
245
  end
245
246
 
246
247
  def scm_provider(arg=nil)
248
+ klass = if arg.kind_of?(String) || arg.kind_of?(Symbol)
249
+ lookup_provider_constant(arg)
250
+ else
251
+ arg
252
+ end
247
253
  set_or_return(
248
254
  :scm_provider,
249
- arg,
255
+ klass,
250
256
  :kind_of => [ Class ]
251
257
  )
252
258
  end
253
259
 
260
+ def svn_force_export(arg=nil)
261
+ set_or_return(
262
+ :svn_force_export,
263
+ arg,
264
+ :kind_of => [ TrueClass, FalseClass ]
265
+ )
266
+ end
267
+
254
268
  def environment(arg=nil)
255
269
  if arg.is_a?(String)
256
270
  Chef::Log.info "Setting RAILS_ENV, RACK_ENV, and MERB_ENV to `#{arg}'"
@@ -0,0 +1,41 @@
1
+ #
2
+ # Author:: Joe Williams (<joe@joetify.com>)
3
+ # Copyright:: Copyright (c) 2009 Joe Williams
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/resource/package'
20
+
21
+ class Chef
22
+ class Resource
23
+ class EasyInstallPackage < Chef::Resource::Package
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :easy_install_package
28
+ @provider = Chef::Provider::Package::EasyInstall
29
+ end
30
+
31
+ def easy_install_binary(arg=nil)
32
+ set_or_return(
33
+ :easy_install_binary,
34
+ arg,
35
+ :kind_of => [ String ]
36
+ )
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,83 @@
1
+ #
2
+ # Author:: Joe Williams (<joe@joetify.com>)
3
+ # Copyright:: Copyright (c) 2009 Joe Williams
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/resource'
20
+
21
+ class Chef
22
+ class Resource
23
+ class ErlCall < Chef::Resource
24
+
25
+ # erl_call : http://erlang.org/doc/man/erl_call.html
26
+
27
+ def initialize(name, collection=nil, node=nil)
28
+ super(name, collection, node)
29
+ @resource_name = :erl_call
30
+
31
+ @code = "q()." # your erlang code goes here
32
+ @cookie = nil # cookie of the erlang node
33
+ @distributed = false # if you want to have a distributed erlang node
34
+ @name_type = "sname" # type of erlang hostname name or sname
35
+ @node_name = "chef@localhost" # the erlang node hostname
36
+
37
+ @action = "run"
38
+ @allowed_actions.push(:run)
39
+ end
40
+
41
+ def code(arg=nil)
42
+ set_or_return(
43
+ :code,
44
+ arg,
45
+ :kind_of => [ String ]
46
+ )
47
+ end
48
+
49
+ def cookie(arg=nil)
50
+ set_or_return(
51
+ :cookie,
52
+ arg,
53
+ :kind_of => [ String ]
54
+ )
55
+ end
56
+
57
+ def distributed(arg=nil)
58
+ set_or_return(
59
+ :distributed,
60
+ arg,
61
+ :kind_of => [ TrueClass, FalseClass ]
62
+ )
63
+ end
64
+
65
+ def name_type(arg=nil)
66
+ set_or_return(
67
+ :name_type,
68
+ arg,
69
+ :kind_of => [ String ]
70
+ )
71
+ end
72
+
73
+ def node_name(arg=nil)
74
+ set_or_return(
75
+ :node_name,
76
+ arg,
77
+ :kind_of => [ String ]
78
+ )
79
+ end
80
+
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,35 @@
1
+ #
2
+ # Author:: AJ Christensen (<aj@opscode.com>)
3
+ # Copyright:: Copyright (c) 2008 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/resource/package'
20
+ require 'chef/provider/package/freebsd'
21
+
22
+ class Chef
23
+ class Resource
24
+ class FreebsdPackage < Chef::Resource::Package
25
+
26
+ def initialize(name, collection=nil, node=nil)
27
+ super(name, collection, node)
28
+ @resource_name = :freebsd_package
29
+ @provider = Chef::Provider::Package::Freebsd
30
+ end
31
+
32
+ end
33
+ end
34
+ end
35
+
@@ -0,0 +1,62 @@
1
+ #
2
+ # Author:: Cary Penniman (<cary@rightscale.com>)
3
+ # Copyright:: Copyright (c) 2008 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ class Chef
19
+ class Resource
20
+
21
+ # Sends a string from a recipe to a log provider
22
+ #
23
+ # log "some string to log" do
24
+ # level :info # (default) also supports :warn, :debug, and :error
25
+ # end
26
+ #
27
+ # === Example
28
+ # log "your string to log"
29
+ #
30
+ # or
31
+ #
32
+ # log "a debug string" { level :debug }
33
+ #
34
+ class Log < Chef::Resource
35
+
36
+ # Initialize log resource with a name as the string to log
37
+ #
38
+ # === Parameters
39
+ # name<String>:: Message to log
40
+ # collection<Array>:: Collection of included recipes
41
+ # node<Chef::Node>:: Node where resource will be used
42
+ def initialize(name, collection=nil, node=nil)
43
+ super(name, collection, node)
44
+ @resource_name = :log
45
+ @level = :info
46
+ @action = :write
47
+ end
48
+
49
+ # <Symbol> Log level, one of :debug, :info, :warn, :error or :fatal
50
+ def level(arg=nil)
51
+ set_or_return(
52
+ :level,
53
+ arg,
54
+ :equal_to => [ :debug, :info, :warn, :error, :fatal ]
55
+ )
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+
62
+
@@ -0,0 +1,82 @@
1
+ #
2
+ # Author:: Joe Williams (<joe@joetify.com>)
3
+ # Copyright:: Copyright (c) 2009 Joe Williams
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/resource'
20
+
21
+ class Chef
22
+ class Resource
23
+ class Mdadm < Chef::Resource
24
+
25
+ def initialize(name, collection=nil, node=nil)
26
+ super(name, collection, node)
27
+ @resource_name = :mdadm
28
+
29
+ @chunk = 16
30
+ @devices = []
31
+ @exists = false
32
+ @level = 1
33
+ @raid_device = name
34
+
35
+ @action = :create
36
+ @allowed_actions.push(:create, :assemble, :stop)
37
+ end
38
+
39
+ def chunk(arg=nil)
40
+ set_or_return(
41
+ :chunk,
42
+ arg,
43
+ :kind_of => [ Integer ]
44
+ )
45
+ end
46
+
47
+ def devices(arg=nil)
48
+ set_or_return(
49
+ :devices,
50
+ arg,
51
+ :kind_of => [ Array ]
52
+ )
53
+ end
54
+
55
+ def exists(arg=nil)
56
+ set_or_return(
57
+ :exists,
58
+ arg,
59
+ :kind_of => [ TrueClass, FalseClass ]
60
+ )
61
+ end
62
+
63
+ def level(arg=nil)
64
+ set_or_return(
65
+ :level,
66
+ arg,
67
+ :kind_of => [ Integer ]
68
+ )
69
+ end
70
+
71
+ def raid_device(arg=nil)
72
+ set_or_return(
73
+ :raid_device,
74
+ arg,
75
+ :kind_of => [ String ]
76
+ )
77
+ end
78
+
79
+
80
+ end
81
+ end
82
+ end