On Wed, 2010-07-21 at 16:21 +0200, [email protected] wrote: > From: Jan Provaznik <[email protected]> > > Use Nokogiri for parsing condor output improves noticeably > performance of listing instances in pool. > --- > src/app/util/condormatic.rb | 35 +++++------------------------------ > 1 files changed, 5 insertions(+), 30 deletions(-) > > diff --git a/src/app/util/condormatic.rb b/src/app/util/condormatic.rb > index 155fa7d..5fba43e 100644 > --- a/src/app/util/condormatic.rb > +++ b/src/app/util/condormatic.rb > @@ -17,7 +17,7 @@ > # MA 02110-1301, USA. A copy of the GNU General Public License is > # also available at http://www.gnu.org/copyleft/gpl.html. > > -require 'rexml/document' > +require 'nokogiri' > > def condormatic_instance_create(task) > > @@ -126,35 +126,10 @@ def condormatic_instances_sync_states > instance.save! > end > > - def find_value_int(job_ele, attrib) > - if job_ele.attributes['n'] == attrib > - cmd = job_ele.elements.each('i') do |i| > - return i.text > - end > - end > - return nil > - end > - > - def find_value_str(job_ele, attrib) > - if job_ele.attributes['n'] == attrib > - cmd = job_ele.elements.each('s') do |s| > - return s.text > - end > - end > - return nil > - end > - > - doc = REXML::Document.new(xml) > - doc.elements.each('classads/c') do |jobs_ele| > - job_name = nil > - job_state = nil > - > - jobs_ele.elements.each('a') do |job_ele| > - value = find_value_str(job_ele, 'Cmd') > - job_name = value if value != nil > - value = find_value_int(job_ele, 'JobStatus') > - job_state = value if value != nil > - end > + doc = Nokogiri::XML(xml) > + doc.xpath('/classads/c').each do |jobs_ele| > + job_name = (v = jobs_ele.at_xpath('./a...@n="Cmd"]/s')) ? v.text : nil > + job_state= (v = jobs_ele.at_xpath('./a...@n="JobStatus"]/i')) ? v.text > : nil > > Rails.logger.info "job name is #{job_name}" > Rails.logger.info "job state is #{job_state}"
Wow, it looks like perl^H^H^H^H line noise! ;-) Still good though :) ACK _______________________________________________ deltacloud-devel mailing list [email protected] https://fedorahosted.org/mailman/listinfo/deltacloud-devel
