chef 0.9.18 → 0.10.0.beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. data/README.rdoc +0 -3
  2. data/distro/arch/etc/rc.d/chef-server +0 -4
  3. data/distro/arch/etc/rc.d/chef-server-webui +0 -4
  4. data/distro/arch/etc/rc.d/chef-solr +0 -4
  5. data/distro/arch/etc/rc.d/chef-solr-indexer +0 -4
  6. data/lib/chef.rb +3 -3
  7. data/lib/chef/api_client.rb +1 -1
  8. data/lib/chef/application.rb +11 -1
  9. data/lib/chef/application/client.rb +18 -22
  10. data/lib/chef/application/knife.rb +28 -29
  11. data/lib/chef/application/solo.rb +14 -12
  12. data/lib/chef/client.rb +112 -54
  13. data/lib/chef/config.rb +4 -0
  14. data/lib/chef/cookbook/chefignore.rb +66 -0
  15. data/lib/chef/cookbook/cookbook_collection.rb +6 -5
  16. data/lib/chef/cookbook/cookbook_version_loader.rb +151 -0
  17. data/lib/chef/cookbook/file_system_file_vendor.rb +10 -8
  18. data/lib/chef/cookbook/metadata.rb +200 -108
  19. data/lib/chef/cookbook_loader.rb +39 -163
  20. data/lib/chef/cookbook_uploader.rb +100 -78
  21. data/lib/chef/cookbook_version.rb +92 -47
  22. data/lib/chef/cookbook_version_selector.rb +163 -0
  23. data/lib/chef/couchdb.rb +9 -1
  24. data/lib/chef/data_bag.rb +1 -1
  25. data/lib/chef/data_bag_item.rb +1 -1
  26. data/lib/chef/encrypted_data_bag_item.rb +126 -0
  27. data/lib/chef/environment.rb +386 -0
  28. data/lib/chef/exceptions.rb +82 -1
  29. data/lib/chef/index_queue/amqp_client.rb +15 -12
  30. data/lib/chef/index_queue/indexable.rb +38 -4
  31. data/lib/chef/json_compat.rb +3 -3
  32. data/lib/chef/knife.rb +97 -202
  33. data/lib/chef/knife/bootstrap.rb +27 -61
  34. data/lib/chef/knife/bootstrap/archlinux-gems.erb +4 -2
  35. data/lib/chef/knife/bootstrap/centos5-gems.erb +6 -15
  36. data/lib/chef/knife/bootstrap/fedora13-gems.erb +3 -4
  37. data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +2 -2
  38. data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +6 -5
  39. data/lib/chef/knife/client_bulk_delete.rb +6 -3
  40. data/lib/chef/knife/client_create.rb +13 -10
  41. data/lib/chef/knife/client_delete.rb +10 -7
  42. data/lib/chef/knife/client_edit.rb +9 -6
  43. data/lib/chef/knife/client_list.rb +8 -5
  44. data/lib/chef/knife/client_reregister.rb +9 -6
  45. data/lib/chef/knife/client_show.rb +9 -6
  46. data/lib/chef/knife/configure.rb +15 -19
  47. data/lib/chef/knife/configure_client.rb +4 -4
  48. data/lib/chef/knife/cookbook_bulk_delete.rb +11 -8
  49. data/lib/chef/knife/cookbook_create.rb +120 -55
  50. data/lib/chef/knife/cookbook_delete.rb +18 -12
  51. data/lib/chef/knife/cookbook_download.rb +10 -6
  52. data/lib/chef/knife/cookbook_list.rb +15 -6
  53. data/lib/chef/knife/cookbook_metadata.rb +41 -21
  54. data/lib/chef/knife/cookbook_metadata_from_file.rb +4 -0
  55. data/lib/chef/knife/cookbook_show.rb +16 -5
  56. data/lib/chef/knife/cookbook_site_download.rb +2 -2
  57. data/lib/chef/knife/cookbook_site_share.rb +18 -13
  58. data/lib/chef/knife/cookbook_site_unshare.rb +7 -4
  59. data/lib/chef/knife/cookbook_site_vendor.rb +21 -18
  60. data/lib/chef/knife/cookbook_test.rb +14 -14
  61. data/lib/chef/knife/cookbook_upload.rb +91 -40
  62. data/lib/chef/knife/data_bag_create.rb +41 -6
  63. data/lib/chef/knife/data_bag_delete.rb +5 -3
  64. data/lib/chef/knife/data_bag_edit.rb +55 -11
  65. data/lib/chef/knife/data_bag_from_file.rb +47 -7
  66. data/lib/chef/knife/data_bag_list.rb +4 -1
  67. data/lib/chef/knife/data_bag_show.rb +44 -4
  68. data/lib/chef/knife/environment_create.rb +53 -0
  69. data/lib/chef/knife/environment_delete.rb +45 -0
  70. data/lib/chef/knife/environment_edit.rb +45 -0
  71. data/lib/chef/knife/environment_from_file.rb +39 -0
  72. data/lib/chef/knife/environment_list.rb +42 -0
  73. data/lib/chef/knife/environment_show.rb +46 -0
  74. data/lib/chef/knife/exec.rb +1 -1
  75. data/lib/chef/knife/index_rebuild.rb +8 -9
  76. data/lib/chef/knife/node_bulk_delete.rb +9 -6
  77. data/lib/chef/knife/node_create.rb +9 -6
  78. data/lib/chef/knife/node_delete.rb +10 -7
  79. data/lib/chef/knife/node_edit.rb +129 -10
  80. data/lib/chef/knife/node_from_file.rb +10 -7
  81. data/lib/chef/knife/node_list.rb +11 -6
  82. data/lib/chef/knife/node_run_list_add.rb +10 -7
  83. data/lib/chef/knife/node_run_list_remove.rb +9 -6
  84. data/lib/chef/knife/node_show.rb +15 -7
  85. data/lib/chef/knife/recipe_list.rb +4 -3
  86. data/lib/chef/knife/role_bulk_delete.rb +9 -6
  87. data/lib/chef/knife/role_create.rb +9 -6
  88. data/lib/chef/knife/role_delete.rb +10 -7
  89. data/lib/chef/knife/role_edit.rb +11 -8
  90. data/lib/chef/knife/role_from_file.rb +10 -7
  91. data/lib/chef/knife/role_list.rb +8 -5
  92. data/lib/chef/knife/role_show.rb +11 -8
  93. data/lib/chef/knife/search.rb +33 -10
  94. data/lib/chef/knife/ssh.rb +33 -61
  95. data/lib/chef/knife/status.rb +7 -4
  96. data/lib/chef/knife/subcommand_loader.rb +101 -0
  97. data/lib/chef/knife/tag_create.rb +31 -0
  98. data/lib/chef/knife/tag_delete.rb +31 -0
  99. data/lib/chef/knife/tag_list.rb +29 -0
  100. data/lib/chef/knife/ui.rb +229 -0
  101. data/lib/chef/knife/windows_bootstrap.rb +8 -5
  102. data/lib/chef/log.rb +5 -59
  103. data/lib/chef/mash.rb +211 -0
  104. data/lib/chef/mixins.rb +1 -2
  105. data/lib/chef/nil_argument.rb +3 -0
  106. data/lib/chef/node.rb +96 -34
  107. data/lib/chef/platform.rb +27 -0
  108. data/lib/chef/provider/cookbook_file.rb +21 -20
  109. data/lib/chef/provider/deploy/revision.rb +3 -0
  110. data/lib/chef/provider/file.rb +20 -11
  111. data/lib/chef/provider/git.rb +26 -26
  112. data/lib/chef/provider/group/aix.rb +70 -0
  113. data/lib/chef/provider/group/groupadd.rb +7 -4
  114. data/lib/chef/provider/group/usermod.rb +1 -1
  115. data/lib/chef/provider/package.rb +28 -28
  116. data/lib/chef/provider/package/dpkg.rb +1 -1
  117. data/lib/chef/provider/package/portage.rb +50 -39
  118. data/lib/chef/provider/package/rubygems.rb +1 -1
  119. data/lib/chef/provider/package/zypper.rb +3 -20
  120. data/lib/chef/provider/remote_directory.rb +0 -2
  121. data/lib/chef/provider/remote_file.rb +2 -3
  122. data/lib/chef/provider/service/arch.rb +28 -35
  123. data/lib/chef/provider/service/simple.rb +1 -1
  124. data/lib/chef/provider/subversion.rb +22 -22
  125. data/lib/chef/providers.rb +1 -0
  126. data/lib/chef/recipe.rb +10 -12
  127. data/lib/chef/resource.rb +49 -42
  128. data/lib/chef/resource/gem_package.rb +7 -3
  129. data/lib/chef/resource/git.rb +5 -5
  130. data/lib/chef/resource/package.rb +7 -7
  131. data/lib/chef/resource/scm.rb +2 -1
  132. data/lib/chef/resource/solaris_package.rb +0 -1
  133. data/lib/chef/resource/yum_package.rb +0 -1
  134. data/lib/chef/rest.rb +7 -16
  135. data/lib/chef/rest/rest_request.rb +0 -16
  136. data/lib/chef/role.rb +67 -13
  137. data/lib/chef/run_context.rb +37 -21
  138. data/lib/chef/run_list.rb +30 -15
  139. data/lib/chef/run_list/run_list_expansion.rb +41 -20
  140. data/lib/chef/run_list/run_list_item.rb +20 -6
  141. data/lib/chef/run_list/versioned_recipe_list.rb +68 -0
  142. data/lib/chef/runner.rb +7 -15
  143. data/lib/chef/search/query.rb +12 -7
  144. data/lib/chef/shef.rb +6 -7
  145. data/lib/chef/shef/shef_session.rb +40 -35
  146. data/lib/chef/shell_out.rb +22 -201
  147. data/lib/chef/shell_out/unix.rb +224 -0
  148. data/lib/chef/shell_out/windows.rb +95 -0
  149. data/lib/chef/solr_query.rb +187 -0
  150. data/lib/chef/solr_query/lucene.treetop +145 -0
  151. data/lib/chef/solr_query/lucene_nodes.rb +285 -0
  152. data/lib/chef/solr_query/query_transform.rb +65 -0
  153. data/lib/chef/solr_query/solr_http_request.rb +118 -0
  154. data/lib/chef/version.rb +4 -2
  155. data/lib/chef/version_class.rb +70 -0
  156. data/lib/chef/version_constraint.rb +116 -0
  157. metadata +68 -37
  158. data/lib/chef/cookbook/metadata/version.rb +0 -87
  159. data/lib/chef/knife/bluebox_images_list.rb +0 -54
  160. data/lib/chef/knife/bluebox_server_create.rb +0 -157
  161. data/lib/chef/knife/bluebox_server_delete.rb +0 -63
  162. data/lib/chef/knife/bluebox_server_list.rb +0 -59
  163. data/lib/chef/knife/ec2_instance_data.rb +0 -46
  164. data/lib/chef/knife/ec2_server_create.rb +0 -218
  165. data/lib/chef/knife/ec2_server_delete.rb +0 -87
  166. data/lib/chef/knife/ec2_server_list.rb +0 -89
  167. data/lib/chef/knife/rackspace_server_create.rb +0 -184
  168. data/lib/chef/knife/rackspace_server_delete.rb +0 -57
  169. data/lib/chef/knife/rackspace_server_list.rb +0 -59
  170. data/lib/chef/knife/slicehost_images_list.rb +0 -53
  171. data/lib/chef/knife/slicehost_server_create.rb +0 -103
  172. data/lib/chef/knife/slicehost_server_delete.rb +0 -61
  173. data/lib/chef/knife/slicehost_server_list.rb +0 -64
  174. data/lib/chef/knife/terremark_server_create.rb +0 -152
  175. data/lib/chef/knife/terremark_server_delete.rb +0 -87
  176. data/lib/chef/knife/terremark_server_list.rb +0 -77
  177. data/lib/chef/mixin/find_preferred_file.rb +0 -92
@@ -1,87 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@opscode.com>)
3
- # Copyright:: Copyright (c) 2009 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/knife'
20
- require 'chef/json_compat'
21
-
22
- class Chef
23
- class Knife
24
- class TerremarkServerDelete < Knife
25
-
26
- banner "knife terremark server delete SERVER (options)"
27
-
28
- def h
29
- @highline ||= HighLine.new
30
- end
31
-
32
- def run
33
- require 'fog'
34
- require 'highline'
35
-
36
- terremark = Fog::Terremark.new(
37
- :terremark_username => Chef::Config[:knife][:terremark_username],
38
- :terremark_password => Chef::Config[:knife][:terremark_password],
39
- :terremark_service => Chef::Config[:knife][:terremark_service] || :vcloud
40
- )
41
-
42
- $stdout.sync = true
43
-
44
- vapp_id = terremark.servers.detect {|server| server.name == @name_args[0]}.id
45
- confirm("Do you really want to delete server ID #{vapp_id} named #{@name_args[0]}")
46
-
47
- puts "Cleaning up internet services..."
48
- private_ip = terremark.servers.get(vapp_id).ip_address
49
- internet_services = terremark.get_internet_services(terremark.default_vdc_id).body['InternetServices']
50
- public_ip_usage = {}
51
- internet_services.each do |internet_service|
52
- public_ip_address = internet_service['PublicIpAddress']['Name']
53
- public_ip_usage[public_ip_address] ||= []
54
- public_ip_usage[public_ip_address] << internet_service['Id']
55
- end
56
- internet_services.each do |internet_service|
57
- node_services = terremark.get_node_services(internet_service['Id']).body['NodeServices']
58
- node_services.delete_if do |node_service|
59
- if node_service['IpAddress'] == private_ip
60
- terremark.delete_node_service(node_service['Id'])
61
- end
62
- end
63
- if node_services.empty?
64
- terremark.delete_internet_service(internet_service['Id'])
65
- public_ip_usage.each_value {|internet_services| internet_services.delete(internet_service['Id'])}
66
- if public_ip_usage[internet_service['PublicIpAddress']['Name']].empty?
67
- terremark.delete_public_ip(internet_service['PublicIpAddress']['Id'])
68
- end
69
- end
70
- end
71
-
72
- power_off_task_id = terremark.power_off(vapp_id).body['href'].split('/').last
73
- print "Waiting for power off task [#{h.color(power_off_task_id, :bold)}]"
74
- terremark.tasks.get(power_off_task_id).wait_for { print '.'; ready? }
75
- print "\n"
76
-
77
- print "Deleting vApp #{h.color(vapp_id, :bold)}"
78
- delete_vapp_task_id = terremark.delete_vapp(vapp_id).headers['Location'].split('/').last
79
- terremark.tasks.get(delete_vapp_task_id).wait_for { print '.'; ready? }
80
- print "\n"
81
-
82
- Chef::Log.warn("Deleted server #{@name_args[0]}")
83
- end
84
- end
85
- end
86
- end
87
-
@@ -1,77 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@opscode.com>)
3
- # Copyright:: Copyright (c) 2009 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/knife'
20
- require 'chef/json_compat'
21
- require 'tempfile'
22
-
23
- class Chef
24
- class Knife
25
- class TerremarkServerList < Knife
26
-
27
- banner "knife terremark server list (options)"
28
-
29
- option :terremark_password,
30
- :short => "-K PASSWORD",
31
- :long => "--terremark-password PASSWORD",
32
- :description => "Your terremark password",
33
- :proc => Proc.new { |key| Chef::Config[:knife][:terremark_password] = key }
34
-
35
- option :terremark_username,
36
- :short => "-A USERNAME",
37
- :long => "--terremark-username USERNAME",
38
- :description => "Your terremark username",
39
- :proc => Proc.new { |username| Chef::Config[:knife][:terremark_username] = username }
40
-
41
- option :terremark_service,
42
- :short => "-S SERVICE",
43
- :long => "--terremark-service SERVICE",
44
- :description => "Your terremark service name",
45
- :proc => Proc.new { |service| Chef::Config[:knife][:terremark_service] = service }
46
-
47
- def h
48
- @highline ||= HighLine.new
49
- end
50
-
51
- def run
52
- require 'fog'
53
- require 'highline'
54
-
55
- server_name = @name_args[0]
56
-
57
- terremark = Fog::Terremark.new(
58
- :terremark_username => Chef::Config[:knife][:terremark_username],
59
- :terremark_password => Chef::Config[:knife][:terremark_password],
60
- :terremark_service => Chef::Config[:knife][:terremark_service] || :vcloud
61
- )
62
-
63
- $stdout.sync = true
64
-
65
- server_list = [ h.color('ID', :bold), h.color('Name', :bold) ]
66
- terremark.servers.all.each do |server|
67
- server_list << server.id.to_s
68
- server_list << server.name
69
- end
70
- puts h.list(server_list, :columns_across, 2)
71
-
72
- end
73
- end
74
- end
75
- end
76
-
77
-
@@ -1,92 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@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/cookbook_loader'
20
-
21
- class Chef
22
- module Mixin
23
- module FindPreferredFile
24
-
25
- def load_cookbook_files(cookbook_id, file_type)
26
- unless file_type == :remote_file || file_type == :template
27
- raise ArgumentError, "You must supply :remote_file or :template as the file_type"
28
- end
29
-
30
- cl = Chef::CookbookLoader.new
31
- cookbook = cl[cookbook_id]
32
- raise NotFound unless cookbook
33
-
34
- files = Hash.new
35
-
36
- cookbook_method = nil
37
-
38
- case file_type
39
- when :remote_file
40
- cookbook_method = :remote_files
41
- when :template
42
- cookbook_method = :template_files
43
- end
44
-
45
- cookbook.send(cookbook_method).each do |rf|
46
- full = File.expand_path(rf)
47
- name = File.basename(full)
48
- case file_type
49
- when :remote_file
50
- rf =~ /^.+#{Regexp.escape(cookbook_id)}[\\|\/]files[\\|\/](.+?)[\\|\/]#{Regexp.escape(name)}/
51
- when :template
52
- rf =~ /^.+#{Regexp.escape(cookbook_id)}[\\|\/]templates[\\|\/](.+?)[\\|\/]#{Regexp.escape(name)}/
53
- end
54
- singlecopy = $1
55
- files[full] = {
56
- :name => name,
57
- :singlecopy => singlecopy,
58
- :file => full,
59
- }
60
- end
61
- Chef::Log.debug("Preferred #{file_type} list: #{files.inspect}")
62
-
63
- files
64
- end
65
-
66
- def find_preferred_file(cookbook_id, file_type, file_name, fqdn, platform, version)
67
- file_list = load_cookbook_files(cookbook_id, file_type)
68
-
69
- preferences = [
70
- File.join("host-#{fqdn}", "#{file_name}"),
71
- File.join("#{platform}-#{version}", "#{file_name}"),
72
- File.join("#{platform}", "#{file_name}"),
73
- File.join("default", "#{file_name}")
74
- ]
75
-
76
- file_list_str = file_list.keys.join("\n")
77
- Chef::Log.debug("Searching for preferred file in\n#{file_list_str}")
78
-
79
- preferences.each do |pref|
80
- Chef::Log.debug("Looking for #{pref}")
81
- matcher = /^(.+#{Regexp.escape(pref)})$/
82
- if match = matcher.match(file_list_str)
83
- return match[1]
84
- end
85
- end
86
-
87
- raise Chef::Exceptions::FileNotFound, "Cannot find a preferred file for #{file_name}!"
88
- end
89
-
90
- end
91
- end
92
- end