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

Reply via email to