[Cluster-devel] conga/luci cluster/form-macros cluster/index_h ...

rmccabe at sourceware.org rmccabe at sourceware.org
Tue Feb 20 23:07:01 UTC 2007


CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2007-02-20 23:07:00

Modified files:
	luci/cluster   : form-macros index_html resource-form-macros 
	luci/site/luci/Extensions: cluster_adapters.py ricci_bridge.py 

Log message:
	- Only allow resources using the new application resource agents to be added and configured if the 'rgmanager-app-agents' package is installed.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.191&r2=1.192
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/index_html.diff?cvsroot=cluster&r1=1.30&r2=1.31
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/resource-form-macros.diff?cvsroot=cluster&r1=1.33&r2=1.34
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.241&r2=1.242
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ricci_bridge.py.diff?cvsroot=cluster&r1=1.56&r2=1.57

--- conga/luci/cluster/form-macros	2007/02/16 05:26:18	1.191
+++ conga/luci/cluster/form-macros	2007/02/20 23:06:59	1.192
@@ -4117,6 +4117,8 @@
 	<tal:block metal:use-macro="here/form-macros/macros/service-config-head-macro" />
 
 	<h2>Add a Service</h2>
+	<tal:block tal:define="
+		global clusterinfo python: here.getClusterInfo(modelb, request)" />
 
 	<div id="resskel" class="invisible">
 		<tal:block metal:use-macro="here/resource-form-macros/macros/service-compose-macro" />
@@ -4178,8 +4180,6 @@
 
 	<div class="service_comp_list">
 		<form name="master" method="post">
-		<tal:block
-			tal:define="global clusterinfo python: here.getClusterInfo(modelb, request)" />
 		<input type="button" value="Add a resource to this service"
 			onclick="add_child_resource(this.form);" />
 		<input type="hidden" name="pagetype"
@@ -4395,6 +4395,8 @@
 	<br/>
 
 	<h2>Service Composition</h2>
+	<tal:block tal:define="
+		global clusterinfo python: here.getClusterInfo(modelb, request)" />
 
 	<div id="resskel" class="invisible">
 		<tal:block metal:use-macro="here/resource-form-macros/macros/service-compose-macro" />
@@ -4474,8 +4476,6 @@
 		</form>
 
 		<form name="master" method="post">
-		<tal:block
-			tal:define="global clusterinfo python: here.getClusterInfo(modelb, request)" />
 		<input type="hidden" name="pagetype"
 			tal:attributes="
 				value request/pagetype | request/form/pagetype | nothing" />
--- conga/luci/cluster/index_html	2006/12/21 05:08:48	1.30
+++ conga/luci/cluster/index_html	2007/02/20 23:06:59	1.31
@@ -32,10 +32,6 @@
 			global ri_agent nothing;
 			global busywaiting python:None" />
 
-		<tal:block tal:condition="not: hascluster">
-		    <meta googaa="ooo"/>
-		</tal:block>
-
 		<tal:block tal:condition="hascluster">
 			<tal:block tal:define="
 				global ri_agent python:here.getRicciAgentForCluster(request);
@@ -45,6 +41,10 @@
 				global isBusy python:here.isClusterBusy(request);
 				global firsttime request/busyfirst |nothing" />
 
+			<tal:block tal:condition="ri_agent">
+				<tal:block tal:define="dummy python:request.SESSION.set('ricci', ri_agent)" />
+			</tal:block>
+
 			<tal:block tal:condition="firsttime">
 				<tal:block tal:define="global busywaiting python:True" />
 				<meta http-equiv="refresh"
--- conga/luci/cluster/resource-form-macros	2007/02/16 02:06:08	1.33
+++ conga/luci/cluster/resource-form-macros	2007/02/20 23:06:59	1.34
@@ -120,7 +120,7 @@
 			<option name="SMB" value="SMB">Samba</option>
 
 			<tal:block
-				tal:condition="python: os_version and os_version == 'rhel4'">
+				tal:condition="python:clusterinfo and 'has_rgmanager_app_agents' in clusterinfo and clusterinfo['has_rgmanager_app_agents'] is True">
 				<option name="APACHE" value="APACHE">Apache</option>
 				<option name="LVM" value="LVM">LVM</option>
 				<option name="MYSQL" value="MYSQL">MySQL</option>
@@ -170,7 +170,7 @@
 			<option name="SMB" value="SMB">Samba</option>
 
 			<tal:block
-				tal:condition="python: os_version and os_version == 'rhel4'">
+				tal:condition="python:clusterinfo and 'has_rgmanager_app_agents' in clusterinfo and clusterinfo['has_rgmanager_app_agents'] is True">
 				<option name="APACHE" value="APACHE">Apache</option>
 				<option name="LVM" value="LVM">LVM</option>
 				<option name="MYSQL" value="MYSQL">MySQL</option>
@@ -238,7 +238,10 @@
 	</script>
 
 	<tal:block tal:define="
-		global res python: here.getResourceInfo(modelb, request);" />
+		global res python: here.getResourceInfo(modelb, request)" />
+
+	<tal:block tal:define="
+		global clusterinfo python: here.getClusterInfo(modelb, request)" />
 
 	<h2>Add a Resource</h2>
 
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2007/02/16 05:26:18	1.241
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2007/02/20 23:07:00	1.242
@@ -3895,7 +3895,18 @@
         luci_log.debug_verbose('GCI0: unable to determine cluster name')
         return {}
 
+  has_app_agents = False
+  try:
+    ricci = req.SESSION.get('ricci')
+    if not ricci:
+      raise Exception, 'blank'
+    has_app_agents = has_rgmanager_app_agents(ricci)
+  except Exception, e:
+    luci_log.debug_verbose('GCI0a: %s' % str(e))
+    has_app_agents = False
+
   clumap = {}
+  clumap['has_rgmanager_app_agents'] = has_app_agents
   if model is None:
     try:
       model = getModelForCluster(self, cluname)
--- conga/luci/site/luci/Extensions/ricci_bridge.py	2007/01/31 19:28:08	1.56
+++ conga/luci/site/luci/Extensions/ricci_bridge.py	2007/02/20 23:07:00	1.57
@@ -486,6 +486,43 @@
 	ricci_xml = rc.batch_run(batch_str)
 	return batchAttemptResult(ricci_xml)
 
+def has_rgmanager_app_agents(rc):
+	batch_str = '<module name="rpm"><request API_version="1.0"><function_call name="query"><var mutable="false" name="search" type="list_xml"><rpm name="rgmanager-app-agents"/></var></function_call></request></module>'
+
+	ricci_xml = rc.batch_run(batch_str, async=False)
+	if not ricci_xml or not ricci_xml.firstChild:
+		luci_log.debug_verbose('HRAA0: None returned')
+		return None
+
+	rpm_tags = ricci_xml.getElementsByTagName('rpm')
+	if not rpm_tags or len(rpm_tags) < 1:
+		luci_log.debug_verbose('HRAA: unexpected response %s' \
+			% ricci_xml.toxml())
+		return None
+
+	has_agents = False
+	for i in rpm_tags:
+		try:
+			name = i.getAttribute('name')
+			if not name:
+				raise Exception, 'blank'
+		except Exception, e:
+			luci_log.debug_verbose('HRAA2: %s' % str(e))
+			continue
+
+		if name.strip().lower() != 'rgmanager-app-agents':
+			continue
+
+		try:
+			version = i.getAttribute('version').strip()
+			if version:
+				has_agents = True
+		except Exception, e:
+			luci_log.debug_verbose('HRAA3: %s' % str(e))
+		break
+
+	return has_agents
+
 def nodeIsVirtual(rc):
 	batch_str = '<module name="cluster"><request API_version="1.0"><function_call name="virt_guest"/></request></module>'
 




More information about the Cluster-devel mailing list