-
-% if instance.enabled and master.restartable_client(instance) and request.has_perm('{}.restart'.format(route_prefix)):
-
-
Client Tools
-
-
+<%def name="object_helpers()">
+ % if instance.enabled and master.restartable_client(instance) and request.has_perm('{}.restart'.format(route_prefix)):
+
+
Client Tools
+
+
+
-
-% endif
+ % endif
+%def>
-
- ${form.render()|n}
-
-
-% if master.has_rows:
- ${rows_grid|n}
-% endif
+${parent.body()}
diff --git a/tailbone/views/tempmon/clients.py b/tailbone/views/tempmon/clients.py
index dc5d54ce..d38d38f2 100644
--- a/tailbone/views/tempmon/clients.py
+++ b/tailbone/views/tempmon/clients.py
@@ -28,6 +28,7 @@ from __future__ import unicode_literals, absolute_import
import subprocess
+from rattail.config import parse_list
from rattail_tempmon.db import model as tempmon
import colander
@@ -199,7 +200,8 @@ class TempmonClientView(MasterView):
g.set_sort_defaults('taken', 'desc')
def restartable_client(self, client):
- return True
+ cmd = self.get_restart_cmd(client)
+ return bool(cmd)
def restart(self):
client = self.get_instance()
@@ -217,7 +219,13 @@ class TempmonClientView(MasterView):
return self.redirect(self.get_action_url('view', client))
def get_restart_cmd(self, client):
- return ['ssh', client.hostname, 'sudo service tempmon-client restart']
+ name = 'rattail.tempmon.client.restart'
+ cmd = self.rattail_config.get('rattail.tempmon', 'client.restart.{}'.format(client.config_key))
+ if not cmd:
+ cmd = self.rattail_config.get('rattail.tempmon', 'client.restart')
+ if cmd:
+ cmd = cmd.format(hostname=client.hostname)
+ return parse_list(cmd)
@classmethod
def defaults(cls, config):