cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] conga/luci cluster/cluster_svc-macros cluster/ ...
@ 2011-02-25 15:54 rmccabe
  0 siblings, 0 replies; 3+ messages in thread
From: rmccabe @ 2011-02-25 15:54 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2011-02-25 15:54:34

Modified files:
	luci/cluster   : cluster_svc-macros fence-macros 
	                 resource-form-macros resource_form_handlers.js 
	                 validate_fence.js 
	luci/site/luci/Extensions: FenceHandler.py LuciClusterInfo.py 
	                           ResourceHandler.py 
	luci/site/luci/Extensions/ClusterModel: FenceDeviceAttr.py 
	                                        ModelBuilder.py 
Added files:
	luci/site/luci/Extensions/ClusterModel: OracleInstance.py 
	                                        OracleListener.py 

Log message:
	Sync up with upstream

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/cluster_svc-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3.2.12&r2=1.3.2.13
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/fence-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2.2.18&r2=1.2.2.19
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource-form-macros.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.21.2.18&r2=1.21.2.19
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.19&r2=1.20.2.20
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/validate_fence.js.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.2.14&r2=1.1.2.15
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/FenceHandler.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.4.2.23&r2=1.4.2.24
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterInfo.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1.4.20&r2=1.1.4.21
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.10&r2=1.1.4.11
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/OracleInstance.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/OracleListener.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/FenceDeviceAttr.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.5.2.5&r2=1.5.2.6
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.16&r2=1.1.4.17

--- conga/luci/cluster/cluster_svc-macros	2009/05/21 13:32:04	1.3.2.12
+++ conga/luci/cluster/cluster_svc-macros	2011/02/25 15:54:33	1.3.2.13
@@ -554,6 +554,12 @@
 	<tal:block tal:condition="python: type == 'oracledb'">
 		<div metal:use-macro="here/resource-form-macros/macros/oracledb_macro" />
 	</tal:block>
+	<tal:block tal:condition="python: type == 'oralistener'">
+		<div metal:use-macro="here/resource-form-macros/macros/oralistener_macro" />
+	</tal:block>
+	<tal:block tal:condition="python: type == 'orainstance'">
+		<div metal:use-macro="here/resource-form-macros/macros/orainstance_macro" />
+	</tal:block>
 </div>
 
 <div metal:define-macro="failover-prefs-macro" tal:omit-tag="">
--- conga/luci/cluster/fence-macros	2010/09/29 17:08:24	1.2.2.18
+++ conga/luci/cluster/fence-macros	2011/02/25 15:54:33	1.2.2.19
@@ -266,8 +266,12 @@
 		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ifmib" />
 	</tal:block>
 
-	<tal:block tal:condition="python: cur_fence_type == 'fence_ucs'">
-		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ucs" />
+	<tal:block tal:condition="python: cur_fence_type == 'fence_cisco_ucs'">
+		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-cisco_ucs" />
+	</tal:block>
+
+	<tal:block tal:condition="python: cur_fence_type == 'fence_rhevm'">
+		<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rhevm" />
 	</tal:block>
 
 	<tal:block tal:condition="python: cur_fence_type == 'fence_manual'">
@@ -356,7 +360,8 @@
 	<option name="fence_vmware" value="fence_vmware">VMware Fencing</option>
 	<option name="fence_lpar" value="fence_lpar">LPAR Fencing</option>
 	<option name="fence_cisco_mds" value="fence_cisco_mds">Cisco MDS</option>
-	<option name="fence_ucs" value="fence_ucs">Cisco UCS</option>
+	<option name="fence_cisco_ucs" value="fence_cisco_ucs">Cisco UCS</option>
+	<option name="fence_rhevm" value="fence_rhevm">RHEV-M Fencing</option>
 	<option name="fence_ifmib" value="fence_ifmib">IF MIB</option>
 </div>
 
@@ -384,7 +389,8 @@
 	<option name="fence_vmware" value="fence_vmware">VMware Fencing</option>
 	<option name="fence_lpar" value="fence_lpar">LPAR Fencing</option>
 	<option name="fence_cisco_mds" value="fence_cisco_mds">Cisco MDS</option>
-	<option name="fence_ucs" value="fence_ucs">Cisco UCS</option>
+	<option name="fence_cisco_ucs" value="fence_cisco_ucs">Cisco UCS</option>
+	<option name="fence_rhevm" value="fence_rhevm">RHEV-M Fencing</option>
 	<option name="fence_ifmib" value="fence_ifmib">IF MIB</option>
 	<option name="fence_manual" value="fence_manual">Manual Fencing</option>
 </div>
@@ -1844,10 +1850,98 @@
 	</div>
 </div>
 
-<div metal:define-macro="fence-form-ucs"
+<div metal:define-macro="fence-form-rhevm"
 	tal:attributes="id cur_fencedev/name | nothing">
 
-	<div id="fence_ucs" class="fencedev">
+	<div id="fence_rhevm" class="fencedev">
+		<table>
+			<tr>
+				<td><strong class="cluster">Fence Type</strong></td>
+				<td>RHEV-M</td>
+			</tr>
+			<tr>
+				<td>Name</td>
+				<td>
+					<input name="name" type="text"
+						tal:attributes="value cur_fencedev/name | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>IP Address</td>
+				<td>
+					<input name="ipaddr" type="text"
+						tal:attributes="value cur_fencedev/ipaddr | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>IP port (optional)</td>
+				<td>
+					<input name="ipport" type="text" class="text"
+						tal:attributes="value cur_fencedev/ipport | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Login</td>
+				<td>
+					<input name="login" type="text"
+						tal:attributes="value cur_fencedev/login | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Password</td>
+				<td>
+					<input name="passwd" type="password" autocomplete="off"
+						tal:attributes="value cur_fencedev/passwd | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<span title="Full path to a script to generate fence password">Password Script (optional)</span>
+				</td>
+				<td>
+					<input type="text" name="passwd_script"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/passwd_script | nothing" />
+				</td>
+			</tr>
+			<tr>
+				<td>Use SSL connections</td>
+				<td>
+					<input tal:condition="exists:cur_fencedev"
+						type="checkbox" name="ssl"
+						tal:attributes="
+							checked python:(cur_fencedev and cur_fencedev.has_key('ssl') and (cur_fencedev['ssl'] == '1' or cur_fencedev['ssl'].lower() == 'true')) and 'checked' or ''" />
+					<input tal:condition="not:exists:cur_fencedev"
+						type="checkbox" name="ssl" />
+				</td>
+			</tr>
+			<tr>
+				<td>Power wait (seconds)</td>
+				<td>
+					<input type="text" name="power_wait"
+						tal:attributes="
+							disabled cur_fencedev/isShared | nothing;
+							value cur_fencedev/power_wait | nothing" />
+				</td>
+			</tr>
+		</table>
+
+		<tal:block tal:condition="exists: cur_fencedev">
+			<input type="hidden" name="existing_device" value="1" />
+			<input type="hidden" name="orig_name"
+				tal:attributes="value cur_fencedev/name | nothing" />
+		</tal:block>
+
+		<input type="hidden" name="fence_type" value="fence_rhevm" />
+		<input type="hidden" name="sharable" value="1" />
+	</div>
+</div>
+
+<div metal:define-macro="fence-form-cisco_ucs"
+	tal:attributes="id cur_fencedev/name | nothing">
+
+	<div id="fence_cisco_ucs" class="fencedev">
 		<table>
 			<tr>
 				<td><strong class="cluster">Fence Type</strong></td>
@@ -1927,7 +2021,7 @@
 				tal:attributes="value cur_fencedev/name | nothing" />
 		</tal:block>
 
-		<input type="hidden" name="fence_type" value="fence_ucs" />
+		<input type="hidden" name="fence_type" value="fence_cisco_ucs" />
 		<input type="hidden" name="sharable" value="1" />
 	</div>
 </div>
@@ -2362,7 +2456,8 @@
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-vmware" />
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ifmib" />
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-cisco_mds" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ucs" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-cisco_ucs" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rhevm" />
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-manual" />
 </div>
 
@@ -2383,7 +2478,8 @@
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-vmware" />
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ifmib" />
 	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-cisco_mds" />
-	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-ucs" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-cisco_ucs" />
+	<tal:block metal:use-macro="here/fence-macros/macros/fence-form-rhevm" />
 </div>
 
 <div metal:define-macro="shared-fence-device-list">
@@ -2995,9 +3091,47 @@
 	</div>
 </div>
 
-<div metal:define-macro="fence-instance-form-ucs"
+<div metal:define-macro="fence-instance-form-rhevm"
+	tal:omit-tag="exists: cur_fence_dev_id">
+	<div id="fence_rhevm_instance" name="fence_rhevm" class="fencedev_instance"
+		tal:omit-tag="exists: cur_fence_dev_id">
+		<table>
+			<tr>
+				<td>Port</td>
+				<td>
+					<input name="port" type="text"
+						tal:attributes="value cur_instance/port | nothing" />
+				</td>
+			</tr>
+			<tr><td colspan="2">
+				<div class="hbSubmit">
+					<tal:block tal:condition="exists:cur_fence_instance_id">
+						<input type="button" name="remove_fence"
+							value="Remove this instance"
+							tal:attributes="onclick python: 'del_fence_instance(\'' + cur_fence_instance_id + '\')'" />
+					</tal:block>
+					<tal:block tal:condition="not:exists:cur_fence_instance_id">
+						<input type="button" name="remove_fence"
+							value="Remove this instance" />
+					</tal:block>
+				</div>
+			</td></tr>
+		</table>
+
+		<input type="hidden" name="option" tal:condition="exists:cur_instance"
+			tal:attributes="value cur_instance/option |nothing" />
+		<input type="hidden" name="fence_type" value="fence_rhevm" />
+		<input type="hidden" name="fence_instance" value="1" />
+		<input tal:condition="exists: cur_instance"
+			type="hidden" name="existing_instance" value="1" />
+		<input type="hidden" name="parent_fencedev"
+			tal:attributes="value cur_fence_dev_id | nothing" />
+	</div>
+</div>
+
+<div metal:define-macro="fence-instance-form-cisco_ucs"
 	tal:omit-tag="exists: cur_fence_dev_id">
-	<div id="fence_ucs_instance" name="fence_ucs" class="fencedev_instance"
+	<div id="fence_cisco_ucs_instance" name="fence_cisco_ucs" class="fencedev_instance"
 		tal:omit-tag="exists: cur_fence_dev_id">
 		<table>
 			<tr>
@@ -3024,7 +3158,7 @@
 
 		<input type="hidden" name="option" tal:condition="exists:cur_instance"
 			tal:attributes="value cur_instance/option |nothing" />
-		<input type="hidden" name="fence_type" value="fence_ucs" />
+		<input type="hidden" name="fence_type" value="fence_cisco_ucs" />
 		<input type="hidden" name="fence_instance" value="1" />
 		<input tal:condition="exists: cur_instance"
 			type="hidden" name="existing_instance" value="1" />
@@ -3144,7 +3278,9 @@
 		metal:use-macro="here/fence-macros/macros/fence-instance-form-ifmib" />
 
 	<tal:block
-		metal:use-macro="here/fence-macros/macros/fence-instance-form-ucs" />
+		metal:use-macro="here/fence-macros/macros/fence-instance-form-cisco_ucs" />
+	<tal:block
+		metal:use-macro="here/fence-macros/macros/fence-instance-form-rhevm" />
 </div>
 
 <div metal:define-macro="fencedev-instance-cond-ladder"
@@ -3230,9 +3366,14 @@
 			metal:use-macro="here/fence-macros/macros/fence-instance-form-ifmib" />
 	</tal:block>
 
-	<tal:block tal:condition="python: cur_fence_type == 'fence_ucs'">
+	<tal:block tal:condition="python: cur_fence_type == 'fence_cisco_ucs'">
+		<tal:block
+			metal:use-macro="here/fence-macros/macros/fence-instance-form-cisco_ucs" />
+	</tal:block>
+
+	<tal:block tal:condition="python: cur_fence_type == 'fence_rhevm'">
 		<tal:block
-			metal:use-macro="here/fence-macros/macros/fence-instance-form-ucs" />
+			metal:use-macro="here/fence-macros/macros/fence-instance-form-rhevm" />
 	</tal:block>
 </div>
 
--- conga/luci/cluster/resource-form-macros	2010/09/29 17:08:24	1.21.2.18
+++ conga/luci/cluster/resource-form-macros	2011/02/25 15:54:33	1.21.2.19
@@ -173,6 +173,10 @@
 				<option name="ASEHAagent" value="ASEHAagent">Sybase ASE Failover Instance</option>
 			</tal:block>
 			<option name="oracledb" value="oracledb">Oracle 10g Failover Instance</option>
+			<tal:block tal:condition="python:clusterinfo and clusterinfo.get('has_split_oracle_agents') == True">
+				<option name="orainstance" value="orainstance">Oracle DB Agent</option>
+				<option name="oralistener" value="oralistener">Oracle Listener Agent</option>
+			</tal:block>
 		</select>
 	</form>
 
@@ -196,6 +200,8 @@
 		<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 metal:use-macro="here/resource-form-macros/macros/orainstance_macro" />
+		<div metal:use-macro="here/resource-form-macros/macros/oralistener_macro" />
 	</div>
 </div>
 
@@ -230,6 +236,10 @@
 			</tal:block>
 
 			<option name="oracledb" value="oracledb">Oracle 10g Failover Instance</option>
+			<tal:block tal:condition="python:clusterinfo and clusterinfo.get('has_split_oracle_agents') == True">
+				<option name="orainstance" value="orainstance">Oracle DB Agent</option>
+				<option name="oralistener" value="oralistener">Oracle Listener Agent</option>
+			</tal:block>
 		</select>
 	</form>
 
@@ -277,6 +287,8 @@
 		<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 metal:use-macro="here/resource-form-macros/macros/orainstance_macro" />
+		<div metal:use-macro="here/resource-form-macros/macros/oralistener_macro" />
 	</div>
 </div>
 
@@ -1559,6 +1571,168 @@
 	</form>
 </div>
 
+<div class="rescfg" name="orainstance"
+	tal:attributes="id res/name | nothing" metal:define-macro="orainstance_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="orainstance" />
+
+	<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/attrs/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/attrs/home | nothing" />
+			</td>
+		</tr>
+		<tr class="systemsTable">
+			<td class="systemsTable">List of Oracle listeners (optional, separated by spaces)</td>
+			<td class="systemsTable">
+				<input type="text" size="20" name="listeners"
+					tal:attributes="
+						disabled python: editDisabled;
+						value res/attrs/listeners | nothing" />
+			</td>
+		</tr>
+		<tr class="systemsTable">
+			<td class="systemsTable">Path to lock file (optional)</td>
+			<td class="systemsTable">
+				<input type="text" size="20" name="lockfile"
+					tal:attributes="
+						disabled python: editDisabled;
+						value res/attrs/lockfile | nothing" />
+			</td>
+		</tr>
+	</table>
+	
+	<div metal:use-macro="here/resource-form-macros/macros/res_form_footer" />
+	</form>
+</div>
+
+<div class="rescfg" name="oralistener"
+	tal:attributes="id res/name | nothing" metal:define-macro="oralistener_macro">
+	<p class="reshdr">Oracle 10g Listener 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="oralistener" />
+
+	<table class="systemsTable">
+		<tr class="systemsTable">
+			<td class="systemsTable">Listener 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">Oracle user name</td>
+			<td class="systemsTable">
+				<input type="text" size="20" name="user"
+					tal:attributes="
+						disabled python: editDisabled;
+						value res/attrs/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/attrs/home | 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>
--- conga/luci/cluster/resource_form_handlers.js	2010/08/07 02:39:59	1.20.2.19
+++ conga/luci/cluster/resource_form_handlers.js	2011/02/25 15:54:33	1.20.2.20
@@ -307,6 +307,8 @@
 form_validators['SAPDatabase'] = validate_sapdatabase;
 form_validators['ASEHAagent'] = validate_sybase;
 form_validators['oracledb'] = validate_oracle;
+form_validators['orainstance'] = validate_oracle;
+form_validators['oralistener'] = validate_oracle;
 
 function check_form(form) {
 	var valfn = form_validators[form.type.value];
--- conga/luci/cluster/validate_fence.js	2010/09/29 17:08:24	1.1.2.14
+++ conga/luci/cluster/validate_fence.js	2011/02/25 15:54:33	1.1.2.15
@@ -24,7 +24,8 @@
 fence_inst_validator['vmware'] = [ 'port' ];
 fence_inst_validator['cisco_mds'] = [ 'port' ];
 fence_inst_validator['ifmib'] = [ 'port' ];
-fence_inst_validator['ucs'] = [ 'port' ];
+fence_inst_validator['cisco_ucs'] = [ 'port' ];
+fence_inst_validator['rhevm'] = [ 'port' ];
 
 var fence_validator = [];
 fence_validator['apc'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
@@ -50,7 +51,8 @@
 fence_validator['lpar'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
 fence_validator['cisco_mds'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
 fence_validator['ifmib'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
-fence_validator['ucs'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
+fence_validator['cisco_ucs'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
+fence_validator['rhevm'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script' ];
 fence_validator['vmware'] = [ 'ipaddr', 'login', 'passwd', 'passwd_script', 'vmlogin' ];
 fence_validator['xvm'] = [];
 
--- conga/luci/site/luci/Extensions/FenceHandler.py	2010/09/29 17:08:25	1.4.2.23
+++ conga/luci/site/luci/Extensions/FenceHandler.py	2011/02/25 15:54:33	1.4.2.24
@@ -776,7 +776,98 @@
 
 	return errors
 
-def val_ucs_fd(form, fencedev):
+def val_cisco_ucs_fd(form, fencedev):
+	errors = list()
+
+	try:
+		ip = form['ipaddr'].strip()
+		if not ip:
+			raise Exception, 'blank'
+		fencedev.addAttribute('ipaddr', ip)
+	except Exception, e:
+		errors.append(FD_PROVIDE_IP)
+
+	try:
+		log = form['login'].strip()
+		if not log:
+			raise Exception, 'blank'
+		fencedev.addAttribute('login', log)
+	except Exception, e:
+		errors.append(FD_PROVIDE_LOGIN)
+
+	try:
+		power_wait = form['power_wait'].strip()
+		if power_wait:
+			power_wait = int(power_wait)
+			if power_wait < 0:
+				raise ValueError
+	except (KeyError, AttributeError), e:
+		power_wait = None
+	except Exception, e:
+		power_wait = None
+		errors.append('An invalid value for power_wait was given: "%s"' % form['power_wait'])
+	if power_wait:
+		fencedev.addAttribute('power_wait', str(power_wait))
+	else:
+		fencedev.removeAttribute('power_wait')
+
+	try:
+		ipport = form['ipport'].strip()
+		if ipport:
+			ipport = int(ipport)
+			if ipport < 1 or ipport & 0xffff != ipport:
+				raise ValueError
+	except (KeyError, AttributeError), e:
+		ipport = None
+	except Exception, e:
+		ipport = None
+		errors.append('An invalid value for ipport was given: "%s"' % form['ipport'])
+	if ipport:
+		fencedev.addAttribute('ipport', str(ipport))
+	else:
+		fencedev.removeAttribute('ipport')
+
+	use_ssl = form.has_key('ssl') and form['ssl'].lower() in ('1', 'on', 'true')
+	if use_ssl:
+		fencedev.addAttribute('ssl', '1')
+	else:
+		fencedev.removeAttribute('ssl')
+
+	has_passwd = False
+	try:
+		pwd = form['passwd'].strip()
+		if not pwd:
+			# Allow passwords that consist of only spaces.
+			if not form.has_key('passwd') or form['passwd'] == '':
+				raise Exception, 'blank'
+			else:
+				pwd = form['passwd']
+		fencedev.addAttribute('passwd', pwd)
+		has_passwd = True
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('passwd')
+		except:
+			pass
+
+	try:
+		pwd_script = form['passwd_script'].strip()
+		if not pwd_script:
+			raise Exception, 'blank'
+		fencedev.addAttribute('passwd_script', pwd_script)
+		has_passwd = True
+	except Exception, e:
+		try:
+			fencedev.removeAttribute('passwd_script')
+		except:
+			pass
+
+	if not has_passwd:
+		errors.append(FD_PROVIDE_PASSWD)
+
+	return errors
+
+def val_rhevm_fd(form, fencedev):
 	errors = list()
 
 	try:
@@ -1476,7 +1567,8 @@
 	'fence_egenera':		val_egenera_fd,
 	'fence_bullpap':		val_bullpap_fd,
 	'fence_lpar':			val_lpar_fd,
-	'fence_ucs':			val_ucs_fd,
+	'fence_rhevm':			val_rhevm_fd,
+	'fence_cisco_ucs':		val_cisco_ucs_fd,
 	'fence_cisco_mds':		val_cisco_mds_fd,
 	'fence_ifmib':			val_cisco_mds_fd,
 	'fence_vmware':			val_vmware_fd,
@@ -1795,7 +1887,20 @@
 
 	return errors
 
-def val_ucs_fi(form, fenceinst):
+def val_cisco_ucs_fi(form, fenceinst):
+	errors = list()
+
+	try:
+		port = form['port'].strip()
+		if not port:
+			raise Exception, 'blank'
+		fenceinst.addAttribute('port', port)
+	except Exception, e:
+		errors.append(FI_PROVIDE_PORT)
+
+	return errors
+
+def val_rhevm_fi(form, fenceinst):
 	errors = list()
 
 	try:
@@ -1832,7 +1937,8 @@
 	'fence_xvm':			val_xvm_fi,
 	'fence_scsi':			val_scsi_fi,
 	'fence_lpar':			val_lpar_fi,
-	'fence_ucs':			val_ucs_fi,
+	'fence_rhevm':			val_rhevm_fi,
+	'fence_cisco_ucs':		val_cisco_ucs_fi,
 	'fence_cisco_mds':		val_cisco_mds_fi,
 	'fence_ifmib':			val_cisco_mds_fi,
 	'fence_vmware':			val_vmware_fi,
--- conga/luci/site/luci/Extensions/LuciClusterInfo.py	2010/09/29 17:08:25	1.1.4.20
+++ conga/luci/site/luci/Extensions/LuciClusterInfo.py	2011/02/25 15:54:33	1.1.4.21
@@ -606,6 +606,7 @@
 	clumap['sap_agent_v19'] = False
 	clumap['has_qemu'] = False
 	clumap['has_sybase_agent'] = False
+	clumap['has_split_oracle_agents'] = False
 	try:
 		cluster_os = model.getClusterOS()
 		if cluster_os.find('Tikanga') != -1:
@@ -622,6 +623,8 @@
 			if os_minor > 3:
 				clumap['sap_agent_v19'] = True
 				clumap['has_qemu'] = True
+			if os_minor > 5:
+				clumap['has_split_oracle_agents'] = True
 		elif cluster_os.find('Nahant') != -1:
 			clumap['os_major'] = 4
 			os_minor = int(cluster_os[cluster_os.find('Update ') + 7])
--- conga/luci/site/luci/Extensions/ResourceHandler.py	2010/08/07 03:16:02	1.1.4.10
+++ conga/luci/site/luci/Extensions/ResourceHandler.py	2011/02/25 15:54:33	1.1.4.11
@@ -22,6 +22,8 @@
 from ClusterModel.SAPDatabase import SAPDatabase
 from ClusterModel.SAPInstance import SAPInstance
 from ClusterModel.OracleDB import OracleDB
+from ClusterModel.OracleInstance import OracleInstance
+from ClusterModel.OracleListener import OracleListener
 from ClusterModel.SybaseASE import SybaseASE
 
 from LuciZope import GetFormVars
@@ -817,25 +819,45 @@
 			res.addAttribute('type', dbtype)
 	return errors
 
+def addOracleInstance(res, rname, form, model):
+	params = (
+		('user', 'Oracle User Name', True, None),
+		('home', 'Oracle Home Directory', True, None),
+		('listeners', 'Oracle listeners', False, None),
+		('lockfile', 'Path to lock file', False, None),
+	)
+	errors = config_resource(params, res, rname, form)
+	return errors
+
+def addOracleListener(res, rname, form, model):
+	params = (
+		('user', 'Oracle User Name', True, None),
+		('home', 'Oracle Home Directory', True, 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	),
-	'oracledb':		( addOracleDB,		OracleDB	),
-	'ASEHAagent':	( addSybaseASE,		SybaseASE	)
+	'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		),
+	'orainstance':	( addOracleInstance,	OracleInstance	),
+	'oralistener':	( addOracleListener,	OracleListener	),
+	'ASEHAagent':	( addSybaseASE,			SybaseASE		)
 }
 
 def create_resource(res_type, form, model):
--- conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py	2010/09/29 17:08:25	1.5.2.5
+++ conga/luci/site/luci/Extensions/ClusterModel/FenceDeviceAttr.py	2011/02/25 15:54:33	1.5.2.6
@@ -32,8 +32,9 @@
 	'fence_rps10':			'RPS10 Serial Switch',
 	'fence_lpar':			'LPAR Fencing',
 	'fence_vmware':			'VMware Fencing',
+	'fence_rhevm':			'RHEV-M Fencing',
 	'fence_cisco_mds':		'Cisco MDS',
-	'fence_ucs':			'Cisco UCS',
+	'fence_cisco_ucs':		'Cisco UCS',
 	'fence_ifmib':			'IF MIB',
 	'fence_manual':			'Manual Fencing'
 }
@@ -53,8 +54,9 @@
 	'fence_scsi':			True,
 	'fence_lpar':			True,
 	'fence_vmware':			True,
+	'fence_rhevm':			True,
 	'fence_cisco_mds':		True,
-	'fence_ucs':			True,
+	'fence_cisco_ucs':		True,
 	'fence_ifmib':			True,
 	'fence_ilo':			False,
 	'fence_ilo_mp':			False,
@@ -100,8 +102,9 @@
 	'fence_scsi':			( 'node' ),
 	'fence_lpar':			( 'partition' ),
 	'fence_vmware':			( 'port' ),
+	'fence_rhevm':			( 'port' ),
 	'fence_cisco_mds':		( 'port' ),
-	'fence_ucs':			( 'port' ),
+	'fence_cisco_ucs':		( 'port' ),
 	'fence_ifmib':			( 'port' ),
 	'fence_ilo':			( ),
 	'fence_ipmilan':		( ),
@@ -138,9 +141,11 @@
 		( 'name', 'ipaddr', 'login', 'passwd' ),
 	'fence_vmware':
 		( 'name', 'ipaddr', 'login', 'passwd', 'vmlogin', 'vmpasswd' ),
+	'fence_rhevm':
+		( 'name', 'ipaddr', 'login', 'passwd' ),
 	'fence_cisco_mds':
 		( 'name', 'ipaddr', 'login', 'passwd' ),
-	'fence_ucs':
+	'fence_cisco_ucs':
 		( 'name', 'ipaddr', 'login', 'passwd' ),
 	'fence_ifmib':
 		( 'name', 'ipaddr', 'login', 'passwd' ),
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2010/09/29 17:08:25	1.1.4.16
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2011/02/25 15:54:33	1.1.4.17
@@ -35,6 +35,8 @@
 from SAPInstance import SAPInstance
 from SybaseASE import SybaseASE 
 from OracleDB import OracleDB
+from OracleInstance import OracleInstance
+from OracleListener import OracleListener
 from Multicast import Multicast
 from FenceDaemon import FenceDaemon
 from FenceXVMd import FenceXVMd
@@ -97,6 +99,8 @@
              'SAPInstance': SAPInstance,
              'ASEHAagent': SybaseASE,
              'oracledb': OracleDB,
+             'orainstance': OracleInstance,
+             'oralistener': OracleListener,			
              'device': Device }
 
 



^ permalink raw reply	[flat|nested] 3+ messages in thread
* [Cluster-devel] conga/luci cluster/cluster_svc-macros cluster/ ...
@ 2008-03-06 21:27 rmccabe
  0 siblings, 0 replies; 3+ messages in thread
From: rmccabe @ 2008-03-06 21:27 UTC (permalink / raw)
  To: cluster-devel.redhat.com

CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2008-03-06 21:27:16

Modified files:
	luci/cluster   : cluster_svc-macros resource-form-macros 
	                 resource_form_handlers.js 
	luci/site/luci/Extensions: ResourceHandler.py 
	luci/site/luci/Extensions/ClusterModel: ModelBuilder.py 

Log message:
	- UI support for the Oracle resource agent
	- Fix a bug that caused Sybase resources to not be displayed

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/cluster_svc-macros.diff?cvsroot=cluster&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource-form-macros.diff?cvsroot=cluster&r1=1.48&r2=1.49
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource_form_handlers.js.diff?cvsroot=cluster&r1=1.44&r2=1.45
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ResourceHandler.py.diff?cvsroot=cluster&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&r1=1.16&r2=1.17

--- conga/luci/cluster/cluster_svc-macros	2008/03/05 23:08:57	1.6
+++ conga/luci/cluster/cluster_svc-macros	2008/03/06 21:27:16	1.7
@@ -620,6 +620,9 @@
 	<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/03/05 23:08:57	1.48
+++ conga/luci/cluster/resource-form-macros	2008/03/06 21:27:16	1.49
@@ -147,6 +147,7 @@
 			<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>
 
@@ -169,6 +170,7 @@
 		<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>
 
@@ -198,6 +200,7 @@
 			<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>
 
@@ -244,6 +247,7 @@
 		<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>
 
@@ -1318,6 +1322,87 @@
 	</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>
@@ -1447,8 +1532,8 @@
 						value res/attrs/deep_probe_timeout | nothing" />
 			</td>
 		</tr>
-
 	</table>
+
 	<div metal:use-macro="here/resource-form-macros/macros/res_form_footer" />
 	</form>
 </div>
--- conga/luci/cluster/resource_form_handlers.js	2008/03/05 23:08:57	1.44
+++ conga/luci/cluster/resource_form_handlers.js	2008/03/06 21:27:16	1.45
@@ -255,6 +255,11 @@
 	return (errors);
 }
 
+function validate_oracle(form) {
+	var errors = new Array();
+	return (errors);
+}
+
 function validate_sapdatabase(form) {
 	var errors = new Array();
 
@@ -301,6 +306,7 @@
 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];
--- conga/luci/site/luci/Extensions/ResourceHandler.py	2008/03/05 23:08:58	1.7
+++ conga/luci/site/luci/Extensions/ResourceHandler.py	2008/03/06 21:27:16	1.8
@@ -786,10 +786,13 @@
 	params = (
 		('user', 'Oracle User Name', True, None),
 		('home', 'Oracle Home Directory', True, None),
-		('type', 'Oracle Installation Type', 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 = {
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2008/02/05 18:26:55	1.16
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py	2008/03/06 21:27:16	1.17
@@ -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 }
 
 



^ permalink raw reply	[flat|nested] 3+ messages in thread
* [Cluster-devel] conga/luci cluster/cluster_svc-macros cluster/ ...
@ 2008-03-05 23:09 rmccabe
  0 siblings, 0 replies; 3+ messages in thread
From: rmccabe @ 2008-03-05 23:09 UTC (permalink / raw)
  To: cluster-devel.redhat.com

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



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-02-25 15:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-25 15:54 [Cluster-devel] conga/luci cluster/cluster_svc-macros cluster/ rmccabe
  -- strict thread matches above, loose matches on Subject: below --
2008-03-06 21:27 rmccabe
2008-03-05 23:09 rmccabe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).