Project

General

Profile

Download (2.36 KB) Statistics
| Branch: | Tag: | Revision:
class SimplifyParameters < ActiveRecord::Migration
def self.up
remove_index :parameters, [:host_id, :type]
remove_index :parameters, [:hostgroup_id, :type]
remove_index :parameters, [:domain_id, :type]

rename_column :parameters, :host_id, :reference_id
add_index :parameters, [:reference_id, :type]

Parameter.reset_column_information

success = true
for parameter in Parameter.all
# There should be no Parameter objects. That is an abstract class.
# The type is probably nil because this table was imported by prod2dev
parameter.update_attribute :type, "HostParameter" if parameter.type.nil? and parameter.reference_id
parameter.update_attribute :type, "GroupParameter" if parameter.type.nil? and parameter.hostgroup_id
parameter.update_attribute :type, "DomainParameter" if parameter.type.nil? and parameter.domain_id
parameter.update_attribute :type, "CommonParameter" if parameter.type.nil?

if parameter.reference_id.nil? and parameter.type != "CommonParameter"
parameter.reference_id = parameter.hostgroup_id || parameter.domain_id
unless parameter.save
say "Failed to migrate the parameter #{parameter.name}: " + parameter.errors.full_messages.join("\n")
success = false
end
end
end

if success
say "Everything migrated ok so we remove the old columns"
remove_column :parameters, :hostgroup_id
remove_column :parameters, :domain_id
end

end

def self.down
remove_index :parameters, [:reference_id, :type]

add_column :parameters, :domain_id, :integer
add_column :parameters, :hostgroup_id, :integer
rename_column :parameters, :reference_id, :host_id

Parameter.reset_column_information

for parameter in Parameter.all
if parameter.type =~ /Group|Domain/
parameter.hostgroup_id = parameter.host_id if parameter.type == "GroupParameter"
parameter.domain_id = parameter.host_id if parameter.type == "DomainParameter"
parameter.host_id = nil
unless parameter.save
say "Failed to migrate the parameter #{parameter.name}: " + parameter.errors.full_messages.join("\n")
end
end
end

add_index :parameters, [:host_id, :type]
add_index :parameters, [:hostgroup_id, :type]
add_index :parameters, [:domain_id, :type]
end
end
(38-38/83)