[one-users] onedb upgrade and XML

Hyun Woo Kim hyunwoo at fnal.gov
Wed Apr 16 06:50:27 PDT 2014


Thanks for confirming this.
Hyunwoo
Fermicloud

From: Carlos Martín Sánchez <cmartin at opennebula.org<mailto:cmartin at opennebula.org>>
Date: Wednesday, April 16, 2014 8:08 AM
To: Hyunwoo Kim <hyunwoo at fnal.gov<mailto:hyunwoo at fnal.gov>>
Cc: users <users at lists.opennebula.org<mailto:users at lists.opennebula.org>>
Subject: Re: [one-users] onedb upgrade and XML

Hi,

Your approach looks correct. The cpu element should also work with simple text instead of cdata.
Refer to the REXML docs for more information: http://ruby-doc.org/stdlib-2.1.1/libdoc/rexml/rdoc/index.html

Regards

--
Carlos Martín, MSc
Project Engineer
OpenNebula - Flexible Enterprise Cloud Made Simple
www.OpenNebula.org<http://www.OpenNebula.org> | cmartin at opennebula.org<mailto:cmartin at opennebula.org> | @OpenNebula<http://twitter.com/opennebula><mailto:cmartin at opennebula.org>


On Tue, Apr 15, 2014 at 11:11 PM, Hyun Woo Kim <hyunwoo at fnal.gov<mailto:hyunwoo at fnal.gov>> wrote:
I have found one possible solution

I modified /usr/lib/one/ruby/onedb/3.8.5_to_3.9.30.rb as follows;

        @db.fetch("SELECT * FROM old_template_pool") do |row|
            doc = Document.new(row[:body])
            template = nil
            doc.root.each_element("TEMPLATE") do |e|
                template = e
            end

            doc.root.each_element("TEMPLATE") do |e|
               elem = e.delete_element("REQUIREMENTS")
               if !elem.nil?
                    template.add_element("SCHED_REQUIREMENTS").text = elem.text
                end

                elem = e.delete_element("RANK")
                if !elem.nil?
                    template.add_element("SCHED_RANK").text = elem.text
                end

# NEW>     e.add_element("CPU").text = "1"
            end

# NEW>   doc.root.each_element("TEMPLATE/GRAPHICS") { |e|
# NEW>       e.delete_element("PORT")
# NEW >  }


The second part to delete PORT works!

The issue is the first part. With the above code, the body field of template_pool shows a new entry <CPU>1</CPU>
while I expect it to be <CPU><![CDATA[1]]></CPU>

So, I am thinking of modifying as follows instead;
 e.add_element("CPU").text = "<![CDATA[1]]>"

I believe this will result in the DB as <CPU><![CDATA[1]]></CPU>

What do you ON developers think?

Thanks,
Hyunwoo
FermiCloud

From: Hyunwoo Kim <hyunwoo at fnal.gov<mailto:hyunwoo at fnal.gov>>
Date: Tuesday, April 15, 2014 10:08 AM
To: users <users at lists.opennebula.org<mailto:users at lists.opennebula.org>>
Cc: Hyunwoo Kim <hyunwoo at fnal.gov<mailto:hyunwoo at fnal.gov>>
Subject: onedb upgrade and XML

Hello,

onedb upgrade command of ON44 against an old DB
fails to do the following two tasks.
1. <CPU> </CPU> should have been inserted, but missing
2. <PORT> </PORT> in /VMTEMPLATE/TEMPLATE/GRAPHICS/ should have been removed, but still there..

What should I do about these?

I am investigating a possibility to use xpath command
with mysql -h localhost -u root -e "select body from template_pool limit 1" open nebula
or something, but I am not sure if this is any good solution..

Any advice will be very appreciated.
Thanks,

Hyunwoo KIM
FermiCloud



_______________________________________________
Users mailing list
Users at lists.opennebula.org<mailto:Users at lists.opennebula.org>
http://lists.opennebula.org/listinfo.cgi/users-opennebula.org


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opennebula.org/pipermail/users-opennebula.org/attachments/20140416/30ab86d3/attachment-0002.htm>


More information about the Users mailing list