Sha256: 4eb0f2a9622fd2c81eaa7e961dcb2fcb4758b012aa1ae8d30bf6c3de9e4a6403

Contents?: true

Size: 1.08 KB

Versions: 9

Compression:

Stored size: 1.08 KB

Contents

module ForemanSalt
  class SaltEnvironment < ApplicationRecord
    include Authorizable
    extend FriendlyId
    friendly_id :name
    include Parameterizable::ByIdName

    has_many :hosts, class_name: '::Host::Managed'
    has_many :hostgroups, class_name: '::Hostgroup'

    has_many :salt_module_environments
    has_many :salt_modules, through: :salt_module_environments, before_remove: :remove_from_hosts

    validates :name, uniqueness: true, presence: true, format: { with: /\A[\w\d.]+\z/, message: N_('is alphanumeric and cannot contain spaces') }

    scoped_search on: :name, complete_value: true
    scoped_search relation: :hostgroups, on: :name, complete_value: true, rename: :hostgroup
    scoped_search relation: :hosts, on: :name, complete_value: true, rename: :host

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

    def self.permission_name
      'salt_environments'
    end

    private

    def remove_from_hosts(state)
      HostSaltModule.joins(:host).where(hosts: { salt_environment_id: id }, salt_module_id: state).destroy
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
foreman_salt-16.0.1 app/models/foreman_salt/salt_environment.rb
foreman_salt-16.0.0 app/models/foreman_salt/salt_environment.rb
foreman_salt-15.2.3 app/models/foreman_salt/salt_environment.rb
foreman_salt-15.2.2 app/models/foreman_salt/salt_environment.rb
foreman_salt-15.2.1 app/models/foreman_salt/salt_environment.rb
foreman_salt-15.2.0 app/models/foreman_salt/salt_environment.rb
foreman_salt-15.1.0 app/models/foreman_salt/salt_environment.rb
foreman_salt-15.0.0 app/models/foreman_salt/salt_environment.rb
foreman_salt-14.1.0 app/models/foreman_salt/salt_environment.rb