[Cluster-devel] conga/luci/site/luci/Extensions LuciClusterInf ...

rmccabe at sourceware.org rmccabe at sourceware.org
Wed May 30 22:06:26 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	EXPERIMENTAL
Changes by:	rmccabe at sourceware.org	2007-05-30 22:06:24

Modified files:
	luci/site/luci/Extensions: LuciClusterInfo.py LuciDB.py 
	                           LuciZope.py LuciZopeExternal.py 
	                           Variable.py cluster_adapters.py 
	                           storage_adapters.py 
Added files:
	luci/site/luci/Extensions: LuciZopeClusterPortal.py 

Log message:
	More cleanup and refactor

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZopeClusterPortal.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=NONE&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterInfo.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.1.2.6&r2=1.1.2.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.1.2.13&r2=1.1.2.14
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZope.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.1.2.7&r2=1.1.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZopeExternal.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.1.2.3&r2=1.1.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/Variable.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.4.8.3&r2=1.4.8.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.255.2.11&r2=1.255.2.12
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/storage_adapters.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.9.4.3&r2=1.9.4.4

--- conga/luci/site/luci/Extensions/Attic/LuciClusterInfo.py	2007/05/18 05:23:55	1.1.2.6
+++ conga/luci/site/luci/Extensions/Attic/LuciClusterInfo.py	2007/05/30 22:06:24	1.1.2.7
@@ -1585,3 +1585,25 @@
 		return None
 
 	return model
+
+def getClusterOS(self, rc):
+	from HelperFunctions import resolveOSType
+
+	clu_map = {}
+
+	try:
+		os_str = resolveOSType(rc.os())
+		clu_map['os'] = os_str
+		clu_map['isVirtualized'] = rc.dom0()
+	except:
+		# default to rhel5 if something crazy happened.
+		try:
+			if LUCI_DEBUG_MODE is True:
+				luci_log.debug('An error occurred while attempting to get OS/Virt info for %s -- defaulting to rhel5/False' % rc.hostname())
+		except:
+			# this can throw an exception if the original exception
+			# is caused by rc being None or stale.
+			pass
+		clu_map['os'] = 'rhel5'
+		clu_map['isVirtualized'] = False
+	return clu_map
--- conga/luci/site/luci/Extensions/Attic/LuciDB.py	2007/05/30 05:54:02	1.1.2.13
+++ conga/luci/site/luci/Extensions/Attic/LuciDB.py	2007/05/30 22:06:24	1.1.2.14
@@ -864,6 +864,38 @@
 		return []
 	return nodelist
 
+def getClusterDBVersion(cluster_folder):
+	try:
+		cluster_os = str(cluster_folder.getProperty('cluster_os'))
+		if not cluster_os:
+			raise Exception, 'cluster os is blank'
+	except Exception, e:
+		if LUCI_DEBUG_MODE is True:
+			luci_log.debug_verbose('GCDBV0: %s: %r %s' \
+				% (cluster_folder.getId(), e, str(e)))
+		cluster_os = None
+	return cluster_os
+
+def setClusterDBVersion(cluster_folder, version_str):
+	if cluster_folder.getProperty('cluster_os') is None:
+		try:
+			cluster_folder.manage_addProperty('cluster_os',
+				version_str, 'string')
+		except Exception, e:
+			if LUCI_DEBUG_MODE is True:
+				luci_log.debug_verbose('SCDBV0: %s: %r %s' \
+					% (cluster_folder.getId(), e, str(e)))
+			return None
+	else:
+		try:
+			cluster_folder.manage_changeProperties({'cluster_os': version_str })
+		except Exception, e:
+			if LUCI_DEBUG_MODE is True:
+				luci_log.debug_verbose('SCDBV1: %s: %r %s' \
+					% (cluster_folder.getId(), e, str(e)))
+			return None
+	return True
+
 def getClusterFlags(self, cluname):
 	try:
 		path = '%s%s' % (CLUSTER_FOLDER_PATH, cluname)
--- conga/luci/site/luci/Extensions/Attic/LuciZope.py	2007/05/18 05:23:55	1.1.2.7
+++ conga/luci/site/luci/Extensions/Attic/LuciZope.py	2007/05/30 22:06:24	1.1.2.8
@@ -124,3 +124,19 @@
 			luci_log.debug_verbose('Appending model to request failed: %r %s' \
 				% (e, str(e)))
 		return 'An error occurred while storing the cluster model'
+
+def GetReqVars(req, varlist):
+	ret = {}
+	for i in varlist:
+		pval = None
+		if req.has_key(i):
+			pval = req[i].strip()
+			if not pval:
+				pval = None
+		if pval is None:
+			if req.form and req.form.has_key(i):
+				pval = req.form[i].strip()
+				if not pval:
+					pval = None
+		ret[i] = pval
+	return ret
--- conga/luci/site/luci/Extensions/Attic/LuciZopeExternal.py	2007/05/30 05:54:02	1.1.2.3
+++ conga/luci/site/luci/Extensions/Attic/LuciZopeExternal.py	2007/05/30 22:06:24	1.1.2.4
@@ -13,10 +13,9 @@
 from homebase_adapters import getUserPerms, homebaseControl, \
 	getDefaultUser
 
-from cluster_adapters import clusterTaskProcess, resourceAdd, \
-	resourceDelete, \
-	createCluChooser, createCluConfigTree, serviceDelete, \
-	getClusterOS, getClusterURL, getSystemLogs, getRicciAgentForCluster, \
+from cluster_adapters import clusterTaskProcess, \
+	resourceAdd, resourceDelete, serviceDelete, \
+	getClusterURL, getSystemLogs, getRicciAgentForCluster, \
 	isClusterBusy, nodeTaskProcess, process_cluster_conf_editor, \
 	serviceMigrate, serviceRestart, serviceStart, serviceStop
 
@@ -26,7 +25,7 @@
 	getClustersInfo, getClusterStatus, getFdomInfo, get_fdom_names, \
 	getFdomsInfo, getFence, getFenceInfo, getFencesInfo, getModelBuilder, \
 	getNodeInfo, getnodes, getNodesInfo, getResourceInfo, getResourcesInfo, \
-	getServiceInfo, getServicesInfo, getVMInfo
+	getServiceInfo, getServicesInfo, getVMInfo, getClusterOS
 
 from LuciDB import access_to_host_allowed, allowed_systems, \
 	check_clusters, getRicciAgent, getSystems, getClusters, \
@@ -35,6 +34,8 @@
 from LuciZope import appendModel, bytes_to_value_prefunits, \
 	set_persistent_var, strFilter, getTabs, siteIsSetup
 
+from LuciZopeClusterPortal import createCluChooser, createCluConfigTree
+
 from LuciZopePerm import isAdmin, userAuthenticated
 
 from ricci_communicator import get_ricci_communicator
@@ -42,7 +43,7 @@
 from storage_adapters import createStorageChooser, \
 	createStorageConfigTree, getStorageURL
 
-from StorageReport import apply, cache_storage_report, \
+from StorageReport import apply_storage_changes, cache_storage_report, \
 	get_bd_data, get_mapper_data, get_mappers_data, get_mapper_template_data, \
 	get_mappings_info, get_storage_batch_result, get_storage_report, \
 	group_systems_by_cluster, is_storage_report_cached, validate, \
--- conga/luci/site/luci/Extensions/Variable.py	2007/05/15 21:42:21	1.4.8.3
+++ conga/luci/site/luci/Extensions/Variable.py	2007/05/30 22:06:24	1.4.8.4
@@ -91,6 +91,8 @@
     def __init__(self, name, value, mods={}):
         self.__name = str(name)
         self.__mods = mods
+        self.__value = None
+        self.__type = None
         self.set_value(value)
 
     def get_name(self):
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2007/05/30 05:54:02	1.255.2.11
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2007/05/30 22:06:24	1.255.2.12
@@ -29,20 +29,17 @@
 from homebase_adapters import parseHostForm
 from LuciClusterInfo import getClusterInfo, getModelBuilder, getModelForCluster
 
-from conga_constants import BATCH_ID, CLUNAME, CLUNODE_CREATE_ERRORS, \
-	CLUSTER, CLUSTER_ADD, CLUSTER_CONFIG, CLUSTER_DAEMON, CLUSTER_DELETE, \
-	CLUSTER_FOLDER_PATH, CLUSTERLIST, CLUSTER_RESTART, CLUSTERS, \
-	CLUSTER_START, CLUSTER_STOP, DISABLE_SVC_TASK, ENABLE_SVC_TASK, \
-	FDOM, FDOM_ADD, FDOM_CONFIG, FDOMS, FENCEDEV, FENCEDEV_ADD, \
-	FENCEDEV_CONFIG, FENCEDEV_NODE_CONFIG, FENCEDEVS, FLAG_DESC, \
-	INSTALL_TASK, LAST_STATUS, LUCI_DEBUG_MODE, NODE, NODE_ADD, \
-	NODE_CONFIG, NODE_DELETE, NODE_FENCE, NODE_GRID, NODE_JOIN_CLUSTER, \
-	NODE_LEAVE_CLUSTER, NODE_LIST, NODE_REBOOT, NODES, PAGETYPE, \
-	POSSIBLE_REBOOT_MESSAGE, PRE_CFG, PRE_INSTALL, PRE_JOIN, \
-	REBOOT_TASK, REDIRECT_MSG, RESOURCE, RESOURCE_ADD, RESOURCE_CONFIG, \
-	RESOURCES, RICCI_CONNECT_FAILURE, RICCI_CONNECT_FAILURE_MSG, \
-	SEND_CONF, SERVICE, SERVICE_ADD, SERVICE_CONFIG, SERVICE_LIST, \
-	SERVICES, START_NODE, TASKTYPE, VM_ADD, VM_CONFIG
+from conga_constants import BATCH_ID, CLUNODE_CREATE_ERRORS, \
+	CLUSTER_ADD, CLUSTER_CONFIG, CLUSTER_DAEMON, CLUSTER_DELETE, \
+	CLUSTER_FOLDER_PATH, CLUSTER_RESTART, CLUSTER_START, CLUSTER_STOP, \
+	DISABLE_SVC_TASK, ENABLE_SVC_TASK, FDOM, FDOM_ADD, FENCEDEV, \
+	FENCEDEV_NODE_CONFIG, FENCEDEVS, FLAG_DESC, INSTALL_TASK, \
+	LAST_STATUS, LUCI_DEBUG_MODE, NODE, NODE_ADD, NODE_DELETE, \
+	NODE_FENCE, NODE_JOIN_CLUSTER, NODE_LEAVE_CLUSTER, NODE_REBOOT, \
+	NODES, POSSIBLE_REBOOT_MESSAGE, PRE_CFG, PRE_INSTALL, PRE_JOIN, \
+	REBOOT_TASK, REDIRECT_MSG, RESOURCES, RICCI_CONNECT_FAILURE, \
+	RICCI_CONNECT_FAILURE_MSG, SEND_CONF, SERVICE_ADD, SERVICE_CONFIG, \
+	SERVICE_LIST, SERVICES, START_NODE, TASKTYPE, VM_ADD, VM_CONFIG
 
 from FenceHandler import validateNewFenceDevice, \
 	validateFenceDevice, validate_fenceinstance, \
@@ -57,7 +54,7 @@
 	resolve_nodename, set_node_flag, getRicciAgent, \
 	CLUSTER_NODE_NEED_AUTH
 
-from LuciZopePerm import havePermCreateCluster
+from LuciZope import GetReqVars
 
 luci_log = get_logger()
 
@@ -341,7 +338,7 @@
 
 	check_certs = False
 	try:
-		check_certs = 'check_certs' in request.form
+		check_certs = request.form.has_key('check_certs')
 	except:
 		check_certs = False
 
@@ -1552,29 +1549,15 @@
 	response.redirect('%s?pagetype=%s&clustername=%s&busyfirst=true' \
 		% (request['URL'], CLUSTER_CONFIG, clustername))
 
-def LuciExtractCluName(self, request):
-	cluname = None
-
-	try:
-		if request.form.has_key('clustername'):
-			cluname = request.form['clustername'].strip()
-		if not cluname and request.has_key('clustername'):
-			cluname = request['clustername'].strip()
-	except Exception, e:
-		pass
-
-	if not cluname:
-		if LUCI_DEBUG_MODE is True:
-			luci_log.debug_verbose('LECN0: no cluster name')
-	return cluname
-
 def LuciExtractCluModel(self, request, cluster_name=None):
-	model = None
 	if not cluster_name:
-		cluster_name = LuciExtractCluName(self, request)
-		if not cluster_name:
+		fvar = GetReqVars(request, [ 'clustername' ])
+		cluster_name = fvar['clustername']
+		if cluster_name is None:
 			if LUCI_DEBUG_MODE is True:
 				luci_log.debug_verbose('LECM0: no cluster name')
+
+	model = None
 	try:
 		model = request.SESSION.get('model')
 		if not model:
@@ -2565,6 +2548,63 @@
 	response.redirect('%s?pagetype=%s&clustername=%s&busyfirst=true' \
 		% (request['URL'], SERVICES, clustername))
 
+def process_cluster_conf_editor(self, req):
+	clustername = req['clustername']
+	msg_list = list(('\n'))
+	cc = ''
+	if 'new_cluster_conf' in req:
+		cc = req['new_cluster_conf']
+		msg_list.append('Checking if valid XML - ')
+		cc_xml = None
+		try:
+			cc_xml = minidom.parseString(cc)
+		except:
+			pass
+		if cc_xml is None:
+			msg_list.append('FAILED\n')
+			msg_list.append('Fix the error and try again:\n')
+		else:
+			msg_list.append('PASSED\n')
+
+			msg_list.append('Making sure no cluster name change has occurred - ')
+			new_name = cc_xml.firstChild.getAttribute('name')
+			if new_name != clustername:
+				msg_list.append('FAILED\n')
+				msg_list.append('Fix the error and try again:\n')
+			else:
+				msg_list.append('PASSED\n')
+
+				msg_list.append('Incrementing the cluster version number - ')
+				version = cc_xml.firstChild.getAttribute('config_version')
+				version = int(version) + 1
+				cc_xml.firstChild.setAttribute('config_version', str(version))
+				msg_list.append('DONE\n')
+
+				msg_list.append('Propagating the new cluster.conf')
+				rc = getRicciAgent(self, clustername)
+				if not rc:
+					if LUCI_DEBUG_MODE is True:
+						luci_log.debug_verbose('VFA0: unable to find a ricci agent for the %s cluster' % clustername)
+					msg_list.append('\nUnable to contact a ricci agent for cluster "%s"\n\n' % clustername)
+				else:
+					batch_id, result = rq.setClusterConf(rc, cc_xml.toxml())
+					if batch_id is None or result is None:
+						if LUCI_DEBUG_MODE is True:
+							luci_log.debug_verbose('VFA1: setClusterConf: batchid or result is None')
+						msg_list.append('\nUnable to propagate the new cluster configuration for cluster "%s"\n\n' % clustername)
+					else:
+						msg_list.append(' - DONE\n')
+						cc = cc_xml.toxml()
+						msg_list.append('\n\nALL DONE\n\n')
+	else:
+		if getClusterInfo(self, None, req) == {}:
+			msg_list.append('invalid cluster')
+		else:
+			model = req.SESSION.get('model')
+			cc = model.exportModelAsString()
+
+	return { 'msg': ''.join(msg_list), 'cluster_conf': cc }
+
 formValidators = {
 	6: validateCreateCluster,
 	7: validateConfigCluster,
@@ -2600,542 +2640,8 @@
 	else:
 		return formValidators[pagetype](self, request)
 
-
-# Policy for showing the cluster chooser menu:
-# 1) If there are no clusters in the ManagedClusterSystems
-# folder, then only the admin user may see this menu, and
-# the configure option should not be displayed.
-# 2)If there are clusters in the ManagedClusterSystems,
-# then only display chooser if the current user has
-# permissions on at least one. If the user is admin, show ALL clusters
-
-def createCluChooser(self, request, systems):
-	dummynode = {}
-
-	if request.REQUEST_METHOD == 'POST':
-		ret = validatePost(self, request)
-		try:
-			request.SESSION.set('checkRet', ret[1])
-		except:
-			request.SESSION.set('checkRet', {})
-	else:
-		try:
-			request.SESSION.set('checkRet', {})
-		except:
-			pass
-
-	# First, see if a cluster is chosen, then
-	# check that the current user can access that system
-	cname = None
-	try:
-		cname = request[CLUNAME]
-	except:
-		cname = ''
-
-	try:
-		url = request['URL']
-	except:
-		url = "/luci/cluster/index_html"
-
-	try:
-		pagetype = request[PAGETYPE]
-	except:
-		pagetype = '3'
-
-	cldata = {}
-	cldata['Title'] = "Cluster List"
-	cldata['cfg_type'] = "clusters"
-	cldata['absolute_url'] = '%s?pagetype=%s' % (url, CLUSTERLIST)
-	cldata['Description'] = "Clusters available for configuration"
-	if pagetype == CLUSTERLIST:
-		cldata['currentItem'] = True
-	else:
-		cldata['currentItem'] = False
-
-	UserHasPerms = havePermCreateCluster(self)
-	if UserHasPerms:
-		cladd = {}
-		cladd['Title'] = "Create a New Cluster"
-		cladd['cfg_type'] = "clusteradd"
-		cladd['absolute_url'] = '%s?pagetype=%s' % (url, CLUSTER_ADD)
-		cladd['Description'] = "Create a Cluster"
-		if pagetype == CLUSTER_ADD:
-			cladd['currentItem'] = True
-		else:
-			cladd['currentItem'] = False
-
-	clcfg = {}
-	clcfg['Title'] = "Configure"
-	clcfg['cfg_type'] = "clustercfg"
-	clcfg['absolute_url'] = '%s?pagetype=%s' % (url, CLUSTERS)
-	clcfg['Description'] = "Configure a cluster"
-	if pagetype == CLUSTERS:
-		clcfg['currentItem'] = True
-	else:
-		clcfg['currentItem'] = False
-
-	#test...
-	#clcfg['show_children'] = True
-	#Add all cluster type pages here:
-	if pagetype == CLUSTER or pagetype == CLUSTER_CONFIG:
-		clcfg['show_children'] = True
-	else:
-		clcfg['show_children'] = False
-
-	#loop through all clusters
-	syslist = list()
-	for system in systems:
-		clsys = {}
-		clsys['Title'] = system[0]
-		clsys['cfg_type'] = "cluster"
-		clsys['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, CLUSTER, system[0])
-		clsys['Description'] = "Configure this cluster"
-
-		if pagetype == CLUSTER or pagetype == CLUSTER_CONFIG:
-			if cname == system[0]:
-				clsys['currentItem'] = True
-			else:
-				clsys['currentItem'] = False
-		else:
-			clsys['currentItem'] = False
-		syslist.append(clsys)
-
-	clcfg['children'] = syslist
-
-	mylist = list()
-	mylist.append(cldata)
-	if UserHasPerms:
-		mylist.append(cladd)
-	mylist.append(clcfg)
-	dummynode['children'] = mylist
-
-	return dummynode
-
-def createCluConfigTree(self, request, model):
-	dummynode = {}
-
-	if not model:
-		return {}
-
-	# There should be a positive page type
-	try:
-		pagetype = request[PAGETYPE]
-	except:
-		pagetype = '3'
-
-	try:
-		url = request['URL']
-	except:
-		url = "/luci/cluster/index_html"
-
-	# The only way this method can run is if there exists
-	# a clustername query var
-	cluname = request['clustername']
-
-	nd = {}
-	nd['Title'] = "Nodes"
-	nd['cfg_type'] = "nodes"
-	nd['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, NODES, cluname)
-	nd['Description'] = "Node configuration for this cluster"
-	if pagetype == NODES or pagetype == NODE_GRID or pagetype == NODE_LIST or pagetype == NODE_CONFIG or pagetype == NODE_ADD or pagetype == NODE:
-		nd['show_children'] = True
-	else:
-		nd['show_children'] = False
-	if pagetype == '0':
-		nd['show_children'] = False
-
-	if pagetype == NODES:
-		nd['currentItem'] = True
-	else:
-		nd['currentItem'] = False
-
-
-	ndadd = {}
-	ndadd['Title'] = "Add a Node"
-	ndadd['cfg_type'] = "nodeadd"
-	ndadd['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, NODE_ADD, cluname)
-	ndadd['Description'] = "Add a node to this cluster"
-	if pagetype == NODE_ADD:
-		ndadd['currentItem'] = True
-	else:
-		ndadd['currentItem'] = False
-
-	ndcfg = {}
-	ndcfg['Title'] = "Configure"
-	ndcfg['cfg_type'] = "nodecfg"
-	ndcfg['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, NODE_CONFIG, cluname)
-	ndcfg['Description'] = "Configure cluster nodes"
-	if pagetype == NODE_CONFIG or pagetype == NODE or pagetype == NODES or pagetype == NODE_LIST or pagetype == NODE_GRID or pagetype == NODE_ADD:
-		ndcfg['show_children'] = True
-	else:
-		ndcfg['show_children'] = False
-	if pagetype == NODE_CONFIG:
-		ndcfg['currentItem'] = True
-	else:
-		ndcfg['currentItem'] = False
-
-	nodes = model.getNodes()
-	nodenames = list()
-	for node in nodes:
-		nodenames.append(node.getName())
-
-	cfgablenodes = list()
-	for nodename in nodenames:
-		cfg = {}
-		cfg['Title'] = nodename
-		cfg['cfg_type'] = "node"
-		cfg['absolute_url'] = '%s?pagetype=%s&nodename=%s&clustername=%s' % (url, NODE, nodename, cluname)
-		cfg['Description'] = "Configure this cluster node"
-		if pagetype == NODE:
-			try:
-				nname = request['nodename']
-			except KeyError, e:
-				nname = ''
-			if nodename == nname:
-				cfg['currentItem'] = True
-			else:
-				cfg['currentItem'] = False
-		else:
-			cfg['currentItem'] = False
-
-		cfgablenodes.append(cfg)
-
-	#Now add nodename structs as children of the config element
-	ndcfg['children'] = cfgablenodes
-
-	ndkids = list()
-	ndkids.append(ndadd)
-	ndkids.append(ndcfg)
-
-	nd['children'] = ndkids
-
-	##################################################################
-	sv = {}
-	sv['Title'] = "Services"
-	sv['cfg_type'] = "services"
-	sv['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, SERVICES, cluname)
-	sv['Description'] = "Service configuration for this cluster"
-	if pagetype == SERVICES or pagetype == SERVICE_CONFIG or pagetype == SERVICE_ADD or pagetype == SERVICE or pagetype == SERVICE_LIST or pagetype == VM_ADD or pagetype == VM_CONFIG:
-		sv['show_children'] = True
-	else:
-		sv['show_children'] = False
-	if pagetype == SERVICES or pagetype == SERVICE_LIST:
-		sv['currentItem'] = True
-	else:
-		sv['currentItem'] = False
-
-	svadd = {}
-	svadd['Title'] = "Add a Service"
-	svadd['cfg_type'] = "serviceadd"
-	svadd['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, SERVICE_ADD, cluname)
-	svadd['Description'] = "Add a Service to this cluster"
-	if pagetype == SERVICE_ADD:
-		svadd['currentItem'] = True
-	else:
-		svadd['currentItem'] = False
-
-	if model.getIsVirtualized() is True:
-		vmadd = {}
-		vmadd['Title'] = "Add a Virtual Service"
-		vmadd['cfg_type'] = "vmadd"
-		vmadd['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, VM_ADD, cluname)
-		vmadd['Description'] = "Add a Virtual Service to this cluster"
-		if pagetype == VM_ADD:
-			vmadd['currentItem'] = True
-		else:
-			vmadd['currentItem'] = False
-
-	svcfg = {}
-	svcfg['Title'] = "Configure a Service"
-	svcfg['cfg_type'] = "servicecfg"
-	svcfg['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, SERVICE_CONFIG, cluname)
-	svcfg['Description'] = "Configure a Service for this cluster"
-	if pagetype == SERVICE_CONFIG or pagetype == SERVICE or pagetype == VM_CONFIG:
-		svcfg['show_children'] = True
-	else:
-		svcfg['show_children'] = False
-	if pagetype == SERVICE_CONFIG or pagetype == VM_CONFIG:
-		svcfg['currentItem'] = True
-	else:
-		svcfg['currentItem'] = False
-
-	services = model.getServices()
-	serviceable = list()
-
-	for service in services:
-		servicename = service.getName()
-		svc = {}
-		svc['Title'] = servicename
-		svc['cfg_type'] = "service"
-		svc['absolute_url'] = '%s?pagetype=%s&servicename=%s&clustername=%s' % (url, SERVICE, servicename, cluname)
-		svc['Description'] = "Configure this service"
-		if pagetype == SERVICE:
-			try:
-				sname = request['servicename']
-			except KeyError, e:
-				sname = ''
-			if servicename == sname:
-				svc['currentItem'] = True
-			else:
-				svc['currentItem'] = False
-		else:
-			svc['currentItem'] = False
-
-		serviceable.append(svc)
-
-	vms = model.getVMs()
-	for vm in vms:
-		name = vm.getName()
-		svc = {}
-		svc['Title'] = name
-		svc['cfg_type'] = "vm"
-		svc['absolute_url'] = '%s?pagetype=%s&servicename=%s&clustername=%s' % (url, VM_CONFIG, name, cluname)
-		svc['Description'] = "Configure this Virtual Service"
-		if pagetype == VM_CONFIG:
-			try:
-				xname = request['servicename']
-			except KeyError, e:
-				xname = ''
-			if name == xname:
-				svc['currentItem'] = True
-			else:
-				svc['currentItem'] = False
-		else:
-			svc['currentItem'] = False
-
-		serviceable.append(svc)
-
-	svcfg['children'] = serviceable
-
-
-
-	kids = list()
-	kids.append(svadd)
-	if model.getIsVirtualized() is True:
-		kids.append(vmadd)
-	kids.append(svcfg)
-	sv['children'] = kids
-#############################################################
-	rv = {}
-	rv['Title'] = "Resources"
-	rv['cfg_type'] = "resources"
-	rv['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, RESOURCES, cluname)
-	rv['Description'] = "Resource configuration for this cluster"
-	if pagetype == RESOURCES or pagetype == RESOURCE_CONFIG or pagetype == RESOURCE_ADD or pagetype == RESOURCE:
-		rv['show_children'] = True
-	else:
-		rv['show_children'] = False
-	if pagetype == RESOURCES:
-		rv['currentItem'] = True
-	else:
-		rv['currentItem'] = False
-
-	rvadd = {}
-	rvadd['Title'] = "Add a Resource"
-	rvadd['cfg_type'] = "resourceadd"
-	rvadd['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, RESOURCE_ADD, cluname)
-	rvadd['Description'] = "Add a Resource to this cluster"
-	if pagetype == RESOURCE_ADD:
-		rvadd['currentItem'] = True
-	else:
-		rvadd['currentItem'] = False
-
-	rvcfg = {}
-	rvcfg['Title'] = "Configure a Resource"
-	rvcfg['cfg_type'] = "resourcecfg"
-	rvcfg['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, RESOURCE_CONFIG, cluname)
-	rvcfg['Description'] = "Configure a Resource for this cluster"
-	if pagetype == RESOURCE_CONFIG or pagetype == RESOURCE:
-		rvcfg['show_children'] = True
-	else:
-		rvcfg['show_children'] = False
-	if pagetype == RESOURCE_CONFIG:
-		rvcfg['currentItem'] = True
-	else:
-		rvcfg['currentItem'] = False
-
-	resources = model.getResources()
-	resourceable = list()
-	for resource in resources:
-		resourcename = resource.getName()
-		rvc = {}
-		rvc['Title'] = resourcename
-		rvc['cfg_type'] = "resource"
-		rvc['absolute_url'] = '%s?pagetype=%s&resourcename=%s&clustername=%s' % (url, RESOURCES, resourcename, cluname)
-		rvc['Description'] = "Configure this resource"
-		if pagetype == RESOURCE:
-			try:
-				rname = request['resourcename']
-			except KeyError, e:
-				rname = ''
-			if resourcename == rname:
-				rvc['currentItem'] = True
-			else:
-				rvc['currentItem'] = False
-		else:
-			rvc['currentItem'] = False
-
-		resourceable.append(rvc)
-	rvcfg['children'] = resourceable
-
-
-
-	kids = list()
-	kids.append(rvadd)
-	kids.append(rvcfg)
-	rv['children'] = kids
- ################################################################
-	fd = {}
-	fd['Title'] = "Failover Domains"
-	fd['cfg_type'] = "failoverdomains"
-	fd['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, FDOMS, cluname)
-	fd['Description'] = "Failover domain configuration for this cluster"
-	if pagetype == FDOMS or pagetype == FDOM_CONFIG or pagetype == FDOM_ADD or pagetype == FDOM:
-		fd['show_children'] = True
-	else:
-		fd['show_children'] = False
-	if pagetype == FDOMS:
-		fd['currentItem'] = True
-	else:
-		fd['currentItem'] = False
-
-	fdadd = {}
-	fdadd['Title'] = "Add a Failover Domain"
-	fdadd['cfg_type'] = "failoverdomainadd"
-	fdadd['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, FDOM_ADD, cluname)
-	fdadd['Description'] = "Add a Failover Domain to this cluster"
-	if pagetype == FDOM_ADD:
-		fdadd['currentItem'] = True
-	else:
-		fdadd['currentItem'] = False
-
-	fdcfg = {}
-	fdcfg['Title'] = "Configure a Failover Domain"
-	fdcfg['cfg_type'] = "failoverdomaincfg"
-	fdcfg['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, FDOM_CONFIG, cluname)
-	fdcfg['Description'] = "Configure a Failover Domain for this cluster"
-	if pagetype == FDOM_CONFIG or pagetype == FDOM:
-		fdcfg['show_children'] = True
-	else:
-		fdcfg['show_children'] = False
-	if pagetype == FDOM_CONFIG:
-		fdcfg['currentItem'] = True
-	else:
-		fdcfg['currentItem'] = False
-
-	fdoms = model.getFailoverDomains()
-	fdomable = list()
-	for fdom in fdoms:
-		fdomname = fdom.getName()
-		fdc = {}
-		fdc['Title'] = fdomname
-		fdc['cfg_type'] = "fdom"
-		fdc['absolute_url'] = '%s?pagetype=%s&fdomname=%s&clustername=%s' % (url, FDOM, fdomname, cluname)
-		fdc['Description'] = "Configure this Failover Domain"
-		if pagetype == FDOM:
-			try:
-				fname = request['fdomname']
-			except KeyError, e:
-				fname = ''
-			if fdomname == fname:
-				fdc['currentItem'] = True
-			else:
-				fdc['currentItem'] = False
-		else:
-			fdc['currentItem'] = False
-
-		fdomable.append(fdc)
-	fdcfg['children'] = fdomable
-
-
-
-	kids = list()
-	kids.append(fdadd)
-	kids.append(fdcfg)
-	fd['children'] = kids
-#############################################################
-	fen = {}
-	fen['Title'] = "Shared Fence Devices"
-	fen['cfg_type'] = "fencedevicess"
-	fen['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, FENCEDEVS, cluname)
-	fen['Description'] = "Fence Device configuration for this cluster"
-	if pagetype == FENCEDEVS or pagetype == FENCEDEV_CONFIG or pagetype == FENCEDEV_ADD or pagetype == FENCEDEV:
-		fen['show_children'] = True
-	else:
-		fen['show_children'] = False
-	if pagetype == FENCEDEVS:
-		fen['currentItem'] = True
-	else:
-		fen['currentItem'] = False
-
-	fenadd = {}
-	fenadd['Title'] = "Add a Fence Device"
-	fenadd['cfg_type'] = "fencedeviceadd"
-	fenadd['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, FENCEDEV_ADD, cluname)
-	fenadd['Description'] = "Add a Fence Device to this cluster"
-	if pagetype == FENCEDEV_ADD:
-		fenadd['currentItem'] = True
-	else:
-		fenadd['currentItem'] = False
-
-	fencfg = {}
-	fencfg['Title'] = "Configure a Fence Device"
-	fencfg['cfg_type'] = "fencedevicecfg"
-	fencfg['absolute_url'] = '%s?pagetype=%s&clustername=%s' % (url, FENCEDEV_CONFIG, cluname)
-	fencfg['Description'] = "Configure a Fence Device for this cluster"
-	if pagetype == FENCEDEV_CONFIG or pagetype == FENCEDEV:
-		fencfg['show_children'] = True
-	else:
-		fencfg['show_children'] = False
-	if pagetype == FENCEDEV_CONFIG:
-		fencfg['currentItem'] = True
-	else:
-		fencfg['currentItem'] = False
-
-	fences = model.getFenceDevices()
-	fenceable = list()
-	for fence in fences:
-		fencename = fence.getName()
-		fenc = {}
-		fenc['Title'] = fencename
-		fenc['cfg_type'] = "fencedevice"
-		fenc['absolute_url'] = '%s?pagetype=%s&fencename=%s&clustername=%s' % (url, FENCEDEV, fencename, cluname)
-		fenc['Description'] = "Configure this Fence Device"
-		if pagetype == FENCEDEV:
-			try:
-				fenname = request['fencename']
-			except KeyError, e:
-				fenname = ''
-			if fencename == fenname:
-				fenc['currentItem'] = True
-			else:
-				fenc['currentItem'] = False
-		else:
-			fenc['currentItem'] = False
-
-		fenceable.append(fenc)
-	fencfg['children'] = fenceable
-
-
-
-	kids = list()
-	kids.append(fenadd)
-	kids.append(fencfg)
-	fen['children'] = kids
-#############################################################
-
-	mylist = list()
-	mylist.append(nd)
-	mylist.append(sv)
-	mylist.append(rv)
-	mylist.append(fd)
-	mylist.append(fen)
-
-	dummynode['children'] = mylist
-
-	return dummynode
-
 def getClusterURL(self, request, model):
+	
 	try:
 		clustername = request.clustername
 		if not clustername:
@@ -3648,83 +3154,7 @@
 			busy_map['refreshurl'] = '5; url=/luci/cluster?pagetype=3'
 	return busy_map
 
-def getClusterOS(self, rc):
-	clu_map = {}
-
-	try:
-		os_str = resolveOSType(rc.os())
-		clu_map['os'] = os_str
-		clu_map['isVirtualized'] = rc.dom0()
-	except:
-		# default to rhel5 if something crazy happened.
-		try:
-			if LUCI_DEBUG_MODE is True:
-				luci_log.debug('An error occurred while attempting to get OS/Virt info for %s -- defaulting to rhel5/False' % rc.hostname())
-		except:
-			# this can throw an exception if the original exception
-			# is caused by rc being None or stale.
-			pass
-		clu_map['os'] = 'rhel5'
-		clu_map['isVirtualized'] = False
-	return clu_map
-
-def process_cluster_conf_editor(self, req):
-	clustername = req['clustername']
-	msg_list = list(('\n'))
-	cc = ''
-	if 'new_cluster_conf' in req:
-		cc = req['new_cluster_conf']
-		msg_list.append('Checking if valid XML - ')
-		cc_xml = None
-		try:
-			cc_xml = minidom.parseString(cc)
-		except:
-			pass
-		if cc_xml is None:
-			msg_list.append('FAILED\n')
-			msg_list.append('Fix the error and try again:\n')
-		else:
-			msg_list.append('PASSED\n')
-
-			msg_list.append('Making sure no cluster name change has occurred - ')
-			new_name = cc_xml.firstChild.getAttribute('name')
-			if new_name != clustername:
-				msg_list.append('FAILED\n')
-				msg_list.append('Fix the error and try again:\n')
-			else:
-				msg_list.append('PASSED\n')
-
-				msg_list.append('Incrementing the cluster version number - ')
-				version = cc_xml.firstChild.getAttribute('config_version')
-				version = int(version) + 1
-				cc_xml.firstChild.setAttribute('config_version', str(version))
-				msg_list.append('DONE\n')
-
-				msg_list.append('Propagating the new cluster.conf')
-				rc = getRicciAgent(self, clustername)
-				if not rc:
-					if LUCI_DEBUG_MODE is True:
-						luci_log.debug_verbose('VFA0: unable to find a ricci agent for the %s cluster' % clustername)
-					msg_list.append('\nUnable to contact a ricci agent for cluster "%s"\n\n' % clustername)
-				else:
-					batch_id, result = rq.setClusterConf(rc, cc_xml.toxml())
-					if batch_id is None or result is None:
-						if LUCI_DEBUG_MODE is True:
-							luci_log.debug_verbose('VFA1: setClusterConf: batchid or result is None')
-						msg_list.append('\nUnable to propagate the new cluster configuration for cluster "%s"\n\n' % clustername)
-					else:
-						msg_list.append(' - DONE\n')
-						cc = cc_xml.toxml()
-						msg_list.append('\n\nALL DONE\n\n')
-	else:
-		if getClusterInfo(self, None, req) == {}:
-			msg_list.append('invalid cluster')
-		else:
-			model = req.SESSION.get('model')
-			cc = model.exportModelAsString()
-
-	return { 'msg': ''.join(msg_list), 'cluster_conf': cc }
-
+# These are called from external methods.
 def getResourceInfo(model, request):
 	fvars = GetReqVars(request,
 				[ 'resourcename', 'type', 'value', 'clustername', 'URL' ])
@@ -3750,23 +3180,6 @@
 	#CALL
 	return {}
 
-def GetReqVars(req, varlist):
-	ret = {}
-	for i in varlist:
-		pval = None
-		if req.has_key(i):
-			pval = req[i].strip()
-			if not pval:
-				pval = None
-		if pval is None:
-			if req.form and req.form.has_key(i):
-				pval = req.form[i].strip()
-				if not pval:
-					pval = None
-		ret[i] = pval
-	return ret
-
-# These are called from external methods.
 
 def serviceRestart(self, rc, req):
 	from LuciClusterActions import RestartCluSvc
--- conga/luci/site/luci/Extensions/storage_adapters.py	2007/05/15 21:42:21	1.9.4.3
+++ conga/luci/site/luci/Extensions/storage_adapters.py	2007/05/30 22:06:24	1.9.4.4
@@ -357,8 +357,6 @@
   return dummynode
 
 
-
-
 def getStorageURL(self, request, hostname):
   # return URL to manage this storage system
   try:




More information about the Cluster-devel mailing list