Update more cookbooks
This commit is contained in:
@@ -26,9 +26,11 @@ property :version, [String, Symbol], default: :latest
|
||||
property :post_install_action, String, default: 'exec'
|
||||
property :exec_command, String, default: $PROGRAM_NAME.split(' ').first
|
||||
property :exec_args, Array, default: ARGV
|
||||
property :download_url_override, String
|
||||
property :checksum, String
|
||||
|
||||
action :update do
|
||||
if update_necessary? # ~FC023
|
||||
if update_necessary?
|
||||
converge_by "Upgraded chef-client #{current_version} to #{desired_version}" do
|
||||
upgrade_command = Mixlib::ShellOut.new(mixlib_install.install_command)
|
||||
upgrade_command.run_command
|
||||
@@ -37,12 +39,14 @@ action :update do
|
||||
end
|
||||
end
|
||||
|
||||
action_class.class_eval do
|
||||
action_class do
|
||||
def load_mixlib_install
|
||||
gem 'mixlib-install', '~> 3.2', '>= 3.2.1'
|
||||
require 'mixlib/install'
|
||||
rescue LoadError
|
||||
Chef::Log.info('mixlib-install gem not found. Installing now')
|
||||
chef_gem 'mixlib-install' do
|
||||
version '>= 3.2.1'
|
||||
compile_time true if respond_to?(:compile_time)
|
||||
end
|
||||
|
||||
@@ -69,6 +73,9 @@ action_class.class_eval do
|
||||
product_version: new_resource.version == 'latest' ? :latest : new_resource.version,
|
||||
|
||||
}
|
||||
if new_resource.download_url_override && new_resource.checksum
|
||||
options[:install_command_options] = { download_url_override: new_resource.download_url_override, checksum: new_resource.checksum }
|
||||
end
|
||||
Mixlib::Install.new(options)
|
||||
end
|
||||
|
||||
@@ -80,7 +87,7 @@ action_class.class_eval do
|
||||
end
|
||||
|
||||
def desired_version
|
||||
new_resource.version == 'latest' ? mixlib_install.available_versions.last : new_resource.version
|
||||
new_resource.version.to_sym == :latest ? mixlib_install.available_versions.last : new_resource.version
|
||||
end
|
||||
|
||||
# why wouldn't we use the built in update_available? method in mixlib-install?
|
||||
@@ -90,6 +97,7 @@ action_class.class_eval do
|
||||
load_mixlib_versioning
|
||||
cur_version = Mixlib::Versioning.parse(current_version)
|
||||
des_version = Mixlib::Versioning.parse(desired_version)
|
||||
Chef::Log.debug("The current chef-client version is #{cur_version} and the desired version is #{desired_version}")
|
||||
new_resource.prevent_downgrade ? (des_version > cur_version) : (des_version != cur_version)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user