All pastes #69633 Raw Edit

Stuff

public text v1 · immutable
#69633 ·published 2006-06-23 05:59 UTC
rendered paste body
#!/usr/sfw/bin/python

import sys, os, re, time

class 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
		print

print
print "Sun Cluster/Package TOC File Reader"
print "==================================="
print
print

try:
	clustertoc_file = open("dot.clustertoc2", 'r')
except:
	print "Error opening 'dot.clustertoc2' ... terminating."
	sys.exit(10)
	

current_cluster = None
cluster_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()
print
print

# -- 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)