[Cluster-devel] conga/luci/site/luci/Extensions LuciClusterInf ...
rmccabe at sourceware.org
rmccabe at sourceware.org
Tue Jul 3 17:06:01 UTC 2007
CVSROOT: /cvs/cluster
Module name: conga
Changes by: rmccabe at sourceware.org 2007-07-03 17:06:00
Modified files:
luci/site/luci/Extensions: LuciClusterInfo.py PropsObject.py
cluster_adapters.py
luci/site/luci/Extensions/ClusterModel: ModelBuilder.py
Removed files:
luci/site/luci/Extensions/ClusterModel: GeneralError.py
Log message:
More cleanup.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterInfo.py.diff?cvsroot=cluster&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/PropsObject.py.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.259&r2=1.260
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/GeneralError.py.diff?cvsroot=cluster&r1=1.2&r2=NONE
--- conga/luci/site/luci/Extensions/LuciClusterInfo.py 2007/06/28 19:31:45 1.4
+++ conga/luci/site/luci/Extensions/LuciClusterInfo.py 2007/07/03 17:05:59 1.5
@@ -6,7 +6,6 @@
# Free Software Foundation.
from Products.Archetypes.utils import make_uuid
-from ClusterModel.GeneralError import GeneralError
from ClusterModel.ModelBuilder import ModelBuilder
import RicciQueries as rq
from ricci_communicator import RicciCommunicator
@@ -1146,7 +1145,7 @@
# is returned.
try:
node = model.retrieveNodeByName(nodename)
- except GeneralError, e:
+ except Exception, e:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('getFenceInfo3: unable to find node name "%s" in current node list: %r %s' % (str(nodename), e, str(e)))
return {}
--- conga/luci/site/luci/Extensions/PropsObject.py 2007/06/25 16:03:38 1.3
+++ conga/luci/site/luci/Extensions/PropsObject.py 2007/07/03 17:05:59 1.4
@@ -7,8 +7,7 @@
from Variable import parse_variable
from ricci_defines import PROPS_TAG
-import xml
-import xml.dom
+from xml.dom.Node import ELEMENT_NODE
class PropsObject:
@@ -36,7 +35,7 @@
def import_xml(self, parent_node):
props = None
for node in parent_node.childNodes:
- if node.nodeType == xml.dom.Node.ELEMENT_NODE:
+ if node.nodeType == ELEMENT_NODE:
if node.nodeName == str(PROPS_TAG):
props = node
if props is None:
@@ -48,4 +47,3 @@
except:
continue
return self
-
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2007/06/28 19:31:45 1.259
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2007/07/03 17:05:59 1.260
@@ -19,7 +19,6 @@
from ClusterModel.Heuristic import Heuristic
from ClusterModel.Fence import Fence
from ClusterModel.Method import Method
-from ClusterModel.GeneralError import GeneralError
import RicciQueries as rq
from HelperFunctions import resolveOSType
@@ -708,32 +707,28 @@
return (False, { 'errors': errors, 'messages': messages })
buildClusterCreateFlags(self, batch_id_map, clustername)
-
response = request.RESPONSE
response.redirect('%s?pagetype=%s&clustername=%s&busyfirst=true' \
% (request['URL'], CLUSTER_CONFIG, clustername))
def validateServiceAdd(self, request):
errors = list()
+ fvar = GetReqVars(request, [ 'form_xml', 'clustername', 'domain', 'recovery', 'svc_name', 'action', 'URL' ])
- try:
- form_xml = request['form_xml'].strip()
- if not form_xml:
- raise KeyError, 'form_xml must not be blank'
- except Exception, e:
+ baseurl = fvar['URL'] or LUCI_CLUSTER_BASE_URL
+ clustername = fvar['clustername']
+
+ form_xml = fvar['form_xml']
+ if form_xml is None:
if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('vSA0: no form_xml: %r %s' \
- % (e, str(e)))
+ luci_log.debug_verbose('vSA0: no form_xml')
return (False, { 'errors': [ 'No resource data was supplied for this service' ]})
- try:
- model = request.SESSION.get('model')
- if not model:
- raise Exception, 'model is None'
- except Exception, e:
+ model = LuciExtractCluModel(self, request, clustername)
+ if model is None:
if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('vSA0a: %r %s' % (e, str(e)))
- return (False, { 'errors': [ 'The cluster model is missing from the session object' ]})
+ luci_log.debug_verbose('vSA1: no model')
+ return (False, {'errors': ['No cluster model was found']})
try:
doc = minidom.parseString(form_xml)
@@ -816,32 +811,17 @@
if len(errors) > 0:
return (False, {'errors': errors})
- fdom = None
- try:
- fdom = request.form['domain'].strip()
- if not fdom:
- raise Exception, 'blank'
- except:
- fdom = None
+ fdom = fvar['domain']
- recovery = None
- try:
- recovery = request.form['recovery'].strip()
- if not recovery:
- recovery = None
- else:
- if recovery != 'restart' and recovery != 'relocate' and recovery != 'disable':
- errors.append('You entered an invalid recovery option: "%s" Valid options are "restart" "relocate" and "disable."')
- except:
- recovery = None
+ recovery = fvar['recovery']
+ if recovery is not None and recovery != 'restart' and recovery != 'relocate' and recovery != 'disable':
+ errors.append('You entered an invalid recovery option: "%s" Valid options are "restart" "relocate" and "disable."')
- try:
- service_name = request.form['svc_name'].strip()
- except Exception, e:
+ service_name = fvar['svc_name']
+ if service_name is None:
if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('vSA5: no service name: %r %s' \
- % (e, str(e)))
- return (False, { 'errors': [ 'No service name was given' ]})
+ luci_log.debug_verbose('vSA5: no service name')
+ errors.append('No service name was given')
autostart = '1'
try:
@@ -864,34 +844,28 @@
try:
cur_service = model.retrieveServiceByName(service_name)
- except GeneralError, e:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('vSA5b: no service named %s found: %r %s' \
- % (service_name, e, str(e)))
- cur_service = None
except Exception, e:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('vSA5c: no service named %s found: %r %s' \
% (service_name, e, str(e)))
cur_service = None
- try:
- if request.form['action'] == 'edit':
- if cur_service is None:
- return (False, {'errors': [ 'The service %s could not be found for editing' % service_name ]})
- model.deleteService(service_name)
- elif request.form['action'] == 'add':
- if cur_service is not None:
- return (False, {'errors': [ 'A service with the name %s already exists' % service_name ]})
- else:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('vSA4a: unknown action %s' \
- % request.form['action'])
- return (False, {'errors': [ 'An unknown action was specified' ]})
- except Exception, e:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('vSA5: no action type: %r %s' \
- % (e, str(e)))
+ action = fvar['action']
+ if action is None:
+ return (False, {'errors': [ 'No action was given for service %s' % service_name ] })
+
+ if action == 'edit':
+ if cur_service is None:
+ return (False, {'errors': [ 'The service %s could not be found for editing' % service_name ]})
+ model.deleteService(service_name)
+ elif action == 'add':
+ if cur_service is not None:
+ return (False, {'errors': [ 'A service with the name %s already exists' % service_name ]})
+ else:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('vSA4a: unknown action %s' \
+ % request.form['action'])
+ return (False, {'errors': [ 'An unknown action was specified' ]})
def buildSvcTree(parent, child_id_list):
for i in child_id_list:
@@ -921,7 +895,7 @@
model.resourcemanager_ptr.addChild(new_service)
model.setModified(True)
- if request.form['action'].strip().lower() == 'edit':
+ if action == 'edit':
action_type = SERVICE_CONFIG
action_msg = 'Configuring service "%s"'
else:
@@ -935,7 +909,7 @@
response = request.RESPONSE
response.redirect('%s?pagetype=%s&clustername=%s&busyfirst=true' \
- % (request['URL'], SERVICES, model.getClusterName()))
+ % (baseurl, SERVICES, model.getClusterName()))
def validateResourceAdd(self, request):
try:
@@ -972,15 +946,12 @@
luci_log.debug_verbose('resource error: %r %s' % (e, str(e)))
return (False, { 'errors': errors})
-
return (True, { 'messages': [ 'Resource added successfully' ]})
-
## Cluster properties form validation routines
# rhel5 cluster version
def validateMCastConfig(model, form):
- import socket
try:
gulm_ptr = model.getGULMPtr()
if gulm_ptr:
@@ -1002,6 +973,7 @@
return (False, {'errors': errors})
if mcast_manual is True:
+ import socket
try:
addr_str = form['mcast_address'].strip()
socket.inet_pton(socket.AF_INET, addr_str)
@@ -1264,13 +1236,13 @@
errors.append(str(e))
try:
- token_retransmits_before_loss_const = form['token_retransmits_before_loss_const'].strip()
- if not token_retransmits_before_loss_const:
+ trblc = form['token_retransmits_before_loss_const'].strip()
+ if not trblc:
raise KeyError, 'token_retransmits_before_loss_const'
- token_retransmits_before_loss_const = int(token_retransmits_before_loss_const)
- if token_retransmits_before_loss_const < 1:
- raise ValueError, '%d is an invalid value for number of token retransmits before loss' % token_retransmits_before_loss_const
- totem.addAttribute('token_retransmits_before_loss_const', str(token_retransmits_before_loss_const))
+ trblc = int(trblc)
+ if trblc < 1:
+ raise ValueError, '%d is an invalid value for number of token retransmits before loss' % trblc
+ totem.addAttribute('token_retransmits_before_loss_const', str(trblc))
except KeyError, e:
try:
totem.removeAttribute('token_retransmits_before_loss_const')
@@ -1377,7 +1349,7 @@
return (False, {'errors': [ 'This cluster appears not to be using GULM locking' ]})
node_list = map(lambda x: x.getName(), gulm_ptr.getChildren())
- for i in map(lambda x: x.getName(), model.getNodes()):
+ for i in model.getNodeNames():
if not i in node_list:
node_list.append(i)
@@ -1498,35 +1470,28 @@
def validateFenceAdd(self, request):
errors = list()
+ fvar = GetReqVars(request, [ 'clustername', 'URL' ])
- model = LuciExtractCluModel(self, request)
+ baseurl = fvar['URL'] or LUCI_CLUSTER_BASE_URL
+ clustername = fvar['clustername']
+ model = LuciExtractCluModel(self, request, clustername)
if not model:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('VFE0: no model')
- return (False, [ 'No cluster model was found' ])
-
- if not request.form:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('VFE: no form was submitted')
- return (False, [ 'No form was submitted' ])
+ return (False, { 'errors': [ 'No cluster model was found' ] })
ret_code, ret_obj = validateNewFenceDevice(request.form, model)
if ret_code != FD_VAL_SUCCESS:
errors.extend(ret_obj)
- return (False, errors)
+ return (False, { 'errors': errors })
- try:
- conf_str = str(model.exportModelAsString())
- if not conf_str:
- raise Exception, 'conf_str is none'
- except Exception, e:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('VFE: export model as string failed: %r %s' \
- % (e, str(e)))
- errors.append('Unable to store the new cluster configuration')
+ ret = propagateClusterConfAsync(self, model, None,
+ CLUSTER_CONFIG, 'Creating fence device "%s"' % ret_obj)
+ if ret[0] is not True:
+ return ret
- request.RESPONSE.redirect('%s?pagetype=%s&clustername=%s&fencename=%s&busyfirst=true' % (request['URL'], FENCEDEV, model.getClusterName(), ret_obj))
+ request.RESPONSE.redirect('%s?pagetype=%s&clustername=%s&fencename=%s&busyfirst=true' % (baseurl, FENCEDEV, clustername, ret_obj))
def validateFenceEdit(self, request):
errors = list()
@@ -2217,9 +2182,7 @@
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))
+ model.setModified(True)
msg_list.append('DONE\n')
msg_list.append('Propagating the new cluster.conf')
@@ -2282,9 +2245,8 @@
return formValidators[pagetype](self, request)
def getClusterURL(self, request, model):
-
try:
- clustername = request.clustername
+ clustername = request['clustername'].strip()
if not clustername:
raise Exception, 'cluster name from request is blank'
except:
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2007/06/27 08:14:13 1.3
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py 2007/07/03 17:06:00 1.4
@@ -48,7 +48,6 @@
from FailoverDomains import FailoverDomains
from FailoverDomainNode import FailoverDomainNode
from Rm import Rm
-from GeneralError import GeneralError
DLM_TYPE = 0
GULM_TYPE = 1
@@ -563,7 +562,7 @@
if svc.getName() == name:
return svc
- raise GeneralError('FATAL', "Couldn't find service name in current list")
+ raise KeyError, 'Couldn\'t find service name %s in current list' % name
def retrieveVMsByName(self, name):
vms = self.getVMs()
@@ -571,7 +570,7 @@
if v.getName() == name:
return v
- raise GeneralError('FATAL', "Couldn't find VM name %s in current list" % name)
+ raise KeyError, 'Couldn\'t find VM name %s in current list' % name
def del_totem(self):
if self.TOTEM_ptr is not None:
More information about the Cluster-devel
mailing list