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



168
169
170
# File 'app/models/configuration.rb', line 168

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



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'app/models/configuration.rb', line 51

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

#cannot_have_two_templates_per_iidObject



12
13
14
15
16
17
18
# File 'app/models/configuration.rb', line 12

def cannot_have_two_templates_per_iid
  if self.is_template
    unless Configuration.where('id != ?', self.id).where(:is_template => true).where(:internal_identifier => self.internal_identifier).first.nil?
      errors.add(:is_template, "Cannot have more than one template per configuration")
    end
  end
end

#clear_configuration_item_typesObject



40
41
42
# File 'app/models/configuration.rb', line 40

def clear_configuration_item_types
  configuration_item_types.clear
end

#clone(set_defaults = true, description = nil, internal_identifier = nil) ⇒ Object

Clone

Will copy all configuration item types

  • Args

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

    • description -> description to set = nil

    • internal_identifier -> internal_identifier to set = nil

  • Returns :

    • the cloned configuration



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'app/models/configuration.rb', line 102

def clone(set_defaults=true, description=nil, internal_identifier=nil)
  configuration_dup = self.dup
  configuration_dup.internal_identifier = internal_identifier || self.internal_identifier
  configuration_dup.description = description || self.description
  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

#copy(description = nil, internal_identifier = nil) ⇒ Object

Copy

Will copy all configuration item types and items

  • Args

    • description -> description to set = nil

    • internal_identifier -> internal_identifier to set = nil

  • Returns :

    • the copied configuration



133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# File 'app/models/configuration.rb', line 133

def copy(description=nil, internal_identifier=nil)
  configuration_dup = self.dup
  configuration_dup.internal_identifier = internal_identifier || self.internal_identifier
  configuration_dup.description = description || self.description
  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

  #clone items
  self.configuration_items.each do |item|
    item_dup = item.dup

    # remove old configuration id
    item_dup.configuration_id = nil

    item_dup.configuration_item_type = item.configuration_item_type
    item.configuration_options.each do |option|
      if option.user_defined
        item_dup.configuration_options << option.dup
      else
        item_dup.configuration_options << option
      end

    end
    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



84
85
86
87
88
# File 'app/models/configuration.rb', line 84

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)


47
48
49
# File 'app/models/configuration.rb', line 47

def is_template?
  self.is_template
end

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



72
73
74
75
76
77
78
79
80
# File 'app/models/configuration.rb', line 72

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