[prev in list] [next in list] [prev in thread] [next in thread]
List: luci-commits
Subject: [Luci-commits] [luci] luci: Add support for fence device attributes
From: rmccabe () fedoraproject ! org (Ryan McCabe)
Date: 2012-12-05 14:16:15
Message-ID: 20121205141615.4DEF8348F () hosted02 ! fedoraproject ! org
[Download RAW message or body]
commit f581a7e89a64a04816b083089aba4d4ce5f00274
Author: Ryan McCabe <rmccabe at redhat.com>
Date: Wed Dec 5 09:14:22 2012 -0500
luci: Add support for fence device attributes
Add support for configuring the "delay" "power_timeout"
"shell_timeout" "login_timeout" and "retry_on" attributes
for fence devices that support them.
Resolves: rhbz#883008
Signed-off-by: Ryan McCabe <rmccabe at redhat.com>
luci/controllers/cluster.py | 29 +-
luci/templates/fence_devices.html | 796 ++++++++++++++++++++++++++++++++++-
luci/templates/fence_instances.html | 180 +++++++-
luci/validation/validate_fence.py | 138 ++++++-
4 files changed, 1109 insertions(+), 34 deletions(-)
---
diff --git a/luci/controllers/cluster.py b/luci/controllers/cluster.py
index 6e09e2f..593d6e1 100644
--- a/luci/controllers/cluster.py
+++ b/luci/controllers/cluster.py
@@ -515,7 +515,7 @@ class IndividualClusterController(BaseController):
self.get_model()
self.model.getResourceByName(resourcename)
except Exception, e:
- resourcename=None
+ resourcename = None
return dict(page='nodes', name=resourcename, base_url=base_url, \
resources_cmd=resources_cmd)
@@ -915,7 +915,7 @@ class IndividualClusterController(BaseController):
redirect(tmpl_context.cluster_url)
@expose("luci.templates.fence")
- def fences(self, *args):
+ def fences(self, *args, **kwargs):
fences_cmd = '/cluster/%s/fences_cmd' % self.name
try:
@@ -924,14 +924,14 @@ class IndividualClusterController(BaseController):
flash(e, status="warning")
redirect("/")
- if len(args) == 1:
- if request.response_ext:
- fencename = '%s%s' % (args[0], request.response_ext)
- else:
- fencename = args[0]
+ if len(args) >= 1:
+ fencename = '/'.join([unquote_plus(a) for a in args])
else:
fencename = None
+ if 'name' in request.params:
+ fencename = request.params['name']
+
self.get_model()
if not self.model.getFenceDeviceByName(fencename):
fencename = None
@@ -941,6 +941,7 @@ class IndividualClusterController(BaseController):
@expose("luci.templates.fence")
def fences_cmd(self, command=None, **kw):
tmpl_context.cluster_url = '/cluster/%s/fences' % self.name
+ redir_fmt = '%s?name=%s'
try:
permission_config(self.name)
@@ -973,12 +974,18 @@ class IndividualClusterController(BaseController):
fret = validateNewFenceDevice(self.model, **kw)
if fret[0] is True:
rh.update_cluster_conf(self.model)
- log.info('User "%s" created fence devices "%s" in cluster "%s"'
+ flash(_('Created fence device "%s"') % cur_list[0])
+ log.info('User "%s" created fence device "%s" in cluster "%s"'
% (self.username, ', '.join(cur_list), self.name))
+ redirect(redir_fmt
+ % (tmpl_context.cluster_url, quote_plus(cur_list[0])))
else:
msgs = fret[1]
if msgs and len(msgs) > 0:
flash(', '.join(msgs), status="error")
+ else:
+ flash(_('Creating fence device %s failed') % cur_list[0],
+ status="error")
elif command == 'Delete':
log.info('User "%s" deleted fence devices "%s" in cluster "%s"'
% (self.username, ', '.join(cur_list), self.name))
@@ -995,12 +1002,18 @@ class IndividualClusterController(BaseController):
fret = validateFenceDevice(self.model, **kw)
if fret[0] is True:
rh.update_cluster_conf(self.model)
+ flash(_('Edited fence device "%s"') % cur_list[0])
log.info('User "%s" updated fence device "%s" in cluster "%s"'
% (self.username, ', '.join(cur_list), self.name))
+ redirect(redir_fmt
+ % (tmpl_context.cluster_url, quote_plus(cur_list[0])))
else:
msgs = fret[1]
if msgs and len(msgs) > 0:
flash(', '.join(msgs), status="error")
+ else:
+ flash(_('Updating fence device %s failed') % cur_list[0],
+ status="error")
else:
log.error('User "%s" submitted unknown command "%s" for fence devices \
"%s" from cluster "%s"'
% (self.username, command, ', '.join(cur_list), self.name))
diff --git a/luci/templates/fence_devices.html b/luci/templates/fence_devices.html
index d0a2b4c..c2d86b3 100644
--- a/luci/templates/fence_devices.html
+++ b/luci/templates/fence_devices.html
@@ -60,6 +60,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -211,6 +239,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -348,6 +404,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -485,6 +569,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -771,6 +883,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -843,6 +983,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -1107,6 +1275,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -1179,6 +1375,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -1258,6 +1482,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -1322,17 +1574,38 @@
</td>
</tr>
<tr>
- <td>Separator</td>
+ <td>Power Wait (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_wait"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
<td>
- <input type="text" class="text" name="separator"
- py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('separator')} or {}"/> + <input type="text" \
class="text" name="power_timeout" + py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> </td>
</tr>
<tr>
- <td>Power Wait (seconds)</td>
+ <td>Shell Timeout (seconds)</td>
<td>
- <input type="text" class="text" name="power_wait"
- py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> + <input type="text" \
class="text" name="shell_timeout" + py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> </td>
</tr>
</table>
@@ -1423,6 +1696,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -1495,6 +1796,41 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Delay (seconds)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('delay')}"/> + </td>
+ </tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -1584,6 +1920,13 @@
</select>
</td>
</tr>
+ <tr>
+ <td>Delay (seconds)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('delay')}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -1676,6 +2019,41 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Delay (seconds)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('delay')}"/> + </td>
+ </tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -1739,6 +2117,55 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('telnet_port')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Force Command Prompt</td>
+ <td>
+ <input type="text" class="text" name="cmd_prompt"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('cmd_prompt')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Power Wait (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_wait"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Delay (seconds)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('delay')}"/> + </td>
+ </tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -1881,6 +2308,27 @@
</py:with>
</td>
</tr>
+ <tr>
+ <td>IPMI Operation Timeout</td>
+ <td>
+ <input name="timeout" type="text" class="text"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('timeout')}"/> + </td>
+ </tr>
+ <tr>
+ <td>Power Wait (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_wait"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Delay (seconds)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('delay')}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -1951,6 +2399,41 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Delay (seconds)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('delay')}"/> + </td>
+ </tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -2100,6 +2583,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -2186,6 +2697,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -2318,6 +2857,41 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Delay (seconds)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('delay')}"/> + </td>
+ </tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -2381,6 +2955,13 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('hidden_page')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -2532,6 +3113,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -2626,6 +3235,41 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Delay (seconds)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('delay')}"/> + </td>
+ </tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -2775,6 +3419,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -2851,6 +3523,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -3156,6 +3856,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -3307,6 +4035,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
@@ -3393,6 +4149,34 @@
py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_wait')} or {}"/> </td>
</tr>
+ <tr>
+ <td>Power Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="power_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('power_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Shell Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="shell_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('shell_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Login Timeout (seconds)</td>
+ <td>
+ <input type="text" class="text" name="login_timeout"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('login_timeout')} or {}"/> + </td>
+ </tr>
+ <tr>
+ <td>Times to Retry Power On Operation</td>
+ <td>
+ <input type="text" class="text" name="retry_on"
+ py:attrs="cur_fencedev and {'value': \
cur_fencedev.getAttribute('retry_on')} or {}"/> + </td>
+ </tr>
</table>
<py:if test="cur_fencedev">
diff --git a/luci/templates/fence_instances.html \
b/luci/templates/fence_instances.html index 66721c6..8032cd2 100644
--- a/luci/templates/fence_instances.html
+++ b/luci/templates/fence_instances.html
@@ -19,6 +19,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('switch')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td>
<fieldset>
<legend>SSH</legend>
@@ -74,6 +81,13 @@
</td>
</tr>
<tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
+ <tr>
<td>Unfencing</td>
<td>
<input type="checkbox" class="checkbox" name="unfencing"
@@ -114,6 +128,13 @@
</td>
</tr>
<tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
+ <tr>
<td>Path to SSH Identity File</td>
<td>
<input type="text" class="text" name="identity_file"
@@ -145,6 +166,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td>
<fieldset>
<legend>SSH</legend>
@@ -200,6 +228,13 @@
</td>
</tr>
<tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
+ <tr>
<td>
<span title="Enable SSL operation">Use SSL</span>
</td>
@@ -232,6 +267,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td>
<fieldset>
<legend>SSH</legend>
@@ -279,6 +321,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td>
<fieldset>
<legend>SSH</legend>
@@ -326,6 +375,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -408,6 +464,13 @@
</td>
</tr>
<tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
+ <tr>
<td>Unfencing</td>
<td>
<input type="checkbox" class="checkbox" name="unfencing"
@@ -521,6 +584,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('domain')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -545,6 +615,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('domain')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -569,6 +646,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td>
<fieldset>
<legend>SSH</legend>
@@ -640,6 +724,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td>
<fieldset>
<legend>SSH</legend>
@@ -687,6 +778,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -711,6 +809,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -735,6 +840,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -759,6 +871,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -783,6 +902,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -807,6 +933,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -831,6 +964,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -915,6 +1055,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -929,16 +1076,6 @@
py:attrs="cur_fence_dev_id and {'value': cur_fence_dev_id} or {}" />
</div>
-<div py:def="fence_drac_instance(cur_fence_inst, cur_fence_dev_id, fi_id, **kw)" \
id="fence_drac_instance"
- py:attrs="fi_id is not None and {'id': fi_id, 'class':'fenceinst'}">
-
- <div class="emptyfenceinst">No additional parameters</div>
- <input type="hidden" name="fence_type" value="fence_drac" />
- <input type="hidden" name="fence_instance" value="1" />
- <input type="hidden" name="parent_fencedev"
- py:attrs="cur_fence_dev_id and {'value': cur_fence_dev_id} or {}" />
-</div>
-
<div py:def="fence_alom_instance(cur_fence_inst, cur_fence_dev_id, fi_id, **kw)" \
id="fence_alom_instance" py:attrs="fi_id is not None and {'id': fi_id, \
'class':'fenceinst'}">
@@ -1049,6 +1186,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td colspan="2">
<div>
<input type="button" name="remove_fence" value="Remove this instance"
@@ -1073,6 +1217,13 @@
py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('port')}"/> </td>
</tr>
+ <tr>
+ <td>Delay (optional)</td>
+ <td>
+ <input name="delay" type="text" class="text"
+ py:attrs="cur_fence_inst and {'value': \
cur_fence_inst.getAttribute('delay')}"/> + </td>
+ </tr>
<tr><td>
<fieldset>
<legend>SSH</legend>
@@ -1119,15 +1270,6 @@
py:attrs="cur_fence_dev_id and {'value': cur_fence_dev_id} or {}" />
</div>
-<div py:def="fence_drac_instance(cur_fence_inst, cur_fence_dev_id, fi_id, **kw)" \
id="fence_drac_instance"
- py:attrs="fi_id is not None and {'id': fi_id, 'class':'fenceinst'}">
-
- <div class="emptyfenceinst">No additional parameters</div>
- <input type="hidden" name="fence_type" value="fence_drac" />
- <input type="hidden" name="fence_instance" value="1" />
- <input type="hidden" name="parent_fencedev"
- py:attrs="cur_fence_dev_id and {'value': cur_fence_dev_id} or {}" />
-</div>
<div py:def="fence_instance_container(nodename)"
id="fence_instance_container" class="hidden">
${fence_apc_instance(None, None, None)}
diff --git a/luci/validation/validate_fence.py b/luci/validation/validate_fence.py
index af6c965..64ddc00 100644
--- a/luci/validation/validate_fence.py
+++ b/luci/validation/validate_fence.py
@@ -148,6 +148,10 @@ def val_apc_fd(fencedev, fence_name, **kw):
('passwd', False),
('passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
return errors
@@ -161,6 +165,10 @@ def val_wti_fd(fencedev, fence_name, **kw):
('passwd', False),
('passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -174,6 +182,10 @@ def val_virsh_fd(fencedev, fence_name, **kw):
('passwd', False),
('passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -240,6 +252,10 @@ def val_sanbox2_fd(fencedev, fence_name, **kw):
('passwd', False),
('passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -253,6 +269,10 @@ def val_bladecenter_fd(fencedev, fence_name, **kw):
('passwd', False),
('passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -275,8 +295,11 @@ def val_vmware_soap_fd(fencedev, fence_name, **kw):
('login', True),
('passwd', False),
('passwd_script', False),
- ('separator', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -292,6 +315,10 @@ def val_vmware_fd(fencedev, fence_name, **kw):
('vmpasswd', False),
('vmpasswd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -315,6 +342,10 @@ def val_lpar_fd(fencedev, fence_name, **kw):
('passwd_script', False),
('hmc_version', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -347,6 +378,11 @@ def val_rsa_fd(fencedev, fence_name, **kw):
('passwd_script', False),
('cmd_prompt', False),
('power_wait', False),
+ ('delay', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -359,6 +395,13 @@ def val_rsb_fd(fencedev, fence_name, **kw):
('telnet_port', False),
('passwd', False),
('passwd_script', False),
+ ('cmd_prompt', False),
+ ('power_wait', False),
+ ('delay', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -371,6 +414,7 @@ def val_eps_fd(fencedev, fence_name, **kw):
('passwd', False),
('passwd_script', False),
('hidden_page', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -388,6 +432,11 @@ def val_drac5_fd(fencedev, fence_name, **kw):
('passwd', False),
('passwd_script', False),
('power_wait', False),
+ ('delay', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -402,6 +451,7 @@ def val_drac_fd(fencedev, fence_name, **kw):
('passwd', False),
('passwd_script', False),
('drac_version', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -426,6 +476,9 @@ def val_ipmilan_fd(fencedev, fence_name, **kw):
('lanplus', False),
('cipher', False),
('privlvl', False),
+ ('timeout', False),
+ ('power_wait', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -439,6 +492,11 @@ def val_alom_fd(fencedev, fence_name, **kw):
('passwd', False),
('passwd_script', False),
('power_wait', False),
+ ('delay', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -453,6 +511,10 @@ def val_ldom_fd(fencedev, fence_name, **kw):
('passwd_script', False),
('cmd_prompt', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -505,6 +567,10 @@ def val_ibmblade_fd(fencedev, fence_name, **kw):
('snmp_priv_passwd', False),
('snmp_priv_passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -520,6 +586,10 @@ def val_hpblade_fd(fencedev, fence_name, **kw):
('passwd', False),
('passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -540,6 +610,10 @@ def val_ifmib_fd(fencedev, fence_name, **kw):
('snmp_priv_passwd', False),
('snmp_priv_passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -560,6 +634,10 @@ def val_cisco_mds_fd(fencedev, fence_name, **kw):
('snmp_priv_passwd', False),
('snmp_priv_passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -575,6 +653,10 @@ def val_cisco_ucs_fd(fencedev, fence_name, **kw):
('ssl', False),
('suborg', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -603,6 +685,10 @@ def val_apc_snmp_fd(fencedev, fence_name, **kw):
('snmp_priv_passwd', False),
('snmp_priv_passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -623,6 +709,10 @@ def val_intelmodular_fd(fencedev, fence_name, **kw):
('snmp_priv_passwd', False),
('snmp_priv_passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -639,6 +729,11 @@ def val_ilo_mp_fd(fencedev, fence_name, **kw):
('identity_file', False),
('cmd_prompt', False),
('power_wait', False),
+ ('delay', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -652,6 +747,11 @@ def val_ilo_fd(fencedev, fence_name, **kw):
('passwd', False),
('passwd_script', False),
('power_wait', False),
+ ('delay', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -672,6 +772,10 @@ def val_ipdu_fd(fencedev, fence_name, **kw):
('snmp_priv_passwd', False),
('snmp_priv_passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -692,6 +796,10 @@ def val_eaton_snmp_fd(fencedev, fence_name, **kw):
('snmp_priv_passwd', False),
('snmp_priv_passwd_script', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -706,6 +814,10 @@ def val_rhevm_fd(fencedev, fence_name, **kw):
('passwd_script', False),
('ssl', False),
('power_wait', False),
+ ('power_timeout', False),
+ ('shell_timeout', False),
+ ('login_timeout', False),
+ ('retry_on', False),
)
errors = config_fence_attr(params, fencedev, fence_name, **kw)
@@ -818,6 +930,7 @@ def val_apc_fi(fenceinst, parent_name, **kw):
('switch', False),
('secure', False),
('identity_file', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -828,6 +941,7 @@ def val_wti_fi(fenceinst, parent_name, **kw):
('port', True),
('secure', False),
('identity_file', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -838,6 +952,7 @@ def val_virsh_fi(fenceinst, parent_name, **kw):
('port', True),
('secure', False),
('identity_file', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -870,6 +985,7 @@ def val_gnbd_fi(fenceinst, parent_name, **kw):
def val_sanbox2_fi(fenceinst, parent_name, **kw):
params = (
('port', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -881,6 +997,7 @@ def val_bladecenter_fi(fenceinst, parent_name, **kw):
('switch', False),
('secure', False),
('identity_file', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -892,6 +1009,7 @@ def val_ipdu_fi(fenceinst, parent_name, **kw):
('switch', False),
('secure', False),
('identity_file', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -909,6 +1027,7 @@ def val_egenera_fi(fenceinst, parent_name, **kw):
params = (
('lpan', True),
('pserver', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -920,6 +1039,7 @@ def val_lpar_fi(fenceinst, parent_name, **kw):
('managed', True),
('secure', True),
('identity_file', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -936,6 +1056,7 @@ def val_bullpap_fi(fenceinst, parent_name, **kw):
def val_xvm_fi(fenceinst, parent_name, **kw):
params = (
('domain', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -944,6 +1065,7 @@ def val_xvm_fi(fenceinst, parent_name, **kw):
def val_virt_fi(fenceinst, parent_name, **kw):
params = (
('domain', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -954,6 +1076,7 @@ def val_vmware_soap_fi(fenceinst, parent_name, **kw):
('ssl', False),
('port', False),
('uuid', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -966,6 +1089,7 @@ def val_vmware_fi(fenceinst, parent_name, **kw):
('port', True),
('secure', False),
('identity_file', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -984,6 +1108,7 @@ def val_ldom_fi(fenceinst, parent_name, **kw):
('port', True),
('secure', False),
('identity_file', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -992,6 +1117,7 @@ def val_ldom_fi(fenceinst, parent_name, **kw):
def val_cisco_mds_fi(fenceinst, parent_name, **kw):
params = (
('port', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -1000,6 +1126,7 @@ def val_cisco_mds_fi(fenceinst, parent_name, **kw):
def val_cisco_ucs_fi(fenceinst, parent_name, **kw):
params = (
('port', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -1008,6 +1135,7 @@ def val_cisco_ucs_fi(fenceinst, parent_name, **kw):
def val_eps_fi(fenceinst, parent_name, **kw):
params = (
('port', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -1016,6 +1144,7 @@ def val_eps_fi(fenceinst, parent_name, **kw):
def val_ibmblade_fi(fenceinst, parent_name, **kw):
params = (
('port', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -1026,6 +1155,7 @@ def val_hpblade_fi(fenceinst, parent_name, **kw):
('port', True),
('secure', False),
('identity_file', False),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -1034,6 +1164,7 @@ def val_hpblade_fi(fenceinst, parent_name, **kw):
def val_ifmib_fi(fenceinst, parent_name, **kw):
params = (
('port', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -1042,6 +1173,7 @@ def val_ifmib_fi(fenceinst, parent_name, **kw):
def val_apc_snmp_fi(fenceinst, parent_name, **kw):
params = (
('port', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -1050,6 +1182,7 @@ def val_apc_snmp_fi(fenceinst, parent_name, **kw):
def val_intelmodular_fi(fenceinst, parent_name, **kw):
params = (
('port', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -1067,6 +1200,7 @@ def val_scsi_fi(fenceinst, parent_name, **kw):
def val_rhevm_fi(fenceinst, parent_name, **kw):
params = (
('port', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
@@ -1075,10 +1209,12 @@ def val_rhevm_fi(fenceinst, parent_name, **kw):
def val_eaton_snmp_fi(fenceinst, parent_name, **kw):
params = (
('port', True),
+ ('delay', False),
)
errors = config_fence_attr(params, fenceinst, parent_name, **kw)
return errors
+
def val_noop_fi(fenceinst, parent_name, **kw):
return []
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic