Class: Chef::Resource::Conditional
- Includes:
- Mixin::ShellOut
- Defined in:
- lib/chef/resource/conditional.rb
Constant Summary
Constants included from Mixin::ShellOut
Mixin::ShellOut::DEPRECATED_OPTIONS
Instance Attribute Summary collapse
-
#block ⇒ Object
readonly
Returns the value of attribute block.
-
#command ⇒ Object
readonly
Returns the value of attribute command.
-
#command_opts ⇒ Object
readonly
Returns the value of attribute command_opts.
-
#positivity ⇒ Object
readonly
Returns the value of attribute positivity.
Class Method Summary collapse
- .not_if(parent_resource, command = nil, command_opts = {}, &block) ⇒ Object
- .only_if(parent_resource, command = nil, command_opts = {}, &block) ⇒ Object
Instance Method Summary collapse
- #continue? ⇒ Boolean
- #description ⇒ Object
- #evaluate ⇒ Object
- #evaluate_block ⇒ Object
- #evaluate_command ⇒ Object
-
#initialize(positivity, parent_resource, command = nil, command_opts = {}, &block) ⇒ Conditional
constructor
A new instance of Conditional.
- #short_description ⇒ Object
- #to_text ⇒ Object
Methods included from Mixin::ShellOut
#run_command_compatible_options, #shell_out, #shell_out!
Constructor Details
#initialize(positivity, parent_resource, command = nil, command_opts = {}, &block) ⇒ Conditional
Returns a new instance of Conditional.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/chef/resource/conditional.rb', line 46 def initialize(positivity, parent_resource, command=nil, command_opts={}, &block) @positivity = positivity case command when String @guard_interpreter = new_guard_interpreter(parent_resource, command, command_opts, &block) @command, @command_opts = command, command_opts @block = nil when nil raise ArgumentError, "only_if/not_if requires either a command or a block" unless block_given? @guard_interpreter = nil @command, @command_opts = nil, nil @block = block else raise ArgumentError, "Invalid only_if/not_if command: #{command.inspect} (#{command.class})" end end |
Instance Attribute Details
#block ⇒ Object (readonly)
Returns the value of attribute block.
44 45 46 |
# File 'lib/chef/resource/conditional.rb', line 44 def block @block end |
#command ⇒ Object (readonly)
Returns the value of attribute command.
42 43 44 |
# File 'lib/chef/resource/conditional.rb', line 42 def command @command end |
#command_opts ⇒ Object (readonly)
Returns the value of attribute command_opts.
43 44 45 |
# File 'lib/chef/resource/conditional.rb', line 43 def command_opts @command_opts end |
#positivity ⇒ Object (readonly)
Returns the value of attribute positivity.
41 42 43 |
# File 'lib/chef/resource/conditional.rb', line 41 def positivity @positivity end |
Class Method Details
.not_if(parent_resource, command = nil, command_opts = {}, &block) ⇒ Object
33 34 35 |
# File 'lib/chef/resource/conditional.rb', line 33 def self.not_if(parent_resource, command=nil, command_opts={}, &block) new(:not_if, parent_resource, command, command_opts, &block) end |
.only_if(parent_resource, command = nil, command_opts = {}, &block) ⇒ Object
37 38 39 |
# File 'lib/chef/resource/conditional.rb', line 37 def self.only_if(parent_resource, command=nil, command_opts={}, &block) new(:only_if, parent_resource, command, command_opts, &block) end |
Instance Method Details
#continue? ⇒ Boolean
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/chef/resource/conditional.rb', line 63 def continue? case @positivity when :only_if evaluate when :not_if !evaluate else raise "Cannot evaluate resource conditional of type #{@positivity}" end end |
#description ⇒ Object
93 94 95 96 |
# File 'lib/chef/resource/conditional.rb', line 93 def description cmd_or_block = @command ? "command `#{@command}`" : "ruby block" "#{@positivity} #{cmd_or_block}" end |
#evaluate ⇒ Object
74 75 76 |
# File 'lib/chef/resource/conditional.rb', line 74 def evaluate @guard_interpreter ? evaluate_command : evaluate_block end |
#evaluate_block ⇒ Object
85 86 87 |
# File 'lib/chef/resource/conditional.rb', line 85 def evaluate_block @block.call end |
#evaluate_command ⇒ Object
78 79 80 81 82 83 |
# File 'lib/chef/resource/conditional.rb', line 78 def evaluate_command @guard_interpreter.evaluate rescue Chef::Exceptions::CommandTimeout Chef::Log.warn "Command '#{@command}' timed out" false end |
#short_description ⇒ Object
89 90 91 |
# File 'lib/chef/resource/conditional.rb', line 89 def short_description @positivity end |
#to_text ⇒ Object
98 99 100 101 102 103 104 |
# File 'lib/chef/resource/conditional.rb', line 98 def to_text if @command "#{positivity} \"#{@command}\"" else "#{@positivity} { #code block }" end end |