summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2018-05-09 11:11:13 -0700
committerTim Smith <tsmith84@gmail.com>2019-10-08 09:33:50 -0700
commit7e0044d7cbc88c59b88ecaee630634d9300da860 (patch)
tree3d48f1a4e09c4172fd530ea9b8b5729a20a15ec7
parentf4cda79b75589d6897bf3ea5038ccbecc612c577 (diff)
downloadchef-reboot_resource.tar.gz
Convert reboot resource to a custom resource with descriptionsreboot_resource
This is a simple resource. It's way easier to understand in a single file. Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r--lib/chef/provider/reboot.rb78
-rw-r--r--lib/chef/providers.rb1
-rw-r--r--lib/chef/resource/reboot.rb45
3 files changed, 43 insertions, 81 deletions
diff --git a/lib/chef/provider/reboot.rb b/lib/chef/provider/reboot.rb
deleted file mode 100644
index 7fd3c32d53..0000000000
--- a/lib/chef/provider/reboot.rb
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# Author:: Chris Doherty <cdoherty@chef.io>)
-# Copyright:: Copyright 2014-2016, Chef, Inc.
-# License:: Apache License, Version 2.0
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-require_relative "../log"
-require_relative "../provider"
-
-class Chef
- class Provider
- # Use the reboot resource to reboot a node, a necessary step with some
- # installations on certain platforms. This resource is supported for use on
- # the Microsoft Windows, macOS, and Linux platforms.
- #
- # In using this resource via notifications, it's important to *only* use
- # immediate notifications. Delayed notifications produce unintuitive and
- # probably undesired results.
- #
- # @since 12.0.0
- class Reboot < Chef::Provider
- provides :reboot
-
- # @return [void]
- def load_current_resource
- @current_resource ||= Chef::Resource::Reboot.new(new_resource.name)
- current_resource.reason(new_resource.reason)
- current_resource.delay_mins(new_resource.delay_mins)
- current_resource
- end
-
- # add a reboot to the node run_context
- # @return [void]
- def request_reboot
- node.run_context.request_reboot(
- delay_mins: new_resource.delay_mins,
- reason: new_resource.reason,
- timestamp: Time.now,
- requested_by: new_resource.name
- )
- end
-
- def action_request_reboot
- converge_by("request a system reboot to occur if the run succeeds") do
- logger.warn "Reboot requested:'#{new_resource.name}'"
- request_reboot
- end
- end
-
- def action_reboot_now
- converge_by("rebooting the system immediately") do
- logger.warn "Rebooting system immediately, requested by '#{new_resource.name}'"
- request_reboot
- throw :end_client_run_early
- end
- end
-
- def action_cancel
- converge_by("cancel any existing end-of-run reboot request") do
- logger.warn "Reboot canceled: '#{new_resource.name}'"
- node.run_context.cancel_reboot
- end
- end
- end
- end
-end
diff --git a/lib/chef/providers.rb b/lib/chef/providers.rb
index 1e45ca13ed..629b64d2d5 100644
--- a/lib/chef/providers.rb
+++ b/lib/chef/providers.rb
@@ -43,7 +43,6 @@ require_relative "provider/noop"
require_relative "provider/package"
require_relative "provider/powershell_script"
require_relative "provider/osx_profile"
-require_relative "provider/reboot"
require_relative "provider/remote_directory"
require_relative "provider/remote_file"
require_relative "provider/route"
diff --git a/lib/chef/resource/reboot.rb b/lib/chef/resource/reboot.rb
index bf3686ba47..6c3f9063d6 100644
--- a/lib/chef/resource/reboot.rb
+++ b/lib/chef/resource/reboot.rb
@@ -1,6 +1,6 @@
#
# Author:: Chris Doherty <cdoherty@chef.io>)
-# Copyright:: Copyright 2014-2016, Chef, Inc.
+# Copyright:: Copyright 2014-2018, Chef, Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,6 +23,7 @@ class Chef
class Resource
class Reboot < Chef::Resource
resource_name :reboot
+ provides :reboot
description "Use the reboot resource to reboot a node, a necessary step with some"\
" installations on certain platforms. This resource is supported for use on"\
@@ -32,7 +33,6 @@ class Chef
" probably undesired results."
introduced "12.0"
- allowed_actions :request_reboot, :reboot_now, :cancel
default_action :nothing # make sure people are quite clear what they want
property :reason, String,
@@ -42,6 +42,47 @@ class Chef
property :delay_mins, Integer,
description: "The amount of time (in minutes) to delay a reboot request.",
default: 0
+
+ action :request_reboot do
+ description "Reboot a node at the end of a chef-client run."
+
+ converge_by("request a system reboot to occur if the run succeeds") do
+ logger.warn "Reboot requested:'#{new_resource.name}'"
+ request_reboot
+ end
+ end
+
+ action :reboot_now do
+ description "Reboot a node so that the chef-client may continue the installation process."
+
+ converge_by("rebooting the system immediately") do
+ logger.warn "Rebooting system immediately, requested by '#{new_resource.name}'"
+ request_reboot
+ throw :end_client_run_early
+ end
+ end
+
+ action :cancel do
+ description "Cancel a pending reboot request."
+
+ converge_by("cancel any existing end-of-run reboot request") do
+ logger.warn "Reboot canceled: '#{new_resource.name}'"
+ node.run_context.cancel_reboot
+ end
+ end
+
+ action_class do
+ # add a reboot to the node run_context
+ # @return [void]
+ def request_reboot
+ node.run_context.request_reboot(
+ delay_mins: new_resource.delay_mins,
+ reason: new_resource.reason,
+ timestamp: Time.now,
+ requested_by: new_resource.name
+ )
+ end
+ end
end
end
end