diff options
Diffstat (limited to 'lib/chef/resource.rb')
-rw-r--r-- | lib/chef/resource.rb | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/lib/chef/resource.rb b/lib/chef/resource.rb deleted file mode 100644 index 75349a7927..0000000000 --- a/lib/chef/resource.rb +++ /dev/null @@ -1,172 +0,0 @@ -# -# Author:: Adam Jacob (<adam@hjksolutions.com>) -# Copyright:: Copyright (c) 2008 HJK Solutions, LLC -# 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 File.join(File.dirname(__FILE__), "mixin", "params_validate") -require File.join(File.dirname(__FILE__), "mixin", "check_helper") - -class Chef - class Resource - - include Chef::Mixin::CheckHelper - include Chef::Mixin::ParamsValidate - - attr_accessor :actions, :params, :provider, :updated, :allowed_actions, :collection, :cookbook_name, :recipe_name, :supports - attr_reader :resource_name, :source_line, :node - - def initialize(name, collection=nil, node=nil) - @name = name - if collection - @collection = collection - else - @collection = Chef::ResourceCollection.new() - end - @node = node ? node : Chef::Node.new - @noop = nil - @before = nil - @actions = Hash.new - @params = Hash.new - @provider = nil - @allowed_actions = [ :nothing ] - @action = :nothing - @updated = false - @supports = {} - @source_line = caller(4).shift.gsub!(/^(.+):(.+):.+$/, '\1 line \2') - @source_line = ::File.expand_path(@source_line) if @source_line - end - - def provider(arg=nil) - set_or_return( - :provider, - arg, - :kind_of => [ Class ] - ) - end - - def action(arg=nil) - if arg - action_list = arg.kind_of?(Array) ? arg : [ arg ] - action_list.each do |action| - validate( - { - :action => action, - }, - { - :object => { :equal_to => @allowed_actions }, - } - ) - end - @action = action_list - else - @action - end - end - - def name(name=nil) - set_if_args(@name, name) do - raise ArgumentError, "name must be a string!" unless name.kind_of?(String) - @name = name - end - end - - def noop(tf=nil) - set_if_args(@noop, tf) do - raise ArgumentError, "noop must be true or false!" unless tf == true || tf == false - @noop = tf - end - end - - def notifies(action, resources, timing=:delayed) - timing = check_timing(timing) - rarray = resources.kind_of?(Array) ? resources : [ resources ] - rarray.each do |resource| - action_sym = action.to_sym - if @actions.has_key?(action_sym) - @actions[action_sym][timing] << resource - else - @actions[action_sym] = Hash.new - @actions[action_sym][:delayed] = Array.new - @actions[action_sym][:immediate] = Array.new - @actions[action_sym][timing] << resource - end - end - true - end - - def resources(*args) - @collection.resources(*args) - end - - def subscribes(action, resources, timing=:delayed) - timing = check_timing(timing) - rarray = resources.kind_of?(Array) ? resources : [ resources ] - rarray.each do |resource| - action_sym = action.to_sym - if resource.actions.has_key?(action_sym) - resource.actions[action_sym][timing] << self - else - resource.actions[action_sym] = Hash.new - resource.actions[action_sym][:delayed] = Array.new - resource.actions[action_sym][:immediate] = Array.new - resource.actions[action_sym][timing] << self - end - end - true - end - - def is(*args) - return *args - end - - def to_s - "#{@resource_name}[#{@name}]" - end - - # Serialize this object as a hash - def to_json(*a) - instance_vars = Hash.new - self.instance_variables.each do |iv| - instance_vars[iv] = self.instance_variable_get(iv) unless iv == "@collection" - end - results = { - 'json_class' => self.class.name, - 'instance_vars' => instance_vars - } - results.to_json(*a) - end - - def self.json_create(o) - resource = self.new(o["instance_vars"]["@name"]) - o["instance_vars"].each do |k,v| - resource.instance_variable_set(k.to_sym, v) - end - resource - end - - private - - def check_timing(timing) - unless timing == :delayed || timing == :immediate || timing == :immediately - raise ArgumentError, "Timing must be :delayed or :immediate(ly), you said #{timing}" - end - if timing == :immediately - timing = :immediate - end - timing - end - end -end |