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)