class Occi::Core::ActionInstance

Class representing executable instances of actions. Every instance carries the original action definition (instance of `Action`) together with attributes chosen for this invocation of the action. Validity of `ActionInstance` instances is determined by the validity of included `Action` instance and validity of provided attribute values.

@attr action [Action] original action definition @attr attributes [Hash] attributes for this action instance

@author Boris Parak <parak@cesnet.cz>

Constants

ERRORS

Attributes

action[RW]
attributes[RW]
kind[RW]

Public Class Methods

new(args = {}) click to toggle source
# File lib/occi/core/action_instance.rb, line 27
def initialize(args = {})
  default_args! args

  @action = args.fetch(:action)
  @attributes = args.fetch(:attributes)

  reset_attributes
end

Public Instance Methods

action=(action) click to toggle source

Assigns new action instance to this action instance. This method will trigger a complete reset on all previously set attributes, for the sake of consistency.

@param action [Occi::Core::Action] action to be assigned @return [Occi::Core::Action] assigned action

# File lib/occi/core/action_instance.rb, line 51
def action=(action)
  unless action
    raise Occi::Core::Errors::InstanceValidationError,
          'Missing valid action'
  end

  @action = action
  reset_attributes!

  action
end
Also aliased as: kind=
action_identifier() click to toggle source

Short-hand for accessing the identifier of assigned `Action` instance.

@return [String] identifier of the included `Action` instance @return [NilClass] if no action is present

# File lib/occi/core/action_instance.rb, line 41
def action_identifier
  action ? action.identifier : nil
end
kind=(action)
Alias for: action=
valid!() click to toggle source

Checks whether this action instance is valid. Validity is determined by the validity of the included action object and attribute value(s). This method will raise an error when the validation fails.

@raise [Errors::AttributeValidationError] if attribute(s) are invalid @raise [Errors::AttributeDefinitionError] if attribute defs are missing @raise [Occi::Core::Errors::InstanceValidationError] if this instance is invalid

# File lib/occi/core/action_instance.rb, line 90
def valid!
  raise Occi::Core::Errors::InstanceValidationError, 'Missing valid action object' unless action
  raise Occi::Core::Errors::InstanceValidationError, 'Missing valid attributes object' unless attributes

  attributes.each_pair { |name, attribute| valid_attribute!(name, attribute) }
end
valid?() click to toggle source

Checks whether this action instance is valid. Validity is determined by the validity of the included action object and attribute value(s).

@return [TrueClass] if valid @return [FalseClass] if invalid

# File lib/occi/core/action_instance.rb, line 71
def valid?
  begin
    valid!
  rescue *ERRORS => ex
    logger.warn "ActionInstance invalid: #{ex.message}"
    return false
  end

  true
end

Private Instance Methods

added_attributes() click to toggle source

Collects all available additional attributes for this instance and returns them as an array.

@return [Array] array with added attribute hashes

# File lib/occi/core/action_instance.rb, line 111
def added_attributes
  []
end
base_attributes() click to toggle source

Returns all base attributes for this instance in the form of the original hash.

@return [Hash] hash with base attributes

# File lib/occi/core/action_instance.rb, line 103
def base_attributes
  action.attributes
end