diff options
author | harikesh-kolekar <harikesh.kolekar@msystechnologies.com> | 2018-01-29 12:55:28 +0000 |
---|---|---|
committer | harikesh-kolekar <harikesh.kolekar@msystechnologies.com> | 2018-01-30 07:41:03 +0000 |
commit | 85ad3ee585ab50d173c083325d106967d2161dab (patch) | |
tree | ab53f9baee15101758272642479ac51b2031d5cd /lib/chef/provider/env.rb | |
parent | 4b8580ceb864961f77c87e5013eb1bf36463b895 (diff) | |
download | chef-85ad3ee585ab50d173c083325d106967d2161dab.tar.gz |
rename env resource to windows_env
Signed-off-by: harikesh-kolekar <harikesh.kolekar@msystechnologies.com>
Diffstat (limited to 'lib/chef/provider/env.rb')
-rw-r--r-- | lib/chef/provider/env.rb | 171 |
1 files changed, 0 insertions, 171 deletions
diff --git a/lib/chef/provider/env.rb b/lib/chef/provider/env.rb deleted file mode 100644 index b8b9d99846..0000000000 --- a/lib/chef/provider/env.rb +++ /dev/null @@ -1,171 +0,0 @@ -# -# Author:: Doug MacEachern (<dougm@vmware.com>) -# Copyright:: Copyright 2010-2016, VMware, 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 "chef/provider" -require "chef/resource/env" - -class Chef - class Provider - class Env < Chef::Provider - attr_accessor :key_exists - - provides :env, os: "!windows" - - def whyrun_supported? - false - end - - def initialize(new_resource, run_context) - super - @key_exists = true - end - - def load_current_resource - @current_resource = Chef::Resource::Env.new(new_resource.name) - current_resource.key_name(new_resource.key_name) - - if env_key_exists(new_resource.key_name) - current_resource.value(env_value(new_resource.key_name)) - else - @key_exists = false - Chef::Log.debug("#{new_resource} key does not exist") - end - - current_resource - end - - def env_value(key_name) - raise Chef::Exceptions::Env, "#{self} provider does not implement env_value!" - end - - def env_key_exists(key_name) - env_value(key_name) ? true : false - end - - # Check to see if value needs any changes - # - # ==== Returns - # <true>:: If a change is required - # <false>:: If a change is not required - def requires_modify_or_create? - if new_resource.delim - #e.g. check for existing value within PATH - new_values.inject(0) do |index, val| - next_index = current_values.find_index val - return true if next_index.nil? || next_index < index - next_index - end - false - else - new_resource.value != current_resource.value - end - end - - alias_method :compare_value, :requires_modify_or_create? - - def action_create - if @key_exists - if requires_modify_or_create? - modify_env - Chef::Log.info("#{new_resource} altered") - new_resource.updated_by_last_action(true) - end - else - create_env - Chef::Log.info("#{new_resource} created") - new_resource.updated_by_last_action(true) - end - end - - #e.g. delete a PATH element - # - # ==== Returns - # <true>:: If we handled the element case and caller should not delete the key - # <false>:: Caller should delete the key, either no :delim was specific or value was empty - # after we removed the element. - def delete_element - return false unless new_resource.delim #no delim: delete the key - needs_delete = new_values.any? { |v| current_values.include?(v) } - if !needs_delete - Chef::Log.debug("#{new_resource} element '#{new_resource.value}' does not exist") - return true #do not delete the key - else - new_value = - current_values.select do |item| - not new_values.include?(item) - end.join(new_resource.delim) - - if new_value.empty? - return false #nothing left here, delete the key - else - old_value = new_resource.value(new_value) - create_env - Chef::Log.debug("#{new_resource} deleted #{old_value} element") - new_resource.updated_by_last_action(true) - return true #we removed the element and updated; do not delete the key - end - end - end - - def action_delete - if ( ENV[new_resource.key_name] || @key_exists ) && !delete_element - delete_env - Chef::Log.info("#{new_resource} deleted") - new_resource.updated_by_last_action(true) - end - end - - def action_modify - if @key_exists - if requires_modify_or_create? - modify_env - Chef::Log.info("#{new_resource} modified") - new_resource.updated_by_last_action(true) - end - else - raise Chef::Exceptions::Env, "Cannot modify #{new_resource} - key does not exist!" - end - end - - def create_env - raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :#{new_resource.action}" - end - - def delete_env - raise Chef::Exceptions::UnsupportedAction, "#{self} does not support :delete" - end - - def modify_env - if new_resource.delim - new_resource.value((new_values + current_values).uniq.join(new_resource.delim)) - end - create_env - end - - # Returns the current values to split by delimiter - def current_values - @current_values ||= current_resource.value.split(new_resource.delim) - end - - # Returns the new values to split by delimiter - def new_values - @new_values ||= new_resource.value.split(new_resource.delim) - end - end - end -end |