[Cluster-devel] conga/luci/site/luci/Extensions cluster_adapte ...
rmccabe at sourceware.org
rmccabe at sourceware.org
Mon Oct 2 22:30:11 UTC 2006
CVSROOT: /cvs/cluster
Module name: conga
Changes by: rmccabe at sourceware.org 2006-10-02 22:30:09
Modified files:
luci/site/luci/Extensions: cluster_adapters.py
Log message:
more validation and improved fault tolerance code
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.79&r2=1.80
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2006/10/02 21:42:49 1.79
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2006/10/02 22:30:09 1.80
@@ -2185,7 +2185,10 @@
modelb = request.SESSION.get('model')
form = request.form
- if 'edit' in form and form['edit'] == 'True':
+ if not modelb or not form:
+ return None
+
+ if form.has_key('edit'):
try:
oldname = form['oldname'].strip()
if not oldname:
@@ -2196,153 +2199,387 @@
else:
res = apply(Ip)
+ if not res:
+ return None
+
try:
addr = form['ip_address'].strip()
if not addr:
raise KeyError('ip_address is blank')
+ # XXX: validate IP addr
res.attr_hash['address'] = addr
except KeyError, e:
return None
- try:
- monitor = form['monitorLink'].strip()
- if monitor == '':
- raise KeyError('monitorLink is blank.')
- except KeyError, e:
- return None
-
- if monitor == '1' or monitor == 'True':
+ if 'monitorLink' in form:
res.attr_hash['monitor_link'] = '1'
else:
res.attr_hash['monitor_link'] = '0'
+
modelb.getResourcesPtr().addChild(res)
return res
def addFs(request):
- modelb = request.SESSION.get('model')
- if request.form.has_key('edit'):
- res = getResourceForEdit(modelb, request.form['oldname'])
- else:
- res = apply(Fs)
- form = request.form
- res.attr_hash["name"] = form["resourceName"]
- res.attr_hash["mountpoint"] = form["mountpoint"]
- res.attr_hash["device"] = form["device"]
- res.attr_hash["options"] = form["options"]
- res.attr_hash["fstype"] = form["fstype"]
- res.attr_hash["fsid"] = form["fsid"]
- if form.has_key('forceunmount'):
- res.attr_hash["force_unmount"] = '1'
- else:
- res.attr_hash["force_unmount"] = '0'
-
- if form.has_key('selffence'):
- res.attr_hash["self_fence"] = '1'
- else:
- res.attr_hash["self_fence"] = '0'
-
- if form.has_key('checkfs'):
- res.attr_hash["force_fsck"] = '1'
- else:
- res.attr_hash["force_fsck"] = '0'
+ modelb = request.SESSION.get('model')
+ form = request.form
- modelb.getResourcesPtr().addChild(res)
- return res
+ if not modelb or not form:
+ return None
+
+ if form.has_key('edit'):
+ try:
+ oldname = form['oldname'].strip()
+ if not oldname:
+ raise KeyError('oldname is blank.')
+ res = getResourceForEdit(modelb, oldname)
+ except KeyError, e:
+ return None
+ else:
+ res = apply(Fs)
+
+ if not res:
+ return None
+
+ # XXX: sanity check these fields
+ try:
+ name = form['resourceName'].strip()
+ res.attr_hash['name'] = name
+ except:
+ return None
+
+ try:
+ mountpoint = form['mountpoint'].strip()
+ res.attr_hash['mountpoint'] = mountpoint
+ except:
+ return None
+
+ try:
+ device = form['device'].strip()
+ res.attr_hash['device'] = device
+ except:
+ return None
+
+ try:
+ options = form['options'].strip()
+ res.attr_hash['options'] = options
+ except:
+ return None
+
+ try:
+ fstype = form['fstype'].strip()
+ res.attr_hash['fstype'] = fstype
+ except:
+ return None
+
+ try:
+ fsid = form['fsid'].strip()
+ res.attr_hash['fsid'] = fsid
+ except:
+ return None
+
+ if form.has_key('forceunmount'):
+ res.attr_hash['force_unmount'] = '1'
+ else:
+ res.attr_hash['force_unmount'] = '0'
+
+ if form.has_key('selffence'):
+ res.attr_hash['self_fence'] = '1'
+ else:
+ res.attr_hash['self_fence'] = '0'
+
+ if form.has_key('checkfs'):
+ res.attr_hash['force_fsck'] = '1'
+ else:
+ res.attr_hash['force_fsck'] = '0'
+
+ modelb.getResourcesPtr().addChild(res)
+ return res
def addGfs(request):
- modelb = request.SESSION.get('model')
- if request.form.has_key('edit'):
- res = getResourceForEdit(modelb, request.form['oldname'])
- else:
- res = apply(Clusterfs)
- form = request.form
- res.attr_hash["name"] = form["resourceName"]
- res.attr_hash["mountpoint"] = form["mountpoint"]
- res.attr_hash["device"] = form["device"]
- res.attr_hash["options"] = form["options"]
- res.attr_hash["fsid"] = form["fsid"]
-
- if form.has_key('forceunmount'):
- res.attr_hash["force_unmount"] = '1'
- else:
- res.attr_hash["force_unmount"] = '0'
+ form = request.form
- modelb.getResourcesPtr().addChild(res)
- return res
+ modelb = request.SESSION.get('model')
+ if not modelb:
+ return None
+
+ if form.has_key('edit'):
+ try:
+ oldname = form['oldname'].strip()
+ if not oldname:
+ raise KeyError('oldname is blank.')
+ res = getResourceForEdit(modelb, oldname)
+ except KeyError, e:
+ return None
+ else:
+ res = apply(Clusterfs)
+
+ if not res:
+ return None
+
+ # XXX: sanity check these fields
+ try:
+ name = form['resourceName'].strip()
+ if not name:
+ raise
+ res.attr_hash['name'] = name
+ except:
+ return None
+
+ try:
+ mountpoint = form['mountpoint'].strip()
+ res.attr_hash['mountpoint'] = mountpoint
+ except:
+ return None
+
+ try:
+ device = form['device'].strip()
+ res.attr_hash['device'] = device
+ except:
+ return None
+
+ try:
+ options = form['options'].strip()
+ res.attr_hash['options'] = options
+ except:
+ return None
+
+ try:
+ fsid = form['fsid'].strip()
+ res.attr_hash['fsid'] = fsid
+ except:
+ return None
+
+ if form.has_key('forceunmount'):
+ res.attr_hash['force_unmount'] = '1'
+ else:
+ res.attr_hash['force_unmount'] = '0'
+
+ modelb.getResourcesPtr().addChild(res)
+ return res
def addNfsm(request):
- modelb = request.SESSION.get('model')
- if request.form.has_key('edit'):
- res = getResourceForEdit(modelb, request.form['oldname'])
- else:
- res = apply(Netfs)
- form = request.form
- res.attr_hash["name"] = form["resourceName"]
- res.attr_hash["mountpoint"] = form["mountpoint"]
- res.attr_hash["host"] = form["host"]
- res.attr_hash["options"] = form["options"]
- res.attr_hash["exportpath"] = form["export"]
- res.attr_hash["nfstype"] = form["fstype"]
-
- if form.has_key('forceunmount'):
- res.attr_hash["force_unmount"] = '1'
- else:
- res.attr_hash["force_unmount"] = '0'
+ form = request.form
+ modelb = request.SESSION.get('model')
- modelb.getResourcesPtr().addChild(res)
- return res
+ if not form or not modelb:
+ return None
+
+ if form.has_key('edit'):
+ try:
+ oldname = form['oldname'].strip()
+ if not oldname:
+ raise KeyError('oldname is blank.')
+ res = getResourceForEdit(modelb, oldname)
+ except KeyError, e:
+ return None
+ else:
+ res = apply(Netfs)
+
+ if not res:
+ return None
+
+ # XXX: sanity check these fields
+ try:
+ name = form['resourceName'].strip()
+ if not name:
+ raise
+ res.attr_hash['name'] = name
+ except:
+ return None
+
+ try:
+ mountpoint = form['mountpoint'].strip()
+ res.attr_hash['mountpoint'] = mountpoint
+ except:
+ return None
+
+ try:
+ host = form['host'].strip()
+ res.attr_hash['host'] = host
+ except:
+ return None
+
+ try:
+ options = form['options'].strip()
+ res.attr_hash['options'] = options
+ except:
+ return None
+
+ try:
+ exportpath = form['exportpath'].strip()
+ res.attr_hash['exportpath'] = exportpath
+ except:
+ return None
+
+ try:
+ nfstype = form['nfstype'].strip().lower()
+ if nfstype != 'nfs' and nfstype != 'nfs4':
+ raise
+ res.attr_hash['nfstype'] = nfstype
+ except:
+ return None
+
+ if form.has_key('forceunmount'):
+ res.attr_hash['force_unmount'] = '1'
+ else:
+ res.attr_hash['force_unmount'] = '0'
+
+ modelb.getResourcesPtr().addChild(res)
+ return res
def addNfsc(request):
- modelb = request.SESSION.get('model')
- if request.form.has_key('edit'):
- res = getResourceForEdit(modelb, request.form['oldname'])
- else:
- res = apply(NFSClient)
- form = request.form
- res.attr_hash["name"] = form["resourceName"]
- res.attr_hash["target"] = form["target"]
- res.attr_hash["options"] = form["options"]
+ form = request.form
+ modelb = request.SESSION.get('model')
- modelb.getResourcesPtr().addChild(res)
- return res
+ if not form or not modelb:
+ return None
+
+ if form.has_key('edit'):
+ try:
+ oldname = form['oldname'].strip()
+ if not oldname:
+ raise KeyError('oldname is blank.')
+ res = getResourceForEdit(modelb, oldname)
+ except KeyError, e:
+ return None
+ else:
+ res = apply(NFSClient)
+
+ if not res:
+ return None
+
+ try:
+ name = form['resourceName'].strip()
+ if not name:
+ raise
+ res.attr_hash['name'] = name
+ except:
+ return None
+
+ try:
+ target = form['target'].strip()
+ res.attr_hash['target'] = target
+ except:
+ return None
+
+ try:
+ options = form['options'].strip()
+ res.attr_hash['options'] = options
+ except:
+ return None
+
+ modelb.getResourcesPtr().addChild(res)
+ return res
def addNfsx(request):
- modelb = request.SESSION.get('model')
- if request.form.has_key('edit'):
- res = getResourceForEdit(modelb, request.form['oldname'])
- else:
- res = apply(NFSExport)
- form = request.form
- res.attr_hash["name"] = form["resourceName"]
+ modelb = request.SESSION.get('model')
+ form = request.form
- modelb.getResourcesPtr().addChild(res)
- return res
+ if not modelb or not form:
+ return None
+
+ if form.has_key('edit'):
+ try:
+ oldname = form['oldname'].strip()
+ if not oldname:
+ raise KeyError('oldname is blank.')
+ res = getResourceForEdit(modelb, oldname)
+ except KeyError, e:
+ return None
+ else:
+ res = apply(NFSExport)
+
+ if not res:
+ return None
+
+ try:
+ name = form['resourceName'].strip()
+ if not name:
+ raise
+ res.attr_hash['name'] = name
+ except:
+ return None
+
+ modelb.getResourcesPtr().addChild(res)
+ return res
def addScr(request):
- modelb = request.SESSION.get('model')
- if request.form.has_key('edit'):
- res = getResourceForEdit(modelb, request.form['oldname'])
- else:
- res = apply(Script)
- form = request.form
- res.attr_hash["name"] = form["resourceName"]
- res.attr_hash["file"] = form["file"]
+ modelb = request.SESSION.get('model')
+ form = request.form
- modelb.getResourcesPtr().addChild(res)
- return res
+ if not modelb or not form:
+ return None
+
+ if form.has_key('edit'):
+ try:
+ oldname = form['oldname'].strip()
+ if not oldname:
+ raise KeyError('oldname is blank.')
+ res = getResourceForEdit(modelb, oldname)
+ except KeyError, e:
+ return None
+ else:
+ res = apply(Script)
+
+ if not res:
+ return None
+
+ try:
+ name = form['resourceName'].strip()
+ if not name:
+ raise
+ res.attr_hash['name'] = name
+ except:
+ return None
+
+ try:
+ file = form['file'].strip()
+ if not file:
+ raise
+ res.attr_hash['file'] = file
+ except:
+ return None
+
+ modelb.getResourcesPtr().addChild(res)
+ return res
def addSmb(request):
- modelb = request.SESSION.get('model')
- if request.form.has_key('edit'):
- res = getResourceForEdit(modelb, request.form['oldname'])
- else:
- res = apply(Samba)
- form = request.form
- res.attr_hash["name"] = form["resourceName"]
- res.attr_hash["workgroup"] = form["workgroup"]
+ modelb = request.SESSION.get('model')
+ form = request.form
- modelb.getResourcesPtr().addChild(res)
- return res
+ if not modelb or not form:
+ return None
+
+ if form.has_key('edit'):
+ try:
+ oldname = form['oldname'].strip()
+ if not oldname:
+ raise KeyError('oldname is blank.')
+ res = getResourceForEdit(modelb, oldname)
+ except KeyError, e:
+ return None
+ else:
+ res = apply(Samba)
+
+ if not res:
+ return None
+
+ try:
+ name = form['resourceName'].strip()
+ if not name:
+ raise
+ res.attr_hash['name'] = name
+ except:
+ return None
+
+ try:
+ workgroup = form['workgroup'].strip()
+ res.attr_hash['workgroup'] = workgroup
+ except:
+ return None
+
+ modelb.getResourcesPtr().addChild(res)
+ return res
resourceAddHandler = {
'ip': addIp,
More information about the Cluster-devel
mailing list