All pastes #69634 Raw Edit

Unnamed

public python v1 · immutable
#69634 ·published 2006-06-23 06:00 UTC
rendered paste body
#!/usr/sfw/bin/pythonimport sys, os, re, timeclass ClusterList:	# A list of clusters		__cluster_list = []		def getCluster(self, clustername):		for _cluster in self.__cluster_list:			if _cluster.abbr == clustername:				return _cluster		return None	def addCluster(self, cluster):		if self.getCluster(cluster.abbr) == None:			self.__cluster_list = self.__cluster_list + [cluster]		def printList(self):		for _cluster in self.__cluster_list:			print "%s (%s) [%s - %d members]" % (_cluster.abbr, _cluster.name, _cluster.clustertype, _cluster.membercount)			print "   -- %s" % (_cluster.desc)			print	class Cluster:	# A cluster itself		__cluster_member_list = []	abbr = ""	name = ""	desc = ""	version = ""	vendor = ""	clustertype = 'CLUSTER'	membercount = 0		def __init__(self, abbr, clustertype):		self.abbr = abbr		if len(clustertype) > 0:			self.clustertype = clustertype		def setName(self, name):		if len(name) > 0:			self.name = name		def setDesc(self, desc):		if len(desc) > 0:			self.desc = desc		def setVersion(self, version):		if len(version) > 0:			self.version = version			def setVendor(self, vendor):		if len(vendor) > 0:			self.vendor = vendor				def addMember(self, member):		if len(member) > 0:			if not member in self.__cluster_member_list:				self.__cluster_member_list = self.__cluster_member_list + [member]				self.membercount = self.membercount + 1			def prettyPrint(self, indent = 0, cluster_list = None):		indentStr = ""		if indent > 0:			for x in range(1, indent):				indentStr = indentStr + " "		print "%s%s (%s)" % (indentStr, self.abbr, self.clustertype.lower().capitalize())		print "%s  Name: %s" % (indentStr, self.name)		print "%s  Description: %s" % (indentStr, self.desc)		print "%s  Version: %s" % (indentStr, self.version)		print "%s  Vendor: %s" % (indentStr, self.vendor)		print "%s  Members:" % (indentStr)		for member in self.__cluster_member_list:			if cluster_list != None:				got_member = cluster_list.getCluster(member)				if got_member != None:					got_member.prettyPrint(indent + 4)				else:					print "%s    %s (not a Cluster)" % (indentStr, member)					print			else:				print "%s    %s (not a Cluster)" % (indentStr, member)				print		printprintprint "Sun Cluster/Package TOC File Reader"print "==================================="printprinttry:	clustertoc_file = open("dot.clustertoc2", 'r')except:	print "Error opening 'dot.clustertoc2' ... terminating."	sys.exit(10)	current_cluster = Nonecluster_list = ClusterList()while 1:	thisline = clustertoc_file.readline()	if len(thisline) < 1:		break	thisline = thisline.strip()	elements = thisline.split('=')	if len(elements) == 1:		if elements[0].strip().upper() == 'END':			current_cluster = None			continue	elif len(elements) == 2:		if current_cluster != None:			# add data to present cluster			if elements[0].strip().upper() == 'NAME':				current_cluster.setName(elements[1].strip())			if elements[0].strip().upper() == 'DESC':				current_cluster.setDesc(elements[1].strip())			if elements[0].strip().upper() == 'VENDOR':				current_cluster.setVendor(elements[1].strip())			if elements[0].strip().upper() == 'VERSION':				current_cluster.setVersion(elements[1].strip())			if elements[0].strip().upper() == 'SUNW_CSRMEMBER':				current_cluster.addMember(elements[1].strip())			continue		elif elements[0].strip().upper() == 'CLUSTER':			# new cluster			current_cluster = Cluster(elements[1].strip(), elements[0].strip().upper())			cluster_list.addCluster(current_cluster)			continue		elif elements[0].strip().upper() == 'METACLUSTER':			# new metacluster			current_cluster = Cluster(elements[1].strip(), elements[0].strip().upper())			cluster_list.addCluster(current_cluster)			continue	print 'Unknown Line: ' + repr(elements)# -- Cleanup --clustertoc_file.close()cluster_list.printList()printprint# -- Do some printing --#print "=============================================="#print " Printing:  SUNWCall"#print "=============================================="#cluster_list.getCluster('SUNWCall').prettyPrint(0, cluster_list)# -- Do some printing --#print "=============================================="#print " Printing:  SUNWCxall"#print "=============================================="#cluster_list.getCluster('SUNWCall').prettyPrint(0, cluster_list)