summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNozomi Anzai2011-10-11 07:39:04 +0000
committerNozomi Anzai2011-10-11 07:39:04 +0000
commitd84b89f5a5f47087dbe3837a9dce01f11bc6273e (patch)
tree6c898fa4150a45f385b2cec5b93ccf0fcd9fc7d1
parentce25121ed51cee720a7a99201e8da95a34646eba (diff)
- add pcp_promote_node command
(This will be shown in Master/Slave & SR mode.)
-rw-r--r--command.php9
-rw-r--r--common.php44
-rw-r--r--nodeStatus.php44
-rw-r--r--status.php41
-rw-r--r--templates/nodeStatus.tpl15
-rw-r--r--templates/status.tpl218
6 files changed, 265 insertions, 106 deletions
diff --git a/command.php b/command.php
index 0c67c57..f316bad 100644
--- a/command.php
+++ b/command.php
@@ -32,7 +32,7 @@ require_once('common.php');
* @param srgs $num
* @return array
*/
-function execPcp($command, $num='')
+function execPcp($command, $num = '')
{
$pcpStatus = array (
'0' => 'SUCCESS',
@@ -138,6 +138,13 @@ function execPcp($command, $num='')
$ret = exec($cmd, $output, $return_var);
break;
+ case 'PCP_PROMOTE_NODE':
+ // -g option means that standby doesn't become primary
+ // untill all connection get closed.
+ $cmd = _PGPOOL2_PCP_DIR . '/pcp_promote_node' .' -g '. $args;
+ $ret = exec($cmd, $output, $return_var);
+ break;
+
case 'PCP_RECOVERY_NODE':
$cmd = _PGPOOL2_PCP_DIR . '/pcp_recovery_node' . $args;
$ret = exec($cmd, $output, $return_var);
diff --git a/common.php b/common.php
index 11f3c13..120b394 100644
--- a/common.php
+++ b/common.php
@@ -186,7 +186,7 @@ function selectLanguage($selectLang, $messageList)
$lang = 'en';
} else {
- $langList = split(',|;', $acceptLanguages);
+ $langList = explode(',|;', $acceptLanguages);
foreach ($langList as $acceptLanguage) {
foreach (array_keys($messageList) as $messageLanguage) {
if ($acceptLanguage == $messageLanguage ) {
@@ -260,20 +260,16 @@ function NodeActive($num)
*/
function NodeStandby($num)
{
-
- $params = readConfigParams(array('master_slave_mode','master_slave_sub_mode'));
-
- if ($params['master_slave_mode'] != 'true' || $params['master_slave_sub_mode'] != 'stream') {
+ if (isMasterSlaveMode() == FALSE || useStreaming() == FALSE) {
return -1;
}
- $healthCheckDb = 'template1';
-
$params = readHealthCheckParam();
$healthCheckUser = $params['health_check_user'];
$backendHostName = $params['backend_hostname'][$num];
$backendPort = $params['backend_port'][$num];
+ $healthCheckDb = 'template1';
if ($backendHostName != '') {
$conStr = "dbname=$healthCheckDb user=$healthCheckUser host=$backendHostName port=$backendPort" ;
@@ -374,7 +370,39 @@ function isMasterSlaveMode()
{
$params = readConfigParams(array('master_slave_mode'));
- if ($params['master_slave_mode'] == 'true') {
+ if ($params['master_slave_mode'] == 'on') {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+
+/**
+ * Whether pgpool is using stream sub mode in master slave mode or not?
+ *
+ * @return bool
+ */
+function useStreaming()
+{
+ $params = readConfigParams(array('master_slave_sub_mode'));
+
+ if (isMasterSlaveMode() && $params['master_slave_sub_mode'] == 'stream') {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+
+/**
+ * Whether pgpool uses syslog or not?
+ *
+ * @return bool
+ */
+function useSyslog()
+{
+ $params = readConfigParams(array('log_destination'));
+
+ if ($params['log_destination'] == 'syslog') {
return TRUE;
} else {
return FALSE;
diff --git a/nodeStatus.php b/nodeStatus.php
index eb042d3..6b279ca 100644
--- a/nodeStatus.php
+++ b/nodeStatus.php
@@ -29,10 +29,16 @@ $tpl->assign('help', basename( __FILE__, '.php'));
$MAX_VALUE = PHP_INT_MAX;
+// node status in "pcp_node_info" result
+define('NODE_ACTIVE_NO_CONNECT', 1);
+define('NODE_ACTIVE_CONNECTED', 2);
+define('NODE_DOWN', 3);
+
if (!isset($_SESSION[SESSION_LOGIN_USER])) {
exit();
}
+// cout nodes
$ret = execPcp('PCP_NODE_COUNT');
if (!array_key_exists('SUCCESS', $ret)) {
$errorCode = 'e1002';
@@ -45,15 +51,15 @@ if (!array_key_exists('SUCCESS', $ret)) {
$tpl->assign('nodeCount', $nodeCount);
-$isParallelMode = isParallelMode();
-$isReplicationMode = isReplicationMode();
-$isMasterSlaveMode = isMasterSlaveMode();
-
$nodeInfo = array();
$node_alive = FALSE;
-for ($i = 0; $i<$nodeCount; $i++) {
+// get nodes' status
+for ($i = 0; $i < $nodeCount; $i++) {
+ // execute "pcp_node_info" command
+ // ex) host1 5432 1 1073741823.500000
$ret = execPcp('PCP_NODE_INFO', $i);
+
if (!array_key_exists('SUCCESS', $ret)) {
$errorCode = 'e1003';
$tpl->assign('errorCode', $errorCode);
@@ -65,14 +71,21 @@ for ($i = 0; $i<$nodeCount; $i++) {
}
$nodeInfo[$i] = explode(" ", $ret);
+
+ // load balance weight: normalize format
$nodeInfo[$i][3] = sprintf('%.3f', $nodeInfo[$i][3]);
- /* node is active? */
- if ($nodeInfo[$i][2] != 3) {
+ // node is active?
+ if ($nodeInfo[$i][2] != NODE_DOWN) {
$node_alive = TRUE;
}
}
+// select buttons to each nodes depending on their status
+$isParallelMode = isParallelMode();
+$isReplicationMode = isReplicationMode();
+$isMasterSlaveMode = isMasterSlaveMode();
+
for ($i = 0; $i < $nodeCount; $i++) {
if ($node_alive == FALSE) {
if (($isReplicationMode || $isMasterSlaveMode) && NodeActive($i)) {
@@ -81,21 +94,24 @@ for ($i = 0; $i < $nodeCount; $i++) {
array_push($nodeInfo[$i], 'none');
}
- } elseif( $isParallelMode ) {
+ } elseif ($isParallelMode ) {
array_push($nodeInfo[$i], 'none');
} else {
switch($nodeInfo[$i][2]) {
- case 1:
- case 2:
+ case NODE_ACTIVE_NO_CONNECT:
+ case NODE_ACTIVE_CONNECTED:
if ($isReplicationMode || $isMasterSlaveMode) {
array_push($nodeInfo[$i], 'disconnect');
} else {
array_push($nodeInfo[$i], 'none');
}
+ if (useStreaming()) {
+ array_push($nodeInfo[$i], 'promote');
+ }
break;
- case 3:
+ case NODE_DOWN:
if ($isReplicationMode || $isMasterSlaveMode) {
if (NodeActive($i)) {
array_push($nodeInfo[$i], 'return');
@@ -109,10 +125,12 @@ for ($i = 0; $i < $nodeCount; $i++) {
}
}
- $nodeInfo[$i][5] = NodeStandby($i);
+ // result of "SELECT pg_is_in_recovery()" as integer(0, 1, -1)
+ // (If pgpool don't act in Master/Slave & SR mode, this value will be ignored.)
+ $nodeInfo[$i][6] = NodeStandby($i);
}
-$tpl->assign('refreshTime', _PGPOOL2_STATUS_REFRESH_TIME*1000);
+$tpl->assign('refreshTime', _PGPOOL2_STATUS_REFRESH_TIME * 1000);
$tpl->assign('nodeInfo', $nodeInfo);
$tpl->assign('parallelMode', $isParallelMode);
$tpl->assign('msgStopPgpool', $message['msgStopPgpool']);
diff --git a/status.php b/status.php
index db4cc49..ce87a72 100644
--- a/status.php
+++ b/status.php
@@ -50,7 +50,6 @@ if (isset($_POST['action'])) {
/**
* Set pgpool command option
*/
-
$tpl->assign('c', _PGPOOL2_CMD_OPTION_C);
$tpl->assign('D', _PGPOOL2_CMD_OPTION_LARGE_D);
$tpl->assign('d', _PGPOOL2_CMD_OPTION_D);
@@ -64,6 +63,11 @@ if (isPipe(_PGPOOL2_LOG_FILE)) {
}
switch ($action) {
+
+ /* --------------------------------------------------------------------- */
+ /* start */
+ /* --------------------------------------------------------------------- */
+
case 'start':
$args = ' ';
@@ -95,7 +99,7 @@ switch ($action) {
$tpl->assign('pgpoolMessage', $ret);
} else {
for ($i = 0; $i < 10; $i++) {
- if(DoesPgpoolPidExist()) {
+ if (DoesPgpoolPidExist()) {
break;
} else {
sleep(1);
@@ -112,6 +116,10 @@ switch ($action) {
break;
+ /* --------------------------------------------------------------------- */
+ /* stop */
+ /* --------------------------------------------------------------------- */
+
case 'stop':
$m = $_POST['stop_mode'];
@@ -140,6 +148,10 @@ switch ($action) {
break;
+ /* --------------------------------------------------------------------- */
+ /* restart */
+ /* --------------------------------------------------------------------- */
+
case 'restart':
/**
* Stop pgpool
@@ -154,7 +166,7 @@ switch ($action) {
exit();
} else {
- for($i = 0; $i < 10; $i++) {
+ for ($i = 0; $i < 10; $i++) {
if (DoesPgpoolPidExist()) {
sleep(1);
} else {
@@ -216,15 +228,15 @@ switch ($action) {
}
break;
+ /* --------------------------------------------------------------------- */
+ /* other */
+ /* --------------------------------------------------------------------- */
+
case 'reload':
- /**
- * reload pgpool
- */
$args = ' ';
$ret = execPcp('PCP_RELOAD_PGPOOL', $args);
break;
-
case 'return':
$ret = execPcp('PCP_ATTACH_NODE', $nodeNumber);
if (!array_key_exists('SUCCESS', $ret)) {
@@ -245,7 +257,6 @@ switch ($action) {
}
break;
-
case 'detach':
$ret = execPcp('PCP_DETACH_NODE', $nodeNumber);
if (!array_key_exists('SUCCESS', $ret)) {
@@ -256,6 +267,16 @@ switch ($action) {
}
break;
+ case 'promote':
+ $ret = execPcp('PCP_PROMOTE_NODE', $nodeNumber);
+ if (!array_key_exists('SUCCESS', $ret)) {
+ $errorCode = 'e1007';
+ $tpl->assign('errorCode', $errorCode);
+ $tpl->display('error.tpl');
+ exit();
+ }
+ break;
+
case 'summary':
$viewPHP = 'innerSummary.php';
break;
@@ -279,15 +300,15 @@ if (DoesPgpoolPidExist()) {
$tpl->assign('pgpoolIsActive', FALSE);
}
-$tpl->assign('viewPHP', $viewPHP);
-
if (_PGPOOL2_STATUS_REFRESH_TIME >= 0 ) {
$refreshTime = _PGPOOL2_STATUS_REFRESH_TIME * 1000;
}
+$tpl->assign('viewPHP', $viewPHP);
$tpl->assign('pgpoolConf', _PGPOOL2_CONFIG_FILE);
$tpl->assign('pcpConf', _PGPOOL2_PASSWORD_FILE);
$tpl->assign('refreshTime', $refreshTime);
+$tpl->assign('useSyslog', useSyslog());
$tpl->assign('msgStopPgpool', $message['msgStopPgpool']);
$tpl->display('status.tpl');
diff --git a/templates/nodeStatus.tpl b/templates/nodeStatus.tpl
index 00be20a..6b3cccd 100644
--- a/templates/nodeStatus.tpl
+++ b/templates/nodeStatus.tpl
@@ -33,16 +33,16 @@
<td>{$nodeInfo[num][1]|escape}</td>
<td>
- {if $nodeInfo[num][2] == 1}
+ {if $nodeInfo[num][2] == $smarty.const.NODE_ACTIVE_NO_CONNECT}
{$message.strNodeStatus1|escape}
- {elseif $nodeInfo[num][2] == 2}
+ {elseif $nodeInfo[num][2] == $smarty.const.NODE_ACTIVE_CONNECTED}
{$message.strNodeStatus2|escape}
- {elseif $nodeInfo[num][2] == 3}
+ {elseif $nodeInfo[num][2] == $smarty.const.NODE_DOWN}
{$message.strNodeStatus3|escape}
{/if}
- {if $nodeInfo[num][5] == 1}
+ {if $nodeInfo[num][6] == 1}
{$message.strStandbyRunning|escape}
- {elseif $nodeInfo[num][5] == 0}
+ {elseif $nodeInfo[num][6] == 0}
{$message.strPrimaryRunning|escape}
{/if}
</td>
@@ -65,6 +65,11 @@
onclick="sendCommand('recovery', {$smarty.section.num.index|escape}, '{$message.msgRecoveryConfirm|escape}')"
value="{$message.strRecovery|escape}" />
{/if}
+ {if $nodeInfo[num][5] == 'promote' && $nodeInfo[num][6] == 1}
+ <input type="button" name="command"
+ onclick="sendCommand('promote', {$smarty.section.num.index|escape}, '{$message.msgRPromoteConfirm|escape}')"
+ value="{$message.strPromote|escape}" />
+ {/if}
</td>
</tr>
diff --git a/templates/status.tpl b/templates/status.tpl
index b1ae2e7..04068a1 100644
--- a/templates/status.tpl
+++ b/templates/status.tpl
@@ -8,23 +8,25 @@
<!--
var strConnError = "{$message.strConnectionError|escape}";
-var strUp = "{$message.strUp|escape}";
-var strDown = "{$message.strDown|escape}";
+var strUp = "{$message.strUp|escape}";
+var strDown = "{$message.strDown|escape}";
var strDataError = "{$message.strDataError|escape}";
-var refreshTime = "{$refreshTime|escape}";
-var view = "{$viewPHP|escape}";
-var msgStopPgpool = "{$message.msgStopPgpool|escape}";
+var refreshTime = "{$refreshTime|escape}";
+var view = "{$viewPHP|escape}";
+var msgStopPgpool = "{$message.msgStopPgpool|escape}";
var msgRestartPgpool = "{$message.msgRestartPgpool|escape}";
-var msgReloadPgpool = "{$message.msgReloadPgpool|escape}";
+var msgReloadPgpool = "{$message.msgReloadPgpool|escape}";
{literal}
+
function load() {
- var xmlhttp = false;
+ var xmlhttp = false;
- if (typeof XMLHttpRequest!='undefined')
+ if (typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
- else
+ } else {
xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
+ }
if (!xmlhttp) {
alert('Sorry, cannot use XMLHttpRequest');
@@ -46,12 +48,15 @@ function load() {
xmlhttp.send("");
}
+/* --------------------------------------------------------------------- */
+
function reload() {
var xmlhttp = false;
- if (typeof XMLHttpRequest!='undefined')
+ if (typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
- else
- xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
+ } else {
+ xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
+ }
if (!xmlhttp) {
alert('Sorry, cannot use XMLHttpRequest');
@@ -73,8 +78,10 @@ function reload() {
xmlhttp.send("");
}
+/* --------------------------------------------------------------------- */
+
function timer(interval) {
- setTimeout("reload()",interval);
+ setTimeout("reload()",interval);
}
function sendCommand(command, nodeNumber, message){
@@ -85,6 +92,10 @@ function sendCommand(command, nodeNumber, message){
}
}
+/* --------------------------------------------------------------------- */
+/* buttons */
+/* --------------------------------------------------------------------- */
+
function startPgpool() {
document.Command.action.value= "start";
document.Command.submit();
@@ -95,6 +106,7 @@ function stopPgpool() {
stopOption.style.visibility = "visible";
stopOption.style.position = "";
stopOption.style.height = "";
+
var cmdBtn = document.getElementById('cmdBtn');
cmdBtn.style.visibility = "hidden";
cmdBtn.style.position = "absolute";
@@ -106,10 +118,12 @@ function restartPgpool() {
stopOption.style.visibility = "hidden";
stopOption.style.position = "absolute";
stopOption.style.height = "0";
+
var restartOption = document.getElementById('restartOption');
restartOption.style.visibility = "visible";
restartOption.style.position = "";
restartOption.style.height = "";
+
var cmdBtn = document.getElementById('cmdBtn');
cmdBtn.style.visibility = "hidden";
cmdBtn.style.position = "absolute";
@@ -121,32 +135,38 @@ function cancelCmd() {
stopOption.style.visibility = "hidden";
stopOption.style.position = "absolute";
stopOption.style.height = "0";
+
var restartOption = document.getElementById('restartOption');
restartOption.style.visibility = "hidden";
restartOption.style.position = "absolute";
restartOption.style.height = "0";
+
var cmdBtn = document.getElementById('cmdBtn');
cmdBtn.style.visibility = "visible";
cmdBtn.style.position = "";
cmdBtn.style.height = "";
}
+/* --------------------------------------------------------------------- */
+/* execute */
+/* --------------------------------------------------------------------- */
+
function execRestartPgpool() {
- if(window.confirm(msgRestartPgpool)){
+ if (window.confirm(msgRestartPgpool)){
document.Command.action.value= "restart";
document.Command.submit();
}
}
function execReloadPgpool() {
- if(window.confirm(msgReloadPgpool)){
+ if (window.confirm(msgReloadPgpool)){
document.Command.action.value= "reload";
document.Command.submit();
}
}
function execStopPgpool() {
- if(window.confirm(msgStopPgpool)){
+ if (window.confirm(msgStopPgpool)){
document.Command.action.value= "stop";
document.Command.submit();
}
@@ -161,197 +181,257 @@ function changeView(chView){
</script>
{/literal}
</head>
+
<body onload="load()">
<div id="header">
<h1><img src="images/logo.gif" alt="pgpoolAdmin" /></h1>
</div>
+
<div id="menu">
{include file="menu.tpl"}
</div>
<div id="content">
<div id="help"><a href="help.php?help={$help|escape}"><img src="images/question.gif" alt="help"/>{$message.strHelp|escape}</a></div>
+
<form action="status.php" name="Command" method="post">
<input type="hidden" name="action" value="" />
<input type="hidden" name="nodeNumber" value="" />
+
+{* --------------------------------------------------------------------- *}
+{* Status Info Buttons *}
+{* --------------------------------------------------------------------- *}
+
<h2>{$message.strPgpoolStatus|escape}</h2>
+
{if $pgpoolIsActive == true}
<p>
<input type="button" name="command" onclick="changeView('summary')" value="{$message.strPgpoolSummary|escape}" />
<input type="button" name="command" onclick="changeView('proc')" value="{$message.strProcInfo|escape}" />
<input type="button" name="command" onclick="changeView('node')" value="{$message.strNodeInfo|escape}" />
- {if $n == 1 && $pipe == 0}
+ {if $useSyslog == FALSE && $n == 1 && $pipe == 0}
<input type="button" name="command" onclick="changeView('log')" value="{$message.strLog|escape}" />
{/if}
-</p>
+</p>
<div id="status"></div>
<p>
<input type="button" name="command" onclick="changeView('summary')" value="{$message.strPgpoolSummary|escape}" />
<input type="button" name="command" onclick="changeView('proc')" value="{$message.strProcInfo|escape}" />
<input type="button" name="command" onclick="changeView('node')" value="{$message.strNodeInfo|escape}" />
- {if $n == 1 && $pipe == 0}
+ {if $useSyslog == FALSE && $n == 1 && $pipe == 0}
<input type="button" name="command" onclick="changeView('log')" value="{$message.strLog|escape}" />
{/if}
</p>
{else}
{$message.strStopPgpool|escape}
{/if}
+
+{* --------------------------------------------------------------------- *}
+
<h2>{$message.strPgpool|escape}</h2>
+
+ {* --------------------------------------------------------------------- *}
+ {* Start Options *}
+ {* --------------------------------------------------------------------- *}
+
{if $pgpoolIsActive == false}
<table>
<thead><tr><th colspan="2">{$message.strStartOption|escape}</th></tr></thead>
- <tfoot>
- <tr><td colspan="2"><input type="button" name="command" onclick="startPgpool()" value="{$message.strStartPgpool|escape}" /></td></tr></tfoot>
+ <tfoot><tr>
+ <td colspan="2">
+ <input type="button" name="command" onclick="startPgpool()"
+ value="{$message.strStartPgpool|escape}" />
+ </td>
+ </tr></tfoot>
<tbody>
- <tr>
- <tr><td>{$message.strCmdC|escape}(-c)</td>
+
+ <tr><td>{$message.strCmdC|escape} (-c)</td>
{if $c == 1}
<td><input type="checkbox" name="c" checked="checked" /></td>
{else}
<td><input type="checkbox" name="c" /></td>
{/if}
- </tr>
- <tr><td>{$message.strCmdLargeD|escape}(-D)</td>
+ </tr>
+
+ <tr><td>{$message.strCmdLargeD|escape} (-D)</td>
{if $n == 1}
<td><input type="checkbox" name="D" checked="checked" /></td>
{else}
<td><input type="checkbox" name="D" /></td>
{/if}
- </tr>
- <tr><td>{$message.strCmdN|escape}(-n)</td>
+ </tr>
+
+ <tr><td>{$message.strCmdN|escape} (-n)</td>
{if $n == 1}
<td><input type="checkbox" name="n" checked="checked" /></td>
{else}
<td><input type="checkbox" name="n" /></td>
{/if}
- </tr>
- <tr><td>{$message.strCmdD|escape}(-d)</td>
+ </tr>
+
+ <tr><td>{$message.strCmdD|escape} (-d)</td>
{if $d == 1}
<td><input type="checkbox" name="d" checked="checked" /></td>
{else}
<td><input type="checkbox" name="d" /></td>
{/if}
- </tr>
- <tr><td>{$message.strCmdPgpoolFile|escape}(-f)</td>
+ </tr>
+
+ <tr><td>{$message.strCmdPgpoolFile|escape} (-f)</td>
<td>{$pgpoolConf|escape}</td>
- </tr>
- <tr><td>{$message.strCmdPcpFile|escape}(-F)</td>
+ </tr>
+
+ <tr><td>{$message.strCmdPcpFile|escape} (-F)</td>
<td>{$pcpConf|escape}</td>
- </tr>
+ </tr>
+
</tbody>
</table>
{else}
+
+ {* --------------------------------------------------------------------- *}
+ {* Command Buttons *}
+ {* --------------------------------------------------------------------- *}
+
<div id="cmdBtn" style="visibility: visible">
<input type="button" name="command" onclick="stopPgpool()" value="{$message.strStopPgpool|escape}" />
<input type="button" name="command" onclick="restartPgpool()" value="{$message.strRestartPgpool|escape}" />
<input type="button" name="command" onclick="execReloadPgpool()" value="{$message.strReloadPgpool|escape}" />
</div>
+
+ {* --------------------------------------------------------------------- *}
+ {* Stop Options *}
+ {* --------------------------------------------------------------------- *}
<div id="stopOption" style="visibility: hidden; position: absolute">
+
<table>
<thead><tr><th colspan="2">{$message.strStopOption|escape}</th></tr></thead>
- <tfoot>
- <tr><td colspan="2">
- <input type="button" name="command" onclick="execStopPgpool()" value="{$message.strExecute|escape}" />
- <input type="button" name="command" onclick="cancelCmd()" value="{$message.strCancel|escape}" />
- </td></tr></tfoot>
+ <tfoot><tr>
+ <td colspan="2">
+ <input type="button" name="command" onclick="execStopPgpool()" value="{$message.strExecute|escape}" />
+ <input type="button" name="command" onclick="cancelCmd()" value="{$message.strCancel|escape}" />
+ </td>
+ </tr></tfoot>
<tbody>
- <tr><td>{$message.strCmdM|escape}(-m)</td><td><select name="stop_mode">
+ <tr><td>{$message.strCmdM|escape}(-m)</td>
+ <td><select name="stop_mode">
{if $m == 's'}
<option value="s" selected="selected">smart</option>
<option value="f">fast</option>
<option value="i">immediate</option>
- {elseif $m == 'f'}
+ {elseif $m == 'f'}
<option value="s">smart</option>
<option value="f" selected="selected">fast</option>
<option value="i">immediate</option>
- {elseif $m == 'i'}
+ {elseif $m == 'i'}
<option value="s">smart</option>
<option value="f">fast</option>
<option value="i" selected="selected">immediate</option>
- {else}
+ {else}
<option value="s">smart</option>
<option value="f">fast</option>
<option value="i">immediate</option>
- {/if}
+ {/if}
+ </select>
</td></tr>
</tbody>
</table>
</div>
+
+ {* --------------------------------------------------------------------- *}
+ {* Restart Options *}
+ {* --------------------------------------------------------------------- *}
<div id="restartOption" style="visibility: hidden; position: absolute">
+
<table>
<thead><tr><th colspan="2">{$message.strRestartOption|escape}</th></tr></thead>
- <tfoot>
- <tr><td colspan="2">
- <input type="button" name="command" onclick="execRestartPgpool()" value="{$message.strExecute|escape}" />
- <input type="button" name="command" onclick="cancelCmd()" value="{$message.strCancel|escape}" />
- </td></tr></tfoot>
+ <tfoot><tr>
+ <td colspan="2">
+ <input type="button" name="command" onclick="execRestartPgpool()" value="{$message.strExecute|escape}" />
+ <input type="button" name="command" onclick="cancelCmd()" value="{$message.strCancel|escape}" />
+ </td>
+ </tr></tfoot>
<tbody>
- <tr>
- <tr><td>{$message.strCmdC|escape}(-c)</td>
+
+ <tr><td>{$message.strCmdC|escape}(-c)</td>
{if $c == 1}
<td><input type="checkbox" name="c" checked="checked" /></td>
{else}
<td><input type="checkbox" name="c" /></td>
{/if}
- </tr>
- <tr><td>{$message.strCmdLargeD|escape}(-D)</td>
+ </tr>
+
+ <tr><td>{$message.strCmdLargeD|escape}(-D)</td>
{if $n == 1}
<td><input type="checkbox" name="D" checked="checked" /></td>
{else}
<td><input type="checkbox" name="D" /></td>
{/if}
- </tr>
- <tr><td>{$message.strCmdN|escape}(-n)</td>
+ </tr>
+
+ <tr><td>{$message.strCmdN|escape}(-n)</td>
{if $n == 1}
<td><input type="checkbox" name="n" checked="checked" /></td>
{else}
<td><input type="checkbox" name="n" /></td>
{/if}
- </tr>
- <tr><td>{$message.strCmdD|escape}(-d)</td>
+ </tr>
+
+ <tr><td>{$message.strCmdD|escape}(-d)</td>
{if $d == 1}
<td><input type="checkbox" name="d" checked="checked" /></td>
{else}
<td><input type="checkbox" name="d" /></td>
{/if}
- </tr>
- <tr><td>{$message.strCmdM|escape}(-m)</td><td><select name="restart_mode">
+ </tr>
+
+ <tr><td>{$message.strCmdM|escape}(-m)</td><td>
+ <select name="restart_mode">
{if $m == 's'}
<option value="s" selected="selected">smart</option>
<option value="f">fast</option>
<option value="i">immediate</option>
- {elseif $m == 'f'}
+ {elseif $m == 'f'}
<option value="s">smart</option>
<option value="f" selected="selected">fast</option>
<option value="i">immediate</option>
- {elseif $m == 'i'}
+ {elseif $m == 'i'}
<option value="s">smart</option>
<option value="f">fast</option>
<option value="i" selected="selected">immediate</option>
- {else}
+ {else}
<option value="s">smart</option>
<option value="f">fast</option>
<option value="i">immediate</option>
- {/if}
- </select>
- </td></tr>
- <tr><td>{$message.strCmdPgpoolFile|escape}(-f)</td>
+ {/if}
+ </select>
+ </td>
+ </tr>
+
+ <tr><td>{$message.strCmdPgpoolFile|escape}(-f)</td>
<td>{$pgpoolConf|escape}</td>
- </tr>
- <tr><td>{$message.strCmdPcpFile|escape}(-F)</td>
+ </tr>
+
+ <tr><td>{$message.strCmdPcpFile|escape}(-F)</td>
<td>{$pcpConf|escape}</td>
- </tr>
+ </tr>
+
</tbody>
</table>
</div>
{/if}
+
+{* --------------------------------------------------------------------- *}
+
<p>{$pgpoolStatus|escape}</p>
<p>
{foreach from=$pgpoolMessage item=lines}
{$lines|escape}<br />
{/foreach}
</p>
+
</form>
</div>
+
<div id="footer">
{include file='footer.tpl'}
</div>