diff options
author | Tim Smith <tsmith@chef.io> | 2018-11-27 09:57:35 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-27 09:57:35 -0800 |
commit | 1722dab78ed9e80683f0e56363e4baef1444bea8 (patch) | |
tree | 0f89c8776aae4c8d663763917d5d6a711c36af42 | |
parent | b0ed32858be7c393d32debf3b98e5fa19a733218 (diff) | |
parent | 5e86f0834156f9533d3462c13c27581d78a585f2 (diff) | |
download | chef-1722dab78ed9e80683f0e56363e4baef1444bea8.tar.gz |
Merge pull request #7806 from username-is-already-taken2/gb/windows_timezone
Added windows support for the timezone resource
-rw-r--r-- | lib/chef/resource/timezone.rb | 16 | ||||
-rw-r--r-- | spec/functional/resource/timezone_spec.rb | 39 |
2 files changed, 55 insertions, 0 deletions
diff --git a/lib/chef/resource/timezone.rb b/lib/chef/resource/timezone.rb index da3cb70bb9..29c65b696c 100644 --- a/lib/chef/resource/timezone.rb +++ b/lib/chef/resource/timezone.rb @@ -95,6 +95,12 @@ class Chef shell_out!("sudo systemsetup -settimezone #{new_resource.timezone}") end end + when "windows" + unless current_windows_tz.casecmp?(new_resource.timezone) + converge_by("setting timezone to \"#{new_resource.timezone}\"") do + shell_out!("tzutil /s \"#{new_resource.timezone}\"") + end + end end end end @@ -112,6 +118,16 @@ class Chef /Time Zone: (.*)/.match(tz_shellout.stdout)[1] end end + + # detect the current timezone on windows hosts + # + # @since 14.7 + # @return [String] timezone id + def current_windows_tz + tz_shellout = shell_out("tzutil /g") + raise "There was an error running the tzutil command" if tz_shellout.exitstatus == 1 + tz_shellout.stdout.strip + end end end end diff --git a/spec/functional/resource/timezone_spec.rb b/spec/functional/resource/timezone_spec.rb new file mode 100644 index 0000000000..27e705e5da --- /dev/null +++ b/spec/functional/resource/timezone_spec.rb @@ -0,0 +1,39 @@ +# +# Author:: Gary Bright (<digitalgaz@hotmail.com>) +# Copyright:: Copyright 2011-2016, Chef Software 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 "spec_helper" + +describe Chef::Resource::Timezone, :windows_only do + let(:timezone) { "GMT Standard Time" } + + def timezone_resource + Chef::Resource::Timezone.new(timezone, run_context) + end + + describe "when a timezone is provided on windows" do + it "should set a timezone" do + timezone_resource.run_action(:set) + end + end + + describe "when a timezone is not provided on windows" do + let(:timezone) { nil } + it "raises an exception" do + expect { timezone_resource.run_action(:set) }.to raise_error(Chef::Exceptions::ValidationFailed) + end + end +end |