From 1f96ef313d7a651c91d87caa54701f675a750d1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn?= Date: Fri, 25 Oct 2013 18:02:54 +0200 Subject: [PATCH] Feature #2392: Add CID to history elems in migrator --- src/onedb/4.2.0_to_4.3.80.rb | 70 ++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/onedb/4.2.0_to_4.3.80.rb b/src/onedb/4.2.0_to_4.3.80.rb index 4c893b9b03..5d4436cc50 100644 --- a/src/onedb/4.2.0_to_4.3.80.rb +++ b/src/onedb/4.2.0_to_4.3.80.rb @@ -123,6 +123,57 @@ module Migrator @db.run "DROP TABLE old_datastore_pool;" + ######################################################################## + # Feature #2392 + ######################################################################## + + @db.run "ALTER TABLE vm_pool RENAME TO old_vm_pool;" + @db.run "CREATE TABLE vm_pool (oid INTEGER PRIMARY KEY, name VARCHAR(128), body MEDIUMTEXT, uid INTEGER, gid INTEGER, last_poll INTEGER, state INTEGER, lcm_state INTEGER, owner_u INTEGER, group_u INTEGER, other_u INTEGER);" + + @db.fetch("SELECT * FROM old_vm_pool") do |row| + doc = REXML::Document.new(row[:body]) + + doc.root.each_element("HISTORY_RECORDS/HISTORY") do |e| + update_history(e) + end + + @db[:vm_pool].insert( + :oid => row[:oid], + :name => row[:name], + :body => doc.root.to_s, + :uid => row[:uid], + :gid => row[:gid], + :last_poll => row[:last_poll], + :state => row[:state], + :lcm_state => row[:lcm_state], + :owner_u => row[:owner_u], + :group_u => row[:group_u], + :other_u => row[:other_u]) + end + + @db.run "DROP TABLE old_vm_pool;" + + @db.run "ALTER TABLE history RENAME TO old_history;" + @db.run "CREATE TABLE history (vid INTEGER, seq INTEGER, body MEDIUMTEXT, stime INTEGER, etime INTEGER,PRIMARY KEY(vid,seq));" + + @db.fetch("SELECT * FROM old_history") do |row| + doc = REXML::Document.new(row[:body]) + + doc.root.each_element("/HISTORY") do |e| + update_history(e) + end + + @db[:history].insert( + :vid => row[:vid], + :seq => row[:seq], + :body => doc.root.to_s, + :stime => row[:stime], + :etime => row[:etime]) + end + + @db.run "DROP TABLE old_history;" + + return true end @@ -202,4 +253,23 @@ module Migrator end end + def update_history(history_elem) + hid = nil + + history_elem.each_element("HID") do |e| + hid = e.text + end + + new_elem = history_elem.add_element("CID") + new_elem.text = "-1" # Cluster None + + if hid.nil? + return + end + + @db.fetch("SELECT cid FROM host_pool WHERE oid = #{hid}") do |row| + new_elem.text = row[:cid].to_s + end + end + end