Class: Configuration

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/configuration.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_template(iid) ⇒ Object



133
134
135
# File 'app/models/configuration.rb', line 133

def find_template(iid)
  self.templates.where('internal_identifier = ?', iid).first
end

Instance Method Details

#add_configuration_item(configuration_item_type, *option_internal_identifiers) ⇒ Object Also known as: add_item



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'app/models/configuration.rb', line 35

def add_configuration_item(configuration_item_type, *option_internal_identifiers)
  option_internal_identifiers = option_internal_identifiers.collect{|item| item.to_s}
  configuration_item_type = (configuration_item_type.is_a? ConfigurationItemType) ? configuration_item_type : ConfigurationItemType.find_by_internal_identifier(configuration_item_type.to_s)

  item = get_configuration_item(configuration_item_type)
  if item
    update_configuration_item(configuration_item_type, option_internal_identifiers)
  else
    unless self.configuration_item_types.where("id = ?", configuration_item_type.id).first.nil?
      item = ConfigurationItem.create(:configuration_item_type => configuration_item_type)
      item.set_options(option_internal_identifiers)
      self.configuration_items << item
      self.save
    else
      raise "Configuration Item Type #{configuration_item_type.description} is not valid for this configuration"
    end
  end
end

#clone(set_defaults = true) ⇒ Object

Clone

Will copy all configuration item types

  • Args

    • set_defaults -> create items and set default options default = true

  • Returns :

    • the cloned configuration



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'app/models/configuration.rb', line 84

def clone(set_defaults=true)
  configuration_dup = self.dup
  configuration_dup.internal_identifier = "#{self.internal_identifier} clone"
  configuration_dup.description = "#{self.description} clone"
  configuration_dup.is_template = false

  self.configuration_item_types.each do |configuration_item_type|
    configuration_dup.configuration_item_types << configuration_item_type
  end
  configuration_dup.save

  configuration_dup.configuration_item_types.each do |configuration_item_type|
    configuration_item = ConfigurationItem.create(:configuration_item_type => configuration_item_type)
    configuration_item.configuration_options = configuration_item_type.options.default if set_defaults
    configuration_item.save
    configuration_dup.configuration_items << configuration_item
  end
  configuration_dup.save
  
  configuration_dup
end

#copyObject

Copy

Will copy all configuration item types and items

  • Returns :

    • the copied configuration



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'app/models/configuration.rb', line 112

def copy
  configuration_dup = self.clone
  configuration_dup.internal_identifier = "#{self.internal_identifier} copy"
  configuration_dup.description = "#{self.description} copy"

  #clone items
  self.configuration_items.each do |item|
    item_dup = item.dup
    item_dup.configuration_item_type = item.configuration_item_type
    item.configuration_options.each do |option|
      item_dup.configuration_options << option
    end
    item_dup.save
    configuration_dup.configuration_items << item_dup
  end

  configuration_dup.save
  configuration_dup
end

#get_configuration_item(configuration_item_type) ⇒ Object Also known as: get_item



68
69
70
71
72
# File 'app/models/configuration.rb', line 68

def get_configuration_item(configuration_item_type)
  configuration_item_type = (configuration_item_type.is_a? ConfigurationItemType) ? configuration_item_type : ConfigurationItemType.find_by_internal_identifier(configuration_item_type.to_s)
  
  self.items.where('configuration_item_type_id = ?', configuration_item_type.id).first
end

#is_template?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'app/models/configuration.rb', line 31

def is_template?
  self.is_template
end

#update_configuration_item(configuration_item_type, *option_internal_identifiers) ⇒ Object Also known as: update_item



56
57
58
59
60
61
62
63
64
# File 'app/models/configuration.rb', line 56

def update_configuration_item(configuration_item_type, *option_internal_identifiers)
  configuration_item_type = (configuration_item_type.is_a? ConfigurationItemType) ? configuration_item_type : ConfigurationItemType.find_by_internal_identifier(configuration_item_type.to_s)
  
  item = self.items.where('configuration_item_type_id = ?', configuration_item_type.id).first
  raise "Configuration item #{configuration_item_type.description} does not exist for configuration #{self.description}" if item.nil?

  item.clear_options
  item.set_options(option_internal_identifiers.flatten)
end