-
Notifications
You must be signed in to change notification settings - Fork 987
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fixes #10832 - separating lookup keys into puppet and variable
- Loading branch information
1 parent
671b0b4
commit bcd15a4
Showing
28 changed files
with
303 additions
and
176 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,42 +1,52 @@ | ||
class EnvironmentClass < ActiveRecord::Base | ||
belongs_to :environment | ||
belongs_to :puppetclass | ||
belongs_to :lookup_key | ||
validates :lookup_key_id, :uniqueness => {:scope => [:environment_id, :puppetclass_id]} | ||
belongs_to :puppetclass_lookup_key | ||
validates :puppetclass_lookup_key_id, :uniqueness => {:scope => [:environment_id, :puppetclass_id]} | ||
validates :puppetclass_id, :environment_id, :presence => true | ||
|
||
scope :parameters_for_class, lambda {|puppetclasses_ids, environment_id| | ||
all_parameters_for_class(puppetclasses_ids, environment_id).where(:lookup_keys => {:override => true}) | ||
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('lookup_key_id is NOT NULL'). | ||
includes(:lookup_key) | ||
where('puppetclass_lookup_key_id is NOT NULL'). | ||
includes(:puppetclass_lookup_key) | ||
} | ||
|
||
scope :used_by_other_environment_classes, lambda{|lookup_key_id, this_environment_class_id| | ||
where(:lookup_key_id => lookup_key_id). | ||
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}") | ||
} | ||
|
||
# These counters key track of unique puppet class keys (parameters) across environments | ||
after_create { |record| | ||
Puppetclass.increment_counter(:global_class_params_count, self.puppetclass.id) unless self.lookup_key.blank? || | ||
EnvironmentClass.used_by_other_environment_classes(self.lookup_key, self.id).count > 0 | ||
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 | ||
} | ||
|
||
after_destroy { |record| | ||
Puppetclass.decrement_counter(:global_class_params_count, self.puppetclass.id) unless self.lookup_key.blank? || | ||
EnvironmentClass.used_by_other_environment_classes(self.lookup_key, self.id).count > 0 | ||
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 | ||
} | ||
|
||
def lookup_key_id=(val) | ||
::ActiveSupport::Deprecation.warn('lookup_key_id= is deprecated, please use puppetclass_lookup_key_id= instead.') | ||
self.puppetclass_lookup_key_id=val | ||
end | ||
|
||
def lookup_key=(val) | ||
::ActiveSupport::Deprecation.warn('lookup_key= is deprecated, please use puppetclass_lookup_key= instead.') | ||
self.puppetclass_lookup_key=val | ||
end | ||
|
||
#TODO move these into scopes? | ||
def self.is_in_any_environment(puppetclass, lookup_key) | ||
EnvironmentClass.where(:puppetclass_id => puppetclass, :lookup_key_id => lookup_key ).count > 0 | ||
def self.is_in_any_environment(puppetclass, puppetclass_lookup_key) | ||
EnvironmentClass.where(:puppetclass_id => puppetclass, :puppetclass_lookup_key_id => puppetclass_lookup_key ).count > 0 | ||
end | ||
|
||
def self.key_in_environment(env, puppetclass, lookup_key) | ||
EnvironmentClass.where(:environment_id => env, :puppetclass_id => puppetclass, :lookup_key_id => lookup_key ).first | ||
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 | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
class PuppetclassLookupKey < LookupKey | ||
has_many :environment_classes, :dependent => :destroy | ||
has_many :environments, :through => :environment_classes, :uniq => true | ||
has_many :param_classes, :through => :environment_classes, :source => :puppetclass | ||
belongs_to :puppetclass, :inverse_of => :lookup_keys | ||
|
||
def param_class | ||
param_classes.first | ||
end | ||
|
||
def audit_class | ||
param_class | ||
end | ||
|
||
scoped_search :in => :param_classes, :on => :name, :rename => :puppetclass, :complete_value => true | ||
|
||
scope :smart_class_parameters_for_class, lambda {|puppetclass_ids, environment_id| | ||
joins(:environment_classes).where(:environment_classes => {:puppetclass_id => puppetclass_ids, :environment_id => environment_id}) | ||
} | ||
|
||
scope :parameters_for_class, lambda {|puppetclass_ids, environment_id| | ||
override.smart_class_parameters_for_class(puppetclass_ids,environment_id) | ||
} | ||
|
||
scope :smart_class_parameters, lambda { where(:is_param => true).joins(:environment_classes).readonly(false) } | ||
|
||
def validate_and_cast_default_value | ||
super unless use_puppet_default | ||
true | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
class VariableLookupKey < LookupKey | ||
belongs_to :puppetclass, :inverse_of => :lookup_keys, :counter_cache => :variable_lookup_keys_count | ||
|
||
validates :puppetclass, :presence => true | ||
|
||
def audit_class | ||
puppetclass | ||
end | ||
|
||
def param_class | ||
end | ||
|
||
scope :global_parameters_for_class, lambda {|puppetclass_ids| | ||
where(:puppetclass_id => puppetclass_ids) | ||
} | ||
|
||
scope :smart_variables, lambda { where('lookup_keys.puppetclass_id > 0').readonly(false) } | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.