diff --git a/src/onedb/import_slave.rb b/src/onedb/import_slave.rb index b9ad047056..0f8b96bd75 100644 --- a/src/onedb/import_slave.rb +++ b/src/onedb/import_slave.rb @@ -323,6 +323,9 @@ EOT @slave_db.run "ALTER TABLE secgroup_pool RENAME TO old_secgroup_pool;" @slave_db.run "CREATE TABLE secgroup_pool (oid INTEGER PRIMARY KEY, name VARCHAR(128), body MEDIUMTEXT, uid INTEGER, gid INTEGER, owner_u INTEGER, group_u INTEGER, other_u INTEGER, UNIQUE(name,uid));" + @slave_db.run "ALTER TABLE vrouter_pool RENAME TO old_vrouter_pool;" + @slave_db.run "CREATE TABLE vrouter_pool (oid INTEGER PRIMARY KEY, name VARCHAR(128), body MEDIUMTEXT, uid INTEGER, gid INTEGER, owner_u INTEGER, group_u INTEGER, other_u INTEGER);" + @slave_db.run "ALTER TABLE group_quotas RENAME TO old_group_quotas;" @slave_db.run "CREATE TABLE group_quotas (group_oid INTEGER PRIMARY KEY, body MEDIUMTEXT);" @@ -853,6 +856,7 @@ EOT @slave_db.run "DROP TABLE old_template_pool;" @slave_db.run "DROP TABLE old_vm_pool;" @slave_db.run "DROP TABLE old_secgroup_pool;" + @slave_db.run "DROP TABLE old_vrouter_pool;" @slave_db.run "DROP TABLE old_group_quotas;" @slave_db.run "DROP TABLE old_user_quotas;" @@ -1140,5 +1144,38 @@ EOT :other_u => row[:other_u]) end + db.fetch("SELECT * FROM old_vrouter_pool") do |row| + new_user = users[row[:uid]] + new_group = groups[row[:gid]] + + if (new_user.nil?) + new_user = users[0] + log("User ##{row[:uid]} does not exist anymore. Virtual Router ##{row[:oid]} will be assigned to user ##{new_user[:oid]}, #{new_user[:name]}") + end + + if (new_group.nil?) + new_group = groups[0] + log("Group ##{row[:gid]} does not exist anymore. Virtual Router ##{row[:oid]} will be assigned to group ##{new_group[:oid]}, #{new_group[:name]}") + end + + doc = Nokogiri::XML(row[:body],nil,NOKOGIRI_ENCODING){|c| c.default_xml.noblanks} + + doc.root.at_xpath("UID").content = new_user[:oid] + doc.root.at_xpath("UNAME").content = new_user[:name] + + doc.root.at_xpath("GID").content = new_group[:oid] + doc.root.at_xpath("GNAME").content = new_group[:name] + + db[:vrouter_pool].insert( + :oid => row[:oid], + :name => row[:name], + :body => doc.root.to_s, + :uid => new_user[:oid], + :gid => new_group[:oid], + :owner_u => row[:owner_u], + :group_u => row[:group_u], + :other_u => row[:other_u]) + end + end end