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/luci cluster/form-chooser cluster/form-m ...
Date: 6 Dec 2006 18:38:57 -0000	[thread overview]
Message-ID: <20061206183857.24454.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	conga
Changes by:	rmccabe at sourceware.org	2006-12-06 18:38:55

Modified files:
	luci/cluster   : form-chooser form-macros 
	luci/site/luci/Extensions: cluster_adapters.py 
	                           conga_constants.py 

Log message:
	The service delete option was doing nothing. Make it work, but only when the service is not running.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-chooser.diff?cvsroot=cluster&r1=1.13&r2=1.14
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/form-macros.diff?cvsroot=cluster&r1=1.121&r2=1.122
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/cluster_adapters.py.diff?cvsroot=cluster&r1=1.172&r2=1.173
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/conga_constants.py.diff?cvsroot=cluster&r1=1.27&r2=1.28

--- conga/luci/cluster/form-chooser	2006/11/10 19:44:57	1.13
+++ conga/luci/cluster/form-chooser	2006/12/06 18:38:53	1.14
@@ -80,6 +80,9 @@
     <span tal:omit-tag="" tal:condition="python: ptype == '25'">
      <div metal:use-macro="here/form-macros/macros/serviceprocess-form"/>
     </span>
+	<tal:block tal:condition="python: ptype == '56'">
+		<div metal:use-macro="here/form-macros/macros/servicedelete-form" />
+	</tal:block>
     <span tal:omit-tag="" tal:condition="python: ptype == '26'">
      <div metal:use-macro="here/form-macros/macros/servicestart"/>
     </span>
--- conga/luci/cluster/form-macros	2006/12/05 23:32:34	1.121
+++ conga/luci/cluster/form-macros	2006/12/06 18:38:54	1.122
@@ -2775,9 +2775,31 @@
 					<form method="post" onSubmit="return dropdown(this.gourl)">
 						<select name="gourl">
 							<option value="">Choose a Task...</option>
-							<option value="" tal:attributes="value svc/cfgurl">Configure</option>
+							<option
+								tal:attributes="value svc/cfgurl | nothing"
+								tal:content="string:Configure this service" />
+
 							<option value="">----------</option>
-							<option value="">Delete</option>
+
+							<option
+								tal:condition="running"
+								tal:attributes="value svc/retstarturl| nothing"
+								tal:content="string:Restart this service" />
+
+							<option
+								tal:condition="running"
+								tal:attributes="value svc/disableurl | nothing"
+								tal:content="string:Stop this service" />
+
+							<option
+								tal:condition="not: running"
+								tal:attributes="value svc/enableurl | nothing"
+								tal:content="string:Start this service" />
+
+							<option
+								tal:condition="not: running"
+								tal:attributes="value svc/delurl | nothing"
+								tal:content="string:Delete this service" />
 						</select>
 						<input type="submit" value="Go"/>
 					</form>
@@ -3047,14 +3069,15 @@
 							<option value="" tal:attributes="value innermap/disableurl">Disable this service</option>
 							<option value="">----------</option>
 							<option tal:repeat="starturl innermap/links" value="" tal:attributes="value starturl/url">Start this service on <span tal:replace="starturl/nodename"/></option>
-							<option value="">----------</option>
-							<option value="">Delete this service</option>
 						</tal:block>
 
 						<tal:block tal:condition="not: running">
 							<option value="">----------</option>
 							<option value="" tal:attributes="value innermap/enableurl">Enable this service</option>
 							<option value="">----------</option>
+							<option
+								tal:attributes="value innermap/delurl | nothing"
+								tal:content="string:Delete this service" />
 						</tal:block>
 					</select>
 					<input type="submit" value="Go"/>
@@ -3152,6 +3175,11 @@
 	<h2>Service Process Form</h2>
 </div>
 
+<div metal:define-macro="servicedelete-form">
+	<h2>Service Delete Form</h2>
+	<tal:block tal:define="dummy python: here.delService(request)" />
+</div>
+
 <div metal:define-macro="resources-form">
 	<h2>Resources Form</h2>
 </div>
--- conga/luci/site/luci/Extensions/cluster_adapters.py	2006/12/05 23:32:35	1.172
+++ conga/luci/site/luci/Extensions/cluster_adapters.py	2006/12/06 18:38:54	1.173
@@ -404,7 +404,6 @@
 		form_xml = request['form_xml']
 		if not form_xml:
 			raise KeyError, 'form_xml must not be blank'
-		luci_log.debug_verbose('VSAXML DUMP: %s' % form_xml)
 	except Exception, e:
 		luci_log.debug_verbose('vSA0: no form_xml: %s' % str(e))
 		return (False, {'errors': ['No resource data was supplied for this service.']})
@@ -1920,6 +1919,7 @@
 				itemmap['nodename'] = item['nodename']
 			itemmap['autostart'] = item['autostart']
 			itemmap['cfgurl'] = baseurl + "?" + "clustername=" + cluname + "&servicename=" + item['name'] + "&pagetype=" + SERVICE
+			itemmap['delurl'] = baseurl + "?" + "clustername=" + cluname + "&servicename=" + item['name'] + "&pagetype=" + SERVICE_DELETE
 
 			svc = modelb.retrieveServiceByName(item['name'])
 			dom = svc.getAttribute("domain")
@@ -1980,6 +1980,8 @@
 					innermap['current'] = "This service is currently running on %s" % nodename
 					innermap['disableurl'] = baseurl + "?" + "clustername=" + cluname +"&servicename=" + servicename + "&pagetype=" + SERVICE_STOP
 					innermap['restarturl'] = baseurl + "?" + "clustername=" + cluname +"&servicename=" + servicename + "&pagetype=" + SERVICE_RESTART
+					innermap['delurl'] = baseurl + "?" + "clustername=" + cluname +"&servicename=" + servicename + "&pagetype=" + SERVICE_DELETE
+
 					nodes = modelb.getNodes()
 					for node in nodes:
 						starturl = {}
@@ -2026,16 +2028,18 @@
 	if parent is not None:
 		rc_map['parent'] = parent
 	rc_map['name'] = child.getName()
+
+	#Note: Final version needs all resource attrs
 	if child.isRefObject() == True:
 		rc_map['ref_object'] = True
 		rc_map['type'] = child.getObj().getResourceType()
+		rc_map['attrs'] = child.getObj().getAttributes()
 	else:
 		rc_map['type'] = child.getResourceType()
+		rc_map['attrs'] = child.getAttributes()
 
 	rc_map['indent_ctr'] = indent_ctr
 
-	#Note: Final version needs all resource attrs
-	rc_map['attrs'] = child.getAttributes()
 	rc_map['uuid'] = make_uuid('resource')
 	rc_map['parent_uuid'] = parent_uuid
 
@@ -3985,6 +3989,82 @@
 			except:
 				continue
 
+def delService(self, request):
+	errstr = 'An error occurred while attempting to set the new cluster.conf'
+
+	try:
+		modelb = request.SESSION.get('model')
+	except Exception, e:
+		luci_log.debug_verbose('delService0: no model: %s' % str(e))
+		return (False, {'errors': [ errstr ] })
+
+	name = None
+	try:
+		name = request['servicename']
+	except:
+		try:
+			name = request.form['servicename']
+		except:
+			pass
+
+	if name is None:
+		luci_log.debug_verbose('delService1: no service name')
+		return (False, {'errors': [ '%s: no service name was provided.' % errstr ]})
+
+	clustername = None
+	try:
+		clustername = request['clustername']
+	except:
+		try:
+			clustername = request.form['clustername']
+		except:
+			pass
+
+	if clustername is None:
+		luci_log.debug_verbose('delService2: no cluster name for %s' % name)
+		return (False, {'errors': [ '%s: no cluster name was provided.' % errstr ]})
+
+	rc = getRicciAgent(self, clustername)
+	if not rc:
+		luci_log.debug_verbose('delService3: unable to get ricci agent for cluster %s' % clustername)
+		return (False, {'errors': [ '%s: unable to find a Ricci agent for this cluster.' % errstr ]})
+
+	try:
+		ragent = rc.hostname()
+		if not ragent:
+			raise Exception, 'unable to determine the hostname of the ricci agent'
+	except Exception, e:
+		luci_log.debug_verbose('delService4: %s: %s' % (errstr, str(e)))
+		return (False, {'errors': [ '%s: unable to find a Ricci agent for this cluster.' % errstr ]})
+
+	try:
+		modelb.deleteService(name)
+	except Exception, e:
+		luci_log.debug_verbose('delService5: Unable to find a service named %s for cluster %s' % (name, clustername))
+		return (False, {'errors': [ '%s: error removing service %s.' % (errstr, name) ]})
+
+	try:
+		conf = modelb.exportModelAsString()
+		if not conf:
+			raise Exception, 'model string is blank'
+	except Exception, e:
+		luci_log.debug_verbose('delService6: exportModelAsString failed: %s' \
+			% str(e))
+		return (False, {'errors': [ '%s: error removing service %s.' % (errstr, name) ]})
+
+	batch_number, result = setClusterConf(rc, str(conf))
+	if batch_number is None or result is None:
+		luci_log.debug_verbose('delService7: missing batch and/or result')
+		return (False, {'errors': [ '%s: error removing service %s.' % (errstr, name) ]})
+
+	try:
+		set_node_flag(self, clustername, ragent, str(batch_number), SERVICE_DELETE, "Removing service \'%s\'" % name)
+	except Exception, e:
+		luci_log.debug_verbose('delService8: failed to set flags: %s' % str(e))
+
+	response = request.RESPONSE
+	response.redirect(request['URL'] + "?pagetype=" + SERVICES + "&clustername=" + clustername + '&busyfirst=true')
+
 def delResource(self, rc, request):
 	errstr = 'An error occurred while attempting to set the new cluster.conf'
 
@@ -4068,9 +4148,6 @@
 	if form is None:
 		form = request.form
 
-	if form is not None:
-		luci_log.debug_verbose('addIp DUMP: %s' % str(form.items()))
-
 	if not form:
 		luci_log.debug_verbose('addIp error: form is missing')
 		return None
--- conga/luci/site/luci/Extensions/conga_constants.py	2006/11/27 20:06:53	1.27
+++ conga/luci/site/luci/Extensions/conga_constants.py	2006/12/06 18:38:55	1.28
@@ -43,6 +43,7 @@
 FENCEDEV_CONFIG="53"
 FENCEDEV="54"
 CLUSTER_DAEMON="55"
+SERVICE_DELETE = '56'
 
 #Cluster tasks
 CLUSTER_STOP = '1000'



             reply	other threads:[~2006-12-06 18:38 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-06 18:38 rmccabe [this message]
  -- strict thread matches above, loose matches on Subject: below --
2007-09-25 22:47 [Cluster-devel] conga/luci cluster/form-chooser cluster/form-m rmccabe
2007-03-12  4:25 rmccabe
2007-03-12  4:24 rmccabe
2007-03-12  4:22 rmccabe
2007-02-23 22:07 rmccabe
2006-12-21 21:26 kupcevic
2006-12-07 17:54 rmccabe
2006-11-10 19:44 rmccabe
2006-10-09 17:12 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=20061206183857.24454.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.