ManageIQ/manageiq

View on GitHub
app/models/switch.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class Switch < ApplicationRecord
  include NewWithTypeStiMixin
  include CustomActionsMixin
  extend TenancyCommonMixin

  belongs_to :host, :inverse_of => :host_virtual_switches
  has_one :ext_management_system, :through => :host

  has_many :host_switches, :dependent => :destroy
  has_many :hosts, :through => :host_switches

  has_many :guest_devices
  has_many :lans, :dependent => :destroy
  has_many :subnets, :through => :lans

  scope :shareable, ->     { where(:shared => true) }
  scope :with_id,   ->(id) { where(:id => id) }

  has_one :tenant, :through => :ext_management_system

  def self.scope_by_tenant?
    true
  end

  def self.tenant_id_clause_format(tenant_ids)
    {:ext_management_systems => {:tenant_id => tenant_ids}}
  end

  # in a perfect world, all of this would be in tenant_clause
  # and that would not return a hash but a scope
  def self.tenant_join_clause
    left_outer_joins(:tenant)
  end

  acts_as_miq_taggable
end