ManageIQ/manageiq-automation_engine

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

Summary

Maintainability
A
0 mins
Test Coverage
B
80%
module MiqAeServiceMiqProvisionMixin
  extend ActiveSupport::Concern

  module ClassMethods
    def expose_eligible_resources(resource, options = {})
      method_name = "eligible_#{resource}"
      define_method(method_name) do
        ar_method do
          eligible_resources(resource.to_sym)
        end
      end
      association method_name

      define_method("set_#{resource.to_s.singularize}") do |rsc|
        ar_method do
          set_resource(rsc)
        end
      end

      if options[:multiple_value]
        define_method("set_#{resource.to_s.pluralize}") do |rscs|
          ar_method { set_resources(rscs) }
        end
      end
    end
  end

  def set_vm_notes(note)
    object_send(:set_vm_notes, note)
  end

  def register_automate_callback(callback_name, automate_uri)
    object_send(:register_automate_callback, callback_name, automate_uri)
  end

  def set_network_address_mode(mode)
    set_option(:addr_mode, ["dhcp",   "DHCP"])   if mode.downcase == "dhcp"
    set_option(:addr_mode, ["static", "Static"]) if mode.downcase == "static"
  end

  def check_quota(quota_type, options = {})
    object_send(:check_quota, quota_type, options)
  end

  def eligible_resources(rsc_type)
    wrap_results(object_send(:eligible_resources, rsc_type))
  end

  def set_resource(rsc)
    object_send(:set_resource, rsc)
  end

  def set_resources(rscs)
    object_send(:set_resources, rscs)
  end

  def set_nic_settings(idx, nic_hash, value = nil)
    object_send(:set_nic_settings, idx, nic_hash, value)
  end

  def set_network_adapter(idx, nic_hash, value = nil)
    object_send(:set_network_adapter, idx, nic_hash, value)
  end

  def set_dvs(portgroup, switch = portgroup)
    set_option(:vlan, ["dvs_#{portgroup}", "#{portgroup} (#{switch})"])
  end

  def set_vlan(vlan)
    set_option(:vlan, [vlan.to_s, vlan.to_s])
  end

  def get_folder_paths
    object_send(:get_folder_paths)
  end
end