new UI - instance page - refactor submenu.

This commit is contained in:
Jessica Wang 2010-10-22 19:47:24 -07:00
parent ede817886a
commit 958aaaaf87
34 changed files with 2212 additions and 1462 deletions

View File

@ -224,12 +224,12 @@ public class ApiDispatcher {
if (cause instanceof AsyncCommandQueued) {
throw (AsyncCommandQueued)cause;
}
s_logger.warn("Exception executing method " + methodName + " for command " + cmd.getClass().getSimpleName(), ite);
if (cause instanceof InvalidParameterValueException) {
throw new ServerApiException(BaseCmd.PARAM_ERROR, cause.getMessage());
} else if (cause instanceof PermissionDeniedException) {
throw new ServerApiException(BaseCmd.ACCOUNT_ERROR, cause.getMessage());
}
s_logger.warn("Exception executing method " + methodName + " for command " + cmd.getClass().getSimpleName(), ite);
throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Unable to execute method " + methodName + " for command " + cmd.getClass().getSimpleName() + ", internal error in the implementation.");
} catch (IllegalAccessException iae) {
s_logger.warn("Exception executing method " + methodName + " for command " + cmd.getClass().getSimpleName(), iae);

View File

@ -163,6 +163,9 @@ public class CreateVolumeCmd extends BaseAsyncCreateCmd {
if (volume.getPoolId() != null) {
response.setStoragePoolName(ApiDBUtils.findStoragePoolById(volume.getPoolId()).getName());
}
// if the volume was created from a snapshot, snapshotId will be set so we pass it back in the response
response.setSnapshotId(getSnapshotId());
response.setZoneId(volume.getDataCenterId());
response.setZoneName(ApiDBUtils.findZoneById(volume.getDataCenterId()).getName());

View File

@ -40,7 +40,7 @@ import com.cloud.user.UserContext;
import com.cloud.uservm.UserVm;
import com.cloud.vm.InstanceGroupVO;
@Implementation(createMethod="createVirtualMachine", method="startVirtualMachine", manager=Manager.UserVmManager, description="Creates and automatically starts a virtual machine based on a service offering, disk offering, and template.")
@Implementation(method="deployVirtualMachine", description="Creates and automatically starts a virtual machine based on a service offering, disk offering, and template.")
public class DeployVMCmd extends BaseAsyncCmd {
public static final Logger s_logger = Logger.getLogger(DeployVMCmd.class.getName());

View File

@ -44,7 +44,7 @@ import com.cloud.storage.StoragePoolVO;
public class ListCapacityCmd extends BaseListCmd {
public static final Logger s_logger = Logger.getLogger(ListCapacityCmd.class.getName());
private static final DecimalFormat s_percentFormat = new DecimalFormat("####.##");
private static final DecimalFormat s_percentFormat = new DecimalFormat("##.##");
private static final String s_name = "listcapacityresponse";
@ -120,12 +120,15 @@ public class ListCapacityCmd extends BaseListCmd {
capacityResponse.setPodId(summedCapacity.getPodId());
if (summedCapacity.getPodId() > 0) {
capacityResponse.setPodName(ApiDBUtils.findPodById(summedCapacity.getPodId()).getName());
} else {
capacityResponse.setPodName("All");
}
}
capacityResponse.setZoneId(summedCapacity.getDataCenterId());
capacityResponse.setZoneName(ApiDBUtils.findZoneById(summedCapacity.getDataCenterId()).getName());
if (summedCapacity.getTotalCapacity() != 0) {
capacityResponse.setPercentUsed(s_percentFormat.format(summedCapacity.getUsedCapacity() / summedCapacity.getTotalCapacity()));
float computed = ((float)summedCapacity.getUsedCapacity() / (float)summedCapacity.getTotalCapacity() * 100f);
capacityResponse.setPercentUsed(s_percentFormat.format((float)summedCapacity.getUsedCapacity() / (float)summedCapacity.getTotalCapacity() * 100f));
} else {
capacityResponse.setPercentUsed(s_percentFormat.format(0L));
}

View File

@ -206,6 +206,7 @@ public class ListVolumesCmd extends BaseListCmd {
volResponse.setSourceType(volume.getSourceType().toString());
}
volResponse.setHypervisor(ApiDBUtils.getVolumeHyperType(volume.getId()).toString());
volResponse.setAttached(volume.getAttached());
volResponse.setResponseName("volume");
volResponses.add(volResponse);

View File

@ -21,13 +21,19 @@ import org.apache.log4j.Logger;
import com.cloud.api.ApiDBUtils;
import com.cloud.api.BaseAsyncCmd;
import com.cloud.api.BaseCmd;
import com.cloud.api.BaseCmd.Manager;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.UserVmResponse;
import com.cloud.event.EventTypes;
import com.cloud.offering.ServiceOffering;
import com.cloud.storage.StoragePoolVO;
import com.cloud.storage.VMTemplateVO;
import com.cloud.storage.VolumeVO;
import com.cloud.user.Account;
import com.cloud.uservm.UserVm;
import com.cloud.vm.InstanceGroupVO;
@Implementation(method="rebootVirtualMachine", manager=Manager.UserVmManager, description="Reboots a virtual machine.")
public class RebootVMCmd extends BaseAsyncCmd {
@ -79,10 +85,102 @@ public class RebootVMCmd extends BaseAsyncCmd {
}
@Override @SuppressWarnings("unchecked")
public SuccessResponse getResponse() {
Boolean success = (Boolean)getResponseObject();
SuccessResponse response = new SuccessResponse();
response.setSuccess(success);
public UserVmResponse getResponse() {
UserVm vm = (UserVm)getResponseObject();
UserVmResponse response = new UserVmResponse();
response.setId(vm.getId());
response.setName(vm.getName());
response.setCreated(vm.getCreated());
response.setZoneId(vm.getDataCenterId());
response.setZoneName(ApiDBUtils.findZoneById(vm.getDataCenterId()).getName());
response.setIpAddress(vm.getPrivateIpAddress());
response.setServiceOfferingId(vm.getServiceOfferingId());
response.setHaEnable(vm.isHaEnabled());
if (vm.getDisplayName() == null || vm.getDisplayName().length() == 0) {
response.setDisplayName(vm.getName());
} else {
response.setDisplayName(vm.getDisplayName());
}
InstanceGroupVO group = ApiDBUtils.findInstanceGroupForVM(vm.getId());
if (group != null) {
response.setGroup(group.getName());
response.setGroupId(group.getId());
}
if (vm.getState() != null) {
response.setState(vm.getState().toString());
}
Account acct = ApiDBUtils.findAccountById(vm.getAccountId());
if (acct != null) {
response.setAccountName(acct.getAccountName());
response.setDomainId(acct.getDomainId());
response.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName());
}
if (BaseCmd.isAdmin(acct.getType()) && (vm.getHostId() != null)) {
response.setHostName(ApiDBUtils.findHostById(vm.getHostId()).getName());
response.setHostId(vm.getHostId());
}
String templateName = "ISO Boot";
boolean templatePasswordEnabled = false;
String templateDisplayText = "ISO Boot";
VMTemplateVO template = ApiDBUtils.findTemplateById(vm.getTemplateId());
if (template != null) {
templateName = template.getName();
templatePasswordEnabled = template.getEnablePassword();
templateDisplayText = template.getDisplayText();
if (templateDisplayText == null) {
templateDisplayText = templateName;
}
}
response.setTemplateId(vm.getTemplateId());
response.setTemplateName(templateName);
response.setTemplateDisplayText(templateDisplayText);
response.setPasswordEnabled(templatePasswordEnabled);
if (templatePasswordEnabled) {
response.setPassword(null); // FIXME: Where should password come from? In the old framework, password was always passed
// in to composeResultObject() as null, so that behavior is preserved...
} else {
response.setPassword("");
}
String isoName = null;
if (vm.getIsoId() != null) {
VMTemplateVO iso = ApiDBUtils.findTemplateById(vm.getIsoId().longValue());
if (iso != null) {
isoName = iso.getName();
}
}
response.setIsoId(vm.getIsoId());
response.setIsoName(isoName);
ServiceOffering offering = ApiDBUtils.findServiceOfferingById(vm.getServiceOfferingId());
response.setServiceOfferingId(vm.getServiceOfferingId());
response.setServiceOfferingName(offering.getName());
response.setCpuNumber(offering.getCpu());
response.setCpuSpeed(offering.getSpeed());
response.setMemory(offering.getRamSize());
VolumeVO rootVolume = ApiDBUtils.findRootVolume(vm.getId());
if (rootVolume != null) {
response.setRootDeviceId(rootVolume.getDeviceId());
StoragePoolVO storagePool = ApiDBUtils.findStoragePoolById(rootVolume.getPoolId());
response.setRootDeviceType(storagePool.getPoolType().toString());
}
response.setGuestOsId(vm.getGuestOSId());
//Network groups
response.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(vm.getId()));
response.setResponseName(getName());
return response;
}

View File

@ -39,7 +39,7 @@ public class CapacityResponse extends BaseResponse {
@SerializedName("capacityused") @Param(description="the capacity currently in use")
private Long capacityUsed;
@SerializedName("capacityTotal") @Param(description="the total capacity available")
@SerializedName("capacitytotal") @Param(description="the total capacity available")
private Long capacityTotal;
@SerializedName("percentused") @Param(description="the percentage of capacity currently in use")

View File

@ -101,6 +101,12 @@ public class VolumeResponse extends BaseResponse {
@SerializedName("storage") @Param(description="name of the primary storage hosting the disk volume")
private String storagePoolName;
@SerializedName("snapshotid") @Param(description="ID of the snapshot from which this volume was created")
private Long snapshotId;
@SerializedName("attached") @Param(description="the date the volume was attached to a VM instance")
private Date attached;
public Long getId() {
return id;
}
@ -308,4 +314,20 @@ public class VolumeResponse extends BaseResponse {
public void setStoragePoolName(String storagePoolName) {
this.storagePoolName = storagePoolName;
}
public Long getSnapshotId() {
return snapshotId;
}
public void setSnapshotId(Long snapshotId) {
this.snapshotId = snapshotId;
}
public Date getAttached() {
return attached;
}
public void setAttached(Date attached) {
this.attached = attached;
}
}

View File

@ -73,7 +73,6 @@ import com.cloud.api.commands.PreparePrimaryStorageForMaintenanceCmd;
import com.cloud.api.commands.UpdateStoragePoolCmd;
import com.cloud.async.AsyncInstanceCreateStatus;
import com.cloud.async.AsyncJobManager;
import com.cloud.async.executor.VolumeOperationParam.VolumeOp;
import com.cloud.capacity.CapacityVO;
import com.cloud.capacity.dao.CapacityDao;
import com.cloud.configuration.Config;
@ -507,7 +506,7 @@ public class StorageManagerImpl implements StorageManager {
@DB
protected Pair<VolumeVO, String> createVolumeFromSnapshot(VolumeVO volume, SnapshotVO snapshot, VMTemplateVO template, long virtualsize) {
VolumeVO createdVolume = null;
Long volumeId = null;
Long volumeId = volume.getId();
String volumeFolder = null;
@ -524,7 +523,7 @@ public class StorageManagerImpl implements StorageManager {
DiskOfferingVO diskOffering = _diskOfferingDao.findById(volume.getDiskOfferingId());
DataCenterVO dc = _dcDao.findById(volume.getDataCenterId());
DiskProfile dskCh = createDiskCharacteristics(volume, template, dc, diskOffering);
DiskProfile dskCh = new DiskProfile(volume, diskOffering, template.getHypervisorType());
int retry = 0;
// Determine what pod to store the volume in
@ -624,7 +623,7 @@ public class StorageManagerImpl implements StorageManager {
VolumeVO originalVolume = _volsDao.findById(origVolumeId); // NOTE: Original volume could be destroyed and removed.
VMTemplateVO template = null;
if (originalVolume != null) {
template = _templateDao.findById(originalVolume.getTemplateId());
template = _templateDao.findById(originalVolume.getTemplateId());
}
// everything went well till now
@ -1669,15 +1668,18 @@ public class StorageManagerImpl implements StorageManager {
throw rae;
}
Long zoneId = null;
Long diskOfferingId = null;
Long size = null;
// validate input parameters before creating the volume
if (cmd.getSnapshotId() == null) {
Long zoneId = cmd.getZoneId();
zoneId = cmd.getZoneId();
if ((zoneId == null)) {
throw new InvalidParameterValueException("Missing parameter, zoneid must be specified.");
}
Long diskOfferingId = cmd.getDiskOfferingId();
Long size = cmd.getSize();
diskOfferingId = cmd.getDiskOfferingId();
size = cmd.getSize();
if ((diskOfferingId == null) && (size == null)) {
throw new InvalidParameterValueException("Missing parameter(s),either a positive volume size or a valid disk offering id must be specified.");
} else if ((diskOfferingId == null) && (size != null)) {
@ -1696,6 +1698,7 @@ public class StorageManagerImpl implements StorageManager {
if ((diskOffering == null) || !DiskOfferingVO.Type.Disk.equals(diskOffering.getType())) {
throw new InvalidParameterValueException("Please specify a valid disk offering.");
}
size = diskOffering.getDiskSize();
}
} else {
Long snapshotId = cmd.getSnapshotId();
@ -1703,7 +1706,12 @@ public class StorageManagerImpl implements StorageManager {
if (snapshotCheck == null) {
throw new ServerApiException (BaseCmd.SNAPSHOT_INVALID_PARAM_ERROR, "unable to find a snapshot with id " + snapshotId);
}
VolumeVO vol = _volsDao.findById(snapshotCheck.getVolumeId());
zoneId = vol.getDataCenterId();
diskOfferingId = vol.getDiskOfferingId();
size = vol.getSize();
if (account != null) {
if (isAdmin(account.getType())) {
Account snapshotOwner = _accountDao.findById(snapshotCheck.getAccountId());
@ -1715,13 +1723,6 @@ public class StorageManagerImpl implements StorageManager {
}
}
}
Long zoneId = cmd.getZoneId();
// Check that the zone is valid
DataCenterVO zone = _dcDao.findById(zoneId);
if (zone == null) {
throw new InvalidParameterValueException("Please specify a valid zone.");
}
// Check that there is a shared primary storage pool in the specified zone
List<StoragePoolVO> storagePools = _storagePoolDao.listByDataCenterId(zoneId);
@ -1754,7 +1755,8 @@ public class StorageManagerImpl implements StorageManager {
volume.setAccountId(targetAccount.getId());
volume.setDomainId(((account == null) ? Domain.ROOT_DOMAIN : account.getDomainId()));
volume.setMirrorState(MirrorState.NOT_MIRRORED);
volume.setDiskOfferingId(cmd.getDiskOfferingId());
volume.setDiskOfferingId(diskOfferingId);
volume.setSize(size);
volume.setStorageResourceType(StorageResourceType.STORAGE_POOL);
volume.setInstanceId(null);
volume.setUpdated(new Date());

View File

@ -3512,7 +3512,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService {
}
@Override
public boolean rebootVirtualMachine(RebootVMCmd cmd) {
public UserVm rebootVirtualMachine(RebootVMCmd cmd) {
Account account = UserContext.current().getAccount();
Long userId = UserContext.current().getUserId();
Long vmId = cmd.getId();
@ -3529,15 +3529,12 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService {
boolean status = rebootVirtualMachine(userId, vmId);
if(status)
{
if (status) {
EventUtils.saveEvent(userId, vmInstance.getAccountId(), EventTypes.EVENT_VM_REBOOT, "Successfully rebooted vm with id:"+vmId);
return status;
}
else
{
return _vmDao.findById(vmId);
} else {
EventUtils.saveEvent(userId, vmInstance.getAccountId(), EventTypes.EVENT_VM_REBOOT, "Failed to reboot vm with id:"+vmId);
return status;
throw new CloudRuntimeException("Failed to reboot vm with id: " + vmId);
}
}

View File

@ -81,7 +81,7 @@ public interface UserVmService extends Manager {
UserVmVO startVirtualMachine(StartVMCmd cmd) throws StorageUnavailableException, ExecutionException, ConcurrentOperationException;
UserVmVO stopVirtualMachine(StopVMCmd cmd) throws ServerApiException;
boolean rebootVirtualMachine(RebootVMCmd cmd);
UserVm rebootVirtualMachine(RebootVMCmd cmd);
@Deprecated
OperationResponse executeRebootVM(RebootVMExecutor executor, VMOperationParam param);

View File

@ -1810,7 +1810,10 @@ a:hover.search_button {
.actionpanel_button:hover{
background:url(../images/actionpanel_hover.gif) repeat-x top right;
}
.actionpanel_button.selected{
background:url(../images/actionpanel_hover.gif) repeat-x top right;
}
.action_ddarrow {
@ -1865,7 +1868,7 @@ a:hover.search_button {
position:absolute;
background:#FFF repeat top left;
border:1px solid #999;
top:20px;
top:65px;
right:7px;
margin:0;
padding:0;
@ -3909,3 +3912,78 @@ a:hover.search_button {
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: -0.2em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: -0.2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; }
.ui_dialog_loaderbox{
width:250px;
height:auto;
float:left;
background:#FFF repeat top left;
border:1px solid #CCC;
margin:10px 0 0 0;
padding:0 10px 5px 0;
}
.ui_dialog_loader {
width:16px;
height:16px;
float:left;
background:url(../images/mid_default.gif) no-repeat top left;
margin:5px 0 0 7px;
display:inline;
padding:0;
}
.ui_dialog_loaderbox p{
width:auto;
height:auto;
float:left;
color:#333;
font-size:12px;
font-weight:normal;
margin:7px 0 0 10px;
padding:0;
}
.ui_dialog_messagebox{
width:250px;
height:auto;
float:left;
background:#fff7e3 repeat top left;
border:1px solid #CCC;
margin:10px 0 0 0;
padding:0 10px 5px 0;
}
.ui_dialog_messagebox.error{
background:#ffe5e5 repeat top left;
}
.ui_dialog_msgicon {
width:18px;
height:20px;
float:left;
background:url(../images/tick_review.png) no-repeat top left;
margin:5px 0 0 7px;
display:inline;
padding:0;
}
.ui_dialog_msgicon.error {
background:url(../images/cross_review.png) no-repeat top left;
}
.ui_dialog_messagebox_text{
width:auto;
height:auto;
float:left;
color:#333;
font-size:11px;
font-weight:normal;
margin:10px 0 0 10px;
padding:0;
}
.ui_dialog_messagebox_text.error{
color:#ae0000;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,182 +1,810 @@
<%@ page import="java.util.Date" %>
<%@ page import="java.util.*" %>
<%@ page import="com.cloud.utils.*" %>
<%
Locale browserLocale = request.getLocale();
CloudResourceBundle t = CloudResourceBundle.getBundle("resources/resource", browserLocale);
%>
<%
long milliseconds = new Date().getTime();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
<meta name="version" content="1.9.1.13" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
<meta name="version" content="1.9.1.2010-08-25T16:16:56Z" />
<link rel="stylesheet" href="css/jquery-ui-1.8.2.custom.css" type="text/css" />
<link rel="stylesheet" href="css/logger.css" type="text/css" />
<link rel="stylesheet" href="css/main.css" type="text/css" />
<title>cloud.com - User Console</title>
<!-- Style Sheet -->
<link rel= "stylesheet" href="css/main.css" type="text/css" />
<link rel= "stylesheet" href="css/jquery-ui-1.8.2.custom.css" type="text/css" />
<link rel= "stylesheet" href="css/logger.css" type="text/css" />
<!--
Custom Style Sheet
- Default Cloud.com styling of the site. This file contains the easiest portion of the site
that can be styled to your companie's need such as logo, top navigation, and dialogs.
-->
<link rel="stylesheet" href="css/cloud_custom.css" type="text/css" />
<!-- Javascripts -->
<!--
If you wish to use the minified version for production, uncomment the script
tag below and remove/comment out the rest of the javascript below.
-->
<!-- <script type="text/javascript" src="scripts/cloud.core.min.js"></script> -->
<!-- Common libraries -->
<script type="text/javascript" src="scripts/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="scripts/jquery-ui-1.8.2.custom.min.js"></script>
<script type="text/javascript" src="scripts/date.js"></script>
<script type="text/javascript" src="scripts/jquery.cookies.js"></script>
<script type="text/javascript" src="scripts/jquery.timers.js"></script>
<script type="text/javascript" src="scripts/jquery.md5.js"></script>
<script type="text/javascript" src="scripts/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="scripts/jquery-ui-1.8.2.custom.min.js"></script>
<script type="text/javascript" src="scripts/date.js"></script>
<script type="text/javascript" src="scripts/jquery.cookies.js"></script>
<script type="text/javascript" src="scripts/jquery.timers.js"></script>
<script type="text/javascript" src="scripts/jquery.md5.js"></script>
<!-- cloud.com scripts -->
<script type="text/javascript" src="scripts/cloud.logger.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.callbacks.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.init.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.instance.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.event.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.alert.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.account.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.volume.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.snapshot.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.ipaddress.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.template.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.iso.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.router.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.dashboard.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.domain.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.resource.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.serviceoffering.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.diskoffering.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core2.globalsetting.js?t=<%=milliseconds%>"></script>
<!-- Callback script for Single Signon -->
<script type="text/javascript" src="scripts/cloud.core.callbacks.js?t=<%=milliseconds%>"></script>
<!-- cloud.com scripts -->
<script type="text/javascript" src="scripts/cloud.logger.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.init.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.configuration.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.templates.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.storage.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.network.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.hosts.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.instances.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.domains.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.events.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.accounts.js?t=<%=milliseconds%>"></script>
<!-- Favicon -->
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<!-- Title -->
<title>Cloud.com CloudStack</title>
<title>Cloud.com CloudStack Management Console</title>
</head>
<body>
<div id="logoutpage" style="display:none;">
<div id="logoutpage_mainmaster">
<div id="logoutpage_mainbox">
<div class="logoutpage_mainbox_top">
<div class="logout_logocontainer">
<div class="logout_logo"></div>
<!-- Main Login Dialog (begin)-->
<div id="login_wrapper" style="display:none">
<div class="login_main">
<div class="login_logopanel">
<div class="login_logobox"></div>
</div>
<div class="main_loginbox">
<div class="main_loginbox_top"></div>
<div class="main_loginbox_mid">
<div class="login_contentbox">
<div class="login_contentbox_title">
<h1>Welcome to Management Console &hellip;</h1>
</div>
<div class="login_formbox">
<form id="loginForm" action="#" method="post" name="loginForm">
<ol>
<li>
<label for="user_name">Username: </label>
<div class="login_formbox_textbg">
<input id="account_username" class="text" type="text" name="account_username" AUTOCOMPLETE="off"/>
</div>
</li>
<li>
<label for="user_name">Password: </label>
<div class="login_formbox_textbg">
<input id="account_password" class="text" type="password" name="account_password" AUTOCOMPLETE="off"/>
</div>
</li>
<li>
<label for="user_name">Domain: </label>
<div class="login_formbox_textbg">
<input id="account_domain" class="text" type="text" name="account_domain" />
</div>
</li>
</ol>
<div class="loginbutton_box">
<div class="login_button" id="loginbutton" >Login</div>
</div>
</form>
<div class="error_box" id="login_error" style="display:none;">
<p>Your username/password does not match our records.</p>
</div>
</div>
</div>
</div>
<div class="logout_titlecontainer">
<h1>Welcome to Console &hellip;</h1>
<div class="main_loginbox_bot"></div>
</div>
</div>
</div>
<!-- Main Login Dialog (end)-->
<!-- Main Console -->
<div id="overlay_black" style="display: none">
</div>
<div id="main" style="display: none">
<div id="main_header">
<div class="header_left">
<div class="logo">
</div>
<div class="mgmtconsole_logo">
</div>
</div>
<div class="header_right">
<div class="userlinks">
<p>
Welcome <span id="main_username">Anonymous</span>, <a href="#" id="main_logout">Logout</a>
</p>
</div>
</div>
</div>
<div class="logoutpage_mainbox_mid">
<div class="logoutpage_formcontent">
<form id="loginForm" name="loginForm" method="post" action="#">
<ol>
<li><label for="user_name">Username</label>
<input class="text" type="text" name="account_username" id="account_username" />
</li>
<li><label for="password">Password</label>
<input class="text" type="password" name="account_password" id="account_password" AUTOCOMPLETE="off" />
</li>
<li><label for="Domain">Domain</label>
<input class="text" type="text" name="account_domain" id="account_domain" value="/"/>
</li>
</ol>
<div class="loginbutton_box">
<a class="loginbutton" id="loginbutton" href="#"></a>
<p style="display:none"></p>
</div>
</form>
</div>
</div>
<div class="logoutpage_mainbox_bot"></div>
</div>
</div>
<div id="overlay_black"></div>
<div id="mainmaster">
<!-- Header -->
<div id="header">
<div class="header_top">
<div class="header_topleft">
<a class="logo" href="#"></a>
<div id="main_contentpanel">
<div class="right_panel">
<div id="contentwrapper">
<!-- Action Panel starts here-->
<div class="actionpanel">
<div class="searchpanel" id="search_panel">
<form method="post" action="#">
<ol>
<li>
<div class="search_textbg">
<input class="text" type="text" name="search_input" />
<div class="search_closebutton" style="display: block;">
</div>
</div>
</li>
</ol>
</form>
<a href="#">
<%=t.t("advanced")%></a>
<div class="adv_searchpopup" id="adv_search_dialog" style="display: none;">
<div class="adv_searchformbox">
<h3>
Advance Search</h3>
<a id="advanced_search_close" href="#">Close </a>
<form action="#" method="post">
<ol style="margin-top: 8px;">
<li>
<label for="filter">
Name:</label>
<input class="text" type="text" name="adv_search_name" id="adv_search_name" />
</li>
<li>
<label for="filter">
Status:</label>
<select class="select" id="adv_search_state">
<option value=""></option>
<option value="Creating">Creating</option>
<option value="Starting">Starting</option>
<option value="Running">Running</option>
<option value="Stopping">Stopping</option>
<option value="Stopped">Stopped</option>
<option value="Destroyed">Destroyed</option>
<option value="Expunging">Expunging</option>
<option value="Migrating">Migrating</option>
<option value="Error">Error</option>
<option value="Unknown">Unknown</option>
</select>
</li>
<li>
<label for="filter">
Zone:</label>
<select class="select" id="adv_search_zone">
</select>
</li>
</ol>
</form>
<div class="adv_search_actionbox">
<div class="adv_searchpopup_button" id="adv_search_button">
</div>
</div>
</div>
</div>
</div>
<div class="actionpanel_button_wrapper" id="midmenu_action_link" style="position: relative;
display: none">
<div class="actionpanel_button">
<div class="actionpanel_button_icons">
<img src="images/actions_actionicon.png" alt="Add" /></div>
<div class="actionpanel_button_links">
<%=t.t("actions")%></div>
<div class="action_ddarrow">
</div>
</div>
<div class="actionsdropdown_box" id="action_menu" style="display: none;">
<ul class="actionsdropdown_boxlist" style="width: 97px;" id="action_list">
</ul>
</div>
</div>
<div class="actionpanel_button_wrapper" id="midmenu_add_link" style="display: none;">
<div class="actionpanel_button">
<div class="actionpanel_button_icons">
<img src="images/addvm_actionicon.png" alt="Add" /></div>
<div class="actionpanel_button_links" id="label">
<%=t.t("add")%></div>
</div>
</div>
<div class="actionpanel_button_wrapper" id="midmenu_add2_link" style="display: none;">
<div class="actionpanel_button">
<div class="actionpanel_button_icons">
<img src="images/addvm_actionicon.png" alt="Add" /></div>
<div class="actionpanel_button_links" id="label">
<%=t.t("add")%></div>
</div>
</div>
<div class="actionpanel_button_wrapper" id="midmenu_startvm_link" style="display: none;">
<div class="actionpanel_button">
<div class="actionpanel_button_icons">
<img src="images/startvm_actionicon.png" alt="Start VM" /></div>
<div class="actionpanel_button_links">
Start VM</div>
</div>
</div>
<div class="actionpanel_button_wrapper" id="midmenu_stopvm_link" style="display: none;">
<div class="actionpanel_button">
<div class="actionpanel_button_icons">
<img src="images/stopvm_actionicon.png" alt="Stop VM" /></div>
<div class="actionpanel_button_links">
Stop VM</div>
</div>
</div>
<div class="actionpanel_button_wrapper" id="midmenu_rebootvm_link" style="display: none;">
<div class="actionpanel_button">
<div class="actionpanel_button_icons">
<img src="images/rebootvm_actionicon.png" alt="Reboot VM" /></div>
<div class="actionpanel_button_links">
Reboot VM</div>
</div>
</div>
<div class="actionpanel_button_wrapper" id="midmenu_destoryvm_link" style="display: none;">
<div class="actionpanel_button">
<div class="actionpanel_button_icons">
<img src="images/destroyvm_actionicon.png" alt="Destroy VM" /></div>
<div class="actionpanel_button_links">
Destroy VM</div>
</div>
</div>
<div class="actionpanel_button_wrapper" id="help_link" style="display: block; float: right;
background: none; position: relative;">
<div class="actionpanel_button">
<div class="actionpanel_button_icons">
<img src="images/help_actionicon.png" alt="Help" /></div>
<div class="actionpanel_button_links">
<%=t.t("help")%></div>
</div>
<div class="help_dropdown_box" id="help_dropdown_dialog" style="display:none;">
<div class="help_dropdown_box_titlebox">
<h2> Instance Help</h2>
<a id="help_dropdown_close" href="#"> Close</a>
</div>
<div class="help_dropdown_box_textbox" id="help_dropdown_body">
<ul>
<li><a href="#topic1">Start VM</a></li>
<li><a href="#topic2">Stop VM</a></li>
<li><a href="#topic3">Destroy VM</a></li>
</ul>
<h3>Start VM<a name="topic1"></a></h3>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. </p>
<h3>Stop VM <a name="topic2"></a></h3>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. </p><p>It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
<h3>Destroy VM<a name="topic3"></a></h3>
<p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. </p><p>It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</p>
</div>
</div>
</div>
</div>
<!-- Action Panel ends here-->
<!-- Right Panel starts here-->
<div class="main_contentarea" id="right_panel">
</div>
<div class="midmenu_navigationbox" id="middle_menu_pagination">
<div class="midmenu_prevbutton">
</div>
<div class="midmenu_nextbutton">
</div>
</div>
<!-- Right Panel ends here-->
</div>
<!-- Mid Menu starts here-->
<div class="midmenu_panel" id="middle_menu">
<div class="midmenu_box" id="midmenu_container">
</div>
</div>
<!-- Mid Menu ends here-->
</div>
</div>
<div class="header_topright">
<div class="usernav_container">
<div class="usernav_containerleft"></div>
<div class="usernav_containermid">
<div class="usernav">
Welcome, <span id="header_username"></span> | <a id="logoutaccount_link" href="#">Log Out</a>
</div>
</div>
</div>
<div class="usernav_containerright"></div>
<!-- Left Menu starts here-->
<div class="leftmenu_panel">
<div class="leftmenu_box" id="leftmenu_container">
<div class="leftmenu_list">
<div class="leftmenu_content_flevel" id="leftmenu_dashboard">
<div class="leftmenu_firstindent">
<div class="leftmenu_list_icons">
<img src="images/leftmenu_dashboardicon.png" alt="Dashboard" /></div>
<%=t.t("dashboard")%>
</div>
</div>
</div>
<div class="leftmenu_list">
<div class="leftmenu_content_flevel" id="leftmenu_instances">
<div class="leftmenu_firstindent">
<div class="leftmenu_arrows_firstlevel_open" id="expandable_first_level_arrow" style="display:none;"></div>
<div class="leftmenu_list_icons">
<img src="images/instance_leftmenuicon.png" alt="Instance" /></div>
<%=t.t("instance")%>
</div>
</div>
<div class="leftmenu_expandedbox" style="display: none">
<div id="leftmenu_instance_group">
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_instance_group_header">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows expanded_close" id="arrow_icon">
</div>
<%=t.t("instance")%>
</div>
</div>
</div>
<div id="leftmenu_instance_group_container">
</div>
</div>
</div>
</div>
<div class="leftmenu_list">
<div class="leftmenu_content_flevel" id="leftmenu_storage">
<div class="leftmenu_firstindent">
<div class="leftmenu_arrows_firstlevel_open" id="expandable_first_level_arrow" style="display:none;"></div>
<div class="leftmenu_list_icons">
<img src="images/storage_leftmenuicon.png" alt="Storage" /></div>
<%=t.t("storage")%>
</div>
</div>
<div class="leftmenu_expandedbox" style="display: none">
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_volume">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="arrowIcon">
</div>
<%=t.t("volume")%>
</div>
</div>
</div>
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_snapshot">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="arrowIcon">
</div>
<%=t.t("snapshot")%>
</div>
</div>
</div>
</div>
</div>
<div class="leftmenu_list">
<div class="leftmenu_content_flevel" id="leftmenu_network">
<div class="leftmenu_firstindent">
<div class="leftmenu_arrows_firstlevel_open" id="expandable_first_level_arrow" style="display:none;"></div>
<div class="leftmenu_list_icons">
<img src="images/network_leftmenuicon.png" alt="Network" /></div>
<%=t.t("Network")%>
</div>
</div>
<div class="leftmenu_expandedbox" style="display: none">
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_ip">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="arrowIcon">
</div>
<%=t.t("ip.address")%>
</div>
</div>
</div>
</div>
</div>
<div class="leftmenu_list">
<div class="leftmenu_content_flevel" id="leftmenu_templates">
<div class="leftmenu_firstindent">
<div class="leftmenu_arrows_firstlevel_open" id="expandable_first_level_arrow" style="display:none;"></div>
<div class="leftmenu_list_icons">
<img src="images/templates_leftmenuicon.png" alt="Template" /></div>
<%=t.t("template")%>
</div>
</div>
<div class="leftmenu_expandedbox" style="display: none">
<div id="leftmenu_itemplate_filter">
<div class="leftmenu_content" id="leftmenu_template_filter_header">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows expanded_open" id="arrowIcon">
</div>
<%=t.t("template")%>
</div>
</div>
<div id="leftmenu_template_filter_container">
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_submenu_my_template">
<div class="leftmenu_thirdindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="arrowIcon">
</div>
<div>
<%=t.t("my.template")%></div>
</div>
</div>
</div>
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_submenu_featured_template">
<div class="leftmenu_thirdindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="arrowIcon">
</div>
<div>
<%=t.t("featured.template")%></div>
</div>
</div>
</div>
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_submenu_community_template">
<div class="leftmenu_thirdindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="arrowIcon">
</div>
<div>
<%=t.t("community.template")%></div>
</div>
</div>
</div>
</div>
</div>
<div id="leftmenu_iso_filter">
<div class="leftmenu_content" id="leftmenu_iso_filter_header">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows expanded_open" id="arrowIcon">
</div>
<%=t.t("iso")%>
</div>
</div>
<div id="leftmenu_iso_filter_container">
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_submenu_my_iso">
<div class="leftmenu_thirdindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="arrowIcon">
</div>
<div>
<%=t.t("my.iso")%></div>
</div>
</div>
</div>
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_submenu_featured_iso">
<div class="leftmenu_thirdindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="arrowIcon">
</div>
<div>
<%=t.t("featured.iso")%></div>
</div>
</div>
</div>
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_submenu_community_iso">
<div class="leftmenu_thirdindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="arrowIcon">
</div>
<div>
<%=t.t("community.iso")%></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="leftmenu_list">
<div class="leftmenu_content_flevel" id="leftmenu_account">
<div class="leftmenu_firstindent">
<!-- <div class="leftmenu_arrows_firstlevel_open" id="expandable_first_level_arrow" style="display:none;"></div> -->
<div class="leftmenu_list_icons">
<img src="images/accounts_leftmenuicon.png" alt="Account" /></div>
<%=t.t("account")%>
</div>
</div>
</div>
<div class="leftmenu_list">
<div class="leftmenu_content_flevel" id="leftmenu_domain">
<div class="leftmenu_firstindent">
<div class="leftmenu_arrows_firstlevel_open" id="expandable_first_level_arrow" style="display:none;"></div>
<div class="leftmenu_list_icons">
<img src="images/domain_leftmenuicon.png" alt="Domain" /></div>
<%=t.t("domain")%>
</div>
</div>
<div class="leftmenu_expandedbox" style="display: none">
<div class="leftmenu_expandedlist" id="leftmenu_domain_tree">
</div>
</div>
</div>
<div class="leftmenu_list">
<div class="leftmenu_content_flevel" id="leftmenu_events">
<div class="leftmenu_firstindent">
<div class="leftmenu_arrows_firstlevel_open" id="expandable_first_level_arrow" style="display:none;"></div>
<div class="leftmenu_list_icons">
<img src="images/events_leftmenuicon.png" alt="Event" /></div>
<%=t.t("event")%>
</div>
</div>
<div class="leftmenu_expandedbox" style="display: none">
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_event">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="arrowIcon">
</div>
<%=t.t("event")%>
</div>
</div>
</div>
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_alert">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="arrowIcon">
</div>
<%=t.t("alert")%>
</div>
</div>
</div>
</div>
</div>
<div class="leftmenu_list">
<div class="leftmenu_content_flevel" id="leftmenu_system">
<div class="leftmenu_firstindent">
<div class="leftmenu_arrows_firstlevel_open" id="expandable_first_level_arrow" style="display:none;"></div>
<div class="leftmenu_list_icons">
<img src="images/configuration_leftmenuicon.png" alt="System" /></div>
<%=t.t("system")%>
</div>
</div>
<div class="leftmenu_expandedbox" style="display: none">
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_resource">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows expanded_close" id="resource_arrow">
</div>
<%=t.t("resources")%>
</div>
</div>
</div>
<div id="leftmenu_zone_tree">
<div class="leftmenu_loadingbox" style="display:none;" id="loading_container">
<div class="leftmenu_loader"></div>
<p> Loading &hellip; </p>
</div>
<div id="tree_container"></div>
</div>
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" style="border-bottom: 1px dashed b4c8d6;" id="leftmenu_service_offering">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows expanded_close" id="arrowIcon">
</div>
<%=t.t("service.offerings")%>
</div>
</div>
</div>
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_disk_offering">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows expanded_close" id="arrowIcon">
</div>
<%=t.t("disk.offerings")%>
</div>
</div>
</div>
<div class="leftmenu_expandedlist">
<div class="leftmenu_content" id="leftmenu_global_setting">
<div class="leftmenu_secondindent">
<div class="leftmenu_arrows expanded_close" id="arrowIcon">
</div>
<%=t.t("global.settings")%>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Left Menu ends here-->
</div>
<div id="footer">
<p>
<%=t.t("version")%>: <span>2.2</span>
</p>
<div class="poweredby_box">
</div>
</div>
<!-- Dialogs 1 -->
<div id="dialog_confirmation" title="Confirmation" style="display: none">
</div>
<div id="dialog_info" title="Info" style="display: none">
</div>
<div id="dialog_alert" title="Alert" style="display: none">
</div>
<div id="dialog_error" title="Error" style="display: none; color: red">
</div>
<div id="dialog_session_expired" title="Session Expired" style="display: none">
<p>
<%=t.t("your.session.has.expired")%>
</p>
</div>
<div id="dialog_error_internet_not_resolved" title="Error" style="display: none">
<p style="color: red">
<%=t.t("internet.name.can.not.be.resolved")%>
</p>
</div>
<div id="dialog_error_management_server_not_accessible" title="Error" style="display: none">
<p style="color: red">
<%=t.t("management.server.is.not.accessible")%>
</p>
</div>
<!-- Dialogs 2 -->
<div id="dialog_info_please_select_one_item_in_middle_menu" title="Alert" style="display: none">
<p>
<%=t.t("please.select.at.least.one.item.in.middle.menu")%>
</p>
</div>
<!-- ***** templates (begin) *************************************************************************************************-->
<div class="leftmenu_content" id="leftmenu_submenu_template" style="display: none">
<div class="leftmenu_thirdindent">
<div class="leftmenu_list_icons">
<img id="icon" style="display: none" /></div>
<div id="submenu_name">
(submenu)</div>
</div>
</div>
<div class="midmenu_list" id="midmenu_item" style="display: none;">
<div class="midmenu_content" id="content">
<div class="midmenu_icons" id="icon_container" style="display: none">
<img id="icon" /></div>
<div class="midmenu_textbox">
<p style="font-size: 11px;">
<strong id="first_row">&nbsp;</strong>
</p>
<p id="second_row_container">
<span id="second_row">&nbsp;</span>
</p>
</div>
<div class="midmenu_inactionloader" id="spinning_wheel" style="display: none;">
</div>
<div class="midmenu_infoicon" id="info_icon" style="display: none;">
</div>
</div>
</div>
<!-- action list item for middle menu -->
<li id="action_list_item_middle_menu" style="display: none; width: 94px;"><a id="link"
href="#">(middle menu action)</a></li>
<!-- action list item for details tab, subgrid item-->
<li id="action_list_item" style="display: none;"><a id="link" href="#">(action)</a></li>
<li id="no_available_actions" style="display: none">
<%=t.t("no.available.actions")%></li>
<!-- Zonetree Template (begin) -->
<div class="leftmenu_expandedlist" id="leftmenu_zone_node_template" style="display:none">
<div class="leftmenu_loadingbox" style="display:none;" id="loading_container">
<div class="leftmenu_loader"></div>
<p> Adding Zone &hellip; </p>
</div>
<div id="row_container">
<div class="leftmenu_content" id="header">
<div class="leftmenu_thirdindent">
<div class="leftmenu_arrows expanded_close" id="zone_arrow">
</div>
<span id="zone_name_label">Zone: </span>
<span id="zone_name"></span>
</div>
</div>
<div id="zone_content" style="display: none">
<div id="pods_container">
</div>
<div id="systemvms_container">
</div>
</div>
</div>
</div>
<div class="header_bot" id="global_nav">
<div class="globalnav_container" id="menutab_role_user" style="display:none">
<div id="menutab_dashboard_user" class="menutab_off">Dashboard</div>
<div id="menutab_vm" class="menutab_off">Instances</div>
<div id="menutab_storage" class="menutab_off">Storage</div>
<div id="menutab_networking" class="menutab_off">Network</div>
<div id="menutab_templates" class="menutab_off">Templates</div>
<div id="menutab_events" class="menutab_off">Events</div>
</div>
<div class="globalnav_container" id="menutab_role_root" style="display:none">
<div id="menutab_dashboard_root" class="admin_menutab_off">Dashboard</div>
<div id="menutab_vm" class="admin_menutab_off">Instances</div>
<div id="menutab_hosts" class="admin_menutab_off">Hosts</div>
<div id="menutab_storage" class="admin_menutab_off">Storage</div>
<div id="menutab_networking" class="admin_menutab_off">Network</div>
<div id="menutab_templates" class="admin_menutab_off">Templates</div>
<div id="menutab_accounts" class="admin_menutab_off">Accounts</div>
<div id="menutab_domain" class="admin_menutab_off">Domains</div>
<div id="menutab_events" class="admin_menutab_off">Events</div>
<div id="menutab_configuration" class="admin_menutab_off">Configuration</div>
</div>
<div class="globalnav_container" id="menutab_role_domain" style="display:none">
<div id="menutab_dashboard_domain" class="admin_menutab_off">Dashboard</div>
<div id="menutab_vm" class="admin_menutab_off">Instances</div>
<div id="menutab_storage" class="admin_menutab_off">Storage</div>
<div id="menutab_networking" class="admin_menutab_off">Network</div>
<div id="menutab_templates" class="admin_menutab_off">Templates</div>
<div id="menutab_accounts" class="admin_menutab_off">Accounts</div>
<div id="menutab_domain" class="admin_menutab_off">Domains</div>
<div id="menutab_events" class="admin_menutab_off">Events</div>
<!-- Zone Template (end) -->
<!-- Pod Template (begin) -->
<div class="leftmenu_expandedlist" id="leftmenu_pod_node_template" style="display:none">
<div class="leftmenu_loadingbox" style="display:none;" id="loading_container">
<div class="leftmenu_loader"></div>
<p> Adding Pod &hellip; </p>
</div>
<div id="row_container">
<div class="leftmenu_content" id="header">
<div class="leftmenu_fourthindent">
<div class="leftmenu_arrows expanded_close" id="pod_arrow">
</div>
<span id="pod_name_label">Pod: </span>
<span id="pod_name"></span>
</div>
</div>
<div id="pod_content" style="display: none">
<div id="clusters_container">
</div>
</div>
</div>
</div>
</div>
<!-- END Header -->
<!-- submenus -->
<div class="submenu_tab">
<div class="title_testlinks" id="launch_test" style="display:none">Launch Test Provisioning Tool</div>
</div>
<!-- Main Content Area -->
<div id="maincontentarea"></div>
<!-- END Main Content Area -->
<!-- Dialogs -->
<div id="dialog_confirmation" title="Confirmation" style="display:none"></div>
<div id="dialog_info" title="Info" style="display:none"></div>
<div id="dialog_alert" title="Alert" style="display:none"></div>
<div id="dialog_error" title="Error" style="display:none"></div>
<div id="dialog_session_expired" title="Session Expired" style="display:none">
<p>Your session has expired. Please click 'OK' to return to the login screen.</p>
</div>
</div>
<!-- Pod Template (end) -->
<!-- Cluster Template (begin) -->
<div class="leftmenu_expandedlist" id="leftmenu_cluster_node_template" style="display:none">
<div class="leftmenu_loadingbox" style="display:none;" id="loading_container">
<div class="leftmenu_loader"></div>
<p> Adding Cluster &hellip; </p>
</div>
<div id="row_container">
<div class="leftmenu_content" id="header">
<div class="leftmenu_fifthindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="cluster_arrow">
</div>
<span id="cluster_name_label">Cluster: </span>
<span id="cluster_name"></span>
</div>
</div>
<div id="cluster_content">
<div id="hosts_container">
</div>
<div id="primarystorages_container">
</div>
</div>
</div>
</div>
<!-- Cluster Template (end) -->
<!-- SystemVM Template (begin) -->
<div class="leftmenu_expandedlist" id="leftmenu_systemvm_node_template" style="display:none">
<div id="row_container">
<div class="leftmenu_content" id="header">
<div class="leftmenu_fourthindent">
<div class="leftmenu_arrows white_nonexpanded_close" id="systemvm_arrow">
</div>
<span id="systemvm_name_label">System VM: </span>
<span id="systemvm_name"></span>
</div>
</div>
</div>
</div>
<!-- SystemVM Template (end) -->
<!-- domain tree node template (begin) -->
<div id="domain_tree_node_template" style="display:none">
<div id="domain_title_container" class="leftmenu_content">
<div class="leftmenu_domainindent" id="domain_indent">
<div class="leftmenu_arrows expanded_close" id="domain_expand_icon">
</div>
<span id="domain_name">
Domain Name</span>
</div>
</div>
<div id="domain_children_container" style="display: none">
</div>
</div>
<!-- domain tree node template (end) -->
<!-- ***** templates (end) *************************************************************************************************-->
</body>
</html>

View File

@ -47,7 +47,7 @@
</div>
</div>
<div class="dbrow_cell" style="width: 58%; border: none;">
<div class="db_barbox low" id="bar_chart" style="width: 18%;">
<div class="db_barbox low" id="bar_chart">
</div>
</div>
<div class="dbrow_cell" style="width: 12%; border: none;">
@ -68,7 +68,7 @@
</div>
</div>
<div class="dbrow_cell" style="width: 58%; border: none;">
<div class="db_barbox low" id="bar_chart" style="width: 20%;">
<div class="db_barbox low" id="bar_chart">
</div>
</div>
<div class="dbrow_cell" style="width: 12%; border: none;">
@ -89,7 +89,7 @@
</div>
</div>
<div class="dbrow_cell" style="width: 58%; border: none;">
<div class="db_barbox mid" id="bar_chart" style="width: 66%;">
<div class="db_barbox mid" id="bar_chart" >
</div>
</div>
<div class="dbrow_cell" style="width: 12%; border: none;">
@ -110,7 +110,7 @@
</div>
</div>
<div class="dbrow_cell" style="width: 58%; border: none;">
<div class="db_barbox high" id="bar_chart" style="width: 83%;">
<div class="db_barbox high" id="bar_chart">
</div>
</div>
<div class="dbrow_cell" style="width: 12%; border: none;">
@ -131,7 +131,7 @@
</div>
</div>
<div class="dbrow_cell" style="width: 58%; border: none;">
<div class="db_barbox low" id="bar_chart" style="width: 15%;">
<div class="db_barbox low" id="bar_chart">
</div>
</div>
<div class="dbrow_cell" style="width: 12%; border: none;">
@ -152,7 +152,7 @@
</div>
</div>
<div class="dbrow_cell" style="width: 58%; border: none;">
<div class="db_barbox low" id="bar_chart" style="width: 40%;">
<div class="db_barbox low" id="bar_chart">
</div>
</div>
<div class="dbrow_cell" style="width: 12%; border: none;">
@ -173,7 +173,7 @@
</div>
</div>
<div class="dbrow_cell" style="width: 58%; border: none;">
<div class="db_barbox low" id="bar_chart" style="width: 20%;">
<div class="db_barbox low" id="bar_chart">
</div>
</div>
<div class="dbrow_cell" style="width: 12%; border: none;">

View File

@ -705,6 +705,7 @@
<!-- Add Zone Dialog -->
<div id="dialog_add_zone" title="Add Zone" style="display:none">
<p>Please enter the following info to add a new zone:</p>
<div class="dialog_formcontent">
<form action="#" method="post" id="form_acquire">
<ol>
@ -748,6 +749,18 @@
</ol>
</form>
</div>
<!--Loading box-->
<div class="ui_dialog_loaderbox" style="display:none;">
<div class="ui_dialog_loader"></div>
<p>Loading</p>
</div>
<!--Confirmation msg box-->
<!--Note: for error msg, just have to add error besides everything for eg. add error(class) next to ui_dialog_messagebox error, ui_dialog_msgicon error, ui_dialog_messagebox_text error. -->
<div class="ui_dialog_messagebox error" style="display:none;">
<div class="ui_dialog_msgicon error"></div>
<div class="ui_dialog_messagebox_text error">Confirmation message will appear here</div>
</div>
</div>
<!-- END Add Zone Dialog -->
<!-- Add Pod Dialog -->

View File

@ -1,63 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<link rel="stylesheet" href="css/main.css" />
</head>
<body>
<div id="login_wrapper">
<div class="login_main">
<div class="login_logopanel">
<div class="login_logobox"></div>
</div>
<div class="main_loginbox">
<div class="main_loginbox_top"></div>
<div class="main_loginbox_mid">
<div class="login_contentbox">
<div class="login_contentbox_title">
<h1>Welcome to Management Console &hellip;</h1>
</div>
<div class="login_formbox">
<form id="loginForm" action="#" method="post" name="loginForm">
<ol>
<li>
<label for="user_name">Username: </label>
<div class="login_formbox_textbg">
<input id="account_username" class="text" type="text" name="account_username" />
</div>
</li>
<li>
<label for="user_name">Password: </label>
<div class="login_formbox_textbg">
<input id="account_username" class="text" type="text" name="account_password" />
</div>
</li>
<li>
<label for="user_name">Domain: </label>
<div class="login_formbox_textbg">
<input id="account_domain" class="text" type="text" name="account_domain" />
</div>
</li>
</ol>
<div class="loginbutton_box">
<div class="login_button">Login</div>
</div>
</form>
<div class="error_box" style="display:block;">
<p>Your username/password does not match our records.</p>
</div>
</div>
</div>
</div>
<div class="main_loginbox_bot"></div>
</div>
</div>
</div>
</body>
</html>

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
var systemAccountId = 1;
var adminAccountId = 2;

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
function afterLoadAlertJSP() {
}

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
/*
This file is meant to help with implementing single signon integration. If you are using the
cloud.com default UI, there is no need to touch this file.

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
function afterLoadDashboardJSP() {
var $alertTemplate = $("#alert_template");

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
function afterLoadDiskOfferingJSP() {
var $detailsTab = $("#right_panel_content #tab_content_details");

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
var $selectedDomainTreeNode;
var defaultRootLevel = 0;
var childParentMap = {}; //map childDomainId to parentDomainId

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
function afterLoadEventJSP() {
}

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
function afterLoadGlobalSettingJSP() {
var $detailsTab = $("#right_panel_content #tab_content_details");

File diff suppressed because it is too large Load Diff

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
function afterLoadIpJSP() {
//***** switch between different tabs (begin) ********************************************************************
var tabArray = [$("#tab_details"), $("#tab_port_forwarding"), $("#tab_load_balancer")];

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
var g_zoneIds = [];
var g_zoneNames = [];

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
function buildZoneTree() {
//***** build zone tree (begin) ***********************************************************************************************
var forceLogout = true; // We force a logout only if the user has first added a POD for the very first time

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
function afterLoadRouterJSP() {
}

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
function afterLoadServiceOfferingJSP() {
var $detailsTab = $("#right_panel_content #tab_content_details");

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
function afterLoadSnapshotJSP() {
//initialize dialog
activateDialog($("#dialog_add_volume_from_snapshot").dialog({

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
var g_zoneIds = [];
var g_zoneNames = [];

View File

@ -16,8 +16,6 @@
*
*/
// Version: @VERSION@
function afterLoadVolumeJSP() {
activateDialog($("#dialog_create_template").dialog({
width: 400,