ManageIQ/manageiq-automation_engine

View on GitHub
lib/miq_automation_engine/service_models/mixins/miq_ae_service_ems_operations_mixin.rb

Summary

Maintainability
A
0 mins
Test Coverage
C
72%
module MiqAeServiceEmsOperationsMixin
  extend ActiveSupport::Concern

  # Instance Methods
  def sync_or_async_ems_operation(sync, method_name, args = [])
    ar_method do
      queue_options = {
        :class_name  => @object.class.name,
        :instance_id => @object.id,
        :method_name => method_name,
        :args        => args,
        :zone        => @object.my_zone,
        :role        => "ems_operations",
        :queue_name  => @object.queue_name_for_ems_operations,
        :task_id     => nil               # Clear task_id to allow running asynchronously under current worker process
      }

      if sync
        task_options = {:name => method_name.titleize, :userid => "system"}
        task_id = MiqTask.generic_action_with_callback(task_options, queue_options)
        MiqTask.wait_for_taskid(task_id)
      else
        MiqQueue.put(queue_options)
      end
    end
    true
  end
end