Sha256: ade4ebb52c6302effdd684cd2bee277a090e3f01d97f5e27a70512318fb36920

Contents?: true

Size: 1.62 KB

Versions: 8

Compression:

Stored size: 1.62 KB

Contents

module ForemanSalt
  class SaltModule < ActiveRecord::Base
    include Authorizable
    extend FriendlyId
    friendly_id :name

    has_many :hosts, :through => :host_salt_modules, :class_name => '::Host::Managed'
    has_many :host_salt_modules, :foreign_key => :salt_module_id

    has_many :hostgroups, :through => :hostgroup_salt_modules
    has_many :hostgroup_salt_modules, :foreign_key => :salt_module_id

    has_many :salt_environments, :through => :salt_module_environments
    has_many :salt_module_environments

    validates :name, :uniqueness => true, :presence => true, :format => { :with => /\A(?:[\w\d\-]+\.{0,1})+[^\.]\z/, :message => N_('must be alphanumeric, can contain periods, dashes, underscores and must not contain spaces') }

    default_scope lambda {
      order('salt_modules.name')
    }

    scope :in_environment, ->(environment) { joins(:salt_environments).where('salt_module_environments.salt_environment_id' => environment) }

    scoped_search :on => :name, :complete_value => true
    scoped_search :in => :salt_environments, :on => :name, :complete_value => true, :rename => :environment
    scoped_search :in => :hostgroups, :on => :name, :complete_value => true, :rename => :hostgroup
    scoped_search :in => :hosts, :on => :name, :complete_value => true, :rename => :host

    def self.to_hash
      states = {}

      SaltEnvironment.all.each do |environment|
        states[environment.name] = environment.salt_modules.map(&:name)
      end

      states
    end

    def self.humanize_class_name(_name = nil)
      _('Salt state')
    end

    def self.permission_name
      'salt_modules'
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
foreman_salt-8.0.3 app/models/foreman_salt/salt_module.rb
foreman_salt-8.0.2 app/models/foreman_salt/salt_module.rb
foreman_salt-8.0.1 app/models/foreman_salt/salt_module.rb
foreman_salt-7.0.3 app/models/foreman_salt/salt_module.rb
foreman_salt-8.0.0 app/models/foreman_salt/salt_module.rb
foreman_salt-7.0.2 app/models/foreman_salt/salt_module.rb
foreman_salt-7.0.1 app/models/foreman_salt/salt_module.rb
foreman_salt-7.0.0 app/models/foreman_salt/salt_module.rb