CVSROOT:        /cvs/cluster
Module name:    conga
Branch:         RHEL5
Changes by:     [EMAIL PROTECTED]       2008-03-12 15:13:13

Modified files:
        .              : conga.spec.in.in 
        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 
        luci/site/luci/Extensions/ClusterModel: ModelBuilder.py 
Added files:
        luci/site/luci/Extensions/ClusterModel: OracleDB.py SybaseASE.py 

Log message:
        backport fixes from HEAD for bz304931 (Rich Sybase resource agent 
configuration support)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.45.2.70&r2=1.45.2.71
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/cluster_svc-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3.2.3&r2=1.3.2.4
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource-form-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.21.2.9&r2=1.21.2.10
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource_form_handlers.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.20.2.14&r2=1.20.2.15
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterActions.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.6&r2=1.1.4.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciDB.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.8&r2=1.1.4.9
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciValidation.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.6.2.2&r2=1.6.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZope.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.6&r2=1.1.4.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ResourceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.2&r2=1.1.4.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/RicciQueries.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.9&r2=1.1.4.10
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.120.2.42&r2=1.120.2.43
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/conga_constants.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.19.2.16&r2=1.19.2.17
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/OracleDB.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=NONE&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/SybaseASE.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=NONE&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.7&r2=1.1.4.8

--- conga/conga.spec.in.in      2008/02/27 20:22:18     1.45.2.70
+++ conga/conga.spec.in.in      2008/03/12 15:13:12     1.45.2.71
@@ -294,6 +294,7 @@
 %changelog
 * Wed Feb 27 2008 Ryan McCabe <[EMAIL PROTECTED]> 0.12.0-6
 - Fix bz434586 (Resource tree does not display multiple children of a parent 
correctly)
+- Fix bz304931 (Rich Sybase resource agent configuration support)
 
 * Tue Feb 12 2008 Ryan McCabe <[EMAIL PROTECTED]> 0.12.0-5
 - Fix bz432533 (Do not attempt to install the cmirror package when shared 
storage is requested)
--- conga/luci/cluster/cluster_svc-macros       2008/02/27 20:22:19     1.3.2.3
+++ conga/luci/cluster/cluster_svc-macros       2008/03/12 15:13:12     1.3.2.4
@@ -617,6 +617,12 @@
        <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>
+       <tal:block tal:condition="python: type == 'oracledb'">
+               <div 
metal:use-macro="here/resource-form-macros/macros/oracledb_macro" />
+       </tal:block>
 </div>
 
 <div metal:define-macro="service-config-head-macro" tal:omit-tag="">
--- conga/luci/cluster/resource-form-macros     2008/01/23 04:44:30     1.21.2.9
+++ conga/luci/cluster/resource-form-macros     2008/03/12 15:13:12     
1.21.2.10
@@ -146,6 +146,8 @@
                        <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>
+                       <option name="oracledb" value="oracledb">Oracle 10g 
Failover Instance</option>
                </select>
        </form>
 
@@ -167,6 +169,8 @@
                <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 
metal:use-macro="here/resource-form-macros/macros/oracledb_macro" />
        </div>
 </div>
 
@@ -195,6 +199,8 @@
                        <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>
+                       <option name="oracledb" value="oracledb">Oracle 10g 
Failover Instance</option>
                </select>
        </form>
 
@@ -240,6 +246,8 @@
                <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 
metal:use-macro="here/resource-form-macros/macros/oracledb_macro" />
        </div>
 </div>
 
@@ -312,7 +320,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 +443,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 +595,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 +717,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 +842,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 +926,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 +1019,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 +1112,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 +1206,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 +1278,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 +1322,222 @@
        </form>
 </div>
 
+<div class="rescfg" name="oracledb"
+       tal:attributes="id res/name | nothing" 
metal:define-macro="oracledb_macro">
+       <p class="reshdr">Oracle 10g Failover Instance</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="oracledb" />
+
+       <table class="systemsTable">
+               <tr class="systemsTable">
+                       <td class="systemsTable">Instance name (SID) of Oracle 
instance</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">Oracle user name</td>
+                       <td class="systemsTable">
+                               <input type="text" size="20" name="user"
+                                       tal:attributes="
+                                               disabled python: editDisabled;
+                                               value res/user | nothing" />
+                       </td>
+               </tr>
+               <tr class="systemsTable">
+                       <td class="systemsTable">Oracle application home 
directory</td>
+                       <td class="systemsTable">
+                               <input type="text" size="20" name="home"
+                                       tal:attributes="
+                                               disabled python: editDisabled;
+                                               value res/home | nothing" />
+                       </td>
+               </tr>
+               <tr class="systemsTable">
+                       <td class="systemsTable">Virtual hostname 
(optional)</td>
+                       <td class="systemsTable">
+                               <input type="text" size="20" name="vhost"
+                                       tal:attributes="
+                                               disabled python: editDisabled;
+                                               value res/vhost | nothing" />
+                       </td>
+               </tr>
+       </table>
+       
+       <div metal:use-macro="here/resource-form-macros/macros/res_form_footer" 
/>
+       </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 +1581,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 +1714,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 +1807,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 +1911,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 +1966,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 +2031,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/07 06:52:55     
1.20.2.14
+++ conga/luci/cluster/resource_form_handlers.js        2008/03/12 15:13:12     
1.20.2.15
@@ -250,6 +250,16 @@
        return (errors);
 }
 
+function validate_sybase(form) {
+       var errors = new Array();
+       return (errors);
+}
+
+function validate_oracle(form) {
+       var errors = new Array();
+       return (errors);
+}
+
 function validate_sapdatabase(form) {
        var errors = new Array();
 
@@ -295,6 +305,8 @@
 form_validators['lvm'] = validate_lvm;
 form_validators['SAPInstance'] = validate_sapinstance;
 form_validators['SAPDatabase'] = validate_sapdatabase;
+form_validators['ASEHAagent'] = validate_sybase;
+form_validators['oracledb'] = validate_oracle;
 
 function check_form(form) {
        var valfn = form_validators[form.type.value];
@@ -302,11 +314,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:44:32     1.1.4.6
+++ conga/luci/site/luci/Extensions/LuciClusterActions.py       2008/03/12 
15:13:12     1.1.4.7
@@ -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,9 +334,11 @@
                                                        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,
+       # and propagate it. We will need two ricci agents for this task,
        # unless we are deleting the cluster itself.
 
        if delete_cluster is False:
@@ -364,7 +368,7 @@
 
        # Unless we're deleting the whole cluster, it is not worth
        # flagging this node in DB, as we are going to delete it
-       # anyway. Now, we need to delete node from model and send out
+       # anyway. Now, we need to the delete node from model and send out
        # new cluster.conf
 
        if delete_cluster is True:
@@ -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:
@@ -445,7 +449,7 @@
                nodename_resolved = resolve_nodename(self, clustername, 
nodename)
 
                try:
-                       # XXX - do this in parallel
+                       # XXX - do this in parallel on all nodes
                        rc = RicciCommunicator(nodename_resolved)
                except Exception, e:
                        if LUCI_DEBUG_MODE is True:
@@ -477,7 +481,7 @@
                nodename_resolved = resolve_nodename(self, clustername, 
nodename)
 
                try:
-                       # XXX - do this in parallel
+                       # XXX - do this in parallel on all nodes
                        rc = RicciCommunicator(nodename_resolved)
                except Exception, e:
                        if LUCI_DEBUG_MODE is True:
@@ -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/07 06:52:56     1.1.4.8
+++ conga/luci/site/luci/Extensions/LuciDB.py   2008/03/12 15:13:12     1.1.4.9
@@ -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/07 06:52:56     
1.6.2.2
+++ conga/luci/site/luci/Extensions/LuciValidation.py   2008/03/12 15:13:12     
1.6.2.3
@@ -8,7 +8,6 @@
 from ClusterModel.RefObject import RefObject
 from ClusterModel.Service import Service
 from ClusterModel.Method import Method
-from ClusterModel.Fence import Fence
 from ClusterModel.FailoverDomain import FailoverDomain
 from ClusterModel.FailoverDomainNode import FailoverDomainNode
 from ClusterModel.QuorumD import QuorumD
@@ -333,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' \
@@ -342,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:
@@ -471,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:56:33     1.1.4.6
+++ conga/luci/site/luci/Extensions/LuciZope.py 2008/03/12 15:13:12     1.1.4.7
@@ -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:44:32     
1.1.4.2
+++ conga/luci/site/luci/Extensions/ResourceHandler.py  2008/03/12 15:13:12     
1.1.4.3
@@ -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,80 @@
                                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)
+       dbtype = res.getAttribute('type')
+       if not dbtype:
+               res.addAttribute('type', '10g')
+       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 +840,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 17:18:38     
1.1.4.9
+++ conga/luci/site/luci/Extensions/RicciQueries.py     2008/03/12 15:13:12     
1.1.4.10
@@ -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 17:18:38     
1.120.2.42
+++ conga/luci/site/luci/Extensions/cluster_adapters.py 2008/03/12 15:13:12     
1.120.2.43
@@ -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:56:33     
1.19.2.16
+++ conga/luci/site/luci/Extensions/conga_constants.py  2008/03/12 15:13:13     
1.19.2.17
@@ -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.2.1
--- conga/luci/site/luci/Extensions/ClusterModel/OracleDB.py
+++ -   2008-03-12 15:13:14.966263000 +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.2.1
--- conga/luci/site/luci/Extensions/ClusterModel/SybaseASE.py
+++ -   2008-03-12 15:13:15.053372000 +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
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py        
2008/02/07 06:52:56     1.1.4.7
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py        
2008/03/12 15:13:13     1.1.4.8
@@ -33,6 +33,8 @@
 from Tomcat5 import Tomcat5
 from SAPDatabase import SAPDatabase
 from SAPInstance import SAPInstance
+from SybaseASE import SybaseASE 
+from OracleDB import OracleDB
 from Multicast import Multicast
 from FenceDaemon import FenceDaemon
 from FenceXVMd import FenceXVMd
@@ -93,6 +95,8 @@
              'nfsclient': NFSClient,
              'SAPDatabase': SAPDatabase,
              'SAPInstance': SAPInstance,
+             'ASEHAagent': SybaseASE,
+             'oracledb': OracleDB,
              'device': Device }
 
 

Reply via email to