On peut démarrer et éteindre des vms \o/
This commit is contained in:
parent
184afe88ea
commit
9d6374fd8b
|
@ -3,32 +3,52 @@
|
|||
require_once("../class/config.php");
|
||||
include_once("head.php");
|
||||
|
||||
echo '<h1>youpi gestion des VM</h1>';
|
||||
|
||||
|
||||
$fields = array (
|
||||
"action" => array ("request", "string", FALSE),
|
||||
"login" => array ("request", "string", FALSE),
|
||||
"pass" => array("request", "string", FALSE),
|
||||
"uid" => array("request", "integer", FALSE),
|
||||
"action" => array ("get", "string", ''),
|
||||
);
|
||||
getFields($fields);
|
||||
|
||||
if (in_array($action, array('start', 'stop', 'monit')))
|
||||
{
|
||||
#$res = call_user_func(array($lxc, $action));
|
||||
if (in_array($action, array('start', 'stop', 'monit'))) {
|
||||
$res = $hooks->invoke($action, array(), 'lxc');
|
||||
var_dump ($res);
|
||||
printvar($res);
|
||||
}
|
||||
|
||||
$infos = $lxc->getvm();
|
||||
|
||||
printvar($infos);
|
||||
?>
|
||||
|
||||
<h1>Dev only</h1>
|
||||
<form method="post">
|
||||
<p>Action: <select name="action"><option value="monit">Monitoring</option><option value="start">Start</option><option value="stop">Stop</option></select></p>
|
||||
<p>Login: <input type="text" name="login" value="<?php echo $mem->user['login']; ?>" /></p>
|
||||
<p>Pass (hash): <input type="text" name="pass" value="<?php echo $mem->user['pass']; ?>" /></p>
|
||||
<p>Uid: <input type="text" name="uid" value="<?php echo $mem->user['uid']; ?>" /></p>
|
||||
<p><input type="submit" name="tester" /></p>
|
||||
<h3><?php __('Console access'); ?></h3>
|
||||
<hr/>
|
||||
<br/>
|
||||
|
||||
</form>
|
||||
<?php if (isset($res) && ! $res['lxc']) { ?>
|
||||
<div>
|
||||
<span class="error">
|
||||
<?php echo $err->errstr(); ?>
|
||||
</span>
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
<?php } //isset $res ?>
|
||||
|
||||
<div>
|
||||
<?php if (empty($infos)) {
|
||||
echo '<span class="error">';
|
||||
__("You can start a virtual machine.");
|
||||
echo "<a href='vm.php?action=start'>"._("Click here to do so.")."</a>";
|
||||
echo '</span>';
|
||||
} else {
|
||||
echo "<table class='tedit'>";
|
||||
echo "<tr><th>"._("Hostname")."</th><td>".$infos['serialized_object']['hostname']."</td></tr>";
|
||||
echo "<tr><th>"._("Start time")."</th><td>".$infos['date_start']."</td></tr>";
|
||||
echo "<tr><td colspan='2'><a href='vm.php?action=stop'>"._("Click here to stop the machine")."</a></td></tr>";
|
||||
echo "</table>";
|
||||
|
||||
|
||||
} // empty infos ?>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
include_once("foot.php");
|
||||
?>
|
||||
|
|
|
@ -21,7 +21,7 @@ class m_lxc implements vm
|
|||
if ( empty($this->IP)) return ; # No menu if no server
|
||||
|
||||
$obj = array(
|
||||
'title' => _("Virtual server"),
|
||||
'title' => _("Console access"),
|
||||
'ico' => 'images/ssh.png',
|
||||
'link' => 'vm.php',
|
||||
'pos' => 95,
|
||||
|
@ -38,7 +38,7 @@ class m_lxc implements vm
|
|||
}
|
||||
|
||||
|
||||
private function sendMessage($action, $user, $password, $uid)
|
||||
private function sendMessage($action, $user = FALSE, $password=FALSE, $uid=FALSE)
|
||||
{
|
||||
$fp = fsockopen($this->IP, $this->PORT, $errno, $errstr, $this->TIMEOUT);
|
||||
if (!$fp)
|
||||
|
@ -75,7 +75,14 @@ class m_lxc implements vm
|
|||
|
||||
public function start($login = FALSE, $pass = FALSE, $uid = FALSE)
|
||||
{
|
||||
global $mem, $db;
|
||||
|
||||
global $mem, $db, $err;
|
||||
|
||||
if ($this->getvm() !== FALSE)
|
||||
{
|
||||
$err->raise('lxc', _('VM already started'));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$user = $login ? $login : $mem->user['login'];
|
||||
$pass = $pass ? $pass : $mem->user['pass'];
|
||||
|
@ -93,6 +100,12 @@ class m_lxc implements vm
|
|||
$date_start = 'NOW()';
|
||||
$uid = $mem->user['uid'];
|
||||
|
||||
if ((int)$data['error'] != 0)
|
||||
{
|
||||
$err->raise('lxc', _($data['msg']));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$db->query("INSERT INTO vm_history (ip,date_start,uid,serialized_object) VALUES ('$hostname', $date_start, '$uid', '$res')");
|
||||
|
||||
return $res;
|
||||
|
@ -125,9 +138,20 @@ class m_lxc implements vm
|
|||
|
||||
public function stop()
|
||||
{
|
||||
global $mem;
|
||||
printvar($mem);
|
||||
echo "lxc::stop";
|
||||
global $db, $mem;
|
||||
|
||||
$vm = $this->getvm();
|
||||
|
||||
if ($vm === FALSE)
|
||||
return TRUE;
|
||||
|
||||
$vm_id = $vm['serialized_object']['vm'];
|
||||
$uid = $mem->user['uid'];
|
||||
$vid = $vm['id'];
|
||||
|
||||
if ($this->sendMessage('stop', $vm_id, FALSE, FALSE) === FALSE)
|
||||
return FALSE;
|
||||
|
||||
return $db->query("UPDATE vm_history SET date_end = NOW() WHERE uid = '$uid' AND id = '$vid' LIMIT 1");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue