Class: Qurd::Action Abstract

Inherits:
Object
  • Object
show all
Extended by:
Forwardable, Mixins::AwsClients, Mixins::Configuration
Includes:
Mixins::AwsClients, Mixins::Configuration
Defined in:
lib/qurd/action.rb,
lib/qurd/action/chef.rb,
lib/qurd/action/dummy.rb,
lib/qurd/action/route53.rb

Overview

This class is abstract.

Subclass and override #launch, #launch_error, #terminate, #terminate_error, and #test, optionally override class method #Qurd#Qurd::Action#Qurd::Action.configure and instance methods #run_before and #run_after

Direct Known Subclasses

Chef, Dummy, Route53

Defined Under Namespace

Classes: Chef, Dummy, InvalidMessage, Route53

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixins::Configuration

qurd_config, qurd_configuration, qurd_logger, qurd_logger!

Methods included from Mixins::AwsClients

aws_client, aws_retryable

Constructor Details

#initialize(message) ⇒ Action

Run the plugin for a given Message

Parameters:

Raises:

See Also:



78
79
80
81
82
83
84
85
# File 'lib/qurd/action.rb', line 78

def initialize(message)
  unless message.is_a?(Qurd::Message)
    qurd_logger!("Message is not a Qurd::Message (#{message.class})",
                 Qurd::Action::InvalidMessage)
  end
  @message = message
  @context = message.context
end

Instance Attribute Details

#aws_credentialsAws::Credentials (readonly)

Returns:

  • (Aws::Credentials)


26
# File 'lib/qurd/action.rb', line 26

def_delegator :@message, :aws_credentials, :aws_credentials

#chef_clientChef::ApiClient

Returns:

  • (Chef::ApiClient)


29
# File 'lib/qurd/action.rb', line 29

def_delegator :@message, :chef_client, :chef_client

#chef_nodeChef::Node

Returns:

  • (Chef::Node)


33
# File 'lib/qurd/action.rb', line 33

def_delegator :@message, :chef_node, :chef_node

#contextCabin::Context (readonly)

The logging context

Returns:

  • (Cabin::Context)


64
65
66
# File 'lib/qurd/action.rb', line 64

def context
  @context
end

#failed?Boolean (readonly)

Returns:

  • (Boolean)


42
# File 'lib/qurd/action.rb', line 42

def_delegator :@message, :failed?, :failed?

#instanceStruct (readonly)

Returns:

  • (Struct)


51
# File 'lib/qurd/action.rb', line 51

def_delegator :@message, :instance, :instance

#instance_idString (readonly)

Returns:



45
# File 'lib/qurd/action.rb', line 45

def_delegator :@message, :instance_id, :instance_id

#instance_nameString (readonly)

Returns:



48
# File 'lib/qurd/action.rb', line 48

def_delegator :@message, :instance_name, :instance_name

#messageObject (readonly)

Returns the value of attribute message.



64
# File 'lib/qurd/action.rb', line 64

attr_reader :context, :message

#nameString (readonly)

Returns:



54
# File 'lib/qurd/action.rb', line 54

def_delegator :@message, :name, :name

#regionString (readonly)

Returns:



57
# File 'lib/qurd/action.rb', line 57

def_delegator :@message, :region, :region

Class Method Details

.configure(_action) ⇒ Object

Optionally configure the plugin launch, launch_error, terminate, terminate_error, or test

Parameters:

  • _action (String)

    optionally configure, based on the actions



69
70
71
# File 'lib/qurd/action.rb', line 69

def self.configure(_action)
  qurd_logger.debug('Nothing to do')
end

Instance Method Details

#failed!(e) ⇒ Aws::Credentials

Log an action failure, setting the Qurd::Message

Returns:

  • (Aws::Credentials)

See Also:

  • Message.failed!


39
# File 'lib/qurd/action.rb', line 39

def_delegator :@message, :failed!, :failed!

#inspectObject



108
109
110
111
112
113
114
115
116
# File 'lib/qurd/action.rb', line 108

def inspect
  format('<%s:%x instance_id:%s message_id:%s context:%s>',
         self.class,
         object_id,
         message.instance_id,
         message.message_id,
         context.inspect
  )
end

#launchObject Also known as: launch_error, terminate, terminate_error, test

Run the plugin



94
95
96
# File 'lib/qurd/action.rb', line 94

def launch
  qurd_logger!("Override the abstract method #{__method__}")
end

#run_afterObject

Executed after the processor runs the plugins for an action

See Also:



104
105
106
# File 'lib/qurd/action.rb', line 104

def run_after
  qurd_logger.debug('Nothing to do')
end

#run_beforeObject

Executed before the processor runs the plugins for an action

See Also:



89
90
91
# File 'lib/qurd/action.rb', line 89

def run_before
  qurd_logger.debug('Nothing to do')
end