package com.intuit.tank.job; /* * #%L * JSF Support Beans * %% * Copyright (C) 2011 - 2015 Intuit Inc. * %% * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * #L% */ import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.FastDateFormat; import com.intuit.tank.api.model.v1.cloud.CloudVmStatus; import com.intuit.tank.vm.common.TankConstants; public class VMNodeBean extends JobNodeBean { private static final long serialVersionUID = 1L; public VMNodeBean(CloudVmStatus vmStatus, boolean hasRights, FastDateFormat fmt) { super(); this.setHasRights(hasRights); this.setName("Agent"); this.setJobId(vmStatus.getJobId()); this.setId(vmStatus.getInstanceId()); this.setReportMode(""); this.setStatus(vmStatus.getJobStatus().toString()); this.setRegion(vmStatus.getVmRegion().toString()); this.setActiveUsers(String.valueOf(vmStatus.getCurrentUsers())); this.setNumFailures(vmStatus.getValidationFailures()); this.setUserDetails(vmStatus.getUserDetails()); this.setTotalUsers(String.valueOf(vmStatus.getTotalUsers())); setTps(vmStatus.getTotalTps()); if (vmStatus.getStartTime() != null) { this.setStartTime(fmt.format(vmStatus.getStartTime())); } else { this.setStartTime(""); } if (vmStatus.getEndTime() != null) { this.setEndTime(fmt.format(vmStatus.getEndTime())); } else { this.setEndTime(""); } } @Override public void reCalculate() { } // private int calculateTPS(CloudVmStatus vmStatus) { // int ret = 0; // if (vmStatus != null && vmStatus.getTpsInfo() != null) { // Map<Date, Map<String, TPSInfo>> tpsInfoMap = new HashMap<Date, Map<String,TPSInfo>>(); // Date maxTime = vmStatus.getTpsInfo().getMaxTime(); // // don't accept any data from older than 60 minutes // int transactionCount = 0; // for (TPSInfo info : vmStatus.getTpsInfo().getTpsInfos()) { // Map<String, TPSInfo> map = tpsInfoMap.get(info.getTimestamp()); // if (map == null) { // map = new HashMap<String, TPSInfo>(); // tpsInfoMap.put(info.getTimestamp(), map); // } // map.put(info.getKey(), info); // if (info.getTimestamp().equals(maxTime)) { // transactionCount += info.getTransactions(); // } // } // ret = Math.round(transactionCount / vmStatus.getTpsInfo().getPeriod()); // setTpsDetailMap(tpsInfoMap); // } // return ret; // } @Override public List<JobNodeBean> getSubNodes() { return new ArrayList<JobNodeBean>(); } @Override public boolean hasSubNodes() { return false; } @Override public boolean isKillable() { return JobStatusHelper.canBeKilled(getStatus()); } @Override public boolean isStopable() { return JobStatusHelper.canBeStopped(getStatus()); } @Override public boolean isRunnable() { return JobStatusHelper.canBeRun(getStatus()); } @Override public boolean isPausable() { return JobStatusHelper.canBePaused(getStatus()); } @Override public boolean isRampPausable() { return JobStatusHelper.canRampBePaused(getStatus()); } /** * @{inheritDoc */ @Override public String getType() { return "vm"; } }