/**
* Copyright 2011 Intuit Inc. All Rights Reserved
*/
package com.intuit.tank.api.model.v1.cloud;
/*
* #%L
* Cloud Rest API
* %%
* 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.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import com.intuit.tank.vm.api.enumerated.JobStatus;
import com.intuit.tank.vm.api.enumerated.VMImageType;
import com.intuit.tank.vm.api.enumerated.VMRegion;
/**
* BrokerStatus
*
* @author dangleton
*
*/
@XmlRootElement(name = "cloudVm", namespace = Namespace.NAMESPACE_V1)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CloudVm", namespace = Namespace.NAMESPACE_V1, propOrder = {
"instanceId",
"jobId",
"securityGroup",
"jobStatus",
"role",
"vmRegion",
"vmStatus",
"validationFailures",
"totalUsers",
"currentUsers",
"startTime",
"endTime",
"reportTime",
"totalTps",
"userDetails"
})
public class CloudVmStatus implements Serializable {
private static final long serialVersionUID = 1L;
@XmlElement(name = "instanceId", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private String instanceId;
@XmlElement(name = "jobId", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private String jobId;
@XmlElement(name = "securityGroup", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private String securityGroup;
@XmlElement(name = "jobStatus", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private JobStatus jobStatus = JobStatus.Unknown;
@XmlElement(name = "role", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private VMImageType role = VMImageType.AGENT;
@XmlElement(name = "vmRegion", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private VMRegion vmRegion;
@XmlElement(name = "vmStatus", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private VMStatus vmStatus = VMStatus.unknown;
@XmlElement(name = "validationFailures", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private ValidationStatus validationFailures;
@XmlElement(name = "totalUsers", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private int totalUsers;
@XmlElement(name = "currentUsers", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private int currentUsers;
@XmlElement(name = "startTime", namespace = Namespace.NAMESPACE_V1, required = false, nillable = false)
private Date startTime;
@XmlElement(name = "endTime", namespace = Namespace.NAMESPACE_V1, required = false, nillable = false)
private Date endTime;
@XmlElement(name = "reportTime", namespace = Namespace.NAMESPACE_V1, required = false, nillable = false)
private Date reportTime;
@XmlElement(name = "totalTps", namespace = Namespace.NAMESPACE_V1, required = false, nillable = false)
private int totalTps;
@XmlElementWrapper(name = "userDetails", namespace = Namespace.NAMESPACE_V1)
@XmlElement(name = "userDetail", namespace = Namespace.NAMESPACE_V1, required = true, nillable = false)
private List<UserDetail> userDetails = new ArrayList<UserDetail>();
protected CloudVmStatus() {
}
/**
* @param instanceId
* @param jobId
* @param securityGroup
* @param jobStatus
* @param vmStatus
* @param totalUsers
* @param currentUsers
*/
public CloudVmStatus(String instanceId, String jobId, String securityGroup, JobStatus jobStatus, VMImageType role,
VMRegion vmRegion,
VMStatus vmStatus, ValidationStatus validationFailures,
int totalUsers, int currentUsers, Date startTime, Date endTime) {
super();
this.instanceId = instanceId;
this.jobId = jobId;
this.securityGroup = securityGroup;
this.vmRegion = vmRegion;
this.role = role;
this.jobStatus = jobStatus;
this.vmStatus = vmStatus;
this.validationFailures = validationFailures;
this.totalUsers = totalUsers;
this.currentUsers = currentUsers;
this.startTime = startTime;
this.endTime = endTime;
}
/**
*
* @param copy
*/
public CloudVmStatus(CloudVmStatus copy) {
this.instanceId = copy.instanceId;
this.jobId = copy.jobId;
this.securityGroup = copy.securityGroup;
this.vmRegion = copy.vmRegion;
this.role = copy.role;
this.jobStatus = copy.jobStatus;
this.vmStatus = copy.vmStatus;
this.validationFailures = copy.validationFailures;
this.totalUsers = copy.totalUsers;
this.currentUsers = copy.currentUsers;
this.startTime = copy.startTime;
this.endTime = copy.endTime;
this.totalTps = copy.totalTps;
}
/**
* @return the tpsInfo
*/
public int getTotalTps() {
return totalTps;
}
/**
* @param tpsInfo
* the tpsInfo to set
*/
public void setTotalTps(int totalTps) {
this.totalTps = totalTps;
}
/**
* @return the userDetails
*/
public List<UserDetail> getUserDetails() {
return userDetails;
}
/**
* @param userDetails
* the userDetails to set
*/
public void setUserDetails(List<UserDetail> userDetails) {
this.userDetails = userDetails;
}
/**
* @return the validationFailures
*/
public ValidationStatus getValidationFailures() {
return validationFailures;
}
/**
* @return the instanceId
*/
public String getInstanceId() {
return instanceId;
}
/**
* @return the vmRegion
*/
public VMRegion getVmRegion() {
return vmRegion;
}
/**
* @return the jobId
*/
public String getJobId() {
return jobId;
}
/**
* @return the securityGroup
*/
public String getSecurityGroup() {
return securityGroup;
}
/**
* @return the jobStatus
*/
public JobStatus getJobStatus() {
return jobStatus;
}
/**
* @return the vmStatus
*/
public VMStatus getVmStatus() {
return vmStatus;
}
/**
* @return the totalUsers
*/
public int getTotalUsers() {
return totalUsers;
}
/**
* @return the currentUsers
*/
public int getCurrentUsers() {
return currentUsers;
}
/**
* @return the role
*/
public VMImageType getRole() {
return role;
}
/**
* @return the startTime
*/
public Date getStartTime() {
return startTime;
}
/**
* @return the endTime
*/
public Date getEndTime() {
return endTime;
}
/**
* @return the reportTime
*/
public Date getReportTime() {
return reportTime;
}
/**
* @param reportTime
* the reportTime to set
*/
public void setReportTime(Date reportTime) {
this.reportTime = reportTime;
}
/**
* @param jobStatus
* the jobStatus to set
*/
public void setJobStatus(JobStatus jobStatus) {
this.jobStatus = jobStatus;
}
/**
* @param vmStatus
* the vmStatus to set
*/
public void setVmStatus(VMStatus vmStatus) {
this.vmStatus = vmStatus;
}
/**
* @param currentUsers
* the currentUsers to set
*/
public void setCurrentUsers(int currentUsers) {
this.currentUsers = currentUsers;
}
/**
* @param endTime
* the endTime to set
*/
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
/**
* @{inheritDoc
*/
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
/**
* @{inheritDoc
*/
@Override
public boolean equals(Object obj) {
if (!(obj instanceof CloudVmStatus)) {
return false;
}
CloudVmStatus o = (CloudVmStatus) obj;
return new EqualsBuilder().append(o.getInstanceId(), getInstanceId()).append(o.getJobId(), getJobId())
.isEquals();
}
/**
* @{inheritDoc
*/
@Override
public int hashCode() {
return new HashCodeBuilder(29, 45).append(getInstanceId()).append(getJobId()).toHashCode();
}
}