Implemented plan upgrades
This commit is contained in:
parent
b4bf0aad4b
commit
e8aaa6d416
BIN
img/lv-upgrade.png
Normal file
BIN
img/lv-upgrade.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
@ -194,6 +194,18 @@ h3 {
|
|||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#upgrade {
|
||||||
|
background-color: #F0F0F0;
|
||||||
|
display: none;
|
||||||
|
margin: 0 15px 20px;
|
||||||
|
padding: 5px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#upgrade p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
#uptime {
|
#uptime {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
@ -67,6 +67,7 @@ import { settings, elements, apiDelete, apiGet, apiPost, eventTitles, parseParam
|
|||||||
elements.transferMonthly = "transfer-monthly";
|
elements.transferMonthly = "transfer-monthly";
|
||||||
elements.transferOverage = "transfer-overage";
|
elements.transferOverage = "transfer-overage";
|
||||||
elements.transferUsed = "transfer-used";
|
elements.transferUsed = "transfer-used";
|
||||||
|
elements.upgrade = "upgrade";
|
||||||
elements.volumeTable = "volume-table";
|
elements.volumeTable = "volume-table";
|
||||||
|
|
||||||
// Data recieved from API calls
|
// Data recieved from API calls
|
||||||
@ -78,6 +79,7 @@ import { settings, elements, apiDelete, apiGet, apiPost, eventTitles, parseParam
|
|||||||
data.linode = {};
|
data.linode = {};
|
||||||
data.linodeTransfer = {};
|
data.linodeTransfer = {};
|
||||||
data.notifications = [];
|
data.notifications = [];
|
||||||
|
data.plan = {};
|
||||||
data.volumes = [];
|
data.volumes = [];
|
||||||
|
|
||||||
// Static references to UI elements
|
// Static references to UI elements
|
||||||
@ -111,6 +113,7 @@ import { settings, elements, apiDelete, apiGet, apiPost, eventTitles, parseParam
|
|||||||
ui.transferMonthly = {};
|
ui.transferMonthly = {};
|
||||||
ui.transferOverage = {};
|
ui.transferOverage = {};
|
||||||
ui.transferUsed = {};
|
ui.transferUsed = {};
|
||||||
|
ui.upgrade = {};
|
||||||
ui.volumeTable = {};
|
ui.volumeTable = {};
|
||||||
|
|
||||||
// Temporary state
|
// Temporary state
|
||||||
@ -524,6 +527,10 @@ import { settings, elements, apiDelete, apiGet, apiPost, eventTitles, parseParam
|
|||||||
backups.appendChild(backupLink);
|
backups.appendChild(backupLink);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get plan info
|
||||||
|
if (data.linode.type)
|
||||||
|
apiGet("/linode/types/" + data.linode.type, displayPlan, null);
|
||||||
|
|
||||||
state.linodeRefresh = false;
|
state.linodeRefresh = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -636,6 +643,16 @@ import { settings, elements, apiDelete, apiGet, apiPost, eventTitles, parseParam
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Callback for linode plan API call
|
||||||
|
var displayPlan = function(response)
|
||||||
|
{
|
||||||
|
data.plan = response;
|
||||||
|
|
||||||
|
// Display the upgrade banner if one is available
|
||||||
|
if (data.plan.successor)
|
||||||
|
ui.upgrade.style.display = "block";
|
||||||
|
};
|
||||||
|
|
||||||
// Show storage totals
|
// Show storage totals
|
||||||
var displayStorage = function()
|
var displayStorage = function()
|
||||||
{
|
{
|
||||||
@ -789,6 +806,7 @@ import { settings, elements, apiDelete, apiGet, apiPost, eventTitles, parseParam
|
|||||||
ui.transferMonthly = document.getElementById(elements.transferMonthly);
|
ui.transferMonthly = document.getElementById(elements.transferMonthly);
|
||||||
ui.transferOverage = document.getElementById(elements.transferOverage);
|
ui.transferOverage = document.getElementById(elements.transferOverage);
|
||||||
ui.transferUsed = document.getElementById(elements.transferUsed);
|
ui.transferUsed = document.getElementById(elements.transferUsed);
|
||||||
|
ui.upgrade = document.getElementById(elements.upgrade);
|
||||||
ui.volumeTable = document.getElementById(elements.volumeTable);
|
ui.volumeTable = document.getElementById(elements.volumeTable);
|
||||||
|
|
||||||
// Attach button handlers
|
// Attach button handlers
|
||||||
|
@ -28,6 +28,11 @@ along with Linode Manager Classic. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
<!--#include virtual="/include/linode_subnav.html"-->
|
<!--#include virtual="/include/linode_subnav.html"-->
|
||||||
<div id="main-content" class="wrapper">
|
<div id="main-content" class="wrapper">
|
||||||
<div id="top-links"><a href="/linodes">Linodes</a> » <span id="linode-tag"><a id="linode-tag-link" href=""></a> » </span><span id="linode-label" class="top-links-title"></span></div>
|
<div id="top-links"><a href="/linodes">Linodes</a> » <span id="linode-tag"><a id="linode-tag-link" href=""></a> » </span><span id="linode-label" class="top-links-title"></span></div>
|
||||||
|
<div id="upgrade">
|
||||||
|
<img src="/img/lv-upgrade.png" alt="upgrade" />
|
||||||
|
<h2>A free upgrade is available for this Linode!</h2>
|
||||||
|
<p><a href="/linodes/mutate?lid=0">Click here for more information!</a></p>
|
||||||
|
</div>
|
||||||
<div id="notifications"></div>
|
<div id="notifications"></div>
|
||||||
<div id="linode-details">
|
<div id="linode-details">
|
||||||
<table class="lmc-table">
|
<table class="lmc-table">
|
||||||
|
76
linodes/mutate/index.shtml
Normal file
76
linodes/mutate/index.shtml
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
<!--
|
||||||
|
This file is part of Linode Manager Classic.
|
||||||
|
|
||||||
|
Linode Manager Classic is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Linode Manager Classic is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Linode Manager Classic. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
-->
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>LMC - Pending Upgrades!</title>
|
||||||
|
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="mutate.css" />
|
||||||
|
<script src="mutate.js" type="module"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!--#include virtual="/include/header.html"-->
|
||||||
|
<!--#include virtual="/include/linode_subnav.html"-->
|
||||||
|
<div id="main-content" class="wrapper">
|
||||||
|
<div id="top-links"><a href="/linodes">Linodes</a> » <span id="linode-tag"><a id="linode-tag-link" href=""></a> » </span><span id="linode-label" class="top-links-title"></span></div>
|
||||||
|
<div id="mutate">
|
||||||
|
<table class="lmc-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">Pending upgrades!</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr class="lmc-tr3">
|
||||||
|
<td>
|
||||||
|
<h2>This Linode has pending upgrades:</h2>
|
||||||
|
Resources affected:
|
||||||
|
<ul>
|
||||||
|
<li id="ram"><strong>RAM</strong> goes from <span id="ram-current"></span> GB → <strong><span id="ram-new"></span> GB</strong></li>
|
||||||
|
<li id="storage"><strong>Storage</strong> goes from <span id="storage-current"></span> GB → <strong><span id="storage-new"></span> GB</strong></li>
|
||||||
|
<li id="cpu"><strong>vCPUs</strong> go from <span id="cpu-current"></span> vCPUs → <strong><span id="cpu-new"></span> vCPUs</strong></li>
|
||||||
|
<li id="gpu"><strong>GPUs</strong> go from <span id="gpu-current"></span> GPUs → <strong><span id="gpu-new"></span> GPUs</strong></li>
|
||||||
|
<li id="mbit"><strong>Outbound Mbits</strong> goes from <span id="mbit-current"></span> Mbits → <strong><span id="mbit-new"></span> Mbits</strong></li>
|
||||||
|
<li id="xfer"><strong>Outbound transfer</strong> goes from <span id="xfer-current"></span> MB → <strong><span id="xfer-new"></span> MB</strong></li>
|
||||||
|
</ul>
|
||||||
|
<span id="resize"><input disabled id="resize-box" type="checkbox" /><label for="resize-box">Automatically resize disk "<span id="disk-name"></span>"</label></span><br />
|
||||||
|
<button disabled id="upgrade-button" type="button">Enter the Upgrade Queue NOW</button>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<h2>How it works</h2>
|
||||||
|
<ol>
|
||||||
|
<li><strong>Click button</strong></li>
|
||||||
|
<li><strong>Wait turn in upgrade queue</strong></li>
|
||||||
|
<li>
|
||||||
|
<strong>Linode is shut down and its disk images are migrated</strong><br />
|
||||||
|
You will experience downtime while your Linode is migrated. It will take around <span id="eta"></span> to migrate your Linode, but that may vary based on host and network load.
|
||||||
|
</li>
|
||||||
|
<li><strong>Linode upgraded and booted</strong><span id="tiny"> (if it was running)</span></li>
|
||||||
|
<li>
|
||||||
|
<strong>Enjoyment</strong><br />
|
||||||
|
After the migration completes, you can take advantage of the new resources by resizing your disk images.
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
78
linodes/mutate/mutate.css
Normal file
78
linodes/mutate/mutate.css
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of Linode Manager Classic.
|
||||||
|
*
|
||||||
|
* Linode Manager Classic is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Linode Manager Classic is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Linode Manager Classic. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import url('/global.css');
|
||||||
|
|
||||||
|
button {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#eta {
|
||||||
|
color: #333;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lmc-tr3 {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mutate {
|
||||||
|
padding: 0px 15px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol li {
|
||||||
|
font-weight: normal;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#resize {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody td {
|
||||||
|
color: #666;
|
||||||
|
font-size: 14px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody td:last-child {
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody td h2 {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody td strong {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tiny {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul li {
|
||||||
|
display: none;
|
||||||
|
}
|
269
linodes/mutate/mutate.js
Normal file
269
linodes/mutate/mutate.js
Normal file
@ -0,0 +1,269 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of Linode Manager Classic.
|
||||||
|
*
|
||||||
|
* Linode Manager Classic is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Linode Manager Classic is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with Linode Manager Classic. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { settings, elements, apiGet, migrateETA, parseParams, setupHeader } from "/global.js";
|
||||||
|
|
||||||
|
(function()
|
||||||
|
{
|
||||||
|
// Element names specific to this page
|
||||||
|
elements.cpu = "cpu";
|
||||||
|
elements.cpuCurrent = "cpu-current";
|
||||||
|
elements.cpuNew = "cpu-new";
|
||||||
|
elements.diskName = "disk-name";
|
||||||
|
elements.eta = "eta";
|
||||||
|
elements.gpu = "gpu";
|
||||||
|
elements.gpuCurrent = "gpu-current";
|
||||||
|
elements.gpuNew = "gpu-new";
|
||||||
|
elements.linodeLabel = "linode-label";
|
||||||
|
elements.linodeTag = "linode-tag";
|
||||||
|
elements.linodeTagLink = "linode-tag-link";
|
||||||
|
elements.mbit = "mbit";
|
||||||
|
elements.mbitCurrent = "mbit-current";
|
||||||
|
elements.mbitNew = "mbit-new";
|
||||||
|
elements.ram = "ram";
|
||||||
|
elements.ramCurrent = "ram-current";
|
||||||
|
elements.ramNew = "ram-new";
|
||||||
|
elements.resize = "resize";
|
||||||
|
elements.resizeBox = "resize-box";
|
||||||
|
elements.storage = "storage";
|
||||||
|
elements.storageCurrent = "storage-current";
|
||||||
|
elements.storageNew = "storage-new";
|
||||||
|
elements.upgradeButton = "upgrade-button";
|
||||||
|
elements.xfer = "xfer";
|
||||||
|
elements.xferCurrent = "xfer-current";
|
||||||
|
elements.xferNew = "xfer-new";
|
||||||
|
|
||||||
|
// Data recieved from API calls
|
||||||
|
var data = {};
|
||||||
|
data.disks = [];
|
||||||
|
data.linode = {};
|
||||||
|
data.plan = {};
|
||||||
|
data.successor = {};
|
||||||
|
|
||||||
|
// Static references to UI elements
|
||||||
|
var ui = {};
|
||||||
|
ui.cpu = {};
|
||||||
|
ui.cpuCurrent = {};
|
||||||
|
ui.cpuNew = {};
|
||||||
|
ui.diskName = {};
|
||||||
|
ui.eta = {};
|
||||||
|
ui.gpu = {};
|
||||||
|
ui.gpuCurrent = {};
|
||||||
|
ui.gpuNew = {};
|
||||||
|
ui.linodeLabel = {};
|
||||||
|
ui.linodeTag = {};
|
||||||
|
ui.linodeTagLink = {};
|
||||||
|
ui.mbit = {};
|
||||||
|
ui.mbitCurrent = {};
|
||||||
|
ui.mbitNew = {};
|
||||||
|
ui.ram = {};
|
||||||
|
ui.ramCurrent = {};
|
||||||
|
ui.ramNew = {};
|
||||||
|
ui.resize = {};
|
||||||
|
ui.resizeBox = {};
|
||||||
|
ui.storage = {};
|
||||||
|
ui.storageCurrent = {};
|
||||||
|
ui.storageNew = {};
|
||||||
|
ui.upgradeButton = {};
|
||||||
|
ui.xfer = {};
|
||||||
|
ui.xferCurrent = {};
|
||||||
|
ui.xferNew = {};
|
||||||
|
|
||||||
|
// Callback for linode details API call
|
||||||
|
var displayDetails = function(response)
|
||||||
|
{
|
||||||
|
data.linode = response;
|
||||||
|
|
||||||
|
// Set page title and header stuff
|
||||||
|
document.title += " // " + data.linode.label;
|
||||||
|
ui.linodeLabel.innerHTML = data.linode.label;
|
||||||
|
if (data.linode.tags.length == 1) {
|
||||||
|
ui.linodeTagLink.href = "/linodes?tag=" + data.linode.tags[0];
|
||||||
|
ui.linodeTagLink.innerHTML = "(" + data.linode.tags[0] + ")";
|
||||||
|
ui.linodeTag.style.display = "inline";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get plan info
|
||||||
|
apiGet("/linode/types/" + data.linode.type, displayPlan, null);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Callback for linode disks API call
|
||||||
|
var displayDisks = function(response)
|
||||||
|
{
|
||||||
|
// Add disks to array
|
||||||
|
data.disks = data.disks.concat(response.data);
|
||||||
|
|
||||||
|
// Request the next page if there are more pages
|
||||||
|
if (response.page != response.pages) {
|
||||||
|
apiGet("/linode/instances/" + data.params.lid + "/disks?page=" + (response.page + 1), displayDisks, null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute total size and types of disks
|
||||||
|
var size = 0;
|
||||||
|
var numExt = 0;
|
||||||
|
var numSwap = 0;
|
||||||
|
for (var i = 0; i < data.disks.length; i++) {
|
||||||
|
size += data.disks[i].size;
|
||||||
|
if (data.disks[i].filesystem.match(/ext3|ext4/)) {
|
||||||
|
numExt++;
|
||||||
|
ui.diskName.innerHTML = data.disks[i].label;
|
||||||
|
}
|
||||||
|
else if (data.disks[i].filesystem == "swap")
|
||||||
|
numSwap++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute estimated resize time
|
||||||
|
ui.eta.innerHTML = migrateETA(size, true);
|
||||||
|
|
||||||
|
// Show auto-resize option if there is only a single ext disk
|
||||||
|
if ((data.disks.length == 1 && numExt == 1) || (data.disks.length == 2 && numExt == 1 && numSwap == 1)) {
|
||||||
|
ui.resizeBox.disabled = false;
|
||||||
|
ui.resizeBox.checked = true;
|
||||||
|
ui.resize.style.display = "initial";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Callback for plan details API call
|
||||||
|
var displayPlan = function(response)
|
||||||
|
{
|
||||||
|
data.plan = response;
|
||||||
|
|
||||||
|
// Redirect to dashboard if there is no upgrade
|
||||||
|
if (!data.plan.successor) {
|
||||||
|
location.href = "/linodes/dashboard?lid=" + data.params.lid;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get successor
|
||||||
|
apiGet("/linode/types/" + data.plan.successor, displaySuccessor, null);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Callback for successor details API call
|
||||||
|
var displaySuccessor = function(response)
|
||||||
|
{
|
||||||
|
data.successor = response;
|
||||||
|
|
||||||
|
// Set UI stuff
|
||||||
|
if (data.plan.memory != data.successor.memory) {
|
||||||
|
ui.ramCurrent.innerHTML = data.plan.memory / 1024;
|
||||||
|
ui.ramNew.innerHTML = data.successor.memory / 1024;
|
||||||
|
ui.ram.style.display = "list-item";
|
||||||
|
}
|
||||||
|
if (data.plan.disk != data.successor.disk) {
|
||||||
|
ui.storageCurrent.innerHTML = data.plan.disk / 1024;
|
||||||
|
ui.storageNew.innerHTML = data.successor.disk / 1024;
|
||||||
|
ui.storage.style.display = "list-item";
|
||||||
|
}
|
||||||
|
if (data.plan.vcpus != data.successor.vcpus) {
|
||||||
|
ui.cpuCurrent.innerHTML = data.plan.vcpus;
|
||||||
|
ui.cpuNew.innerHTML = data.successor.vcpus;
|
||||||
|
ui.cpu.style.display = "list-item";
|
||||||
|
}
|
||||||
|
if (data.plan.gpus != data.successor.gpus) {
|
||||||
|
ui.gpuCurrent.innerHTML = data.plan.gpus;
|
||||||
|
ui.gpuNew.innerHTML = data.successor.gpus;
|
||||||
|
ui.gpu.style.display = "list-item";
|
||||||
|
}
|
||||||
|
if (data.plan.network_out != data.successor.network_out) {
|
||||||
|
ui.mbitCurrent.innerHTML = data.plan.network_out;
|
||||||
|
ui.mbitNew.innerHTML = data.successor.network_out;
|
||||||
|
ui.mbit.style.display = "list-item";
|
||||||
|
}
|
||||||
|
if (data.plan.transfer != data.successor.transfer) {
|
||||||
|
ui.xferCurrent.innerHTML = data.plan.transfer;
|
||||||
|
ui.xferNew.innerHTML = data.successor.transfer;
|
||||||
|
ui.xfer.style.display = "list-item";
|
||||||
|
}
|
||||||
|
|
||||||
|
ui.upgradeButton.disabled = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Click handler for upgrade button
|
||||||
|
var handleUpgrade = function(event)
|
||||||
|
{
|
||||||
|
if (event.currentTarget.disabled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var req = {
|
||||||
|
"allow_auto_disk_resize": (!ui.resizeBox.disabled && ui.resizeBox.checked)
|
||||||
|
};
|
||||||
|
|
||||||
|
apiPost("/linode/instances/" + data.params.lid + "/mutate", req, function(response)
|
||||||
|
{
|
||||||
|
location.href = "/linodes/dashboard?lid=" + data.params.lid;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Initial setup
|
||||||
|
var setup = function()
|
||||||
|
{
|
||||||
|
// Parse URL parameters
|
||||||
|
data.params = parseParams();
|
||||||
|
|
||||||
|
// We need a Linode ID, so die if we don't have it
|
||||||
|
if (!data.params.lid) {
|
||||||
|
alert("No Linode ID supplied!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setupHeader();
|
||||||
|
|
||||||
|
// Update links on page to include proper Linode ID
|
||||||
|
var anchors = document.getElementsByTagName("a");
|
||||||
|
for (var i = 0; i < anchors.length; i++)
|
||||||
|
anchors[i].href = anchors[i].href.replace("lid=0", "lid=" + data.params.lid);
|
||||||
|
|
||||||
|
// Get element references
|
||||||
|
ui.cpu = document.getElementById(elements.cpu);
|
||||||
|
ui.cpuCurrent = document.getElementById(elements.cpuCurrent);
|
||||||
|
ui.cpuNew = document.getElementById(elements.cpuNew);
|
||||||
|
ui.diskName = document.getElementById(elements.diskName);
|
||||||
|
ui.eta = document.getElementById(elements.eta);
|
||||||
|
ui.gpu = document.getElementById(elements.gpu);
|
||||||
|
ui.gpuCurrent = document.getElementById(elements.gpuCurrent);
|
||||||
|
ui.gpuNew = document.getElementById(elements.gpuNew);
|
||||||
|
ui.linodeLabel = document.getElementById(elements.linodeLabel);
|
||||||
|
ui.linodeTag = document.getElementById(elements.linodeTag);
|
||||||
|
ui.linodeTagLink = document.getElementById(elements.linodeTagLink);
|
||||||
|
ui.mbit = document.getElementById(elements.mbit);
|
||||||
|
ui.mbitCurrent = document.getElementById(elements.mbitCurrent);
|
||||||
|
ui.mbitNew = document.getElementById(elements.mbitNew);
|
||||||
|
ui.ram = document.getElementById(elements.ram);
|
||||||
|
ui.ramCurrent = document.getElementById(elements.ramCurrent);
|
||||||
|
ui.ramNew = document.getElementById(elements.ramNew);
|
||||||
|
ui.resize = document.getElementById(elements.resize);
|
||||||
|
ui.resizeBox = document.getElementById(elements.resizeBox);
|
||||||
|
ui.storage = document.getElementById(elements.storage);
|
||||||
|
ui.storageCurrent = document.getElementById(elements.storageCurrent);
|
||||||
|
ui.storageNew = document.getElementById(elements.storageNew);
|
||||||
|
ui.upgradeButton = document.getElementById(elements.upgradeButton);
|
||||||
|
ui.xfer = document.getElementById(elements.xfer);
|
||||||
|
ui.xferCurrent = document.getElementById(elements.xferCurrent);
|
||||||
|
ui.xferNew = document.getElementById(elements.xferNew);
|
||||||
|
|
||||||
|
// Attach event handlers
|
||||||
|
ui.upgradeButton.addEventListener("click", handleUpgrade);
|
||||||
|
|
||||||
|
// Get data from API
|
||||||
|
apiGet("/linode/instances/" + data.params.lid, displayDetails, null);
|
||||||
|
apiGet("/linode/instances/" + data.params.lid + "/disks", displayDisks, null);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Attach onload handler
|
||||||
|
window.addEventListener("load", setup);
|
||||||
|
})();
|
Loading…
Reference in New Issue
Block a user