[Cluster-devel] conga/luci cluster/cluster_svc-macros cluster/ ...
rmccabe at sourceware.org
rmccabe at sourceware.org
Wed Mar 5 23:09:00 UTC 2008
CVSROOT: /cvs/cluster
Module name: conga
Changes by: rmccabe at sourceware.org 2008-03-05 23:08:58
Modified files:
luci/cluster : cluster_svc-macros resource-form-macros
resource_form_handlers.js
luci/site/luci/Extensions: LuciClusterActions.py LuciDB.py
LuciValidation.py LuciZope.py
ResourceHandler.py RicciQueries.py
cluster_adapters.py
conga_constants.py
Added files:
luci/site/luci/Extensions/ClusterModel: OracleDB.py SybaseASE.py
Log message:
Add Sybase resource agent support
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/cluster_svc-macros.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource-form-macros.diff?cvsroot=cluster&r1=1.47&r2=1.48
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource_form_handlers.js.diff?cvsroot=cluster&r1=1.43&r2=1.44
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterActions.py.diff?cvsroot=cluster&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&r1=1.11&r2=1.12
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciValidation.py.diff?cvsroot=cluster&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZope.py.diff?cvsroot=cluster&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ResourceHandler.py.diff?cvsroot=cluster&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/RicciQueries.py.diff?cvsroot=cluster&r1=1.11&r2=1.12
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.281&r2=1.282
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/conga_constants.py.diff?cvsroot=cluster&r1=1.49&r2=1.50
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/OracleDB.py.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/SybaseASE.py.diff?cvsroot=cluster&r1=NONE&r2=1.1
--- conga/luci/cluster/cluster_svc-macros 2008/02/27 20:09:19 1.5
+++ conga/luci/cluster/cluster_svc-macros 2008/03/05 23:08:57 1.6
@@ -617,6 +617,9 @@
<tal:block tal:condition="python: type == 'SAPDatabase'">
<div metal:use-macro="here/resource-form-macros/macros/SAPDatabase_macro" />
</tal:block>
+ <tal:block tal:condition="python: type == 'ASEHAagent'">
+ <div metal:use-macro="here/resource-form-macros/macros/ASEHAagent_macro" />
+ </tal:block>
</div>
<div metal:define-macro="service-config-head-macro" tal:omit-tag="">
--- conga/luci/cluster/resource-form-macros 2008/01/02 20:52:22 1.47
+++ conga/luci/cluster/resource-form-macros 2008/03/05 23:08:57 1.48
@@ -146,6 +146,7 @@
<option name="TOMCAT-5" value="TOMCAT-5">Tomcat 5</option>
<option name="SAPDatabase" value="SAPDatabase">SAP Database</option>
<option name="SAPInstance" value="SAPInstance">SAP Instance</option>
+ <option name="ASEHAagent" value="ASEHAagent">Sybase ASE Failover Instance</option>
</select>
</form>
@@ -167,6 +168,7 @@
<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 metal:use-macro="here/resource-form-macros/macros/ASEHAagent_macro" />
</div>
</div>
@@ -195,6 +197,7 @@
<option name="TOMCAT-5" value="TOMCAT-5">Tomcat 5</option>
<option name="SAPDatabase" value="SAPDatabase">SAP Database</option>
<option name="SAPInstance" value="SAPInstance">SAP Instance</option>
+ <option name="ASEHAagent" value="ASEHAagent">Sybase ASE Failover Instance</option>
</select>
</form>
@@ -240,6 +243,7 @@
<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 metal:use-macro="here/resource-form-macros/macros/ASEHAagent_macro" />
</div>
</div>
@@ -312,7 +316,7 @@
src="/luci/cluster/resource_form_handlers.js">
</script>
- <tal:block tal:define="global resourcename request/resourcename | request/form/resourceName | nothing" />
+ <tal:block tal:define="global resourcename request/resourcename | request/form/resourcename | nothing" />
<tal:block tal:condition="resourcename"
tal:define="
@@ -435,7 +439,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing"/>
@@ -587,7 +591,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -709,7 +713,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -834,7 +838,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -918,7 +922,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -1011,7 +1015,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -1104,7 +1108,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -1198,7 +1202,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -1270,7 +1274,7 @@
<tr class="systemsTable">
<td class="systemsTable">SAP Instance Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -1314,6 +1318,141 @@
</form>
</div>
+<div class="rescfg" name="ASEHAagent"
+ tal:attributes="id res/name | nothing" metal:define-macro="ASEHAagent_macro">
+ <p class="reshdr">Sybase ASE Failover Instance Configuration</p>
+
+ <form method="post"
+ tal:attributes="name res/parent_uuid | nothing"
+ tal:define="editDisabled resourceIsRef | nothing">
+
+ <input name="immutable" type="hidden" value="true"
+ tal:condition="editDisabled" />
+
+ <input name="edit" type="hidden" value="true"
+ tal:condition="python: ptype == '33' and True or False" />
+
+ <input name="pagetype" type="hidden"
+ tal:attributes="value python: ptype" />
+
+ <input name="global" type="hidden"
+ tal:attributes="value resourceIsRef | nothing" />
+
+ <input name="parent_uuid" type="hidden"
+ tal:attributes="value res/parent_uuid | nothing" />
+
+ <input name="uuid" type="hidden"
+ tal:attributes="value res/uuid | nothing" />
+
+ <input name="tree_level" type="hidden"
+ tal:attributes="value res/indent_ctr | string:0" />
+
+ <input name="clustername" type="hidden"
+ tal:attributes="
+ value request/clustername | request/form/clustername | nothing" />
+
+ <input name="oldname" type="hidden"
+ tal:attributes="value res/name | nothing" />
+
+ <input name="type" type="hidden" value="ASEHAagent" />
+
+ <table class="systemsTable">
+ <tr class="systemsTable">
+ <td class="systemsTable">Instance Name</td>
+ <td class="systemsTable">
+ <input type="text" size="20" name="resourcename"
+ tal:attributes="
+ disabled python: editDisabled;
+ value res/name | nothing" />
+ </td>
+ </tr>
+
+ <tr class="systemsTable">
+ <td class="systemsTable">
+ <span title="">ASE server name</span>
+ </td>
+ <td class="systemsTable">
+ <input type="text" size="20" name="server_name"
+ tal:attributes="
+ disabled python: editDisabled;
+ value res/attrs/server_name | nothing" />
+ </td>
+ </tr>
+
+ <tr class="systemsTable">
+ <td class="systemsTable">
+ <span title="">SYBASE home directory</span>
+ </td>
+ <td class="systemsTable">
+ <input type="text" size="20" name="sybase_home"
+ tal:attributes="
+ disabled python: editDisabled;
+ value res/attrs/sybase_home | nothing" />
+ </td>
+ </tr>
+
+ <tr class="systemsTable">
+ <td class="systemsTable">
+ <span title="">Login file</span>
+ </td>
+ <td class="systemsTable">
+ <input type="text" size="20" name="login_file"
+ tal:attributes="
+ disabled python: editDisabled;
+ value res/attrs/login_file | nothing" />
+ </td>
+ </tr>
+ <tr class="systemsTable">
+ <td class="systemsTable">Interfaces file</td>
+ <td class="systemsTable">
+ <input type="text" size="20" name="interfaces_file"
+ tal:attributes="
+ disabled python: editDisabled;
+ value res/attrs/interfaces_file | nothing" />
+ </td>
+ </tr>
+ <tr class="systemsTable">
+ <td class="systemsTable">SYBASE_ASE directory name</td>
+ <td class="systemsTable">
+ <input type="text" size="20" name="sybase_ase"
+ tal:attributes="
+ disabled python: editDisabled;
+ value res/attrs/sybase_ase | nothing" />
+ </td>
+ </tr>
+ <tr class="systemsTable">
+ <td class="systemsTable">SYBASE_OCS directory name</td>
+ <td class="systemsTable">
+ <input type="text" size="20" name="sybase_ocs"
+ tal:attributes="
+ disabled python: editDisabled;
+ value res/attrs/sybase_ocs | nothing" />
+ </td>
+ </tr>
+ <tr class="systemsTable">
+ <td class="systemsTable">Sybase user</td>
+ <td class="systemsTable">
+ <input type="text" size="20" name="sybase_user"
+ tal:attributes="
+ disabled python: editDisabled;
+ value res/attrs/sybase_user | nothing" />
+ </td>
+ </tr>
+ <tr class="systemsTable">
+ <td class="systemsTable">Deep probe timeout</td>
+ <td class="systemsTable">
+ <input type="text" size="20" name="deep_probe_timeout"
+ tal:attributes="
+ disabled python: editDisabled;
+ value res/attrs/deep_probe_timeout | nothing" />
+ </td>
+ </tr>
+
+ </table>
+ <div metal:use-macro="here/resource-form-macros/macros/res_form_footer" />
+ </form>
+</div>
+
<div class="rescfg" name="SAPDatabase"
tal:attributes="id res/name | nothing" metal:define-macro="SAPDatabase_macro">
@@ -1357,7 +1496,7 @@
<tr class="systemsTable">
<td class="systemsTable">SAP Database Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -1490,7 +1629,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -1583,7 +1722,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -1687,7 +1826,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -1742,7 +1881,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
@@ -1807,7 +1946,7 @@
<tr class="systemsTable">
<td class="systemsTable">Name</td>
<td class="systemsTable">
- <input type="text" size="20" name="resourceName"
+ <input type="text" size="20" name="resourcename"
tal:attributes="
disabled python: editDisabled;
value res/name | nothing" />
--- conga/luci/cluster/resource_form_handlers.js 2008/02/05 19:32:04 1.43
+++ conga/luci/cluster/resource_form_handlers.js 2008/03/05 23:08:57 1.44
@@ -250,6 +250,11 @@
return (errors);
}
+function validate_sybase(form) {
+ var errors = new Array();
+ return (errors);
+}
+
function validate_sapdatabase(form) {
var errors = new Array();
@@ -295,6 +300,7 @@
form_validators['lvm'] = validate_lvm;
form_validators['SAPInstance'] = validate_sapinstance;
form_validators['SAPDatabase'] = validate_sapdatabase;
+form_validators['ASEHAagent'] = validate_sybase;
function check_form(form) {
var valfn = form_validators[form.type.value];
@@ -302,11 +308,11 @@
return (-1);
var errors = valfn(form);
if (form.type.value != 'ip') {
- if (!form.resourceName || str_is_blank(form.resourceName.value)) {
+ if (!form.resourcename || str_is_blank(form.resourcename.value)) {
errors.push('No resource name was given.');
- set_form_err(form.resourceName);
+ set_form_err(form.resourcename);
} else
- clr_form_err(form.resourceName);
+ clr_form_err(form.resourcename);
}
return (errors);
--- conga/luci/site/luci/Extensions/LuciClusterActions.py 2008/01/23 04:34:09 1.9
+++ conga/luci/site/luci/Extensions/LuciClusterActions.py 2008/03/05 23:08:58 1.10
@@ -12,7 +12,7 @@
from LuciDB import set_node_flag, getRicciAgent, \
getClusterNode, getStorageNode, NodeBusy, \
- setNodeStatus, resolve_nodename, \
+ setNodeStatus, resolve_nodename, getCluster, \
delCluster, delClusterSystem, \
CLUSTER_NODE_NEED_AUTH
@@ -280,6 +280,8 @@
% (nodename_resolved, clustername))
return None
+ cluster_obj = getCluster(self, clustername)
+
try:
model.deleteNodeByName(nodename.lower())
except Exception, e:
@@ -306,7 +308,7 @@
return None
try:
- ret = delClusterSystem(self, clustername, nodename_resolved)
+ ret = delClusterSystem(self, cluster_obj, nodename_resolved)
if ret is not None:
raise Exception, ret
except Exception, e:
@@ -332,6 +334,8 @@
nodename_resolved,
delete_cluster=False):
+ cluster_obj = getCluster(self, clustername)
+
# We need to get a node name other than the node
# to be deleted, then delete the node from the cluster.conf
# and propogate it. We will need two ricci agents for this task,
@@ -405,7 +409,7 @@
return None
try:
- ret = delClusterSystem(self, clustername, nodename_resolved)
+ ret = delClusterSystem(self, cluster_obj, nodename_resolved)
if ret is not None:
raise Exception, ret
except Exception, e:
@@ -529,15 +533,6 @@
luci_log.debug_verbose('ClusterDelete0: %r %s' % (e, str(e)))
return None
- # Try to stop all the cluster nodes before deleting any.
- num_errors = ClusterStop(self, model, delete=False)
- if num_errors > 0:
- if LUCI_DEBUG_MODE is True:
- luci_log.debug_verbose('ClusterDelete1: %s: %d errors' \
- % (clustername, num_errors))
- return None
-
- # If the cluster is stopped, delete all of the nodes.
num_errors = ClusterStop(self, model, delete=True)
if num_errors > 0:
if LUCI_DEBUG_MODE is True:
--- conga/luci/site/luci/Extensions/LuciDB.py 2008/02/06 21:15:06 1.11
+++ conga/luci/site/luci/Extensions/LuciDB.py 2008/03/05 23:08:58 1.12
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2007 Red Hat, Inc.
+# Copyright (C) 2006-2008 Red Hat, Inc.
#
# This program is free software; you can redistribute
# it and/or modify it under the terms of version 2 of the
@@ -667,10 +667,11 @@
error_list = list()
for i in csystems:
- err = delClusterSystem(self, cluster, i[0])
+ cur_sysname = str(i[0])
+ err = delClusterSystem(self, cluster, cur_sysname)
if err:
error_list.append('Unable to delete the cluster system %s: %s\n' \
- % (i[0], err))
+ % (cur_sysname, err))
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('delCluSystems2: %s' % err)
return ''.join(error_list)
--- conga/luci/site/luci/Extensions/LuciValidation.py 2008/02/08 21:47:56 1.8
+++ conga/luci/site/luci/Extensions/LuciValidation.py 2008/03/05 23:08:58 1.9
@@ -332,7 +332,7 @@
try:
if res_type == 'ip':
- dummy_form['resourceName'] = dummy_form['ip_address']
+ dummy_form['resourcename'] = dummy_form['ip_address']
except Exception, e:
if LUCI_DEBUG_MODE is True:
luci_log.debug_verbose('vSA3a: type is ip but no addr: %r %s' \
@@ -341,7 +341,7 @@
try:
if dummy_form.has_key('immutable'):
- newRes = model.getResourceByName(dummy_form['resourceName'])
+ newRes = model.getResourceByName(dummy_form['resourcename'])
resObj = RefObject(newRes)
resObj.setRef(newRes.getName())
else:
@@ -470,6 +470,8 @@
try:
res = create_resource(res_type, request.form, model)
except Exception, e:
+ if LUCI_DEBUG_MODE is True:
+ luci_log.debug_verbose('VRA1: create res: %r %s' % (e, str(e)))
return (False, { 'errors': e[0] } )
resname = ''
--- conga/luci/site/luci/Extensions/LuciZope.py 2008/02/08 21:47:56 1.9
+++ conga/luci/site/luci/Extensions/LuciZope.py 2008/03/05 23:08:58 1.10
@@ -148,6 +148,21 @@
ret[i] = pval
return ret
+def GetFormVars(req, varlist):
+ ret = {}
+ from types import ListType
+
+ for i in varlist:
+ pval = None
+ if req and req.has_key(i):
+ pval = req[i]
+ if type(req[i]) is not ListType:
+ pval = req[i].strip()
+ if not pval:
+ pval = None
+ ret[i] = pval
+ return ret
+
def getClusterURL(self, request, model):
try:
clustername = request['clustername'].strip()
--- conga/luci/site/luci/Extensions/ResourceHandler.py 2008/01/23 04:34:09 1.6
+++ conga/luci/site/luci/Extensions/ResourceHandler.py 2008/03/05 23:08:58 1.7
@@ -21,6 +21,10 @@
from ClusterModel.MySQL import MySQL
from ClusterModel.SAPDatabase import SAPDatabase
from ClusterModel.SAPInstance import SAPInstance
+from ClusterModel.OracleDB import OracleDB
+from ClusterModel.SybaseASE import SybaseASE
+
+from LuciZope import GetFormVars
from LuciSyslog import get_logger
from conga_constants import LUCI_DEBUG_MODE
@@ -736,23 +740,77 @@
luci_log.debug_verbose('addSAPI1: %s %s' % (param, err))
return errors
+def config_resource(params, res, rname, form):
+ errors = list()
+
+ fvar = GetFormVars(form, map(lambda x: x[0], params))
+ for i in params:
+ name = i[0]
+ val = fvar[name]
+ required = i[2]
+ default_val = i[3]
+
+ if val is None:
+ if required is True:
+ if default_val is None:
+ errors.append('No value for %s was given for resource "%s"' % (i[1], rname))
+ else:
+ res.addAttribute(name, default_val)
+ else:
+ try:
+ res.removeAttribute(name)
+ except:
+ pass
+ else:
+ res.addAttribute(name, val)
+ return errors
+
+def addSybaseASE(res, rname, form, model):
+ # parameter (str), short desc (str), required (bool), default (str or None)
+ params = (
+ ('sybase_home', 'SYBASE home directory', True, None),
+ ('server_name', 'ASE server name', True, None),
+ ('login_file', 'Login file', True, None),
+ ('interfaces_file', 'Interfaces file', True, None),
+ ('sybase_ase', 'SYBASE_ASE directory name', True, 'ASE-15_0'),
+ ('sybase_ocs', 'SYBASE_OCS directory name', True, 'OCS-15_0'),
+ ('sybase_user', 'Sybase user', True, 'sybase'),
+ ('shutdown_timeout', 'Shutdown timeout value', True, '0'),
+ ('start_timeout', 'Start timeout value', True, '0'),
+ ('deep_probe_timeout', 'Deep probe timeout value', True, '0')
+ )
+ errors = config_resource(params, res, rname, form)
+ return errors
+
+def addOracleDB(res, rname, form, model):
+ params = (
+ ('user', 'Oracle User Name', True, None),
+ ('home', 'Oracle Home Directory', True, None),
+ ('type', 'Oracle Installation Type', True, None),
+ ('vhost', 'Virtual Hostname', False, None)
+ )
+ errors = config_resource(params, res, rname, form)
+ return errors
+
resource_table = {
- 'ip': [ addIp, Ip ],
- 'fs': [ addFs, Fs ],
- 'gfs': [ addClusterfs, Clusterfs ],
- 'nfsm': [ addNetfs, Netfs ],
- 'nfsx': [ addNFSExport, NFSExport ],
- 'nfsc': [ addNFSClient, NFSClient ],
- 'scr': [ addScript, Script ],
- 'smb': [ addSamba, Samba ],
- 'tomcat-5': [ addTomcat5, Tomcat5 ],
- 'postgres-8': [ addPostgres8, Postgres8 ],
- 'apache': [ addApache, Apache ],
- 'openldap': [ addOpenLDAP, OpenLDAP ],
- 'lvm': [ addLVM, LVM ],
- 'mysql': [ addMySQL, MySQL ],
- 'SAPDatabase': [ addSAPDatabase, SAPDatabase ],
- 'SAPInstance': [ addSAPInstance, SAPInstance ]
+ 'ip': ( addIp, Ip ),
+ 'fs': ( addFs, Fs ),
+ 'gfs': ( addClusterfs, Clusterfs ),
+ 'nfsm': ( addNetfs, Netfs ),
+ 'nfsx': ( addNFSExport, NFSExport ),
+ 'nfsc': ( addNFSClient, NFSClient ),
+ 'scr': ( addScript, Script ),
+ 'smb': ( addSamba, Samba ),
+ 'tomcat-5': ( addTomcat5, Tomcat5 ),
+ 'postgres-8': ( addPostgres8, Postgres8 ),
+ 'apache': ( addApache, Apache ),
+ 'openldap': ( addOpenLDAP, OpenLDAP ),
+ 'lvm': ( addLVM, LVM ),
+ 'mysql': ( addMySQL, MySQL ),
+ 'SAPDatabase': ( addSAPDatabase, SAPDatabase ),
+ 'SAPInstance': ( addSAPInstance, SAPInstance ),
+ 'oracledb': ( addOracleDB, OracleDB ),
+ 'ASEHAagent': ( addSybaseASE, SybaseASE )
}
def create_resource(res_type, form, model):
@@ -779,9 +837,9 @@
res = resource_table[res_type][1]()
if res_type != 'ip':
- if not form.has_key('resourceName') or not form['resourceName'].strip():
+ if not form.has_key('resourcename') or not form['resourcename'].strip():
raise Exception, [ 'All resources must have a unique name.' ]
- rname = form['resourceName'].strip()
+ rname = form['resourcename'].strip()
res.addAttribute('name', rname)
else:
rname = form['ip_address'].strip()
--- conga/luci/site/luci/Extensions/RicciQueries.py 2008/01/25 00:36:59 1.11
+++ conga/luci/site/luci/Extensions/RicciQueries.py 2008/03/05 23:08:58 1.12
@@ -121,7 +121,6 @@
batch.append('</module>')
return ''.join(batch)
-## return minidom.parseString(''.join(batch)).firstChild
def createClusterBatch( os_str,
cluster_name,
--- conga/luci/site/luci/Extensions/cluster_adapters.py 2008/01/25 00:36:59 1.281
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2008/03/05 23:08:58 1.282
@@ -24,7 +24,7 @@
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, FENCEDEV, \
+ CLUSTER_DELETE2, DISABLE_SVC_TASK, ENABLE_SVC_TASK, FDOM, FENCEDEV, \
FENCEDEV_NODE_CONFIG, FENCEDEVS, FLAG_DESC, INSTALL_TASK, CLUSTER_PROCESS, \
LAST_STATUS, LUCI_DEBUG_MODE, NODE, NODE_ADD, NODE_DELETE, \
NODE_FENCE, NODE_FORCE_DELETE, NODE_JOIN_CLUSTER, NODE_LEAVE_CLUSTER, \
@@ -1271,6 +1271,12 @@
% (baseurl, CLUSTER_PROCESS, cluname, CLUSTER_START))
return
elif task == CLUSTER_DELETE:
+ from LuciClusterActions import ClusterStop
+ ClusterStop(self, model)
+ request.RESPONSE.redirect('%s?pagetype=%s&clustername=%s&task=%s&busyfirst=true' \
+ % (baseurl, CLUSTER_PROCESS, cluname, CLUSTER_DELETE2))
+ return
+ elif task == CLUSTER_DELETE2:
from LuciClusterActions import ClusterDelete
ret = ClusterDelete(self, model)
if LUCI_DEBUG_MODE is True:
--- conga/luci/site/luci/Extensions/conga_constants.py 2008/02/08 21:47:56 1.49
+++ conga/luci/site/luci/Extensions/conga_constants.py 2008/03/05 23:08:58 1.50
@@ -64,6 +64,7 @@
CLUSTER_START = '1001'
CLUSTER_RESTART = '1002'
CLUSTER_DELETE = '1003'
+CLUSTER_DELETE2 = '1004'
# Node tasks
NODE_LEAVE_CLUSTER = '100'
/cvs/cluster/conga/luci/site/luci/Extensions/ClusterModel/OracleDB.py,v --> standard output
revision 1.1
--- conga/luci/site/luci/Extensions/ClusterModel/OracleDB.py
+++ - 2008-03-05 23:09:00.121552000 +0000
@@ -0,0 +1,18 @@
+# Copyright (C) 2008 Red Hat, Inc.
+#
+# This program is free software; you can redistribute
+# it and/or modify it under the terms of version 2 of the
+# GNU General Public License as published by the
+# Free Software Foundation.
+
+from BaseResource import BaseResource
+from gettext import gettext as _
+
+TAG_NAME = 'oracledb'
+RESOURCE_TYPE = _('Oracle 10g Failover Instance')
+
+class OracleDB(BaseResource):
+ def __init__(self):
+ BaseResource.__init__(self)
+ self.TAG_NAME = TAG_NAME
+ self.resource_type = RESOURCE_TYPE
/cvs/cluster/conga/luci/site/luci/Extensions/ClusterModel/SybaseASE.py,v --> standard output
revision 1.1
--- conga/luci/site/luci/Extensions/ClusterModel/SybaseASE.py
+++ - 2008-03-05 23:09:00.215586000 +0000
@@ -0,0 +1,18 @@
+# Copyright (C) 2008 Red Hat, Inc.
+#
+# This program is free software; you can redistribute
+# it and/or modify it under the terms of version 2 of the
+# GNU General Public License as published by the
+# Free Software Foundation.
+
+from BaseResource import BaseResource
+from gettext import gettext as _
+
+TAG_NAME = 'ASEHAagent'
+RESOURCE_TYPE = _('Sybase ASE Failover Instance')
+
+class SybaseASE(BaseResource):
+ def __init__(self):
+ BaseResource.__init__(self)
+ self.TAG_NAME = TAG_NAME
+ self.resource_type = RESOURCE_TYPE
More information about the Cluster-devel
mailing list