From mboxrd@z Thu Jan 1 00:00:00 1970 From: rmccabe@sourceware.org Date: 8 Feb 2007 03:43:00 -0000 Subject: [Cluster-devel] conga/luci cluster/form-macros cluster/validat ... Message-ID: <20070208034300.9744.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 2007-02-08 03:42:58 Modified files: luci/cluster : form-macros validate_fdom.js luci/site/luci/Extensions: cluster_adapters.py Log message: Support editing fdoms Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.181&r2=1.182 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_fdom.js.diff?cvsroot=cluster&r1=1.2&r2=1.3 http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.233&r2=1.234 --- conga/luci/cluster/form-macros 2007/02/08 02:34:35 1.181 +++ conga/luci/cluster/form-macros 2007/02/08 03:42:58 1.182 @@ -4353,14 +4353,14 @@ + tal:attributes="checked python: (fdom and 'prioritized' in fdom and fdom['prioritized'] == '1') and 'checked' or ''" /> Restrict failover to this domain's members + tal:attributes="checked python: (fdom and 'restricted' in fdom and fdom['restricted'] == '1') and 'checked' or ''" /> @@ -4393,15 +4393,17 @@ + tal:attributes=" + checked python: ('members' in fdom and n in fdom['members']) and 'checked' or ''; + name n" /> + value python: ('members' in fdom and n in fdom['members'] and 'priority' in fdom['members'][n]) and fdom['members'][n]['priority'] or '1'; + disabled python: (not fdom or not 'prioritized' in fdom or fdom['prioritized'] != '1' or not 'members' in fdom or not n in fdom['members']) and 'disabled' or ''" /> @@ -4424,11 +4426,13 @@ -

Failover Domain Configuration Form

Failover Domain Form

+ + +
--- conga/luci/cluster/validate_fdom.js 2007/02/08 02:34:35 1.2 +++ conga/luci/cluster/validate_fdom.js 2007/02/08 03:42:58 1.3 @@ -31,6 +31,10 @@ if (error_dialog(errors)) return (-1); - if (confirm('Add this failover domain?')) + var confirm_msg = 'Add this failover domain?'; + if (form.oldname) + confirm_msg = 'Update this failover domain?'; + + if (confirm(confirm_msg)) form.submit(); } --- conga/luci/site/luci/Extensions/cluster_adapters.py 2007/02/08 02:34:36 1.233 +++ conga/luci/site/luci/Extensions/cluster_adapters.py 2007/02/08 03:42:58 1.234 @@ -2013,19 +2013,26 @@ def validateFdom(self, request): errors = list() - model = request.SESSION.get('model') + + try: + model = request.SESSION.get('model') + if not model: + raise Exception, 'no model' + except Exception, e: + luci_log.debug_verbose('validateFdom0: no model: %s' % str(e)) + return (False, {'errors': [ 'Unable to retrieve cluster information.' ]}) prioritized = False try: prioritized = request.form.has_key('prioritized') except: - pass + prioritized = False restricted = False try: restricted = request.form.has_key('restricted') except: - pass + restricted = False clustername = None try: @@ -2069,12 +2076,14 @@ if fdom is None: luci_log.debug_verbose('validateFdom1: No fdom named %s exists' % oldname) errors.append('No failover domain named \"%s" exists.' % oldname) - fdom.children = list() + else: + fdom.addAttribute('name', name) + fdom.children = list() else: fdom = FailoverDomain() fdom.addAttribute('name', name) - if fdom is None: + if fdom is None or len(errors) > 0: return (False, {'errors': errors }) if prioritized: @@ -2106,7 +2115,8 @@ try: fdom_ptr = model.getFailoverDomainPtr() - fdom_ptr.addChild(fdom) + if not oldname: + fdom_ptr.addChild(fdom) model.setModified(True) conf = str(model.exportModelAsString()) except Exception, e: @@ -2128,12 +2138,15 @@ return (False, {'errors': [ 'An error occurred while constructing the new cluster configuration.' ]}) try: - set_node_flag(self, clustername, ragent, str(batch_number), FDOM_ADD, 'Creating failover domain \"%s\"' % name) + if oldname: + set_node_flag(self, clustername, ragent, str(batch_number), FDOM, 'Updating failover domain \"%s\"' % oldname) + else: + set_node_flag(self, clustername, ragent, str(batch_number), FDOM_ADD, 'Creating failover domain \"%s\"' % name) except Exception, e: luci_log.debug_verbose('validateFdom5: failed to set flags: %s' % str(e)) response = request.RESPONSE - response.redirect(request['URL'] + "?pagetype=" + FDOM_CONFIG + "&clustername=" + clustername + '&fdomname=' + name + '&busyfirst=true') + response.redirect(request['URL'] + "?pagetype=" + FDOM + "&clustername=" + clustername + '&fdomname=' + name + '&busyfirst=true') def validateVM(self, request): errors = list() @@ -2249,6 +2262,7 @@ 31: validateResourceAdd, 33: validateResourceAdd, 41: validateFdom, + 44: validateFdom, 51: validateFenceAdd, 54: validateFenceEdit, 55: validateDaemonProperties, @@ -3496,6 +3510,39 @@ response = req.RESPONSE response.redirect(req['URL'] + "?pagetype=" + SERVICE_LIST + "&clustername=" + cluname + '&busyfirst=true') +def getFdomInfo(self, model, request): + fhash = {} + fhash['members'] = {} + + try: + fdom = model.getFailoverDomainByName(request['fdomname']) + except Exception, e: + luci_log.debug_verbose('getFdomInfo0: %s' % str(e)) + return fhash + + fhash['name'] = fdom.getName() + + ordered_attr = fdom.getAttribute('ordered') + if ordered_attr is not None and (ordered_attr == "true" or ordered_attr == "1"): + fhash['prioritized'] = '1' + else: + fhash['prioritized'] = '0' + + restricted_attr = fdom.getAttribute('restricted') + if restricted_attr is not None and (restricted_attr == "true" or restricted_attr == "1"): + fhash['restricted'] = '1' + else: + fhash['restricted'] = '0' + + nodes = fdom.getChildren() + for node in nodes: + try: + priority = node.getAttribute('priority') + except: + priority = '1' + fhash['members'][node.getName()] = { 'priority': priority } + return fhash + def getFdomsInfo(self, model, request, clustatus): slist = list() nlist = list() @@ -3512,7 +3559,7 @@ for fdom in fdoms: fdom_map = {} fdom_map['name'] = fdom.getName() - fdom_map['cfgurl'] = baseurl + "?pagetype=" + FDOM_LIST + "&clustername=" + clustername + fdom_map['cfgurl'] = baseurl + "?pagetype=" + FDOM + "&clustername=" + clustername + '&fdomname=' + fdom.getName() ordered_attr = fdom.getAttribute('ordered') restricted_attr = fdom.getAttribute('restricted') if ordered_attr is not None and (ordered_attr == "true" or ordered_attr == "1"):