From mboxrd@z Thu Jan 1 00:00:00 1970 From: rmccabe@sourceware.org Date: 6 Oct 2006 20:45:27 -0000 Subject: [Cluster-devel] conga/luci/site/luci/Extensions homebase_adapt ... Message-ID: <20061006204527.24961.qmail@sourceware.org> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit CVSROOT: /cvs/cluster Module name: conga Changes by: rmccabe at sourceware.org 2006-10-06 20:45:27 Modified files: luci/site/luci/Extensions: homebase_adapters.py cluster_adapters.py Added files: luci/site/luci/Extensions: clusterOS.py UnknownClusterError.py Log message: move resolveOSType to a new file clusterOS.py to break a circular import dependency create UnknownClusterError as a couple of functions in cluster_adapters try to throw this kind of exception fix a few other small bugs Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/clusterOS.py.diff?cvsroot=cluster&r1=NONE&r2=1.1 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/UnknownClusterError.py.diff?cvsroot=cluster&r1=NONE&r2=1.1 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/homebase_adapters.py.diff?cvsroot=cluster&r1=1.23&r2=1.24 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.84&r2=1.85 /cvs/cluster/conga/luci/site/luci/Extensions/clusterOS.py,v --> standard output revision 1.1 --- conga/luci/site/luci/Extensions/clusterOS.py +++ - 2006-10-06 20:45:27.366723000 +0000 @@ -0,0 +1,5 @@ +def resolveOSType(os): + if os.find("Tikanga") != (-1) or os.find("FC6") != (-1): + return "rhel5" + else: + return "rhel4" /cvs/cluster/conga/luci/site/luci/Extensions/UnknownClusterError.py,v --> standard output revision 1.1 --- conga/luci/site/luci/Extensions/UnknownClusterError.py +++ - 2006-10-06 20:45:27.449955000 +0000 @@ -0,0 +1,14 @@ +"""Exception class for throwing except on an + unknown cluster error that occurred during + a batch command. +""" + +class UnknownClusterError: + def __init__(self, severity, message): + self.__severity = severity + self.__msg = message + def getSeverity(self): + return self.__severity + def getMessage(self): + return self.__msg + --- conga/luci/site/luci/Extensions/homebase_adapters.py 2006/10/06 18:58:51 1.23 +++ conga/luci/site/luci/Extensions/homebase_adapters.py 2006/10/06 20:45:26 1.24 @@ -9,7 +9,8 @@ from ricci_defines import * from ricci_communicator import RicciCommunicator -from cluster_adapters import resolveOSType +from ricci_communicator import CERTS_DIR_PATH +from clusterOS import resolveOSType HOMEBASE_ADD_USER="1" HOMEBASE_ADD_SYSTEM="2" @@ -24,7 +25,6 @@ class InCluster(Exception): pass -from ricci_communicator import CERTS_DIR_PATH def siteIsSetup(self): try: if os.path.isfile(CERTS_DIR_PATH + 'privkey.pem') and os.path.isfile(CERTS_DIR_PATH + 'cacert.pem'): @@ -301,6 +301,10 @@ sessionData = request.SESSION.get('checkRet') requestResults = sessionData['requestResults'] except: + try: + clusterName = request.form['clusterName'] + except: + clusterName = '' return (False, { 'errors': [ 'A data integrity error has occurred. Please attempt adding the cluster again.' ], 'requestResults': { 'clusterName': clusterName } }) if not 'clusterName' in request.form or request.form['clusterName'] == '': @@ -357,7 +361,7 @@ if oldNode['ricci_host'] in rnodeHash: del rnodeHash[oldNode['ricci_host']] oldNode['ricci_host'] = node['ricci_host'] - rnodeHashnode[node['ricci_host']] = oldNode + rnodeHash[node['ricci_host']] = oldNode oldNode['cur_auth'] = node['cur_auth'] if 'errors' in node: @@ -903,9 +907,10 @@ newSystem.manage_role('View', ['Access contents information','View']) except: return 'Unable to set permissions on new system \"' + host + '\"' + return None -def abortManageCluster(self): +def abortManageCluster(self, request): try: sessionData = request.SESSION.get('checkRet') nodeUnauth(sessionData['requestResults']['nodeList']) @@ -1076,38 +1081,6 @@ except: return 'Unable to delete storage system \"' + systemName + '\"' - -def delSystem(self, systemName): - try: - ssystem = self.restrictedTraverse(PLONE_ROOT + '/systems/storage/') - except: - return 'Unable to find storage system \"' + systemName + '\"' - - try: - rc = RicciCommunicator(systemName) - if not rc: - raise - except: - return 'Unable to connect to the ricci agent on \"' + systemName + '\" to unauthenticate' - - # Only unauthenticate if the system isn't a member of - # a managed cluster. - cluster_info = rc.cluster_info() - if not cluster_info[0]: - try: rc.unauth() - except: pass - else: - try: - newSystem = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/' + cluster_info[0] + '/' + rc.system_name()) - except: - try: rc.unauth() - except: pass - - try: - ssystem.manage_delObjects([systemName]) - except: - return 'Unable to delete storage system \"' + systemName + '\"' - def delCluster(self, clusterName): try: clusters = self.restrictedTraverse(PLONE_ROOT + '/systems/cluster/') --- conga/luci/site/luci/Extensions/cluster_adapters.py 2006/10/06 18:58:51 1.84 +++ conga/luci/site/luci/Extensions/cluster_adapters.py 2006/10/06 20:45:26 1.85 @@ -12,10 +12,14 @@ from Clusterfs import Clusterfs from Fs import Fs from NFSClient import NFSClient +from NFSExport import NFSExport from Netfs import Netfs from Script import Script from Samba import Samba +from clusterOS import resolveOSType from GeneralError import GeneralError +from UnknownClusterError import UnknownClusterError +from homebase_adapters import nodeUnauth, nodeAuth, manageCluster, createClusterSystems, havePermCreateCluster #Policy for showing the cluster chooser menu: #1) If there are no clusters in the ManagedClusterSystems @@ -25,8 +29,6 @@ #then only display chooser if the current user has #permissions on at least one. If the user is admin, show ALL clusters -from homebase_adapters import nodeAuth, nodeUnauth, manageCluster, createClusterSystems, havePermCreateCluster - CLUSTER_FOLDER_PATH = '/luci/systems/cluster/' def validateClusterNodes(request, sessionData, clusterName, numStorage): @@ -136,6 +138,7 @@ except: errors.append('A cluster must contain at least one node') + cluster_os = None try: cluster_os = nodeList[0]['os'] if not cluster_os: @@ -154,7 +157,7 @@ return (False, {'errors': errors, 'requestResults':cluster_properties }) if cluster_properties['isComplete'] == True: - batchNode = createClusterBatch(os_str, clusterName, clusterName, map(lambda x: x['ricci_host'], nodeList), True, False, False) + batchNode = createClusterBatch(cluster_os, clusterName, clusterName, map(lambda x: x['ricci_host'], nodeList), True, False, False) if not batchNode: nodeUnauth(nodeList) cluster_properties['isComplete'] = False @@ -350,7 +353,7 @@ except KeyError, e: errors.append('No Interval value was given.') except ValueError, e: - errros.append('An invalid Interval value was given: ' + e) + errors.append('An invalid Interval value was given: ' + e) try: votes = int(form['votes']) @@ -2186,12 +2189,6 @@ map['isVirtualized'] = rc.dom0() return map -def resolveOSType(os): - if os.find("Tikanga") != (-1) or os.find("FC6") != (-1): - return "rhel5" - else: - return "rhel4" - def getResourcesInfo(modelb, request): resList = list() baseurl = request['URL']