opscode-pushy-client 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +88 -0
  3. data/Gemfile +20 -0
  4. data/Gemfile.lock +242 -0
  5. data/LICENSE +201 -0
  6. data/README.md +43 -0
  7. data/RELEASE_PROCESS.md +105 -0
  8. data/Rakefile +42 -0
  9. data/bin/print_execution_environment +18 -0
  10. data/bin/push-apply +47 -0
  11. data/bin/pushy-client +8 -0
  12. data/bin/pushy-service-manager +19 -0
  13. data/jenkins/jenkins_run_tests.sh +9 -0
  14. data/keys/client_private.pem +27 -0
  15. data/keys/server_public.pem +9 -0
  16. data/lib/pushy_client.rb +268 -0
  17. data/lib/pushy_client/cli.rb +168 -0
  18. data/lib/pushy_client/heartbeater.rb +153 -0
  19. data/lib/pushy_client/job_runner.rb +316 -0
  20. data/lib/pushy_client/periodic_reconfigurer.rb +62 -0
  21. data/lib/pushy_client/protocol_handler.rb +508 -0
  22. data/lib/pushy_client/version.rb +23 -0
  23. data/lib/pushy_client/whitelist.rb +66 -0
  24. data/lib/pushy_client/win32.rb +27 -0
  25. data/lib/pushy_client/windows_service.rb +253 -0
  26. data/omnibus/Berksfile +12 -0
  27. data/omnibus/Gemfile +15 -0
  28. data/omnibus/Gemfile.lock +232 -0
  29. data/omnibus/LICENSE +201 -0
  30. data/omnibus/README.md +141 -0
  31. data/omnibus/acceptance/Berksfile +6 -0
  32. data/omnibus/acceptance/Berksfile.lock +35 -0
  33. data/omnibus/acceptance/Makefile +13 -0
  34. data/omnibus/acceptance/README.md +29 -0
  35. data/omnibus/acceptance/metadata.rb +12 -0
  36. data/omnibus/acceptance/recipes/chef-server-user-org.rb +31 -0
  37. data/omnibus/config/projects/push-jobs-client.rb +83 -0
  38. data/omnibus/config/software/opscode-pushy-client.rb +78 -0
  39. data/omnibus/files/mapfiles/solaris +18 -0
  40. data/omnibus/files/openssl-customization/windows/ssl_env_hack.rb +34 -0
  41. data/omnibus/omnibus.rb +54 -0
  42. data/omnibus/package-scripts/push-jobs-client/postinst +55 -0
  43. data/omnibus/package-scripts/push-jobs-client/postrm +39 -0
  44. data/omnibus/resources/push-jobs-client/dmg/background.png +0 -0
  45. data/omnibus/resources/push-jobs-client/dmg/icon.png +0 -0
  46. data/omnibus/resources/push-jobs-client/msi/assets/LICENSE.rtf +197 -0
  47. data/omnibus/resources/push-jobs-client/msi/assets/banner_background.bmp +0 -0
  48. data/omnibus/resources/push-jobs-client/msi/assets/dialog_background.bmp +0 -0
  49. data/omnibus/resources/push-jobs-client/msi/assets/oc.ico +0 -0
  50. data/omnibus/resources/push-jobs-client/msi/assets/oc_16x16.ico +0 -0
  51. data/omnibus/resources/push-jobs-client/msi/assets/oc_32x32.ico +0 -0
  52. data/omnibus/resources/push-jobs-client/msi/localization-en-us.wxl.erb +26 -0
  53. data/omnibus/resources/push-jobs-client/msi/parameters.wxi.erb +9 -0
  54. data/omnibus/resources/push-jobs-client/msi/source.wxs.erb +138 -0
  55. data/omnibus/resources/push-jobs-client/pkg/background.png +0 -0
  56. data/omnibus/resources/push-jobs-client/pkg/license.html.erb +202 -0
  57. data/omnibus/resources/push-jobs-client/pkg/welcome.html.erb +5 -0
  58. data/opscode-pushy-client.gemspec +28 -0
  59. data/pkg/opscode-pushy-client-2.3.0.gem +0 -0
  60. data/spec/pushy_client/protocol_handler_spec.rb +48 -0
  61. data/spec/pushy_client/whitelist_spec.rb +70 -0
  62. data/spec/spec_helper.rb +12 -0
  63. metadata +235 -0
@@ -0,0 +1,23 @@
1
+ # @copyright Copyright 2014-2017, Chef Software Inc. All Rights Reserved.
2
+ #
3
+ # This file is provided to you under the Apache License,
4
+ # Version 2.0 (the "License"); you may not use this file
5
+ # except in compliance with the License. You may obtain
6
+ # a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing,
11
+ # software distributed under the License is distributed on an
12
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
13
+ # KIND, either express or implied. See the License for the
14
+ # specific language governing permissions and limitations
15
+ # under the License.
16
+ #
17
+
18
+ # Note: the version must also be updated in
19
+ # omnibus/config/projects/push-jobs-client.rb
20
+ class PushyClient
21
+ VERSION = "2.3.0"
22
+ PROTOCOL_VERSION = "2.0"
23
+ end
@@ -0,0 +1,66 @@
1
+ # @copyright Copyright 2014 Chef Software, Inc. All Rights Reserved.
2
+ #
3
+ # This file is provided to you under the Apache License,
4
+ # Version 2.0 (the "License"); you may not use this file
5
+ # except in compliance with the License. You may obtain
6
+ # a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing,
11
+ # software distributed under the License is distributed on an
12
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
13
+ # KIND, either express or implied. See the License for the
14
+ # specific language governing permissions and limitations
15
+ # under the License.
16
+ #
17
+
18
+ require "chef/log"
19
+
20
+ class PushyClient
21
+ class Whitelist
22
+
23
+ attr_accessor :whitelist
24
+
25
+ def initialize(whitelist)
26
+ @whitelist = whitelist
27
+ end
28
+
29
+ def [](argument)
30
+ command = process(argument)
31
+ node_name = "UNKNOWN"
32
+ job_id = "UNKNOWN"
33
+ Chef::Log.info("[#{node_name}] Job #{job_id}: whitelist '#{argument}' to '#{command}'")
34
+ command
35
+ end
36
+
37
+ def process(argument)
38
+ # If we have an exact match, use it
39
+ if whitelist.has_key?(argument)
40
+ return whitelist[argument]
41
+ else
42
+ whitelist.keys.each do |key|
43
+ if key.kind_of?(Regexp)
44
+ if key.match(argument)
45
+ value = whitelist[key]
46
+ if value.kind_of?(Hash)
47
+ # Need a deep copy, don't want to change the global value
48
+ new_value = Marshal.load(Marshal.dump(value))
49
+ new_value[:command_line] = argument.gsub(key, value[:command_line])
50
+ return new_value
51
+ else
52
+ return argument.gsub(key, value)
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ nil
60
+ end
61
+
62
+ def method_missing(method, *args, &block)
63
+ @whitelist.send(method, *args, &block)
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,27 @@
1
+ #
2
+ # Author:: John Keiser (<jkeiser@opscode.com>)
3
+ # Copyright:: Copyright (c) 2012 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
+ require 'win32/process'
19
+
20
+ module Process
21
+ extend FFI::Library
22
+ # Override WaitForSingleObject with :blocking => true, so that Process.wait
23
+ # (from win32-process) will not block the Ruby interpreter while waiting for
24
+ # the process to complete.
25
+ ffi_lib :kernel32
26
+ attach_function :WaitForSingleObject, [:ulong, :ulong], :ulong, :blocking => true
27
+ end
@@ -0,0 +1,253 @@
1
+ #
2
+ # Author:: Christopher Maier (<maier@lambda.local>)
3
+ # Copyright:: Copyright (c) 2011 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/application'
20
+ require 'chef/config'
21
+ require 'chef/log'
22
+ require 'chef/rest'
23
+ require 'mixlib/cli'
24
+ require 'win32/daemon'
25
+ require_relative '../pushy_client'
26
+ require_relative '../pushy_client/cli'
27
+ require_relative '../pushy_client/version'
28
+
29
+ class PushyClient
30
+ class WindowsService < ::Win32::Daemon
31
+ include Mixlib::CLI
32
+
33
+ option :config_file,
34
+ :short => "-c CONFIG",
35
+ :long => "--config CONFIG",
36
+ :default => PushyClient::CLI.find_default_config,
37
+ :description => "The configuration file to use"
38
+
39
+ option :log_location,
40
+ :short => "-L LOGLOCATION",
41
+ :long => "--logfile LOGLOCATION",
42
+ :description => "Set the log file location",
43
+ :default => "#{ENV['SYSTEMDRIVE']}/chef/push-client.log"
44
+
45
+ option :allow_unencrypted,
46
+ :long => "--allow_unencrypted",
47
+ :boolean => true,
48
+ :description => "Allow unencrypted connections to 1.x servers"
49
+
50
+ def service_init
51
+ @service_action_mutex = Mutex.new
52
+ @service_signal = ConditionVariable.new
53
+
54
+ reconfigure
55
+ Chef::Log.info("Chef Push Jobs Client Service initialized")
56
+ end
57
+
58
+ def service_main(*startup_parameters)
59
+ begin
60
+ @service_action_mutex.synchronize do
61
+ Chef::Log.info("Push Client version: #{::PushyClient::VERSION}")
62
+ Chef::Log.info("Push Client started as service with parameters: #{startup_parameters}")
63
+ Chef::Log.info("Push Client passed: #{ARGV.join(', ')}")
64
+ reconfigure(startup_parameters)
65
+
66
+ # Lifted from PushyClient::CLI
67
+ ohai = Ohai::System.new
68
+ ohai.load_plugins
69
+ ohai.run_plugins(true, ['os', 'hostname'])
70
+
71
+ @client = PushyClient.new(
72
+ :chef_server_url => Chef::Config[:chef_server_url],
73
+ :client_key => Chef::Config[:client_key],
74
+ :node_name => Chef::Config[:node_name] || ohai[:fqdn] || ohai[:hostname],
75
+ :whitelist => Chef::Config[:whitelist] || { 'chef-client' => 'chef-client' },
76
+ :hostname => ohai[:hostname],
77
+ :allow_unencrypted => Chef::Config[:allow_unencrypted]
78
+ )
79
+
80
+ @client.start
81
+ Chef::Log.info("pushy-client is started...")
82
+
83
+ # Wait until we get service exit signal
84
+ @service_signal.wait(@service_action_mutex)
85
+ Chef::Log.debug("Stopping pushy-client...")
86
+ @client.stop
87
+ end
88
+
89
+ rescue Exception => e
90
+ Chef::Log.error("#{e.class}: #{e}")
91
+ Chef::Log.error("Terminating pushy-client service...")
92
+ Chef::Application.debug_stacktrace(e)
93
+ end
94
+
95
+ Chef::Log.debug("Exiting service...")
96
+ end
97
+
98
+ ################################################################################
99
+ # Control Signal Callback Methods
100
+ ################################################################################
101
+
102
+ def service_stop
103
+ Chef::Log.info("STOP request from operating system.")
104
+ while !@service_action_mutex.try_lock do
105
+ Chef::Log.info("Pushy is being initialized waiting for initialization to complete.")
106
+ sleep(1)
107
+ end
108
+
109
+ @service_signal.signal
110
+ @service_action_mutex.unlock
111
+ end
112
+
113
+ def service_pause
114
+ Chef::Log.info("PAUSE request from operating system.")
115
+ Chef::Log.info("Pushy Client Service doesn't support PAUSE.")
116
+ Chef::Log.info("Pushy Client Service is still running.")
117
+ end
118
+
119
+ def service_resume
120
+ Chef::Log.info("RESUME signal received from the OS.")
121
+ end
122
+
123
+ def service_shutdown
124
+ Chef::Log.info("SHUTDOWN signal received from the OS.")
125
+
126
+ # Treat shutdown similar to stop.
127
+
128
+ service_stop
129
+ end
130
+
131
+ ################################################################################
132
+ # Internal Methods
133
+ ################################################################################
134
+
135
+ private
136
+
137
+ def apply_config(config_file_path)
138
+ Chef::Config.from_file(config_file_path)
139
+ Chef::Config.merge!(config)
140
+ end
141
+
142
+ # Lifted from Chef::Application, with addition of optional startup parameters
143
+ # for playing nicely with Windows Services and logic from PushyClient::CLI
144
+ def reconfigure(startup_parameters=[])
145
+ Chef::Config[:force_logger] = true
146
+
147
+ configure_chef startup_parameters
148
+ configure_logging
149
+ end
150
+
151
+ # Lifted from application.rb
152
+ # See application.rb for related comments.
153
+
154
+ def configure_logging
155
+ Chef::Log.init(Chef::Config[:log_location])
156
+ if want_additional_logger?
157
+ configure_stdout_logger
158
+ end
159
+ Chef::Log.level = resolve_log_level
160
+ end
161
+
162
+ def configure_stdout_logger
163
+ stdout_logger = Logger.new(STDOUT)
164
+ STDOUT.sync = true
165
+ stdout_logger.formatter = Chef::Log.logger.formatter
166
+ Chef::Log.loggers << stdout_logger
167
+ end
168
+
169
+ # Based on config and whether or not STDOUT is a tty, should we setup a
170
+ # secondary logger for stdout?
171
+ def want_additional_logger?
172
+ ( Chef::Config[:log_location] != STDOUT ) && STDOUT.tty? && (!Chef::Config[:daemonize]) && (Chef::Config[:force_logger])
173
+ end
174
+
175
+ # Use of output formatters is assumed if `force_formatter` is set or if
176
+ # `force_logger` is not set and STDOUT is to a console (tty)
177
+ def using_output_formatter?
178
+ Chef::Config[:force_formatter] || (!Chef::Config[:force_logger] && STDOUT.tty?)
179
+ end
180
+
181
+ def auto_log_level?
182
+ Chef::Config[:log_level] == :auto
183
+ end
184
+
185
+ # if log_level is `:auto`, convert it to :warn (when using output formatter)
186
+ # or :info (no output formatter). See also +using_output_formatter?+
187
+ def resolve_log_level
188
+ if auto_log_level?
189
+ if using_output_formatter?
190
+ :warn
191
+ else
192
+ :info
193
+ end
194
+ else
195
+ Chef::Config[:log_level]
196
+ end
197
+ end
198
+
199
+ def configure_chef(startup_parameters)
200
+ # Bit of a hack ahead:
201
+ # It is possible to specify a service's binary_path_name with arguments, like "foo.exe -x argX".
202
+ # It is also possible to specify startup parameters separately, either via the the Services manager
203
+ # or by using the registry (I think).
204
+
205
+ # In order to accommodate all possible sources of parameterization, we first parse any command line
206
+ # arguments. We then parse any startup parameters. This works, because Mixlib::CLI reuses its internal
207
+ # 'config' hash; thus, anything in startup parameters will override any command line parameters that
208
+ # might be set via the service's binary_path_name
209
+ #
210
+ # All these parameters then get layered on top of those from Chef::Config
211
+
212
+ parse_options # Operates on ARGV by default
213
+ parse_options startup_parameters
214
+
215
+ Chef::Log.info("Push Client using default config file path: '#{config[:config_file]}'")
216
+
217
+ begin
218
+ case config[:config_file]
219
+ when /^(http|https):\/\//
220
+ begin
221
+ # First we will try Chef::HTTP::SimpleJSON as preference to Chef::REST
222
+ require 'chef/http/simple_json'
223
+ Chef::HTTP::SimpleJSON.new("").streaming_request(config[:config_file]) { |f| apply_config(f.path) }
224
+ rescue LoadError
225
+ require 'chef/rest'
226
+ Chef::REST.new("", nil, nil).fetch(config[:config_file]) { |f| apply_config(f.path) }
227
+ end
228
+ else
229
+ ::File::open(config[:config_file]) { |f| apply_config(f.path) }
230
+ end
231
+ rescue Errno::ENOENT => error
232
+ Chef::Log.warn("*****************************************")
233
+ Chef::Log.warn("Did not find config file: #{config[:config_file]}, using command line options.")
234
+ Chef::Log.warn("*****************************************")
235
+
236
+ Chef::Config.merge!(config)
237
+ rescue SocketError => error
238
+ Chef::Application.fatal!("Error getting config file #{Chef::Config[:config_file]}", 2)
239
+ rescue Chef::Exceptions::ConfigurationError => error
240
+ Chef::Application.fatal!("Error processing config file #{Chef::Config[:config_file]} with error #{error.message}", 2)
241
+ rescue Exception => error
242
+ Chef::Application.fatal!("Unknown error processing config file #{Chef::Config[:config_file]} with error #{error.message}", 2)
243
+ end
244
+ end
245
+
246
+ end
247
+ end
248
+
249
+ # To run this file as a service, it must be called as a script from within
250
+ # the Windows Service framework. In that case, kick off the main loop!
251
+ if __FILE__ == $0
252
+ PushyClient::WindowsService.mainloop
253
+ end
@@ -0,0 +1,12 @@
1
+ source 'https://supermarket.chef.io'
2
+
3
+ cookbook 'omnibus'
4
+
5
+ # Uncomment to use the latest version of the Omnibus cookbook from GitHub
6
+ # cookbook 'omnibus', github: 'opscode-cookbooks/omnibus'
7
+
8
+ group :integration do
9
+ cookbook 'apt', '~> 2.3'
10
+ cookbook 'freebsd', '~> 0.1'
11
+ cookbook 'yum-epel', '~> 0.3'
12
+ end
@@ -0,0 +1,15 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'omnibus', git: 'https://github.com/chef/omnibus.git'
4
+ gem 'omnibus-software', git: 'https://github.com/chef/omnibus-software.git'
5
+
6
+ # This development group is installed by default when you run `bundle install`,
7
+ # but if you are using Omnibus in a CI-based infrastructure, you do not need
8
+ # the Test Kitchen-based build lab. You can skip these unnecessary dependencies
9
+ # by running `bundle install --without development` to speed up build times.
10
+ group :development do
11
+ gem 'berkshelf'
12
+ gem 'test-kitchen'
13
+ gem 'kitchen-vagrant'
14
+ gem 'winrm-fs'
15
+ end
@@ -0,0 +1,232 @@
1
+ GIT
2
+ remote: https://github.com/chef/omnibus-software.git
3
+ revision: 69e7fd212b293795c9a1abf7e2aed3be89ac6d06
4
+ specs:
5
+ omnibus-software (4.0.0)
6
+ chef-sugar (>= 3.4.0)
7
+ omnibus (>= 5.5.0)
8
+
9
+ GIT
10
+ remote: https://github.com/chef/omnibus.git
11
+ revision: 433220e0b7c434dbc4a36daaa1fecbdb1bf7231d
12
+ specs:
13
+ omnibus (5.5.0)
14
+ aws-sdk (~> 2)
15
+ chef-sugar (~> 3.3)
16
+ cleanroom (~> 1.0)
17
+ ffi-yajl (~> 2.2)
18
+ license_scout
19
+ mixlib-shellout (~> 2.0)
20
+ mixlib-versioning
21
+ ohai (~> 8.0)
22
+ pedump
23
+ ruby-progressbar (~> 1.7)
24
+ thor (~> 0.18)
25
+
26
+ GEM
27
+ remote: https://rubygems.org/
28
+ specs:
29
+ addressable (2.5.0)
30
+ public_suffix (~> 2.0, >= 2.0.2)
31
+ artifactory (2.8.1)
32
+ awesome_print (1.7.0)
33
+ aws-sdk (2.8.14)
34
+ aws-sdk-resources (= 2.8.14)
35
+ aws-sdk-core (2.8.14)
36
+ aws-sigv4 (~> 1.0)
37
+ jmespath (~> 1.0)
38
+ aws-sdk-resources (2.8.14)
39
+ aws-sdk-core (= 2.8.14)
40
+ aws-sigv4 (1.0.0)
41
+ berkshelf (5.6.4)
42
+ addressable (~> 2.3, >= 2.3.4)
43
+ berkshelf-api-client (>= 2.0.2, < 4.0)
44
+ buff-config (~> 2.0)
45
+ buff-extensions (~> 2.0)
46
+ buff-shell_out (~> 1.0)
47
+ cleanroom (~> 1.0)
48
+ faraday (~> 0.9)
49
+ httpclient (~> 2.7)
50
+ minitar (~> 0.5, >= 0.5.4)
51
+ mixlib-archive (~> 0.4)
52
+ octokit (~> 4.0)
53
+ retryable (~> 2.0)
54
+ ridley (~> 5.0)
55
+ solve (> 2.0, < 4.0)
56
+ thor (~> 0.19, < 0.19.2)
57
+ berkshelf-api-client (3.0.0)
58
+ faraday (~> 0.9)
59
+ httpclient (~> 2.7)
60
+ ridley (>= 4.5, < 6.0)
61
+ buff-config (2.0.0)
62
+ buff-extensions (~> 2.0)
63
+ varia_model (~> 0.6)
64
+ buff-extensions (2.0.0)
65
+ buff-ignore (1.2.0)
66
+ buff-ruby_engine (1.0.0)
67
+ buff-shell_out (1.1.0)
68
+ buff-ruby_engine (~> 1.0)
69
+ builder (3.2.3)
70
+ celluloid (0.16.0)
71
+ timers (~> 4.0.0)
72
+ celluloid-io (0.16.2)
73
+ celluloid (>= 0.16.0)
74
+ nio4r (>= 1.1.0)
75
+ chef-config (12.19.36)
76
+ addressable
77
+ fuzzyurl
78
+ mixlib-config (~> 2.0)
79
+ mixlib-shellout (~> 2.0)
80
+ chef-sugar (3.4.0)
81
+ cleanroom (1.0.0)
82
+ erubis (2.7.0)
83
+ faraday (0.9.2)
84
+ multipart-post (>= 1.2, < 3)
85
+ ffi (1.9.18)
86
+ ffi-yajl (2.3.0)
87
+ libyajl2 (~> 1.2)
88
+ fuzzyurl (0.9.0)
89
+ gssapi (1.2.0)
90
+ ffi (>= 1.0.1)
91
+ gyoku (1.3.1)
92
+ builder (>= 2.1.2)
93
+ hashie (3.5.5)
94
+ hitimes (1.2.4)
95
+ httpclient (2.8.3)
96
+ iostruct (0.0.4)
97
+ ipaddress (0.8.3)
98
+ jmespath (1.3.1)
99
+ json (2.0.3)
100
+ kitchen-vagrant (1.0.2)
101
+ test-kitchen (~> 1.4)
102
+ libyajl2 (1.2.0)
103
+ license_scout (0.1.3)
104
+ ffi-yajl (~> 2.2)
105
+ mixlib-shellout (~> 2.2)
106
+ little-plugger (1.1.4)
107
+ logging (2.2.0)
108
+ little-plugger (~> 1.1)
109
+ multi_json (~> 1.10)
110
+ minitar (0.6.1)
111
+ mixlib-archive (0.4.1)
112
+ mixlib-log
113
+ mixlib-authentication (1.4.1)
114
+ mixlib-log
115
+ mixlib-cli (1.7.0)
116
+ mixlib-config (2.2.4)
117
+ mixlib-install (2.1.12)
118
+ artifactory
119
+ mixlib-shellout
120
+ mixlib-versioning
121
+ thor
122
+ mixlib-log (1.7.1)
123
+ mixlib-shellout (2.2.7)
124
+ mixlib-versioning (1.1.0)
125
+ molinillo (0.5.7)
126
+ multi_json (1.12.1)
127
+ multipart-post (2.0.0)
128
+ net-scp (1.2.1)
129
+ net-ssh (>= 2.6.5)
130
+ net-ssh (4.1.0)
131
+ net-ssh-gateway (1.3.0)
132
+ net-ssh (>= 2.6.5)
133
+ nio4r (2.0.0)
134
+ nori (2.6.0)
135
+ octokit (4.6.2)
136
+ sawyer (~> 0.8.0, >= 0.5.3)
137
+ ohai (8.23.0)
138
+ chef-config (>= 12.5.0.alpha.1, < 13)
139
+ ffi (~> 1.9)
140
+ ffi-yajl (~> 2.2)
141
+ ipaddress
142
+ mixlib-cli
143
+ mixlib-config (~> 2.0)
144
+ mixlib-log (>= 1.7.1, < 2.0)
145
+ mixlib-shellout (~> 2.0)
146
+ plist (~> 3.1)
147
+ systemu (~> 2.6.4)
148
+ wmi-lite (~> 1.0)
149
+ pedump (0.5.2)
150
+ awesome_print
151
+ iostruct (>= 0.0.4)
152
+ multipart-post (~> 2.0.0)
153
+ progressbar
154
+ zhexdump (>= 0.0.2)
155
+ plist (3.2.0)
156
+ progressbar (1.8.2)
157
+ public_suffix (2.0.5)
158
+ retryable (2.0.4)
159
+ ridley (5.1.0)
160
+ addressable
161
+ buff-config (~> 2.0)
162
+ buff-extensions (~> 2.0)
163
+ buff-ignore (~> 1.2)
164
+ buff-shell_out (~> 1.0)
165
+ celluloid (~> 0.16.0)
166
+ celluloid-io (~> 0.16.1)
167
+ chef-config (>= 12.5.0)
168
+ erubis
169
+ faraday (~> 0.9.0)
170
+ hashie (>= 2.0.2, < 4.0.0)
171
+ httpclient (~> 2.7)
172
+ json (>= 1.7.7)
173
+ mixlib-authentication (>= 1.3.0)
174
+ retryable (~> 2.0)
175
+ semverse (~> 2.0)
176
+ varia_model (~> 0.6)
177
+ ruby-progressbar (1.8.1)
178
+ rubyntlm (0.6.1)
179
+ rubyzip (1.2.1)
180
+ safe_yaml (1.0.4)
181
+ sawyer (0.8.1)
182
+ addressable (>= 2.3.5, < 2.6)
183
+ faraday (~> 0.8, < 1.0)
184
+ semverse (2.0.0)
185
+ solve (3.1.0)
186
+ molinillo (>= 0.5)
187
+ semverse (>= 1.1, < 3.0)
188
+ systemu (2.6.5)
189
+ test-kitchen (1.16.0)
190
+ mixlib-install (>= 1.2, < 3.0)
191
+ mixlib-shellout (>= 1.2, < 3.0)
192
+ net-scp (~> 1.1)
193
+ net-ssh (>= 2.9, < 5.0)
194
+ net-ssh-gateway (~> 1.2)
195
+ safe_yaml (~> 1.0)
196
+ thor (~> 0.19, < 0.19.2)
197
+ thor (0.19.1)
198
+ timers (4.0.4)
199
+ hitimes
200
+ varia_model (0.6.0)
201
+ buff-extensions (~> 2.0)
202
+ hashie (>= 2.0.2, < 4.0.0)
203
+ winrm (2.1.3)
204
+ builder (>= 2.1.2)
205
+ erubis (~> 2.7)
206
+ gssapi (~> 1.2)
207
+ gyoku (~> 1.0)
208
+ httpclient (~> 2.2, >= 2.2.0.2)
209
+ logging (>= 1.6.1, < 3.0)
210
+ nori (~> 2.0)
211
+ rubyntlm (~> 0.6.0, >= 0.6.1)
212
+ winrm-fs (1.0.1)
213
+ erubis (~> 2.7)
214
+ logging (>= 1.6.1, < 3.0)
215
+ rubyzip (~> 1.1)
216
+ winrm (~> 2.0)
217
+ wmi-lite (1.0.0)
218
+ zhexdump (0.0.2)
219
+
220
+ PLATFORMS
221
+ ruby
222
+
223
+ DEPENDENCIES
224
+ berkshelf
225
+ kitchen-vagrant
226
+ omnibus!
227
+ omnibus-software!
228
+ test-kitchen
229
+ winrm-fs
230
+
231
+ BUNDLED WITH
232
+ 1.14.6