summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn <john.mccrae@progress.com>2023-05-15 13:37:25 +0000
committerJohn <john.mccrae@progress.com>2023-05-15 13:37:25 +0000
commit4a0d3b475ab74ccc4b7e7354453e191ff892d604 (patch)
tree00adb3f0bff5861d67b06ebaf90d0ee96e2b690b
parent606ca7d280680959c5aa85636f2f054c4e25e017 (diff)
downloadchef-4a0d3b475ab74ccc4b7e7354453e191ff892d604.tar.gz
[chef-17] 26 of X - Updating EOL Support
Signed-off-by: John <john.mccrae@progress.com>
-rw-r--r--EOL_override1
-rw-r--r--lib/chef/client.rb22
-rw-r--r--spec/unit/client_spec.rb41
3 files changed, 53 insertions, 11 deletions
diff --git a/EOL_override b/EOL_override
new file mode 100644
index 0000000000..eb8ed45062
--- /dev/null
+++ b/EOL_override
@@ -0,0 +1 @@
+2024-1-31
diff --git a/lib/chef/client.rb b/lib/chef/client.rb
index 7f184d7db4..1543c7cf85 100644
--- a/lib/chef/client.rb
+++ b/lib/chef/client.rb
@@ -326,15 +326,35 @@ class Chef
def warn_if_eol
require_relative "version"
+ # New Date format is YYYY-MM-DD
+ new_date = eol_override?
+
# We make a release every year so take the version you're on + 2006 and you get
# the year it goes EOL
eol_year = 2006 + Gem::Version.new(Chef::VERSION).segments.first
- if Time.now > Time.new(eol_year, 5, 01)
+ if !!new_date
+ new_eol_date = new_date.split("-")
+ year = new_eol_date[0]
+ month = Date::MONTHNAMES[new_eol_date[1].to_i]
+ day = new_eol_date[2]
+ logger.warn("This release of #{ChefUtils::Dist::Infra::PRODUCT} became end of life (EOL) on #{month} #{day} #{year}. Please update to a supported release to receive new features, bug fixes, and security updates.")
+ else Time.now > Time.new(eol_year, 5, 01)
logger.warn("This release of #{ChefUtils::Dist::Infra::PRODUCT} became end of life (EOL) on May 1st #{eol_year}. Please update to a supported release to receive new features, bug fixes, and security updates.")
end
end
+ def eol_override?
+ # If you want to override the exisitn EOL date, add a file in the root of Chef
+ # put a date in it in the form of YYYY-DD-MM.
+ override_file = "EOL_override"
+ if File.exist?(override_file)
+ File.read(File.expand_path(override_file)).strip
+ else
+ false
+ end
+ end
+
# @api private
def configure_formatters
formatters_for_run.map do |formatter_name, output_path|
diff --git a/spec/unit/client_spec.rb b/spec/unit/client_spec.rb
index b6a321c8e8..78e485cf0c 100644
--- a/spec/unit/client_spec.rb
+++ b/spec/unit/client_spec.rb
@@ -309,19 +309,40 @@ describe Chef::Client do
end
describe "eol release warning" do
- it "warns when running an EOL release" do
- stub_const("Chef::VERSION", 15)
- allow(Time).to receive(:now).and_return(Time.new(2021, 5, 1, 5))
- expect(logger).to receive(:warn).with(/This release of.*became end of life \(EOL\) on May 1st 2021/)
- client.warn_if_eol
+ before do
+ @local_client = Chef::Client.new
+ # allow_any_instance_of(client).to receive(:eol_override?).and_return(false)
+ # require "pry"
+ # binding.pry
end
+ subject { @local_client }
+ it "warns when running an EOL release" do
- it "does not warn when running an non-EOL release" do
+
+ # = Net::HTTPClientException.new('404 "Not Found"', response)
stub_const("Chef::VERSION", 15)
- allow(Time).to receive(:now).and_return(Time.new(2021, 4, 31))
- expect(logger).to_not receive(:warn).with(/became end of life/)
- client.warn_if_eol
- end
+ allow(Time).to receive(:now).and_return(Time.new(2021, 5, 1, 5))
+ # allow(@local_client).to receive(:eol_override?).and_return(false)
+ # allow(@local_client).to receive(:logger).and_return(logger)
+ require "pry"
+ binding.pry
+ # @local_client.warn_if_eol
+ # expect(@local_client).to receive(:warn).with(/This release of.*became end of life \(EOL\) on May 1st 2021/)
+ end
+
+ # it "warns when running an EOL release" do
+ # stub_const("Chef::VERSION", 15)
+ # allow(Time).to receive(:now).and_return(Time.new(2021, 5, 1, 5))
+ # expect(logger).to receive(:warn).with(/This release of.*became end of life \(EOL\) on May 1st 2021/)
+ # client.warn_if_eol
+ # end
+
+ # it "does not warn when running an non-EOL release" do
+ # stub_const("Chef::VERSION", 15)
+ # allow(Time).to receive(:now).and_return(Time.new(2021, 4, 31))
+ # expect(logger).to_not receive(:warn).with(/became end of life/)
+ # client.warn_if_eol
+ # end
end
describe "authentication protocol selection" do