foreman/app/models/environment_class.rb @ 783fb4aa
f8d94608 | Amos Benari | class EnvironmentClass < ActiveRecord::Base
|
|
belongs_to :environment
|
|||
belongs_to :puppetclass
|
|||
6b4b489f | Ori Rabin | belongs_to :puppetclass_lookup_key
|
|
validates :puppetclass_lookup_key_id, :uniqueness => {:scope => [:environment_id, :puppetclass_id]}
|
|||
f2c78d4a | Joseph Magen | validates :puppetclass_id, :environment_id, :presence => true
|
|
f8d94608 | Amos Benari | ||
scope :parameters_for_class, lambda {|puppetclasses_ids, environment_id|
|
|||
6b4b489f | Ori Rabin | all_parameters_for_class(puppetclasses_ids, environment_id).where(:puppetclass_lookup_keys => {:override => true})
|
|
f8d94608 | Amos Benari | }
|
|
6895854c | Stephen Benjamin | ||
f8d94608 | Amos Benari | scope :all_parameters_for_class, lambda {|puppetclasses_ids, environment_id|
|
|
where(:puppetclass_id => puppetclasses_ids, :environment_id => environment_id).
|
|||
6b4b489f | Ori Rabin | where('puppetclass_lookup_key_id is NOT NULL').
|
|
includes(:puppetclass_lookup_key)
|
|||
f8d94608 | Amos Benari | }
|
|
6b4b489f | Ori Rabin | scope :used_by_other_environment_classes, lambda{|puppetclass_lookup_key_id, this_environment_class_id|
|
|
where(:puppetclass_lookup_key_id => puppetclass_lookup_key_id).
|
|||
6895854c | Stephen Benjamin | where("id != #{this_environment_class_id}")
|
|
}
|
|||
# These counters key track of unique puppet class keys (parameters) across environments
|
|||
7deaced2 | Daniel Lobato | after_create do |record|
|
|
6b4b489f | Ori Rabin | Puppetclass.increment_counter(:global_class_params_count, self.puppetclass.id) unless self.puppetclass_lookup_key.blank? ||
|
|
EnvironmentClass.used_by_other_environment_classes(self.puppetclass_lookup_key, self.id).count > 0
|
|||
7deaced2 | Daniel Lobato | end
|
|
6895854c | Stephen Benjamin | ||
7deaced2 | Daniel Lobato | after_destroy do |record|
|
|
6b4b489f | Ori Rabin | Puppetclass.decrement_counter(:global_class_params_count, self.puppetclass.id) unless self.puppetclass_lookup_key.blank? ||
|
|
EnvironmentClass.used_by_other_environment_classes(self.puppetclass_lookup_key, self.id).count > 0
|
|||
end
|
|||
def lookup_key_id=(val)
|
|||
Foreman::Deprecation.deprecation_warning("1.12", "lookup_key_id= is deprecated, please use puppetclass_lookup_key_id= instead.")
|
|||
self.puppetclass_lookup_key_id=val
|
|||
end
|
|||
def lookup_key=(val)
|
|||
Foreman::Deprecation.deprecation_warning("1.12", "lookup_key= is deprecated, please use puppetclass_lookup_key= instead.")
|
|||
self.puppetclass_lookup_key=val
|
|||
7deaced2 | Daniel Lobato | end
|
|
6895854c | Stephen Benjamin | ||
f8d94608 | Amos Benari | #TODO move these into scopes?
|
|
6b4b489f | Ori Rabin | def self.is_in_any_environment(puppetclass, puppetclass_lookup_key)
|
|
EnvironmentClass.where(:puppetclass_id => puppetclass, :puppetclass_lookup_key_id => puppetclass_lookup_key ).count > 0
|
|||
f8d94608 | Amos Benari | end
|
|
6b4b489f | Ori Rabin | def self.key_in_environment(env, puppetclass, puppetclass_lookup_key)
|
|
EnvironmentClass.where(:environment_id => env, :puppetclass_id => puppetclass, :puppetclass_lookup_key_id => puppetclass_lookup_key ).first
|
|||
f8d94608 | Amos Benari | end
|
|
end
|