[Tutor] Dictionaries and aggregation

Paul Churchill paul.churchill at cyanfusion.com
Tue Apr 25 01:06:35 CEST 2006


 
I am trying to create a dictionary using data produced by a load balancing
admin tool and aggregate the results. 
 
 
When I invoke the tool from within the shell ('sudo ~/ZLBbalctl
--action=cells') the following output is produced:
 
Load Balancer 1 usage, over the last 30 seconds
Port 80, rules - /(nol)|(ws)
  server001      alive 18.1%     2 requests/s 14536543 total
  server002      alive 43.1%     7 requests/s 14842618 total
  server003      alive 21.2%     2 requests/s 14884487 total
  server004      alive 17.3%     2 requests/s 15092053 total
 
 
Load Balancer 2 usage, over the last 30 seconds
Port 80, rules - /(nol)|(ws)
  server001      alive 11.6%     2 requests/s 14482578 total
  server002      alive 35.6%     9 requests/s 14820991 total
  server003      alive 28.7%     6 requests/s 14928991 total
  server004      alive 23.7%     5 requests/s 15147525 total
  
 
 
I have managed to get something close to what I'm looking for using lists
i.e. the aggregate of the fourth column (requests/s)
 
lbstat = commands.getoutput("sudo ~/ZLBbalctl --action=cells | awk '$1 ~
/^server00/ { print $4 }'")  
rLst = lbstat.split('\n')
rLst = [ int(rLst[i]) for i in range(len(rLst)) ]
rTotal = reduce(operator.add, rLst)
 
However here's what I'm now trying to do:
 
1)       Not have to rely on using awk at all.
 
 
2)       Create a dictionary with server names for keys e.g. server001,
server002 etc and the aggregate of the request for that server as the value
part of the pairing.
 
 
I got this far with part 1)
 
lbstat = commands.getoutput("sudo ~/ZLBbalctl --action=cells")
tmpLst = lbstat.split('\n')
 
rLst = []
for i in tmpLst:
    m = re.search(' server[0-9]+', i)
    if m:
        rLst.append(i)
 
for i in rLst:
        print i, type(i)
 
  
  
  server001      alive 22.3%     6 requests/s 14527762 total <type 'str'>
  server002      alive 23.5%     7 requests/s 14833265 total <type 'str'>
  server003      alive 38.2%    14 requests/s 14872750 total <type 'str'>
  server004      alive 15.6%     4 requests/s 15083443 total <type 'str'>
  server001      alive 24.1%     8 requests/s 14473672 total <type 'str'>
  server002      alive 23.2%     7 requests/s 14810866 total <type 'str'>
  server003      alive 30.2%     8 requests/s 14918322 total <type 'str'>
  server004      alive 22.1%     6 requests/s 15137847 total <type 'str'>
 
 
 
 
At this point I ran out of ideas and began to think that there must be
something fundamentally wrong with my approach. Not least of my concerns was
the fact that I needed integers and these were strings.
 
Any help would be much appreciated.
 
Regards,
 
Paul
 
 
 
 
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20060425/9c5b85dd/attachment.html 


More information about the Tutor mailing list