Sha256: 0d10f951133d5c98179088ee0e03579acf97389c02c77af888a9a31a489d23ee

Contents?: true

Size: 1.81 KB

Versions: 46

Compression:

Stored size: 1.81 KB

Contents

module ForemanPuppet
  class EnvironmentClass < ApplicationRecord
    self.table_name = 'environment_classes'

    belongs_to :environment
    belongs_to :puppetclass, inverse_of: :environment_classes
    belongs_to :puppetclass_lookup_key, inverse_of: :environment_classes, class_name: 'ForemanPuppet::PuppetclassLookupKey'
    validates :puppetclass_lookup_key_id, uniqueness: { scope: %i[environment_id puppetclass_id] }
    validates :puppetclass, :environment, presence: true
    after_destroy :delete_orphaned_lookup_keys

    scope :parameters_for_class, lambda { |puppetclasses_ids, environment_id|
      all_parameters_for_class(puppetclasses_ids, environment_id).where(puppetclass_lookup_keys: { override: true })
    }

    scope :all_parameters_for_class, lambda { |puppetclasses_ids, environment_id|
      where(puppetclass_id: puppetclasses_ids, environment_id: environment_id)
        .where.not(puppetclass_lookup_key_id: nil)
        .includes(:puppetclass_lookup_key)
    }

    scope :used_by_other_environment_classes, lambda { |puppetclass_lookup_key_id, this_environment_class_id|
      where(puppetclass_lookup_key_id: puppetclass_lookup_key_id)
        .where("id != #{this_environment_class_id}")
    }

    # TODO: move these into scopes?
    def self.is_in_any_environment(puppetclass, puppetclass_lookup_key)
      EnvironmentClass.where(puppetclass_id: puppetclass, puppetclass_lookup_key_id: puppetclass_lookup_key).any?
    end

    def self.key_in_environment(env, puppetclass, puppetclass_lookup_key)
      EnvironmentClass.find_by(environment_id: env, puppetclass_id: puppetclass, puppetclass_lookup_key_id: puppetclass_lookup_key)
    end

    def delete_orphaned_lookup_keys
      puppetclass_lookup_key.destroy if puppetclass_lookup_key.present? && puppetclass_lookup_key.environment_classes.empty?
    end
  end
end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
foreman_puppet-8.1.0 app/models/foreman_puppet/environment_class.rb
foreman_puppet-8.0.0 app/models/foreman_puppet/environment_class.rb
foreman_puppet-6.4.0 app/models/foreman_puppet/environment_class.rb
foreman_puppet-7.0.0 app/models/foreman_puppet/environment_class.rb
foreman_puppet-6.3.0 app/models/foreman_puppet/environment_class.rb
foreman_puppet-6.2.0 app/models/foreman_puppet/environment_class.rb
foreman_puppet-6.1.1 app/models/foreman_puppet/environment_class.rb
foreman_puppet-5.1.3 app/models/foreman_puppet/environment_class.rb
foreman_puppet-6.1.0 app/models/foreman_puppet/environment_class.rb
foreman_puppet-6.0.1 app/models/foreman_puppet/environment_class.rb
foreman_puppet-6.0.0 app/models/foreman_puppet/environment_class.rb
foreman_puppet-5.1.2 app/models/foreman_puppet/environment_class.rb
foreman_puppet-4.1.1 app/models/foreman_puppet/environment_class.rb
foreman_puppet-5.1.1 app/models/foreman_puppet/environment_class.rb
foreman_puppet-5.1.0 app/models/foreman_puppet/environment_class.rb
foreman_puppet-4.1.0 app/models/foreman_puppet/environment_class.rb
foreman_puppet-4.0.4 app/models/foreman_puppet/environment_class.rb
foreman_puppet-5.0.0 app/models/foreman_puppet/environment_class.rb
foreman_puppet-4.0.3 app/models/foreman_puppet/environment_class.rb
foreman_puppet-4.0.2 app/models/foreman_puppet/environment_class.rb