diff --git a/frontend/css/cvm.css b/frontend/css/cvm.css index 1fd4cd5..c340c15 100644 --- a/frontend/css/cvm.css +++ b/frontend/css/cvm.css @@ -93,6 +93,11 @@ table.userinfo th width: 180px; } +table.nodeinfo th +{ + width: 180px; +} + table.userlist td { padding-bottom: 4px; diff --git a/frontend/locales/english.lng b/frontend/locales/english.lng index 27573b0..1d7095a 100644 --- a/frontend/locales/english.lng +++ b/frontend/locales/english.lng @@ -32,6 +32,7 @@ title-admin-userlist; User overview title-admin-containerlist; Container overview title-admin-nodelist; Node overview title-admin-userinfo; User lookup +title-admin-nodeinfo; Node lookup title-admin-overview; Administrative overview title-admin-vps-suspend; Suspend container title-admin-vps-unsuspend; Unsuspend container @@ -39,6 +40,7 @@ title-admin-vps-transfer; Transfer container ownership title-admin-vps-terminate; Terminate container header-admin-user-containers; Containers owned by this user +header-admin-node-containers; Containers on this node header-vps-admin; Administrative tasks button-login; Login @@ -106,6 +108,7 @@ list-column-disk; Disk space list-column-ram; RAM list-column-template; Template list-column-location; Physical location +list-column-nodeid; Node ID list-status-running; Running list-status-stopped; Stopped list-status-suspended; Suspended diff --git a/frontend/module.admin.node.php b/frontend/module.admin.node.php new file mode 100644 index 0000000..9de4efe --- /dev/null +++ b/frontend/module.admin.node.php @@ -0,0 +1,54 @@ +uParameters[1]); + + if($result = mysql_query_cached("SELECT * FROM containers WHERE `NodeId` = '{$sNode->sId}'")) + { + foreach($result->data as $row) + { + $sContainer = new Container($row); + + $sContainerList[] = array( + 'id' => $sContainer->sId, + 'hostname' => $sContainer->sHostname, + 'node' => $sContainer->sNode->sName, + 'node-hostname' => $sContainer->sNode->sHostname, + 'template' => $sContainer->sTemplate->sName, + 'diskspace' => number_format($sContainer->sDiskSpace / 1024), + 'diskspace-unit' => "GB", + 'guaranteed-ram' => $sContainer->sGuaranteedRam, + 'guaranteed-ram-unit' => "MB", + 'status' => $sContainer->sStatusText, + 'virtualization-type' => $sContainer->sVirtualizationType + ); + } + } + + $sPageContents = Templater::AdvancedParse("admin.node", $locale->strings, array( + 'id' => $sNode->sId, + 'hostname' => $sNode->sHostname, + 'location' => $sNode->sPhysicalLocation, + 'containers' => $sContainerList + )); +} +catch (NotFoundException $e) +{ + $err = new CPHPErrorHandler(CPHP_ERRORHANDLER_TYPE_ERROR, $locale->strings['error-admin-node-title'], $locale->strings['error-admin-node-text']); + $sPageContents .= $err->Render(); +} + diff --git a/frontend/rewrite.php b/frontend/rewrite.php index 100049b..97d896d 100644 --- a/frontend/rewrite.php +++ b/frontend/rewrite.php @@ -129,6 +129,12 @@ try 'auth_error' => "error.access.php", '_menu' => "admin" ), + '^/admin/node/([0-9]+)/?$' => array( + 'target' => "module.admin.node.php", + 'authenticator' => "authenticator.admin.php", + 'auth_error' => "error.access.php", + '_menu' => "admin" + ), '^/admin/container/([0-9]+)/suspend/?$' => array( 'target' => "module.admin.container.suspend.php", 'authenticator' => "authenticator.admin.php", diff --git a/frontend/templates/admin.node.tpl b/frontend/templates/admin.node.tpl new file mode 100644 index 0000000..bd83073 --- /dev/null +++ b/frontend/templates/admin.node.tpl @@ -0,0 +1,68 @@ +

{%!title-admin-nodeinfo}

+ + + + + + + + + + + + + + +
{%!list-column-nodeid}{%?id}
{%!list-column-hostname}{%?hostname}
{%!list-column-location}{%?location}
+ +

{%!header-admin-node-containers}

+ + + + + + + + + + {%foreach container in containers} + + + + + + + + + {%/foreach} +
{%!list-column-hostname}{%!list-column-platform}{%!list-column-disk}{%!list-column-ram}{%!list-column-template}
+ {%if container[status] == running} + {%!list-status-running} + {%/if}{%if container[status] == stopped} + {%!list-status-stopped} + {%/if}{%if container[status] == suspended} + {%!list-status-suspended} + {%/if} + + + {%?container[hostname]} + + + + {%if container[virtualization-type] == 1} + OpenVZ + {%/if}{%if container[virtualization-type] == 2} + Xen PV + {%/if}{%if container[virtualization-type] == 3} + Xen HVM + {%/if}{%if container[virtualization-type] == 4} + KVM + {%/if} + + + {%?container[diskspace]} + {%?container[diskspace-unit]} + + {%?container[guaranteed-ram]} + {%?container[guaranteed-ram-unit]} + {%?container[template]}