From: rmccabe@sourceware.org <rmccabe@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga/luci cluster/clu_portlet_fetcher cluster ...
Date: 7 Jun 2007 06:41:10 -0000 [thread overview]
Message-ID: <20070607064110.21662.qmail@sourceware.org> (raw)
CVSROOT: /cvs/cluster
Module name: conga
Branch: EXPERIMENTAL
Changes by: rmccabe at sourceware.org 2007-06-07 06:41:06
Modified files:
luci/cluster : clu_portlet_fetcher form-macros index_html
resource-form-macros resource_form_handlers.js
luci/homebase : form-macros portlet_homebase
luci/site/luci/Extensions: LuciClusterInfo.py LuciDB.py
LuciZope.py RicciQueries.py
cluster_adapters.py
conga_constants.py
luci/site/luci/Extensions/ClusterModel: ModelBuilder.py
Log message:
Various fixes and cleanups
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/clu_portlet_fetcher.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.2&r2=1.2.8.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.198.2.3&r2=1.198.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/index_html.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.32&r2=1.32.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource-form-macros.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.37.2.2&r2=1.37.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource_form_handlers.js.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.34&r2=1.34.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/form-macros.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.56.2.1&r2=1.56.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/homebase/portlet_homebase.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.8&r2=1.8.4.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.7&r2=1.1.2.8
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.14&r2=1.1.2.15
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.8&r2=1.1.2.9
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/RicciQueries.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/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.255.2.12&r2=1.255.2.13
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/conga_constants.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.39.2.7&r2=1.39.2.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&only_with_tag=EXPERIMENTAL&r1=1.1.2.6&r2=1.1.2.7
--- conga/luci/cluster/clu_portlet_fetcher 2006/09/27 22:24:11 1.2
+++ conga/luci/cluster/clu_portlet_fetcher 2007/06/07 06:41:04 1.2.8.1
@@ -4,39 +4,26 @@
<body>
<metal:leftcolumn define-macro="left_column">
-<!-- unchecked_clusystems are all clusters...the check_clusters call filters list through user permissions -->
-<span tal:define="global unchecked_clusystems root/luci/systems/cluster/objectItems"/>
-<span tal:define="global clusystems python:here.check_clusters(request,unchecked_clusystems)"/>
-<div tal:omit-tag="" metal:use-macro="here/portlet_cluconfig/macros/cluchooseportlet" />
-<span tal:omit-tag="" tal:define="global hasclustername request/clustername |nothing"/>
-<span tal:omit-tag="" tal:condition="hasclustername">
-<div tal:omit-tag="" metal:use-macro="here/portlet_cluconfig/macros/cluconfigportlet" />
-</span>
+ <tal:comment tal:replace=nothing>
+ unchecked_clusystems are all clusters...
+ the check_clusters call filters list through user permissions
+ </tal:comment>
+
+ <tal:block
+ tal:define="unchecked_clusystems /root/luci/systems/cluster/objectItems">
+ <tal:block
+ tal:define="global clusystems python:here.check_clusters(unchecked_clusystems)" />
+ </tal:block>
+
+ <tal:block
+ metal:use-macro="here/portlet_cluconfig/macros/cluchooseportlet" />
+ <tal:block
+ tal:define="global hasclustername request/clustername | nothing" />
+ <tal:block tal:condition="hasclustername">
+ <tal:block
+ metal:use-macro="here/portlet_cluconfig/macros/cluconfigportlet" />
+ </tal:block>
</metal:leftcolumn>
-<!--
-
-<metal:rightcolumn define-macro="right_column"
- tal:define="Iterator python:modules['Products.CMFPlone'].IndexIterator;
- tabindex python:Iterator(pos=20000);"
- tal:condition="sr">
-
- <metal:block tal:repeat="slot sr">
- <tal:dontcrash tal:on-error="python:context.plone_log('Error %s on %s while rendering portlet %s'%(error.type, error.value, slot[0]))"
- tal:define="pathexpr python:slot[0];
- usemacro python:slot[1];">
-
- <tal:block tal:condition="usemacro">
- <metal:block metal:use-macro="python:path(pathexpr)" />
- </tal:block>
-
- <span tal:condition="not: usemacro"
- tal:replace="structure python:path(pathexpr)" />
-
- </tal:dontcrash>
- </metal:block>
-</metal:rightcolumn>
--->
-
</body>
</html>
--- conga/luci/cluster/form-macros 2007/05/30 05:54:01 1.198.2.3
+++ conga/luci/cluster/form-macros 2007/06/07 06:41:04 1.198.2.4
@@ -4413,6 +4413,12 @@
<tal:block tal:condition="python: type == 'tomcat-5'">
<div metal:use-macro="here/resource-form-macros/macros/tomcat-5_macro" />
</tal:block>
+ <tal:block tal:condition="python: type == 'SAPInstance'">
+ <div metal:use-macro="here/resource-form-macros/macros/SAPInstance_macro" />
+ </tal:block>
+ <tal:block tal:condition="python: type == 'SAPDatabase'">
+ <div metal:use-macro="here/resource-form-macros/macros/SAPDatabase_macro" />
+ </tal:block>
</div>
<div metal:define-macro="service-config-head-macro" tal:omit-tag="">
@@ -4430,10 +4436,10 @@
global global_resources python: here.getResourcesInfo(modelb, request);
global sstat python: here.getClusterStatus(request, ricci_agent);
global sinfo python: here.getServiceInfo(sstat, modelb, request);
- global running sinfo/running | nothing;" />
+ global running sinfo/running | nothing" />
<tal:block tal:replace="structure python: '<script type='+chr(0x22)+'text/javascript'+chr(0x22)+'>'" />
- var uuid_list = <tal:block tal:replace="sinfo/uuid_list" />;
+ var uuid_list = <tal:block tal:replace="sinfo/uuid_list | nothing" />;
var global_resources = <tal:block tal:replace="python: map(lambda x: str(x['name']), global_resources) or 'null'" />;
var active_resources = <tal:block tal:replace="python: map(lambda x: str(x['name']), sinfo['resource_list']) or 'null'" />;
var resource_names = <tal:block tal:replace="python: (map(lambda x: str(x['name']), global_resources) + map(lambda x: str(x['name']), sinfo['resource_list'])) or 'null'" />;
--- conga/luci/cluster/index_html 2007/03/01 22:19:10 1.32
+++ conga/luci/cluster/index_html 2007/06/07 06:41:05 1.32.2.1
@@ -26,7 +26,7 @@
<metal:headslot define-slot="head_slot" />
<tal:block tal:define="
global sinfo nothing;
- global hascluster request/clustername |nothing;
+ global hascluster request/clustername | nothing;
global isBusy python: False;
global firsttime nothing;
global ri_agent nothing;
@@ -39,7 +39,7 @@
global isVirtualized resmap/isVirtualized | nothing;
global os_version resmap/os | nothing;
global isBusy python:here.isClusterBusy(request);
- global firsttime request/busyfirst |nothing" />
+ global firsttime request/busyfirst | nothing" />
<tal:block tal:condition="firsttime">
<tal:block tal:define="global busywaiting python:True" />
@@ -47,7 +47,7 @@
tal:attributes="content isBusy/refreshurl | string:." />
</tal:block>
- <tal:block tal:define="global busy isBusy/busy |nothing"/>
+ <tal:block tal:define="global busy isBusy/busy | nothing" />
<tal:block tal:condition="busy">
<tal:block tal:define="global busywaiting python:True" />
--- conga/luci/cluster/resource-form-macros 2007/05/30 22:39:28 1.37.2.2
+++ conga/luci/cluster/resource-form-macros 2007/06/07 06:41:05 1.37.2.3
@@ -145,6 +145,8 @@
<div metal:use-macro="here/resource-form-macros/macros/openldap_macro" />
<div metal:use-macro="here/resource-form-macros/macros/postgres-8_macro" />
<div metal:use-macro="here/resource-form-macros/macros/tomcat-5_macro" />
+ <div metal:use-macro="here/resource-form-macros/macros/SAPInstance_macro" />
+ <div metal:use-macro="here/resource-form-macros/macros/SAPDatabase_macro" />
</div>
</div>
@@ -213,6 +215,8 @@
<div metal:use-macro="here/resource-form-macros/macros/openldap_macro" />
<div metal:use-macro="here/resource-form-macros/macros/postgres-8_macro" />
<div metal:use-macro="here/resource-form-macros/macros/tomcat-5_macro" />
+ <div metal:use-macro="here/resource-form-macros/macros/SAPInstance_macro" />
+ <div metal:use-macro="here/resource-form-macros/macros/SAPDatabase_macro" />
</div>
</div>
@@ -1170,6 +1174,14 @@
</form>
</div>
+<div class="rescfg" name="SAPInstance"
+ tal:attributes="id res/name | nothing" metal:define-macro="SAPInstance_macro">
+</div>
+
+<div class="rescfg" name="SAPDatabase"
+ tal:attributes="id res/name | nothing" metal:define-macro="SAPDatabase_macro">
+</div>
+
<div class="rescfg" name="MYSQL"
tal:attributes="id res/name | nothing" metal:define-macro="mysql_macro">
<p class="reshdr">MySQL Configuration</p>
--- conga/luci/cluster/resource_form_handlers.js 2007/03/15 22:08:42 1.34
+++ conga/luci/cluster/resource_form_handlers.js 2007/06/07 06:41:05 1.34.2.1
@@ -233,6 +233,16 @@
return (errors);
}
+function validate_sapinstance(form) {
+ var errors = new Array();
+ return (errors);
+}
+
+function validate_sapinstance(form) {
+ var errors = new Array();
+ return (errors);
+}
+
var required_children = new Array();
required_children['nfsx'] = [ 'nfsc' ];
@@ -256,6 +266,8 @@
form_validators['openldap'] = validate_openldap;
form_validators['mysql'] = validate_mysql;
form_validators['lvm'] = validate_lvm;
+form_validators['SAPInstance'] = validate_sapinstance;
+form_validators['SAPDatabase'] = validate_sapdatabase;
function check_form(form) {
var valfn = form_validators[form.type.value];
--- conga/luci/homebase/form-macros 2007/05/18 02:36:59 1.56.2.1
+++ conga/luci/homebase/form-macros 2007/06/07 06:41:05 1.56.2.2
@@ -67,9 +67,6 @@
<input name="pagetype" type="hidden"
tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
- <input name="absoluteURL" type="hidden"
- tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
-
<div class="hbSubmit" tal:condition="python:userList" id="hbSubmit">
<input name="Submit" type="button" value="Delete This User"
onClick="validateForm(this.form)" />
@@ -137,9 +134,6 @@
<input name="pagetype" type="hidden"
tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
- <input name="absoluteURL" type="hidden"
- tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
-
<div class="hbSubmit" id="hbSubmit">
<input name="Submit" type="button" value="Submit"
onClick="validateForm(this.form)" />
@@ -168,12 +162,12 @@
<script type="text/javascript" src="/luci/homebase/validate_perm.js">
</script>
+
<script type="text/javascript">
set_page_title('Luci ??? homebase ??? Set Luci user permissions');
</script>
- <span
- tal:omit-tag=""
+ <tal:block
tal:define="global perms python:here.getUserPerms();
global systems python:here.getSystems();
global num_clusters python:-1;
@@ -188,25 +182,22 @@
<h2 class="homebase">User Permissions</h2>
- <input name="absoluteURL" type="hidden"
- tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
- <input name="baseURL" type="hidden"
- tal:attributes="value python:data['children'][data['curIndex']]['base_url']" />
-
<input name="pagetype" type="hidden"
tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
- <span tal:condition="python:perms" tal:content="string:Select a User" /><br/>
-
- <select tal:omit-tag="python: not perms" class="homebase" name="userList" onChange="document.location = this.form.baseURL.value + '&user=' + this.form.userList.options[this.form.userList.selectedIndex].text">
- <tal:block tal:define="userlist python: perms.keys().sort()">
- <tal:block tal:repeat="user userlist">
- <option class="homebase"
- tal:content="python:user"
- tal:attributes="value python:user;
- selected python:user == curUser"
- />
- </tal:block>
+ <tal:block tal:condition="python:perms">
+ <span tal:content="string:Select a User" /><br/>
+
+ <select class="homebase" name="userList"
+ onChange="document.location = '/luci/homebase/?pagetype=3&user=' + this.form.userList.options[this.form.userList.selectedIndex].text">
+ <tal:block tal:define="userlist python: perms">
+ <tal:block tal:repeat="user userlist">
+ <option class="homebase"
+ tal:content="python:user"
+ tal:attributes="value python:user;
+ selected python:user == curUser"
+ />
+ </tal:block>
</tal:block>
</select>
@@ -231,7 +222,7 @@
</div>
</tal:block>
- <div tal:omit-tag="" tal:condition="python: systems[1] and len(systems[1]) > 0">
+ <tal:block tal:condition="python: systems[1] and len(systems[1]) > 0">
<h3 class="homebase">Storage Systems</h3>
<div class="hbcheckdiv" tal:repeat="s python: systems[1]">
@@ -245,7 +236,7 @@
/>
<span class="hbText" tal:omit-tag="" tal:content="python:s"/>
</div>
- </div>
+ </tal:block>
<input type="hidden" id="numStorage"
tal:attributes="value python: num_systems + 1" />
@@ -254,9 +245,12 @@
tal:attributes="value python: num_clusters + 1" />
<div class="hbSubmit" id="hbSubmit">
- <input type="button" name="Update Permissions" value="Update Permissions"
+ <input type="button" name="Update Permissions"
+ value="Update Permissions"
onClick="validateForm(this.form)" />
</div>
+
+ </tal:block>
</form>
<div tal:condition="python: blankForm">
@@ -593,9 +587,6 @@
<input name="pagetype" type="hidden"
tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
- <input name="absoluteURL" type="hidden"
- tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
-
<table id="systemsTable" class="systemsTable" border="0" cellspacing="0"
tal:define="
new_systems request/SESSION/add_systems | nothing;
@@ -774,9 +765,6 @@
<input name="pagetype" type="hidden"
tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
- <input name="absoluteURL" type="hidden"
- tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
-
<input name="pass" type="hidden"
tal:attributes="value add_cluster/pass | string:0" />
@@ -937,8 +925,6 @@
<input name="pagetype" type="hidden"
tal:attributes="value request/form/pagetype | request/pagetype | nothing" />
- <input name="absoluteURL" type="hidden"
- tal:attributes="value python:data['children'][data['curIndex']]['absolute_url']" />
<h2 class="homebase">Add an Existing Cluster</h2>
<p class="hbText">Enter one node from the cluster you wish to add to the Luci management interface.</p>
--- conga/luci/homebase/portlet_homebase 2006/11/01 23:04:17 1.8
+++ conga/luci/homebase/portlet_homebase 2007/06/07 06:41:05 1.8.4.1
@@ -13,21 +13,21 @@
<dd class="portletItemSingle">
<ul class="portletCluConfigTree cluConfigTreeLevel0">
<tal:portal repeat="c python:data.get('children',[])">
- <li tal:condition="not: c/currentItem" class="cluConfigTreeItem visualNoMarker">
- <div tal:condition="not: c/currentItem">
- <a class="visualIconPadding"
- tal:attributes="href c/absolute_url;
- title c/Description |nothing"
- tal:content="c/Title|nothing">Title</a>
- </div>
+ <li tal:condition="not:exists:c/currentItem" class="cluConfigTreeItem visualNoMarker">
+ <div>
+ <a class="visualIconPadding"
+ tal:attributes="href c/absolute_url | nothing;
+ title c/Description | nothing"
+ tal:content="c/Title | nothing">Title</a>
+ </div>
</li>
- <li tal:condition="c/currentItem" class="cluConfigTreeCurrentItem visualNoMarker">
- <div tal:condition="c/currentItem">
+ <li tal:condition="exists:c/currentItem" class="cluConfigTreeCurrentItem visualNoMarker">
+ <div>
<a class="visualIconPadding"
- tal:attributes="href c/absolute_url;
- title c/Description |nothing"
- tal:content="c/Title|nothing">Title</a>
+ tal:attributes="href c/absolute_url | nothing;
+ title c/Description | nothing"
+ tal:content="c/Title| nothing">Title</a>
</div>
</li>
</tal:portal>
--- conga/luci/site/luci/Extensions/Attic/LuciClusterInfo.py 2007/05/30 22:06:24 1.1.2.7
+++ conga/luci/site/luci/Extensions/Attic/LuciClusterInfo.py 2007/06/07 06:41:05 1.1.2.8
@@ -13,8 +13,9 @@
from FenceHandler import FENCE_OPTS
from LuciSyslog import get_logger
from LuciDB import resolve_nodename
+from LuciZope import GetReqVars
-from conga_constants import CLUNAME, CLUSTER_CONFIG, CLUSTER_DELETE, \
+from conga_constants import CLUSTER_CONFIG, CLUSTER_DELETE, \
CLUSTER_PROCESS, CLUSTER_RESTART, CLUSTER_START, CLUSTER_STOP, \
FDOM, FDOM_CONFIG, FENCEDEV, NODE, NODE_ACTIVE, \
NODE_ACTIVE_STR, NODE_DELETE, NODE_FENCE, NODE_INACTIVE, \
@@ -23,7 +24,8 @@
PROP_FENCE_TAB, PROP_GENERAL_TAB, PROP_GULM_TAB, PROP_MCAST_TAB, \
PROP_QDISK_TAB, RESOURCE, RESOURCE_CONFIG, RESOURCE_REMOVE, \
SERVICE, SERVICE_DELETE, SERVICE_MIGRATE, SERVICE_RESTART, \
- SERVICE_START, SERVICE_STOP, VM_CONFIG, LUCI_DEBUG_MODE
+ SERVICE_START, SERVICE_STOP, VM_CONFIG, LUCI_DEBUG_MODE, \
+ LUCI_CLUSTER_BASE_URL
luci_log = get_logger()
@@ -207,27 +209,15 @@
def getServicesInfo(self, status, model, req):
svc_map = {}
maplist = list()
+ fvars = GetReqVars(req, [ 'clustername', 'URL' ])
- try:
- baseurl = req['URL']
- if not baseurl:
- raise KeyError, 'is blank'
- except:
- baseurl = '/luci/cluster/index_html'
+ baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
- try:
- nodes = model.getNodes()
- cluname = req['clustername']
- if not cluname:
- raise KeyError, 'is blank'
- except:
- try:
- cluname = req.form['clustername']
- if not cluname:
- raise KeyError, 'is blank'
- except:
- cluname = '[error retrieving cluster name]'
+ cluname = fvars['clustername']
+ if cluname is None:
+ cluname = model.getClusterName()
+ nodes = model.getNodes()
for item in status:
if item['type'] == 'service':
itemmap = {}
@@ -329,44 +319,38 @@
def getServiceInfo(self, status, model, req):
- #set up struct for service config page
- hmap = {}
root_uuid = 'toplevel'
- try:
- baseurl = req['URL']
- if not baseurl:
- raise KeyError, 'is blank'
- except:
- baseurl = '/luci/cluster/index_html'
+ fvars = GetReqVars(req, [ 'clustername', 'servicename', 'URL' ])
+
+ baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
+ if not model:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('getServiceInfo0: no model: %r' % model)
+ return {}
+
+ #set up struct for service config page
+ hmap = {}
try:
+ cluname = fvars['clustername'] or model.getClusterName()
hmap['fdoms'] = get_fdom_names(model)
- except:
+ except Exception, e:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('getServiceInfo1: %r %s' % (e, str(e)))
hmap['fdoms'] = list()
- try:
- cluname = req['clustername']
- if not cluname:
- raise KeyError, 'is blank'
- except KeyError, e:
- try:
- cluname = req.form['clustername']
- if not cluname:
- raise
- except:
- cluname = '[error retrieving cluster name]'
-
hmap['root_uuid'] = root_uuid
# uuids for the service page needed when new resources are created
hmap['uuid_list'] = map(lambda x: make_uuid('resource'), xrange(30))
- try:
- servicename = req['servicename']
- except KeyError, e:
- hmap['resource_list'] = {}
+ servicename = fvars['servicename']
+ if servicename is None:
return hmap
+ if len(status) > 0:
+ nodenames = model.getNodeNames()
+
for item in status:
innermap = {}
if item['type'] == 'service':
@@ -384,19 +368,17 @@
innermap['restarturl'] = '%s?clustername=%s&servicename=%s&pagetype=%s' % (baseurl, cluname, servicename, SERVICE_RESTART)
innermap['delurl'] = '%s?clustername=%s&servicename=%s&pagetype=%s' % (baseurl, cluname, servicename, SERVICE_DELETE)
- #In this case, determine where it can run...
- nodes = model.getNodes()
- for node in nodes:
- if node.getName() != nodename:
+ # In this case, determine where it can run...
+ for node in nodenames:
+ if node != nodename:
starturl = {}
- cur_nodename = node.getName()
- starturl['nodename'] = cur_nodename
- starturl['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_START, cur_nodename)
+ starturl['nodename'] = node
+ starturl['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_START, node)
starturls.append(starturl)
if item.has_key('is_vm') and item['is_vm'] is True:
- migrate_url = { 'nodename': cur_nodename }
- migrate_url['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_MIGRATE, cur_nodename)
+ migrate_url = { 'nodename': node }
+ migrate_url['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_MIGRATE, node)
migrate_url['migrate'] = True
starturls.append(migrate_url)
innermap['links'] = starturls
@@ -406,26 +388,25 @@
innermap['enableurl'] = '%s?clustername=%s&servicename=%s&pagetype=%s' % (baseurl, cluname, servicename, SERVICE_START)
innermap['delurl'] = '%s?clustername=%s&servicename=%s&pagetype=%s' % (baseurl, cluname, servicename, SERVICE_DELETE)
- nodes = model.getNodes()
starturls = list()
- for node in nodes:
+ for node in nodenames:
starturl = {}
- cur_nodename = node.getName()
- starturl['nodename'] = cur_nodename
- starturl['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_START, cur_nodename)
+ starturl['nodename'] = node
+ starturl['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_START, node)
starturls.append(starturl)
if item.has_key('is_vm') and item['is_vm'] is True:
- migrate_url = { 'nodename': cur_nodename }
- migrate_url['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_MIGRATE, cur_nodename)
+ migrate_url = { 'nodename': node }
+ migrate_url['url'] = '%s?clustername=%s&servicename=%s&pagetype=%s&nodename=%s' % (baseurl, cluname, servicename, SERVICE_MIGRATE, node)
migrate_url['migrate'] = True
starturls.append(migrate_url)
innermap['links'] = starturls
hmap['innermap'] = innermap
- #Now build hashes for resources under service.
- #first get service by name from model
+ # Now build hashes for resources under service.
+ # first get service by name from model
+
svc = model.getService(servicename)
try:
hmap['domain'] = svc.getAttribute('domain')
@@ -461,13 +442,12 @@
try:
fdom = model.getFailoverDomainByName(request['fdomname'])
+ fhash['name'] = fdom.getName()
except Exception, e:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('getFdomInfo0: %r %s' % (e, 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'
@@ -490,22 +470,23 @@
return fhash
def getFdomsInfo(self, model, request, clustatus):
+ fvars = GetReqVars(request, [ 'clustername', 'URL' ])
+
+ baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
+ clustername = fvars['clustername']
+ if clustername is None:
+ return {}
+
slist = list()
nlist = list()
- fdomlist = list()
-
for item in clustatus:
if item['type'] == 'node':
nlist.append(item)
elif item['type'] == 'service':
slist.append(item)
- clustername = request['clustername']
- baseurl = request['URL']
- fdoms = model.getFailoverDomains()
- svcs = model.getServices()
-
- for fdom in fdoms:
+ fdomlist = list()
+ for fdom in model.getFailoverDomains():
fdom_map = {}
fdom_name = fdom.getName()
fdom_map['name'] = fdom_name
@@ -524,9 +505,8 @@
else:
fdom_map['restricted'] = False
- nodes = fdom.getChildren()
nodelist = list()
- for node in nodes:
+ for node in fdom.getChildren():
nodesmap = {}
ndname = node.getName()
@@ -548,7 +528,7 @@
fdom_map['nodeslist'] = nodelist
svclist = list()
- for svc in svcs:
+ for svc in model.getServices():
svcname = svc.getName()
for sitem in slist:
if sitem['name'] == svcname:
@@ -557,8 +537,7 @@
svcmap = {}
svcmap['name'] = svcname
svcmap['status'] = sitem['running']
- svcmap['svcurl'] = '%s?pagetype=%s&clustername=%s&servicename=%s' \
- % (baseurl, SERVICE, clustername, svcname)
+ svcmap['svcurl'] = '%s?pagetype=%s&clustername=%s&servicename=%s' % (baseurl, SERVICE, clustername, svcname)
svcmap['location'] = sitem['nodename']
svclist.append(svcmap)
fdom_map['svclist'] = svclist
@@ -567,21 +546,17 @@
return fdomlist
def getClusterInfo(self, model, req):
- try:
- cluname = req[CLUNAME]
- except:
- try:
- cluname = req.form['clustername']
- except:
- try:
- cluname = req.form['clustername']
- except:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('GCI0: unable to determine cluster name')
- return {}
+ fvars = GetReqVars(req, [ 'clustername', 'URL' ])
+
+ baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
+ cluname = fvars['clustername']
+ if cluname is None:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('GCI0: unable to determine cluster name')
+ return {}
clumap = {}
- if model is None:
+ if not model:
try:
model = getModelForCluster(self, cluname)
if not model:
@@ -597,20 +572,22 @@
clumap['totem'] = totem.getAttributes()
prop_baseurl = '%s?pagetype=%s&clustername=%s&' \
- % (req['URL'], CLUSTER_CONFIG, cluname)
+ % (baseurl, CLUSTER_CONFIG, cluname)
basecluster_url = '%stab=%s' % (prop_baseurl, PROP_GENERAL_TAB)
- #needed:
+ # needed:
clumap['basecluster_url'] = basecluster_url
- #name field
+ # name field
clumap['clustername'] = model.getClusterAlias()
- #config version
+ # config version
cp = model.getClusterPtr()
clumap['config_version'] = cp.getConfigVersion()
+
+ # xvmd info
+ clumap['fence_xvmd'] = model.hasFenceXVM()
+
#-------------
#new cluster params - if rhel5
#-------------
-
- clumap['fence_xvmd'] = model.hasFenceXVM()
gulm_ptr = model.getGULMPtr()
if not gulm_ptr:
#Fence Daemon Props
@@ -643,7 +620,8 @@
clumap['gulm'] = False
else:
#-------------
- #GULM params (rhel4 only)
+ # GULM params (RHEL4 only)
+ #-------------
lockserv_list = list()
clunodes = model.getNodes()
gulm_lockservs = map(lambda x: x.getName(), gulm_ptr.getChildren())
@@ -657,7 +635,8 @@
clumap['gulm_lockservers'] = lockserv_list
#-------------
- #quorum disk params
+ # quorum disk params
+ #-------------
quorumd_url = '%stab=%s' % (prop_baseurl, PROP_QDISK_TAB)
clumap['quorumd_url'] = quorumd_url
is_quorumd = model.isQuorumd()
@@ -669,9 +648,8 @@
clumap['device'] = ''
clumap['label'] = ''
- #list struct for heuristics...
+ # list struct for heuristics...
hlist = list()
-
if is_quorumd:
qdp = model.getQuorumdPtr()
interval = qdp.getAttribute('interval')
@@ -699,7 +677,6 @@
clumap['label'] = label
heuristic_kids = qdp.getChildren()
-
for kid in heuristic_kids:
hmap = {}
hprog = kid.getAttribute('program')
@@ -760,25 +737,25 @@
clu_map['minquorum'] = clu['minQuorum']
clu_map['clucfg'] = '%s?pagetype=%s&clustername=%s' \
- % (baseurl, CLUSTER_CONFIG, clustername)
+ % (baseurl, CLUSTER_CONFIG, clustername)
clu_map['restart_url'] = '%s?pagetype=%s&clustername=%s&task=%s' \
- % (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_RESTART)
+ % (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_RESTART)
clu_map['stop_url'] = '%s?pagetype=%s&clustername=%s&task=%s' \
- % (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_STOP)
+ % (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_STOP)
clu_map['start_url'] = '%s?pagetype=%s&clustername=%s&task=%s' \
- % (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_START)
+ % (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_START)
clu_map['delete_url'] = '%s?pagetype=%s&clustername=%s&task=%s' \
- % (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_DELETE)
+ % (baseurl, CLUSTER_PROCESS, clustername, CLUSTER_DELETE)
svc_dict_list = list()
for svc in svclist:
svc_dict = {}
- svc_dict['nodename'] = svc['nodename']
svcname = svc['name']
svc_dict['name'] = svcname
- svc_dict['srunning'] = svc['running']
svc_dict['servicename'] = svcname
+ svc_dict['nodename'] = svc['nodename']
+ svc_dict['srunning'] = svc['running']
if svc.has_key('is_vm') and svc['is_vm'] is True:
target_page = VM_CONFIG
@@ -798,7 +775,7 @@
name = item['name']
nmap['nodename'] = name
cfgurl = '%s?pagetype=%s&clustername=%s&nodename=%s' \
- % (baseurl, NODE, clustername, name)
+ % (baseurl, NODE, clustername, name)
nmap['configurl'] = cfgurl
if item['clustered'] == 'true':
nmap['status'] = NODE_ACTIVE
@@ -815,6 +792,7 @@
infohash = {}
item = None
baseurl = request['URL']
+
nodestate = NODE_ACTIVE
svclist = list()
for thing in status:
@@ -899,13 +877,14 @@
infohash['gulm_lockserver'] = model.isNodeLockserver(nodename)
except:
infohash['gulm_lockserver'] = False
+
# next is faildoms
fdoms = model.getFailoverDomainsForNode(nodename)
for fdom in fdoms:
fdom_dict = {}
fdom_dict['name'] = fdom.getName()
fdomurl = '%s?pagetype=%s&clustername=%s&fdomname=%s' \
- % (baseurl, FDOM_CONFIG, clustername, fdom.getName())
+ % (baseurl, FDOM_CONFIG, clustername, fdom.getName())
fdom_dict['fdomurl'] = fdomurl
fdom_dict_list.append(fdom_dict)
else:
@@ -917,7 +896,6 @@
infohash['d_states'] = None
nodename_resolved = resolve_nodename(self, clustername, nodename)
-
if nodestate == NODE_ACTIVE or nodestate == NODE_INACTIVE:
# call service module on node and find out which daemons are running
try:
@@ -985,6 +963,7 @@
nl_map = {}
name = item['name']
nl_map['nodename'] = name
+
try:
nl_map['gulm_lockserver'] = model.isNodeLockserver(name)
except:
@@ -1012,9 +991,9 @@
nodename_resolved = resolve_nodename(self, clustername, name)
nl_map['logurl'] = '/luci/logs?nodename=%s&clustername=%s' \
- % (nodename_resolved, clustername)
+ % (nodename_resolved, clustername)
- #set up URLs for dropdown menu...
+ # set up URLs for dropdown menu...
if nl_map['status'] == NODE_ACTIVE:
nl_map['jl_url'] = '%s?pagetype=%s&task=%s&nodename=%s&clustername=%s' \
% (baseurl, NODE_PROCESS, NODE_LEAVE_CLUSTER, name, clustername)
@@ -1037,7 +1016,7 @@
nl_map['fence_it_url'] = '%s?pagetype=%s&task=%s&nodename=%s&clustername=%s' \
% (baseurl, NODE_PROCESS, NODE_FENCE, name, clustername)
- #figure out current services running on this node
+ # figure out current services running on this node
svc_dict_list = list()
for svc in svclist:
if svc['nodename'] == name:
@@ -1050,19 +1029,20 @@
svc_dict_list.append(svc_dict)
nl_map['currentservices'] = svc_dict_list
- #next is faildoms
+ # next is faildoms
if model:
fdoms = model.getFailoverDomainsForNode(name)
else:
nl_map['ricci_error'] = True
fdoms = list()
+
fdom_dict_list = list()
for fdom in fdoms:
fdom_dict = {}
fdom_dict['name'] = fdom.getName()
fdomurl = '%s?pagetype=%s&clustername=%s&fdomname=%s' \
- % (baseurl, FDOM_CONFIG, clustername, fdom.getName())
+ % (baseurl, FDOM_CONFIG, clustername, fdom.getName())
fdom_dict['fdomurl'] = fdomurl
fdom_dict_list.append(fdom_dict)
@@ -1079,6 +1059,7 @@
fence_map = {}
fencename = request['fencename']
+
fencedevs = model.getFenceDevices()
for fencedev in fencedevs:
if fencedev.getName().strip() == fencename:
@@ -1090,14 +1071,15 @@
fence_map['pretty_name'] = fencedev.getAgentType()
nodes_used = list()
- nodes = model.getNodes()
- for node in nodes:
+ for node in model.getNodes():
flevels = node.getFenceLevels()
- for flevel in flevels: #These are the method blocks...
+ for flevel in flevels:
+ # These are the method blocks...
kids = flevel.getChildren()
- for kid in kids: #These are actual devices in each level
+ for kid in kids:
+ # These are actual devices in each level
if kid.getName().strip() == fencedev.getName().strip():
- #See if this fd already has an entry for this node
+ # See if this fd already has an entry for this node
found_duplicate = False
for item in nodes_used:
if item['nodename'] == node.getName().strip():
@@ -1122,7 +1104,6 @@
for fd in fds:
if fd.getName().strip() == name:
return fd
-
raise
def getFenceInfo(self, model, request):
@@ -1194,19 +1175,25 @@
if len_levels >= 1:
first_level = levels[0]
kids = first_level.getChildren()
- last_kid_fd = None #This is a marker for allowing multi instances
- #beneath a fencedev
+
+ # This is a marker for allowing multi instances
+ # beneath a fencedev
+ last_kid_fd = None
+
for kid in kids:
instance_name = kid.getName().strip()
try:
fd = getFDForInstance(fds, instance_name)
except:
- fd = None #Set to None in case last time thru loop
+ # Set to None in case last time thru loop
+ fd = None
continue
if fd is not None:
- if fd.isShared() is False: #Not a shared dev...build struct and add
+ if fd.isShared() is False:
+ # Not a shared dev... build struct and add
fencedev = {}
+
try:
fencedev['prettyname'] = FENCE_OPTS[fd.getAgentType()]
except:
@@ -1223,30 +1210,37 @@
kees = kidattrs.keys()
for kee in kees:
if kee == 'name':
- continue #Don't duplicate name attr
+ # Don't duplicate name attr
+ continue
fencedev[kee] = kidattrs[kee]
- #This fencedev struct is complete, and needs to be placed on the
- #level1 Q. Because it is non-shared, we should set last_kid_fd
- #to none.
+
+ # This fencedev struct is complete, and needs
+ # to be placed on the level1 Q. Because it is
+ # non-shared, we should set last_kid_fd to none.
last_kid_fd = None
level1.append(fencedev)
- else: #This dev is shared
- if (last_kid_fd is not None) and (fd.getName().strip() == last_kid_fd['name'].strip()): #just append a new instance struct to last_kid_fd
+ else:
+ # This dev is shared
+ if (last_kid_fd is not None) and (fd.getName().strip() == last_kid_fd['name'].strip()):
+ # just append a new instance struct to last_kid_fd
instance_struct = {}
instance_struct['id'] = str(minor_num)
minor_num = minor_num + 1
kidattrs = kid.getAttributes()
kees = kidattrs.keys()
+
for kee in kees:
- if kee == 'name':
- continue
- instance_struct[kee] = kidattrs[kee]
- #Now just add this struct to last_kid_fd and reset last_kid_fd
+ if kee != 'name':
+ instance_struct[kee] = kidattrs[kee]
+
+ # Now just add this struct to last_kid_fd
+ # and reset last_kid_fd
ilist = last_kid_fd['instance_list']
ilist.append(instance_struct)
- #last_kid_fd = fd
continue
- else: #Shared, but not used above...so we need a new fencedev struct
+ else:
+ # Shared, but not used above...so we need
+ # a new fencedev struct
fencedev = {}
try:
fencedev['prettyname'] = FENCE_OPTS[fd.getAgentType()]
@@ -1268,16 +1262,17 @@
kidattrs = kid.getAttributes()
kees = kidattrs.keys()
for kee in kees:
- if kee == 'name':
- continue
- instance_struct[kee] = kidattrs[kee]
+ if kee != 'name':
+ instance_struct[kee] = kidattrs[kee]
+
inlist.append(instance_struct)
level1.append(fencedev)
last_kid_fd = fencedev
continue
fence_map['level1'] = level1
- #level1 list is complete now, but it is still necessary to build shared1
+ # level1 list is complete now, but it is still
+ # necessary to build shared1
for fd in fds:
isUnique = True
if fd.isShared() is False:
@@ -1299,7 +1294,7 @@
shared1.append(shared_struct)
fence_map['shared1'] = shared1
- #YUK: This next section violates the DRY rule, :-(
+ # YUK: This next section violates the DRY rule, :-(
if len_levels >= 2:
second_level = levels[1]
kids = second_level.getChildren()
@@ -1475,33 +1470,28 @@
def getVMInfo(self, model, request):
vm_map = {}
+ fvars = GetReqVars(request, [ 'clustername', 'servicename', 'URL' ])
- try:
- clustername = request['clustername']
- except Exception, e:
- try:
- clustername = model.getName()
- except:
- return vm_map
+ baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
- svcname = None
- try:
- svcname = request['servicename']
- except Exception, e:
- try:
- vmname = request.form['servicename']
- except Exception, e:
- return vm_map
+ clustername = fvars['clustername']
+ if clustername is None:
+ clustername = model.getName()
+
+ svcname = fvars['servicename']
+ if svcname is None:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('getVMInfo0: no service name')
+ return vm_map
vm_map['formurl'] = '%s?clustername=%s&pagetype=29&servicename=%s' \
- % (request['URL'], clustername, svcname)
+ % (baseurl, clustername, svcname)
try:
- vm = model.retrieveVMsByName(vmname)
- except:
+ vm = model.retrieveVMsByName(svcname)
+ except Exception, e:
if LUCI_DEBUG_MODE is True:
- luci_log.debug('An error occurred while attempting to get VM %s' \
- % vmname)
+ luci_log.debug('getVMInfo1: %s: %r %s' % (svcname, e, str(e)))
return vm_map
attrs = vm.getAttributes()
@@ -1511,19 +1501,16 @@
return vm_map
-def getResourcesInfo(model, request):
+def getResourcesInfo(self, model, request):
resList = list()
- baseurl = request['URL']
+ fvars = GetReqVars(request, [ 'clustername', 'URL' ])
+
+ baseurl = fvars['URL'] or LUCI_CLUSTER_BASE_URL
+ if fvars['clustername'] is None:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('getResourcesInfo missing cluster name')
+ return resList
- try:
- cluname = request['clustername']
- except:
- try:
- cluname = request.form['clustername']
- except:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('getResourcesInfo missing cluster name')
- return resList
#CALL LUCICLUSTERINFO
return resList
--- conga/luci/site/luci/Extensions/Attic/LuciDB.py 2007/05/30 22:06:24 1.1.2.14
+++ conga/luci/site/luci/Extensions/Attic/LuciDB.py 2007/06/07 06:41:05 1.1.2.15
@@ -669,7 +669,7 @@
% (clustername, e, str(e)))
return None
- if isAdmin(self) or cluster_permission_check(self, cluster_obj):
+ if cluster_permission_check(self, cluster_obj):
return cluster_obj
return None
@@ -713,10 +713,19 @@
return allowed_systems(storage)
def check_clusters(self, clusters):
- user = getSecurityManager().getUser()
- return filter(lambda x: user.has_permission('View', x[1]), clusters)
+ ret = []
+ try:
+ user = getSecurityManager().getUser()
+ ret = filter(lambda x: user.has_permission('View', x[1]), clusters)
+ except Exception, e:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('CC0: %r %s' % (e, str(e)))
+ return ret
+
+def cluster_permission_check(self, cluster):
+ if isAdmin(self):
+ return True
-def cluster_permission_check(cluster):
try:
user = getSecurityManager().getUser()
if user.has_permission('View', cluster[1]):
@@ -736,8 +745,11 @@
def getRicciAgent(self, clustername, exclude_names=None, exclude_busy=False):
try:
- perm = cluster_permission_check(clustername)
+ perm = cluster_permission_check(self, clustername)
if not perm:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('GRA0: no permission for %s' \
+ % clustername)
return None
except Exception, e:
if LUCI_DEBUG_MODE is True:
--- conga/luci/site/luci/Extensions/Attic/LuciZope.py 2007/05/30 22:06:24 1.1.2.8
+++ conga/luci/site/luci/Extensions/Attic/LuciZope.py 2007/06/07 06:41:05 1.1.2.9
@@ -123,7 +123,6 @@
if LUCI_DEBUG_MODE is True:
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 = {}
--- conga/luci/site/luci/Extensions/Attic/RicciQueries.py 2007/05/30 05:54:02 1.1.2.6
+++ conga/luci/site/luci/Extensions/Attic/RicciQueries.py 2007/06/07 06:41:05 1.1.2.7
@@ -743,12 +743,8 @@
if not ret:
return None
- cur = ret
- while len(cur.childNodes) > 0:
- for i in cur.childNodes:
- if i.nodeType == xml.dom.Node.ELEMENT_NODE:
- if i.nodeName == 'var' and i.getAttribute('name') == 'cluster.conf':
- return i.childNodes[1].cloneNode(True)
- else:
- cur = i
+ var_nodes = ret.getElementsByTagName('var')
+ for i in var_nodes:
+ if i.getAttribute('name') == 'cluster.conf':
+ return i.childNodes[0]
return None
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2007/05/30 22:06:24 1.255.2.12
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2007/06/07 06:41:05 1.255.2.13
@@ -93,16 +93,18 @@
same_node_passwds = False
try:
- same_node_passwds = 'allSameCheckBox' in request.form
+ same_node_passwds = request.form.has_key('allSameCheckBox')
except:
same_node_passwds = False
- add_cluster = { 'name': clustername,
- 'shared_storage': shared_storage,
- 'download_pkgs': download_pkgs,
- 'cluster_os': cluster_os,
- 'identical_passwds': same_node_passwds,
- 'check_certs': check_certs }
+ add_cluster = {
+ 'name': clustername,
+ 'shared_storage': shared_storage,
+ 'download_pkgs': download_pkgs,
+ 'cluster_os': cluster_os,
+ 'identical_passwds': same_node_passwds,
+ 'check_certs': check_certs
+ }
system_list, incomplete, errors, messages = parseHostForm(request, check_certs)
add_cluster['nodes'] = system_list
@@ -288,7 +290,8 @@
errors.append('Unable to generate cluster creation ricci command')
return (False, { 'errors': errors, 'messages': messages })
- error = manageCluster(self, clustername, add_cluster['nodes'], add_cluster['cluster_os'])
+ error = manageCluster(self, clustername,
+ add_cluster['nodes'], add_cluster['cluster_os'])
if error:
errors.append('Unable to create the cluster Luci database objects')
request.SESSION.set('create_cluster', add_cluster)
@@ -305,6 +308,7 @@
errors.append(msg)
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose(msg)
+
if len(batch_id_map) == 0:
request.SESSION.set('create_cluster', add_cluster)
return (False, { 'errors': errors, 'messages': messages })
@@ -416,20 +420,21 @@
except:
same_node_passwds = False
- add_cluster = { 'name': clustername,
- 'shared_storage': shared_storage,
- 'download_pkgs': download_pkgs,
- 'cluster_os': cluster_os,
- 'identical_passwds': same_node_passwds,
- 'check_certs': check_certs }
+ add_cluster = {
+ 'name': clustername,
+ 'shared_storage': shared_storage,
+ 'download_pkgs': download_pkgs,
+ 'cluster_os': cluster_os,
+ 'identical_passwds': same_node_passwds,
+ 'check_certs': check_certs
+ }
system_list, incomplete, errors, messages = parseHostForm(request, check_certs)
add_cluster['nodes'] = system_list
-
for i in system_list:
cur_system = system_list[i]
- cur_host_trusted = 'trusted' in cur_system
+ cur_host_trusted = cur_system.has_key('trusted')
cur_host = cur_system['host']
try:
@@ -595,7 +600,8 @@
luci_log.debug_verbose('VACN12: %s: %r %s' \
% (cur_host, e, str(e)))
- errors.append('Unable to initiate cluster join for node "%s"' % cur_host)
+ errors.append('Unable to initiate cluster join for node "%s"' \
+ % cur_host)
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('VACN13: %s: %r %s' \
% (cur_host, e, str(e)))
@@ -879,7 +885,8 @@
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'])
+ 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:
@@ -3174,12 +3181,8 @@
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('GRI1: missing res name')
return {}
-
- #cluname = fvars['clustername']
- #baseurl = fvars['URL']
- #CALL
- return {}
-
+ from LuciClusterInfo import getResourceInfo as gri
+ return gri(model, name)
def serviceRestart(self, rc, req):
from LuciClusterActions import RestartCluSvc
--- conga/luci/site/luci/Extensions/conga_constants.py 2007/06/05 05:37:01 1.39.2.7
+++ conga/luci/site/luci/Extensions/conga_constants.py 2007/06/07 06:41:05 1.39.2.8
@@ -100,6 +100,7 @@
PLONE_ROOT = 'luci'
CLUSTER_FOLDER_PATH = '/luci/systems/cluster/'
STORAGE_FOLDER_PATH = '/luci/systems/storage/'
+LUCI_CLUSTER_BASE_URL = '/luci/cluster/index_html'
# Node states
NODE_ACTIVE = '0'
--- conga/luci/site/luci/Extensions/ClusterModel/Attic/ModelBuilder.py 2007/05/30 05:54:02 1.1.2.6
+++ conga/luci/site/luci/Extensions/ClusterModel/Attic/ModelBuilder.py 2007/06/07 06:41:05 1.1.2.7
@@ -505,6 +505,9 @@
#Find the clusternodes obj and return get_children
return self.clusternodes_ptr.getChildren()
+ def getNodeNames(self):
+ return map(lambda x: x.getName(), self.clusternodes_ptr.getChildren())
+
def addNode(self, clusternode):
self.clusternodes_ptr.addChild(clusternode)
if self.usesMulticast is True:
reply other threads:[~2007-06-07 6:41 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070607064110.21662.qmail@sourceware.org \
--to=rmccabe@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.