Implement VPS termination

feature/node-rewrite
Sven Slootweg 12 years ago
parent c0b1e519ae
commit 061197e72c

@ -591,14 +591,16 @@ class Vps extends CPHPDatabaseRecordClass
try try
{ {
$this->Stop(); $this->Stop();
$this->uStatus = CVM_STATUS_TERMINATED;
$this->uTerminationDate = time();
$this->InsertIntoDatabase();
} }
catch (VpsStopException $e) catch (VpsStopException $e)
{ {
throw new VpsTerminateException("Termination failed as the VPS could not be stopped.", 1, $this->sInternalId, $e); /*throw new VpsTerminateException("Termination failed as the VPS could not be stopped.", 1, $this->sInternalId, $e);*/
/* TODO: Throw warning about being unable to stop it, after checking VPS status. */
} }
$this->uStatus = CVM_STATUS_TERMINATED;
$this->uTerminationDate = time();
$this->InsertIntoDatabase();
} }
else else
{ {
@ -613,13 +615,15 @@ class Vps extends CPHPDatabaseRecordClass
try try
{ {
$this->Start(true); $this->Start(true);
$this->uStatus = CVM_STATUS_STARTED;
$this->InsertIntoDatabase();
} }
catch (VpsStartException $e) catch (VpsStartException $e)
{ {
throw new VpsUnterminateException("Untermination failed as the VPS could not be started.", 1, $this->sInternalId, $e); /*throw new VpsUnterminateException("Untermination failed as the VPS could not be started.", 1, $this->sInternalId, $e);*/
/* TODO: Throw warning about being unable to start it, after checking VPS status. */
} }
$this->uStatus = CVM_STATUS_STARTED;
$this->InsertIntoDatabase();
} }
else else
{ {

@ -166,6 +166,24 @@ error-unsuspend-error-title; Failed to unsuspend VPS
error-unsuspend-error-text; The VPS could not be unsuspended. error-unsuspend-error-text; The VPS could not be unsuspended.
button-admin-vps-unsuspend; Unsuspend VPS button-admin-vps-unsuspend; Unsuspend VPS
## Terminate VPS
title-admin-vps-terminate; Terminate VPS
vps-admin-terminate-text; Are you sure you wish to terminate this VPS? The VPS will be suspended immediately, and deleted after several hours. As long as it is not deleted, the termination can be undone.
error-terminate-success-title; VPS terminated
error-terminate-success-text; The VPS has been terminated and can no longer be used by the owner.
error-terminate-error-title; Failed to terminate VPS
error-terminate-error-text; The VPS could not be terminated.
button-admin-vps-terminate; Terminate VPS
## Unterminate VPS
title-admin-vps-unterminate; Unterminate VPS
vps-admin-unterminate-text; Are you sure you wish to unterminate this VPS? The owner will be able to use it again.
error-unterminate-success-title; VPS unterminated
error-unterminate-success-text; The VPS has been unterminated and can now be used by the owner again.
error-unterminate-error-title; Failed to unterminate VPS
error-unterminate-error-text; The VPS could not be unterminated.
button-admin-vps-unterminate; Unterminate VPS
## Transfer VPS ## Transfer VPS
title-admin-vps-transfer; Transfer VPS ownership title-admin-vps-transfer; Transfer VPS ownership
button-admin-vps-transfer; Transfer VPS button-admin-vps-transfer; Transfer VPS

@ -0,0 +1,77 @@
<?php
/*
* CVM is more free software. It is licensed under the WTFPL, which
* allows you to do pretty much anything with it, without having to
* ask permission. Commercial use is allowed, and no attribution is
* required. We do politely request that you share your modifications
* to benefit other developers, but you are under no enforced
* obligation to do so :)
*
* Please read the accompanying LICENSE document for the full WTFPL
* licensing text.
*/
if(!isset($_APP)) { die("Unauthorized."); }
try
{
$sUser->RequireAccessLevel(30);
$sVps = new Vps($router->uParameters[1]);
if(isset($_POST['submit']))
{
if($_POST['action'] == "terminate")
{
$sVps->Terminate();
$sMainContents .= NewTemplater::Render("{$sTheme}/shared/error/success", $locale->strings, array(
'title' => $locale->strings['error-terminate-success-title'],
'message' => $locale->strings['error-terminate-success-text']
));
}
elseif($_POST['action'] == "unterminate")
{
$sVps->Unterminate();
$sMainContents .= NewTemplater::Render("{$sTheme}/shared/error/success", $locale->strings, array(
'title' => $locale->strings['error-unterminate-success-title'],
'message' => $locale->strings['error-unterminate-success-text']
));
}
$sVps->RefreshData();
/* TODO: Flash message and redirect to VPS lookup page. */
}
$sTerminated = ($sVps->sStatus == CVM_STATUS_TERMINATED) ? true : false;
$sPageContents = NewTemplater::Render("{$sTheme}/admin/vps/terminate", $locale->strings, array(
'id' => $sVps->sId,
'terminated' => $sTerminated,
'can-unterminate' => !$sVps->IsTerminated
));
}
catch (NotFoundException $e)
{
$sMainContents .= NewTemplater::Render("{$sTheme}/shared/error/error", $locale->strings, array(
'title' => $locale->strings['error-notfound-title'],
'message' => $locale->strings['error-notfound-text']
));
}
catch (VpsTerminateException $e)
{
$sMainContents .= NewTemplater::Render("{$sTheme}/shared/error/error", $locale->strings, array(
'title' => $locale->strings['error-terminate-error-title'],
'message' => $locale->strings['error-terminate-error-text']
));
}
catch (VpsUnterminateException $e)
{
$sMainContents .= NewTemplater::Render("{$sTheme}/shared/error/error", $locale->strings, array(
'title' => $locale->strings['error-unterminate-error-title'],
'message' => $locale->strings['error-unterminate-error-text']
));
}

@ -0,0 +1,18 @@
<form method="post" action="/admin/vps/{%?id}/terminate/">
{%if terminated == false}
<h2>{%!title-admin-vps-terminate}</h2>
<p>{%!vps-admin-terminate-text}</p>
<input type="hidden" name="action" value="terminate">
<button type="submit" name="submit" class="padded">{%!button-admin-vps-terminate}</button>
{%else}
{%if can-unterminate == true}
<h2>{%!title-admin-vps-unterminate}</h2>
<p>{%!vps-admin-unterminate-text}</p>
<input type="hidden" name="action" value="unterminate">
<button type="submit" name="submit" class="padded">{%!button-admin-vps-unterminate}</button>
{%else}
Cannot unterminate
{%/if}
{%/if}
</form>
Loading…
Cancel
Save