class Kitchen::Plugin::Base

Attributes

serial_actions[R]

@return [Array<Symbol>] an array of action method names that cannot

be run concurrently and must be run in serial via a shared mutex

Public Class Methods

no_parallel_for(*methods) click to toggle source

Registers certain driver actions that cannot be safely run concurrently in threads across multiple instances. Typically this might be used for create or destroy actions that use an underlying resource that cannot be used at the same time.

A shared mutex for this driver object will be used to synchronize all registered methods.

@example a single action method that cannot be run concurrently

no_parallel_for :create

@example multiple action methods that cannot be run concurrently

no_parallel_for :create, :destroy

@param methods [Array<Symbol>] one or more actions as symbols @raise [ClientError] if any method is not a valid action method name

# File lib/kitchen/plugin_base.rb, line 45
def self.no_parallel_for(*methods)
  action_methods = %i{create setup converge verify destroy}

  Array(methods).each do |meth|
    next if action_methods.include?(meth)

    raise ClientError, "##{meth} is not a valid no_parallel_for method"
  end

  @serial_actions ||= []
  @serial_actions += methods
end