All of lore.kernel.org
 help / color / mirror / Atom feed
From: rmccabe@sourceware.org <rmccabe@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga ./conga.spec.in.in luci/cluster/cluster_ ...
Date: 12 Mar 2008 15:13:15 -0000	[thread overview]
Message-ID: <20080312151315.15537.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	conga
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	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 <rmccabe@redhat.com> 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 <rmccabe@redhat.com> 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	other threads:[~2008-03-12 15:13 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-12 15:13 rmccabe [this message]
  -- strict thread matches above, loose matches on Subject: below --
2010-09-29 17:08 [Cluster-devel] conga ./conga.spec.in.in luci/cluster/cluster_ rmccabe
2009-05-21 13:33 rmccabe
2009-05-14 21:05 rmccabe
2009-04-27 21:03 rmccabe
2009-04-15 16:07 rmccabe
2009-03-24 20:06 rmccabe
2009-02-16 17:23 rmccabe
2008-09-18 15:20 rmccabe
2008-08-07 18:08 rmccabe
2008-07-14 21:52 rmccabe
2008-02-27 20:22 rmccabe
2008-02-08 21:57 rmccabe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080312151315.15537.qmail@sourceware.org \
    --to=rmccabe@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.