#! /usr/bin/env python2

__author__ = 'Greig A Cowan'
__date__ = 'January 2009'
__version = 0.1

'''Space token breakdown'''


import sys
import os
from optparse import OptionParser
import string
import getpass
import gridpp_dpm

def main():
	parser = OptionParser(
		usage = 'usage: %prog')

	(options, args) = parser.parse_args()
   
	if len(args) > 1:
		parser.error("incorrect number of arguments")
	
	(c,cc,dpmdb) = gridpp_dpm.MySQLConnect(True)	
	
	try:
		cc.execute('''
select Cns_file_replica.setname as "Space Token", %(dpm_db)s.dpm_space_reserv.u_token as "Token Desc.", Cns_file_replica.poolname as "Pool", count(*) as "# Files", sum(Cns_file_metadata.filesize/1024/1024/1024) as "Total Size (GB)" from Cns_file_replica left join %(dpm_db)s.dpm_space_reserv on Cns_file_replica.setname = %(dpm_db)s.dpm_space_reserv.s_token JOIN Cns_file_metadata ON Cns_file_replica.fileid = Cns_file_metadata.fileid group by Cns_file_replica.setname, Cns_file_replica.poolname order by %(dpm_db)s.dpm_space_reserv.u_token''' % {"dpm_db":dpmdb})
		results = cc.fetchall()
	except MySQLdb.Error, e:
		print "Error %d: %s" % (e.args[0], e.args[1])
		sys.exit (1)
	cc.close()
	c.close()
	print 'Space Token                          Token Desc.\t    Pool\t    # Files    Total Size (GB)'
	print '------------------------------------------------------------------------------------------------------'
	for line in results:
		print '%-36s %-22s %-15s %-10s %.2f' % (line[0], line[1], line[2], line[3], line[4])

if __name__ == '__main__':
	main()
 
