mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-23 22:50:09 +03:00
Bug #3620: Add prev_state to onedb migrator
This commit is contained in:
parent
11cdbed28b
commit
9bf5fa73f8
@ -131,6 +131,52 @@ module Migrator
|
||||
|
||||
log_time()
|
||||
|
||||
########################################################################
|
||||
# VM previous status
|
||||
########################################################################
|
||||
|
||||
@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.run "INSERT INTO vm_pool SELECT * FROM old_vm_pool WHERE state = 6;"
|
||||
|
||||
log_time()
|
||||
|
||||
@db.transaction do
|
||||
@db.fetch("SELECT * FROM old_vm_pool WHERE state<>6") do |row|
|
||||
doc = Nokogiri::XML(row[:body]){|c| c.default_xml.noblanks}
|
||||
|
||||
["STATE", "LCM_STATE"].each do |ename|
|
||||
prev_elem = doc.root.at_xpath("PREV_#{ename}")
|
||||
|
||||
if prev_elem.nil?
|
||||
prev_elem = doc.root.add_child(
|
||||
doc.create_element("PREV_#{ename}"))
|
||||
|
||||
prev_elem.content = doc.root.at_xpath(ename).text
|
||||
end
|
||||
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
|
||||
end
|
||||
|
||||
@db.run "DROP TABLE old_vm_pool;"
|
||||
|
||||
log_time()
|
||||
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
@ -3769,8 +3769,8 @@ int VirtualMachine::from_xml(const string &xml_str)
|
||||
state = static_cast<VmState>(istate);
|
||||
lcm_state = static_cast<LcmState>(ilcmstate);
|
||||
|
||||
rc += xpath(istate, "/VM/PREV_STATE", 0);
|
||||
rc += xpath(ilcmstate, "/VM/PREV_LCM_STATE", 0);
|
||||
xpath(istate, "/VM/PREV_STATE", istate);
|
||||
xpath(ilcmstate, "/VM/PREV_LCM_STATE", ilcmstate);
|
||||
|
||||
prev_state = static_cast<VmState>(istate);
|
||||
prev_lcm_state = static_cast<LcmState>(ilcmstate);
|
||||
|
Loading…
x
Reference in New Issue
Block a user