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.
- data/README.rdoc +0 -3
- data/distro/arch/etc/rc.d/chef-server +0 -4
- data/distro/arch/etc/rc.d/chef-server-webui +0 -4
- data/distro/arch/etc/rc.d/chef-solr +0 -4
- data/distro/arch/etc/rc.d/chef-solr-indexer +0 -4
- data/lib/chef.rb +3 -3
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/application.rb +11 -1
- data/lib/chef/application/client.rb +18 -22
- data/lib/chef/application/knife.rb +28 -29
- data/lib/chef/application/solo.rb +14 -12
- data/lib/chef/client.rb +112 -54
- data/lib/chef/config.rb +4 -0
- data/lib/chef/cookbook/chefignore.rb +66 -0
- data/lib/chef/cookbook/cookbook_collection.rb +6 -5
- data/lib/chef/cookbook/cookbook_version_loader.rb +151 -0
- data/lib/chef/cookbook/file_system_file_vendor.rb +10 -8
- data/lib/chef/cookbook/metadata.rb +200 -108
- data/lib/chef/cookbook_loader.rb +39 -163
- data/lib/chef/cookbook_uploader.rb +100 -78
- data/lib/chef/cookbook_version.rb +92 -47
- data/lib/chef/cookbook_version_selector.rb +163 -0
- data/lib/chef/couchdb.rb +9 -1
- data/lib/chef/data_bag.rb +1 -1
- data/lib/chef/data_bag_item.rb +1 -1
- data/lib/chef/encrypted_data_bag_item.rb +126 -0
- data/lib/chef/environment.rb +386 -0
- data/lib/chef/exceptions.rb +82 -1
- data/lib/chef/index_queue/amqp_client.rb +15 -12
- data/lib/chef/index_queue/indexable.rb +38 -4
- data/lib/chef/json_compat.rb +3 -3
- data/lib/chef/knife.rb +97 -202
- data/lib/chef/knife/bootstrap.rb +27 -61
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +4 -2
- data/lib/chef/knife/bootstrap/centos5-gems.erb +6 -15
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +3 -4
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +6 -5
- data/lib/chef/knife/client_bulk_delete.rb +6 -3
- data/lib/chef/knife/client_create.rb +13 -10
- data/lib/chef/knife/client_delete.rb +10 -7
- data/lib/chef/knife/client_edit.rb +9 -6
- data/lib/chef/knife/client_list.rb +8 -5
- data/lib/chef/knife/client_reregister.rb +9 -6
- data/lib/chef/knife/client_show.rb +9 -6
- data/lib/chef/knife/configure.rb +15 -19
- data/lib/chef/knife/configure_client.rb +4 -4
- data/lib/chef/knife/cookbook_bulk_delete.rb +11 -8
- data/lib/chef/knife/cookbook_create.rb +120 -55
- data/lib/chef/knife/cookbook_delete.rb +18 -12
- data/lib/chef/knife/cookbook_download.rb +10 -6
- data/lib/chef/knife/cookbook_list.rb +15 -6
- data/lib/chef/knife/cookbook_metadata.rb +41 -21
- data/lib/chef/knife/cookbook_metadata_from_file.rb +4 -0
- data/lib/chef/knife/cookbook_show.rb +16 -5
- data/lib/chef/knife/cookbook_site_download.rb +2 -2
- data/lib/chef/knife/cookbook_site_share.rb +18 -13
- data/lib/chef/knife/cookbook_site_unshare.rb +7 -4
- data/lib/chef/knife/cookbook_site_vendor.rb +21 -18
- data/lib/chef/knife/cookbook_test.rb +14 -14
- data/lib/chef/knife/cookbook_upload.rb +91 -40
- data/lib/chef/knife/data_bag_create.rb +41 -6
- data/lib/chef/knife/data_bag_delete.rb +5 -3
- data/lib/chef/knife/data_bag_edit.rb +55 -11
- data/lib/chef/knife/data_bag_from_file.rb +47 -7
- data/lib/chef/knife/data_bag_list.rb +4 -1
- data/lib/chef/knife/data_bag_show.rb +44 -4
- data/lib/chef/knife/environment_create.rb +53 -0
- data/lib/chef/knife/environment_delete.rb +45 -0
- data/lib/chef/knife/environment_edit.rb +45 -0
- data/lib/chef/knife/environment_from_file.rb +39 -0
- data/lib/chef/knife/environment_list.rb +42 -0
- data/lib/chef/knife/environment_show.rb +46 -0
- data/lib/chef/knife/exec.rb +1 -1
- data/lib/chef/knife/index_rebuild.rb +8 -9
- data/lib/chef/knife/node_bulk_delete.rb +9 -6
- data/lib/chef/knife/node_create.rb +9 -6
- data/lib/chef/knife/node_delete.rb +10 -7
- data/lib/chef/knife/node_edit.rb +129 -10
- data/lib/chef/knife/node_from_file.rb +10 -7
- data/lib/chef/knife/node_list.rb +11 -6
- data/lib/chef/knife/node_run_list_add.rb +10 -7
- data/lib/chef/knife/node_run_list_remove.rb +9 -6
- data/lib/chef/knife/node_show.rb +15 -7
- data/lib/chef/knife/recipe_list.rb +4 -3
- data/lib/chef/knife/role_bulk_delete.rb +9 -6
- data/lib/chef/knife/role_create.rb +9 -6
- data/lib/chef/knife/role_delete.rb +10 -7
- data/lib/chef/knife/role_edit.rb +11 -8
- data/lib/chef/knife/role_from_file.rb +10 -7
- data/lib/chef/knife/role_list.rb +8 -5
- data/lib/chef/knife/role_show.rb +11 -8
- data/lib/chef/knife/search.rb +33 -10
- data/lib/chef/knife/ssh.rb +33 -61
- data/lib/chef/knife/status.rb +7 -4
- data/lib/chef/knife/subcommand_loader.rb +101 -0
- data/lib/chef/knife/tag_create.rb +31 -0
- data/lib/chef/knife/tag_delete.rb +31 -0
- data/lib/chef/knife/tag_list.rb +29 -0
- data/lib/chef/knife/ui.rb +229 -0
- data/lib/chef/knife/windows_bootstrap.rb +8 -5
- data/lib/chef/log.rb +5 -59
- data/lib/chef/mash.rb +211 -0
- data/lib/chef/mixins.rb +1 -2
- data/lib/chef/nil_argument.rb +3 -0
- data/lib/chef/node.rb +96 -34
- data/lib/chef/platform.rb +27 -0
- data/lib/chef/provider/cookbook_file.rb +21 -20
- data/lib/chef/provider/deploy/revision.rb +3 -0
- data/lib/chef/provider/file.rb +20 -11
- data/lib/chef/provider/git.rb +26 -26
- data/lib/chef/provider/group/aix.rb +70 -0
- data/lib/chef/provider/group/groupadd.rb +7 -4
- data/lib/chef/provider/group/usermod.rb +1 -1
- data/lib/chef/provider/package.rb +28 -28
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/portage.rb +50 -39
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +3 -20
- data/lib/chef/provider/remote_directory.rb +0 -2
- data/lib/chef/provider/remote_file.rb +2 -3
- data/lib/chef/provider/service/arch.rb +28 -35
- data/lib/chef/provider/service/simple.rb +1 -1
- data/lib/chef/provider/subversion.rb +22 -22
- data/lib/chef/providers.rb +1 -0
- data/lib/chef/recipe.rb +10 -12
- data/lib/chef/resource.rb +49 -42
- data/lib/chef/resource/gem_package.rb +7 -3
- data/lib/chef/resource/git.rb +5 -5
- data/lib/chef/resource/package.rb +7 -7
- data/lib/chef/resource/scm.rb +2 -1
- data/lib/chef/resource/solaris_package.rb +0 -1
- data/lib/chef/resource/yum_package.rb +0 -1
- data/lib/chef/rest.rb +7 -16
- data/lib/chef/rest/rest_request.rb +0 -16
- data/lib/chef/role.rb +67 -13
- data/lib/chef/run_context.rb +37 -21
- data/lib/chef/run_list.rb +30 -15
- data/lib/chef/run_list/run_list_expansion.rb +41 -20
- data/lib/chef/run_list/run_list_item.rb +20 -6
- data/lib/chef/run_list/versioned_recipe_list.rb +68 -0
- data/lib/chef/runner.rb +7 -15
- data/lib/chef/search/query.rb +12 -7
- data/lib/chef/shef.rb +6 -7
- data/lib/chef/shef/shef_session.rb +40 -35
- data/lib/chef/shell_out.rb +22 -201
- data/lib/chef/shell_out/unix.rb +224 -0
- data/lib/chef/shell_out/windows.rb +95 -0
- data/lib/chef/solr_query.rb +187 -0
- data/lib/chef/solr_query/lucene.treetop +145 -0
- data/lib/chef/solr_query/lucene_nodes.rb +285 -0
- data/lib/chef/solr_query/query_transform.rb +65 -0
- data/lib/chef/solr_query/solr_http_request.rb +118 -0
- data/lib/chef/version.rb +4 -2
- data/lib/chef/version_class.rb +70 -0
- data/lib/chef/version_constraint.rb +116 -0
- metadata +68 -37
- data/lib/chef/cookbook/metadata/version.rb +0 -87
- data/lib/chef/knife/bluebox_images_list.rb +0 -54
- data/lib/chef/knife/bluebox_server_create.rb +0 -157
- data/lib/chef/knife/bluebox_server_delete.rb +0 -63
- data/lib/chef/knife/bluebox_server_list.rb +0 -59
- data/lib/chef/knife/ec2_instance_data.rb +0 -46
- data/lib/chef/knife/ec2_server_create.rb +0 -218
- data/lib/chef/knife/ec2_server_delete.rb +0 -87
- data/lib/chef/knife/ec2_server_list.rb +0 -89
- data/lib/chef/knife/rackspace_server_create.rb +0 -184
- data/lib/chef/knife/rackspace_server_delete.rb +0 -57
- data/lib/chef/knife/rackspace_server_list.rb +0 -59
- data/lib/chef/knife/slicehost_images_list.rb +0 -53
- data/lib/chef/knife/slicehost_server_create.rb +0 -103
- data/lib/chef/knife/slicehost_server_delete.rb +0 -61
- data/lib/chef/knife/slicehost_server_list.rb +0 -64
- data/lib/chef/knife/terremark_server_create.rb +0 -152
- data/lib/chef/knife/terremark_server_delete.rb +0 -87
- data/lib/chef/knife/terremark_server_list.rb +0 -77
- data/lib/chef/mixin/find_preferred_file.rb +0 -92
data/README.rdoc
CHANGED
|
@@ -38,14 +38,12 @@ Install these via your platform's preferred method; for example apt, yum, ports,
|
|
|
38
38
|
* RabbitMQ[http://www.rabbitmq.com/]
|
|
39
39
|
* GCC and C Standard Libraries, header files, etc. (i.e., build-essential on debian/ubuntu)
|
|
40
40
|
* Ruby development package
|
|
41
|
-
* libxml2 development package
|
|
42
41
|
|
|
43
42
|
=== Runtime Rubygem Dependencies
|
|
44
43
|
==== Chef Client and Solo
|
|
45
44
|
* ohai
|
|
46
45
|
* bunny
|
|
47
46
|
* erubis
|
|
48
|
-
* extlib
|
|
49
47
|
* highline
|
|
50
48
|
* json (1.4.4 - 1.4.6)
|
|
51
49
|
* mixlib-authentication
|
|
@@ -61,7 +59,6 @@ Install these via your platform's preferred method; for example apt, yum, ports,
|
|
|
61
59
|
All of the above, plus the following:
|
|
62
60
|
* coderay
|
|
63
61
|
* haml
|
|
64
|
-
* libxml-ruby
|
|
65
62
|
* merb-assets
|
|
66
63
|
* merb-core
|
|
67
64
|
* merb-haml
|
|
@@ -51,11 +51,7 @@ case "$1" in
|
|
|
51
51
|
|
|
52
52
|
stop)
|
|
53
53
|
stat_busy "Stopping $daemon_name daemon"
|
|
54
|
-
<<<<<<< HEAD
|
|
55
54
|
PID=$(get_pid)
|
|
56
|
-
=======
|
|
57
|
-
PID=$(gid_pid)
|
|
58
|
-
>>>>>>> 26fafb3... CHEF-1938, add boot scripts for archlinux
|
|
59
55
|
[ ! -z "$PID" ] && kill $PID &> /dev/null
|
|
60
56
|
if [ $? -gt 0 ]; then
|
|
61
57
|
stat_fail
|
|
@@ -51,11 +51,7 @@ case "$1" in
|
|
|
51
51
|
|
|
52
52
|
stop)
|
|
53
53
|
stat_busy "Stopping $daemon_name daemon"
|
|
54
|
-
<<<<<<< HEAD
|
|
55
54
|
PID=$(get_pid)
|
|
56
|
-
=======
|
|
57
|
-
PID=$(gid_pid)
|
|
58
|
-
>>>>>>> 26fafb3... CHEF-1938, add boot scripts for archlinux
|
|
59
55
|
[ ! -z "$PID" ] && kill $PID &> /dev/null
|
|
60
56
|
if [ $? -gt 0 ]; then
|
|
61
57
|
stat_fail
|
|
@@ -51,11 +51,7 @@ case "$1" in
|
|
|
51
51
|
|
|
52
52
|
stop)
|
|
53
53
|
stat_busy "Stopping $daemon_name daemon"
|
|
54
|
-
<<<<<<< HEAD
|
|
55
54
|
PID=$(get_pid)
|
|
56
|
-
=======
|
|
57
|
-
PID=$(gid_pid)
|
|
58
|
-
>>>>>>> 26fafb3... CHEF-1938, add boot scripts for archlinux
|
|
59
55
|
[ ! -z "$PID" ] && kill $PID &> /dev/null
|
|
60
56
|
if [ $? -gt 0 ]; then
|
|
61
57
|
stat_fail
|
|
@@ -51,11 +51,7 @@ case "$1" in
|
|
|
51
51
|
|
|
52
52
|
stop)
|
|
53
53
|
stat_busy "Stopping $daemon_name daemon"
|
|
54
|
-
<<<<<<< HEAD
|
|
55
54
|
PID=$(get_pid)
|
|
56
|
-
=======
|
|
57
|
-
PID=$(gid_pid)
|
|
58
|
-
>>>>>>> 26fafb3... CHEF-1938, add boot scripts for archlinux
|
|
59
55
|
[ ! -z "$PID" ] && kill $PID &> /dev/null
|
|
60
56
|
if [ $? -gt 0 ]; then
|
|
61
57
|
stat_fail
|
data/lib/chef.rb
CHANGED
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
#
|
|
18
18
|
|
|
19
19
|
require 'chef/version'
|
|
20
|
-
|
|
21
|
-
require '
|
|
20
|
+
require 'chef/nil_argument'
|
|
21
|
+
require 'chef/mash'
|
|
22
22
|
require 'chef/exceptions'
|
|
23
23
|
require 'chef/log'
|
|
24
24
|
require 'chef/config'
|
|
@@ -37,4 +37,4 @@ require 'chef/handler/json_file'
|
|
|
37
37
|
require 'chef/monkey_patches/tempfile'
|
|
38
38
|
require 'chef/monkey_patches/dir'
|
|
39
39
|
require 'chef/monkey_patches/string'
|
|
40
|
-
require 'chef/monkey_patches/numeric'
|
|
40
|
+
require 'chef/monkey_patches/numeric'
|
data/lib/chef/api_client.rb
CHANGED
data/lib/chef/application.rb
CHANGED
|
@@ -86,9 +86,19 @@ class Chef::Application
|
|
|
86
86
|
|
|
87
87
|
end
|
|
88
88
|
|
|
89
|
-
# Initialize and configure the logger
|
|
89
|
+
# Initialize and configure the logger. If the configured log location is not
|
|
90
|
+
# STDOUT, but stdout is a TTY and we're not daemonizing, we set up a secondary
|
|
91
|
+
# logger with output to stdout. This way, we magically do the right thing when
|
|
92
|
+
# the user has configured logging to a file but they're running chef in the
|
|
93
|
+
# shell to debug something.
|
|
90
94
|
def configure_logging
|
|
91
95
|
Chef::Log.init(Chef::Config[:log_location])
|
|
96
|
+
if ( Chef::Config[:log_location] != STDOUT ) && STDOUT.tty? && (!Chef::Config[:daemonize])
|
|
97
|
+
stdout_logger = Logger.new(STDOUT)
|
|
98
|
+
STDOUT.sync = true
|
|
99
|
+
stdout_logger.formatter = Chef::Log.logger.formatter
|
|
100
|
+
Chef::Log.loggers << stdout_logger
|
|
101
|
+
end
|
|
92
102
|
Chef::Log.level = Chef::Config[:log_level]
|
|
93
103
|
end
|
|
94
104
|
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
8
|
# you may not use this file except in compliance with the License.
|
|
9
9
|
# You may obtain a copy of the License at
|
|
10
|
-
#
|
|
10
|
+
#
|
|
11
11
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
#
|
|
12
|
+
#
|
|
13
13
|
# Unless required by applicable law or agreed to in writing, software
|
|
14
14
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
15
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
@@ -25,14 +25,14 @@ require 'chef/rest'
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class Chef::Application::Client < Chef::Application
|
|
28
|
-
|
|
29
|
-
option :config_file,
|
|
28
|
+
|
|
29
|
+
option :config_file,
|
|
30
30
|
:short => "-c CONFIG",
|
|
31
31
|
:long => "--config CONFIG",
|
|
32
32
|
:default => "/etc/chef/client.rb",
|
|
33
33
|
:description => "The configuration file to use"
|
|
34
34
|
|
|
35
|
-
option :log_level,
|
|
35
|
+
option :log_level,
|
|
36
36
|
:short => "-l LEVEL",
|
|
37
37
|
:long => "--log_level LEVEL",
|
|
38
38
|
:description => "Set the log level (debug, info, warn, error, fatal)",
|
|
@@ -44,12 +44,6 @@ class Chef::Application::Client < Chef::Application
|
|
|
44
44
|
:description => "Set the log file location, defaults to STDOUT - recommended for daemonizing",
|
|
45
45
|
:proc => nil
|
|
46
46
|
|
|
47
|
-
option :verbose_logging,
|
|
48
|
-
:short => "-V",
|
|
49
|
-
:long => "--verbose",
|
|
50
|
-
:description => "Ensures logging goes to STDOUT as well as to other configured log location(s).",
|
|
51
|
-
:proc => lambda { |p| true }
|
|
52
|
-
|
|
53
47
|
option :help,
|
|
54
48
|
:short => "-h",
|
|
55
49
|
:long => "--help",
|
|
@@ -58,7 +52,7 @@ class Chef::Application::Client < Chef::Application
|
|
|
58
52
|
:boolean => true,
|
|
59
53
|
:show_options => true,
|
|
60
54
|
:exit => 0
|
|
61
|
-
|
|
55
|
+
|
|
62
56
|
option :user,
|
|
63
57
|
:short => "-u USER",
|
|
64
58
|
:long => "--user USER",
|
|
@@ -90,7 +84,7 @@ class Chef::Application::Client < Chef::Application
|
|
|
90
84
|
:proc => lambda { |s| s.to_i }
|
|
91
85
|
|
|
92
86
|
option :once,
|
|
93
|
-
:long => "--
|
|
87
|
+
:long => "--once",
|
|
94
88
|
:description => "Cancel any interval or splay options, run chef once and exit",
|
|
95
89
|
:boolean => true
|
|
96
90
|
|
|
@@ -138,20 +132,22 @@ class Chef::Application::Client < Chef::Application
|
|
|
138
132
|
:proc => lambda {|v| puts "Chef: #{::Chef::VERSION}"},
|
|
139
133
|
:exit => 0
|
|
140
134
|
|
|
135
|
+
attr_reader :chef_client_json
|
|
136
|
+
|
|
141
137
|
def initialize
|
|
142
138
|
super
|
|
143
139
|
|
|
144
140
|
@chef_client = nil
|
|
145
141
|
@chef_client_json = nil
|
|
146
142
|
end
|
|
147
|
-
|
|
143
|
+
|
|
148
144
|
# Reconfigure the chef client
|
|
149
145
|
# Re-open the JSON attributes and load them into the node
|
|
150
|
-
def reconfigure
|
|
151
|
-
super
|
|
146
|
+
def reconfigure
|
|
147
|
+
super
|
|
152
148
|
|
|
153
149
|
Chef::Config[:chef_server_url] = config[:chef_server_url] if config.has_key? :chef_server_url
|
|
154
|
-
|
|
150
|
+
|
|
155
151
|
if Chef::Config[:daemonize]
|
|
156
152
|
Chef::Config[:interval] ||= 1800
|
|
157
153
|
end
|
|
@@ -191,14 +187,14 @@ class Chef::Application::Client < Chef::Application
|
|
|
191
187
|
|
|
192
188
|
def configure_logging
|
|
193
189
|
super
|
|
194
|
-
|
|
195
|
-
|
|
190
|
+
Mixlib::Authentication::Log.use_log_devices( Chef::Log )
|
|
191
|
+
Ohai::Log.use_log_devices( Chef::Log )
|
|
196
192
|
end
|
|
197
|
-
|
|
193
|
+
|
|
198
194
|
def setup_application
|
|
199
195
|
Chef::Daemon.change_privilege
|
|
200
196
|
end
|
|
201
|
-
|
|
197
|
+
|
|
202
198
|
# Run the chef client, optionally daemonizing or looping at intervals.
|
|
203
199
|
def run_application
|
|
204
200
|
if Chef::Config[:version]
|
|
@@ -208,7 +204,7 @@ class Chef::Application::Client < Chef::Application
|
|
|
208
204
|
if Chef::Config[:daemonize]
|
|
209
205
|
Chef::Daemon.daemonize("chef-client")
|
|
210
206
|
end
|
|
211
|
-
|
|
207
|
+
|
|
212
208
|
loop do
|
|
213
209
|
begin
|
|
214
210
|
if Chef::Config[:splay]
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
|
8
8
|
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
9
|
+
#
|
|
10
10
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
11
|
+
#
|
|
12
12
|
# Unless required by applicable law or agreed to in writing, software
|
|
13
13
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
14
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
@@ -17,17 +17,8 @@
|
|
|
17
17
|
|
|
18
18
|
require 'chef/knife'
|
|
19
19
|
require 'chef/application'
|
|
20
|
-
require '
|
|
21
|
-
require '
|
|
22
|
-
require 'chef/log'
|
|
23
|
-
require 'chef/node'
|
|
24
|
-
require 'chef/role'
|
|
25
|
-
require 'chef/data_bag'
|
|
26
|
-
require 'chef/data_bag_item'
|
|
27
|
-
require 'chef/rest'
|
|
28
|
-
require 'chef/search/query'
|
|
29
|
-
require 'tmpdir'
|
|
30
|
-
require 'uri'
|
|
20
|
+
require 'mixlib/log'
|
|
21
|
+
require 'ohai'
|
|
31
22
|
|
|
32
23
|
class Chef::Application::Knife < Chef::Application
|
|
33
24
|
|
|
@@ -35,12 +26,13 @@ class Chef::Application::Knife < Chef::Application
|
|
|
35
26
|
|
|
36
27
|
banner "Usage: #{$0} sub-command (options)"
|
|
37
28
|
|
|
38
|
-
option :config_file,
|
|
29
|
+
option :config_file,
|
|
39
30
|
:short => "-c CONFIG",
|
|
40
31
|
:long => "--config CONFIG",
|
|
41
|
-
:description => "The configuration file to use"
|
|
32
|
+
:description => "The configuration file to use",
|
|
33
|
+
:proc => lambda { |path| File.expand_path(path, Dir.pwd) }
|
|
42
34
|
|
|
43
|
-
option :log_level,
|
|
35
|
+
option :log_level,
|
|
44
36
|
:short => "-l LEVEL",
|
|
45
37
|
:long => "--log_level LEVEL",
|
|
46
38
|
:description => "Set the log level (debug, info, warn, error, fatal)",
|
|
@@ -52,25 +44,30 @@ class Chef::Application::Knife < Chef::Application
|
|
|
52
44
|
:description => "Set the log file location, defaults to STDOUT",
|
|
53
45
|
:proc => nil
|
|
54
46
|
|
|
47
|
+
option :environment,
|
|
48
|
+
:short => "-E ENVIRONMENT",
|
|
49
|
+
:long => "--environment ENVIRONMENT",
|
|
50
|
+
:description => "Set the Chef environment"
|
|
51
|
+
|
|
55
52
|
option :editor,
|
|
56
53
|
:short => "-e EDITOR",
|
|
57
54
|
:long => "--editor EDITOR",
|
|
58
55
|
:description => "Set the editor to use for interactive commands",
|
|
59
56
|
:default => ENV['EDITOR']
|
|
60
|
-
|
|
57
|
+
|
|
61
58
|
option :no_editor,
|
|
62
59
|
:short => "-n",
|
|
63
60
|
:long => "--no-editor",
|
|
64
61
|
:description => "Do not open EDITOR, just accept the data as is",
|
|
65
62
|
:boolean => true
|
|
66
|
-
|
|
63
|
+
|
|
67
64
|
option :help,
|
|
68
65
|
:short => "-h",
|
|
69
66
|
:long => "--help",
|
|
70
67
|
:description => "Show this message",
|
|
71
68
|
:on => :tail,
|
|
72
69
|
:boolean => true
|
|
73
|
-
|
|
70
|
+
|
|
74
71
|
option :node_name,
|
|
75
72
|
:short => "-u USER",
|
|
76
73
|
:long => "--user USER",
|
|
@@ -79,7 +76,8 @@ class Chef::Application::Knife < Chef::Application
|
|
|
79
76
|
option :client_key,
|
|
80
77
|
:short => "-k KEY",
|
|
81
78
|
:long => "--key KEY",
|
|
82
|
-
:description => "API Client Key"
|
|
79
|
+
:description => "API Client Key",
|
|
80
|
+
:proc => lambda { |path| File.expand_path(path, Dir.pwd) }
|
|
83
81
|
|
|
84
82
|
option :chef_server_url,
|
|
85
83
|
:short => "-s URL",
|
|
@@ -96,6 +94,7 @@ class Chef::Application::Knife < Chef::Application
|
|
|
96
94
|
:description => "Accept default values for all questions"
|
|
97
95
|
|
|
98
96
|
option :print_after,
|
|
97
|
+
:short => "-p",
|
|
99
98
|
:long => "--print-after",
|
|
100
99
|
:description => "Show the data after a destructive operation"
|
|
101
100
|
|
|
@@ -113,16 +112,16 @@ class Chef::Application::Knife < Chef::Application
|
|
|
113
112
|
:proc => lambda {|v| puts "Chef: #{::Chef::VERSION}"},
|
|
114
113
|
:exit => 0
|
|
115
114
|
|
|
116
|
-
# Run knife
|
|
115
|
+
# Run knife
|
|
117
116
|
def run
|
|
118
117
|
Mixlib::Log::Formatter.show_time = false
|
|
119
118
|
validate_and_parse_options
|
|
120
119
|
Chef::Knife.run(ARGV, options)
|
|
121
120
|
exit 0
|
|
122
121
|
end
|
|
123
|
-
|
|
122
|
+
|
|
124
123
|
private
|
|
125
|
-
|
|
124
|
+
|
|
126
125
|
def validate_and_parse_options
|
|
127
126
|
# Checking ARGV validity *before* parse_options because parse_options
|
|
128
127
|
# mangles ARGV in some situations
|
|
@@ -131,16 +130,16 @@ class Chef::Application::Knife < Chef::Application
|
|
|
131
130
|
elsif no_subcommand_given?
|
|
132
131
|
if (want_help? || want_version?)
|
|
133
132
|
print_help_and_exit
|
|
134
|
-
else
|
|
133
|
+
else
|
|
135
134
|
print_help_and_exit(2, NO_COMMAND_GIVEN)
|
|
136
135
|
end
|
|
137
136
|
end
|
|
138
137
|
end
|
|
139
|
-
|
|
138
|
+
|
|
140
139
|
def no_subcommand_given?
|
|
141
140
|
ARGV[0] =~ /^-/
|
|
142
141
|
end
|
|
143
|
-
|
|
142
|
+
|
|
144
143
|
def no_command_given?
|
|
145
144
|
ARGV.empty?
|
|
146
145
|
end
|
|
@@ -152,10 +151,10 @@ class Chef::Application::Knife < Chef::Application
|
|
|
152
151
|
def want_version?
|
|
153
152
|
ARGV[0] =~ /^(--version|-v)$/
|
|
154
153
|
end
|
|
155
|
-
|
|
154
|
+
|
|
156
155
|
def print_help_and_exit(exitcode=1, fatal_message=nil)
|
|
157
156
|
Chef::Log.error(fatal_message) if fatal_message
|
|
158
|
-
|
|
157
|
+
|
|
159
158
|
begin
|
|
160
159
|
self.parse_options
|
|
161
160
|
rescue OptionParser::InvalidOption => e
|
|
@@ -166,5 +165,5 @@ class Chef::Application::Knife < Chef::Application
|
|
|
166
165
|
Chef::Knife.list_commands
|
|
167
166
|
exit exitcode
|
|
168
167
|
end
|
|
169
|
-
|
|
168
|
+
|
|
170
169
|
end
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
|
8
8
|
# You may obtain a copy of the License at
|
|
9
|
-
#
|
|
9
|
+
#
|
|
10
10
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
#
|
|
11
|
+
#
|
|
12
12
|
# Unless required by applicable law or agreed to in writing, software
|
|
13
13
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
14
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
@@ -26,14 +26,14 @@ require 'open-uri'
|
|
|
26
26
|
require 'fileutils'
|
|
27
27
|
|
|
28
28
|
class Chef::Application::Solo < Chef::Application
|
|
29
|
-
|
|
30
|
-
option :config_file,
|
|
29
|
+
|
|
30
|
+
option :config_file,
|
|
31
31
|
:short => "-c CONFIG",
|
|
32
32
|
:long => "--config CONFIG",
|
|
33
33
|
:default => "/etc/chef/solo.rb",
|
|
34
34
|
:description => "The configuration file to use"
|
|
35
35
|
|
|
36
|
-
option :log_level,
|
|
36
|
+
option :log_level,
|
|
37
37
|
:short => "-l LEVEL",
|
|
38
38
|
:long => "--log_level LEVEL",
|
|
39
39
|
:description => "Set the log level (debug, info, warn, error, fatal)",
|
|
@@ -101,7 +101,7 @@ class Chef::Application::Solo < Chef::Application
|
|
|
101
101
|
:long => "--recipe-url RECIPE_URL",
|
|
102
102
|
:description => "Pull down a remote gzipped tarball of recipes and untar it to the cookbook cache.",
|
|
103
103
|
:proc => nil
|
|
104
|
-
|
|
104
|
+
|
|
105
105
|
option :version,
|
|
106
106
|
:short => "-v",
|
|
107
107
|
:long => "--version",
|
|
@@ -110,21 +110,23 @@ class Chef::Application::Solo < Chef::Application
|
|
|
110
110
|
:proc => lambda {|v| puts "Chef: #{::Chef::VERSION}"},
|
|
111
111
|
:exit => 0
|
|
112
112
|
|
|
113
|
+
attr_reader :chef_solo_json
|
|
114
|
+
|
|
113
115
|
def initialize
|
|
114
116
|
super
|
|
115
117
|
@chef_solo = nil
|
|
116
118
|
@chef_solo_json = nil
|
|
117
119
|
end
|
|
118
|
-
|
|
120
|
+
|
|
119
121
|
def reconfigure
|
|
120
122
|
super
|
|
121
|
-
|
|
123
|
+
|
|
122
124
|
Chef::Config[:solo] = true
|
|
123
125
|
|
|
124
126
|
if Chef::Config[:daemonize]
|
|
125
127
|
Chef::Config[:interval] ||= 1800
|
|
126
128
|
end
|
|
127
|
-
|
|
129
|
+
|
|
128
130
|
if Chef::Config[:json_attribs]
|
|
129
131
|
begin
|
|
130
132
|
json_io = case Chef::Config[:json_attribs]
|
|
@@ -151,7 +153,7 @@ class Chef::Application::Solo < Chef::Application
|
|
|
151
153
|
Chef::Application.fatal!("Could not parse the provided JSON file (#{Chef::Config[:json_attribs]})!: " + error.message, 2)
|
|
152
154
|
end
|
|
153
155
|
end
|
|
154
|
-
|
|
156
|
+
|
|
155
157
|
if Chef::Config[:recipe_url]
|
|
156
158
|
cookbooks_path = Array(Chef::Config[:cookbook_path]).detect{|e| e =~ /\/cookbooks\/*$/ }
|
|
157
159
|
recipes_path = File.expand_path(File.join(cookbooks_path, '..'))
|
|
@@ -168,11 +170,11 @@ class Chef::Application::Solo < Chef::Application
|
|
|
168
170
|
Chef::Mixin::Command.run_command(:command => "tar zxvfC #{path} #{recipes_path}")
|
|
169
171
|
end
|
|
170
172
|
end
|
|
171
|
-
|
|
173
|
+
|
|
172
174
|
def setup_application
|
|
173
175
|
Chef::Daemon.change_privilege
|
|
174
176
|
end
|
|
175
|
-
|
|
177
|
+
|
|
176
178
|
def run_application
|
|
177
179
|
if Chef::Config[:daemonize]
|
|
178
180
|
Chef::Daemon.daemonize("chef-client")
|