Remove IdentityProxy from BaseResponse, ExtractResponse. Now

IdentityProxy is only referenced in CreateCmdResponse, which involves
some async job logic change. Since it is not impacting list performance,
will leave it there for now.

Signed-off-by: Min Chen <min.chen@citrix.com>
This commit is contained in:
Min Chen 2012-12-20 16:52:52 -08:00
parent 5548d08fb6
commit b14b39a69f
42 changed files with 443 additions and 295 deletions

View File

@ -36,6 +36,8 @@ public interface Upload {
long getId();
String getUuid();
Date getCreated();
Date getLastUpdated();

View File

@ -57,7 +57,8 @@ public abstract class BaseAsyncCmd extends BaseCmd {
public ResponseObject getResponse(long jobId) {
AsyncJobResponse response = new AsyncJobResponse();
response.setJobId(jobId);
AsyncJob job = _entityMgr.findById(AsyncJob.class, jobId);
response.setJobId(job.getUuid());
response.setResponseName(getCommandName());
return response;
}

View File

@ -17,6 +17,8 @@
package org.apache.cloudstack.api;
import org.apache.cloudstack.api.response.CreateCmdResponse;
import com.cloud.async.AsyncJob;
import com.cloud.exception.ResourceAllocationException;
public abstract class BaseAsyncCreateCmd extends BaseAsyncCmd {
@ -37,7 +39,8 @@ public abstract class BaseAsyncCreateCmd extends BaseAsyncCmd {
public String getResponse(long jobId, long objectId, String objectEntityTable) {
CreateCmdResponse response = new CreateCmdResponse();
response.setJobId(jobId);
AsyncJob job = _entityMgr.findById(AsyncJob.class, jobId);
response.setJobId(job.getUuid());
response.setId(objectId);
response.setIdEntityTable(objectEntityTable);
response.setResponseName(getCommandName());

View File

@ -512,8 +512,9 @@ public abstract class BaseCmd {
throw new PermissionDeniedException("Can't add resources to the account id=" + account.getId() + " in state=" + account.getState() + " as it's no longer active");
}
} else {
List<IdentityProxy> idList = new ArrayList<IdentityProxy>();
idList.add(new IdentityProxy("domain", domainId, "domainId"));
// idList is not used anywhere, so removed it now
//List<IdentityProxy> idList = new ArrayList<IdentityProxy>();
//idList.add(new IdentityProxy("domain", domainId, "domainId"));
throw new InvalidParameterValueException("Unable to find account by name " + accountName + " in domain with specified id");
}
}

View File

@ -46,18 +46,12 @@ public abstract class BaseResponse implements ResponseObject {
this.objectName = objectName;
}
//TODO: TO be replaced by getObjectUuid() after all response refactoring
public Long getObjectId() {
return null;
}
public String getObjectUuid(){
public String getObjectId() {
return null;
}
// For use by list commands with pending async jobs
//TODO: To be replaced by jobUuid after all response refactoring
protected IdentityProxy jobId = new IdentityProxy("async_job");
protected String jobId;
@SerializedName(ApiConstants.JOB_ID) @Param(description="the UUID of the latest async job acting on this object")
protected String jobUuid;
@ -65,13 +59,12 @@ public abstract class BaseResponse implements ResponseObject {
@SerializedName(ApiConstants.JOB_STATUS) @Param(description="the current status of the latest async job acting on this object")
private Integer jobStatus;
//TODO: TO be replaced by getter and setters for jobUuid.
public Long getJobId() {
return jobId.getValue();
public String getJobId() {
return jobId;
}
public void setJobId(Long jobId) {
this.jobId.setValue(jobId);
public void setJobId(String jobId) {
this.jobId = jobId;
}
public String getJobUuid() {

View File

@ -45,40 +45,24 @@ public interface ResponseObject {
void setObjectName(String name);
/**
* Returns the object Id
* Returns the object UUid
*/
Long getObjectId();
/**
* Returns the object uuid. To replace getObjectId() later.
*/
String getObjectUuid();
String getObjectId();
/**
* Returns the job id
*
* @return
*/
Long getJobId();
String getJobId();
/**
* Return the async job uuid. To replace getJobId() later.
* @return
*/
String getJobUuid();
/**
* Sets the job id
*
* @param jobId
*/
void setJobId(Long jobId);
/**
* Set the job uuid. To replace setJobId() later.
* @param jobUuid job uuid
*/
void setJobUuid(String jobUuid);
void setJobId(String jobId);
/**
* Returns the job status

View File

@ -167,7 +167,7 @@ public class CreateVolumeCmd extends BaseAsyncCreateCmd {
VolumeResponse response = _responseGenerator.createVolumeResponse(volume);
//FIXME - have to be moved to ApiResponseHelper
if (getSnapshotId() != null) {
Snapshot snap = _queryService.findSnapshotById(getSnapshotId());
Snapshot snap = _entityMgr.findById(Snapshot.class, getSnapshotId());
if (snap != null) {
response.setSnapshotId(snap.getUuid()); // if the volume was
// created from a

View File

@ -133,15 +133,17 @@ public class ExtractVolumeCmd extends BaseAsyncCmd {
ExtractResponse response = new ExtractResponse();
response.setResponseName(getCommandName());
response.setObjectName("volume");
response.setIdentityTableName("volumes");
response.setId(id);
response.setName(_entityMgr.findById(Volume.class, id).getName());
response.setZoneId(zoneId);
response.setZoneName(_entityMgr.findById(DataCenter.class, zoneId).getName());
Volume vol = _entityMgr.findById(Volume.class, id);
response.setId(vol.getUuid());
response.setName(vol.getName());
DataCenter zone = _entityMgr.findById(DataCenter.class, id);
response.setZoneId(zone.getUuid());
response.setZoneName(zone.getName());
response.setMode(mode);
response.setUploadId(uploadId);
response.setUploadId(uploadInfo.getUuid());
response.setState(uploadInfo.getUploadState().toString());
response.setAccountId(getEntityOwnerId());
Account account = _entityMgr.findById(Account.class, getEntityOwnerId());
response.setAccountId(account.getUuid());
response.setUrl(uploadInfo.getUploadUrl());
this.setResponseObject(response);
} else {

View File

@ -149,6 +149,12 @@ public class AccountResponse extends BaseResponse {
@SerializedName(ApiConstants.ACCOUNT_DETAILS) @Param(description="details for the account")
private Map<String, String> details;
@Override
public String getObjectId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}

View File

@ -60,6 +60,12 @@ public class AutoScalePolicyResponse extends BaseResponse implements ControlledE
@SerializedName(ApiConstants.DOMAIN) @Param(description="the domain name of the autoscale policy")
private String domainName;
@Override
public String getObjectId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}

View File

@ -81,6 +81,13 @@ public class AutoScaleVmGroupResponse extends BaseResponse implements Controlled
}
@Override
public String getObjectId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}

View File

@ -92,6 +92,13 @@ public class AutoScaleVmProfileResponse extends BaseResponse implements Controll
}
@Override
public String getObjectId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}

View File

@ -70,10 +70,16 @@ public class ConditionResponse extends BaseResponse implements ControlledEntityR
// ///////////////// Setters ///////////////////////
// ///////////////////////////////////////////////////
public void setId(String id) {
this.id = id;
}
@Override
public String getObjectId() {
return this.id;
}
public void setThreshold(long threshold) {
this.threshold = threshold;
}

View File

@ -48,6 +48,12 @@ public class CounterResponse extends BaseResponse {
@Param(description = "zone id of counter")
private String zoneId;
@Override
public String getObjectId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}

View File

@ -154,11 +154,15 @@ public class DomainRouterResponse extends BaseResponse implements ControlledView
nics = new HashSet<NicResponse>();
}
@Override
public String getObjectUuid() {
public String getObjectId() {
return this.getId();
}
public String getId() {
return id;
}

View File

@ -19,20 +19,19 @@ package org.apache.cloudstack.api.response;
import java.util.Date;
import org.apache.cloudstack.api.ApiConstants;
import com.cloud.utils.IdentityProxy;
import com.cloud.serializer.Param;
import com.google.gson.annotations.SerializedName;
import org.apache.cloudstack.api.BaseResponse;
public class ExtractResponse extends BaseResponse {
@SerializedName(ApiConstants.ID) @Param(description="the id of extracted object")
private IdentityProxy id = new IdentityProxy("vm_template");
private String id;
@SerializedName(ApiConstants.NAME) @Param(description="the name of the extracted object")
private String name;
@SerializedName("extractId") @Param(description="the upload id of extracted object")
private IdentityProxy uploadId = new IdentityProxy("async_job");
private String uploadId;
@SerializedName("uploadpercentage") @Param(description="the percentage of the entity uploaded to the specified location")
private Integer uploadPercent;
@ -41,7 +40,7 @@ public class ExtractResponse extends BaseResponse {
private String status;
@SerializedName("accountid") @Param(description="the account id to which the extracted object belongs")
private IdentityProxy accountId = new IdentityProxy("account");
private String accountId;
@SerializedName("resultstring") @Param(includeInApiDoc=false)
private String resultString;
@ -59,7 +58,7 @@ public class ExtractResponse extends BaseResponse {
private String storage;
@SerializedName(ApiConstants.ZONE_ID) @Param(description="zone ID the object was extracted from")
private IdentityProxy zoneId = new IdentityProxy("data_center");
private String zoneId;
@SerializedName(ApiConstants.ZONE_NAME) @Param(description="zone name the object was extracted from")
private String zoneName;
@ -73,26 +72,23 @@ public class ExtractResponse extends BaseResponse {
public ExtractResponse(){
}
public ExtractResponse(Long typeId, String typeName, long accountId,
String state, Long uploadId) {
this.id.setValue(typeId);
public ExtractResponse(String typeId, String typeName, String accountId,
String state, String uploadId) {
this.id = typeId;
this.name = typeName;
this.accountId.setValue(accountId);
this.accountId = accountId;
this.state = state;
this.uploadId.setValue(uploadId);
this.uploadId = uploadId;
}
public Long getId() {
return id.getValue();
public String getId() {
return id;
}
public void setId(long id) {
this.id.setValue(id);
public void setId(String id) {
this.id = id;
}
public void setIdentityTableName(String tableName) {
this.id.setTableName(tableName);
}
public String getName() {
return name;
@ -102,12 +98,12 @@ public class ExtractResponse extends BaseResponse {
this.name = name;
}
public Long getUploadId() {
return uploadId.getValue();
public String getUploadId() {
return uploadId;
}
public void setUploadId(Long uploadId) {
this.uploadId.setValue(uploadId);
public void setUploadId(String uploadId) {
this.uploadId = uploadId;
}
public Integer getUploadPercent() {
@ -126,12 +122,12 @@ public class ExtractResponse extends BaseResponse {
this.status = status;
}
public Long getAccountId() {
return accountId.getValue();
public String getAccountId() {
return accountId;
}
public void setAccountId(long accountId) {
this.accountId.setValue(accountId);
public void setAccountId(String accountId) {
this.accountId = accountId;
}
public String getResultString() {
@ -174,12 +170,12 @@ public class ExtractResponse extends BaseResponse {
this.storage = storage;
}
public Long getZoneId() {
return zoneId.getValue();
public String getZoneId() {
return zoneId;
}
public void setZoneId(Long zoneId) {
this.zoneId.setValue(zoneId);
public void setZoneId(String zoneId) {
this.zoneId = zoneId;
}
public String getZoneName() {

View File

@ -67,6 +67,12 @@ public class FirewallRuleResponse extends BaseResponse {
@SerializedName(ApiConstants.TAGS) @Param(description="the list of resource tags associated with the rule", responseObject = ResourceTagResponse.class)
private List<ResourceTagResponse> tags;
@Override
public String getObjectId() {
return this.getId();
}
public String getId() {
return id;
}

View File

@ -160,6 +160,11 @@ public class HostResponse extends BaseResponse {
private Boolean haHost;
@Override
public String getObjectId() {
return this.getId();
}
public String getId() {
return id;
}

View File

@ -117,6 +117,11 @@ public class IPAddressResponse extends BaseResponse implements ControlledEntityR
this.ipAddress = ipAddress;
}
@Override
public String getObjectId() {
return this.getId();
}
public void setAllocated(Date allocated) {
this.allocated = allocated;
}

View File

@ -55,6 +55,11 @@ public class IsoVmResponse extends BaseResponse {
private String virtualMachineState;
@Override
public String getObjectId() {
return this.getId();
}
public String getOsTypeId() {
return osTypeId;
}

View File

@ -68,10 +68,6 @@ public class NicResponse extends BaseResponse {
this.id = id;
}
@Override
public String getObjectUuid() {
return this.getId();
}
public void setNetworkid(String networkid) {
this.networkId = networkid;

View File

@ -60,6 +60,13 @@ public class PhysicalNetworkResponse extends BaseResponse {
@SerializedName(ApiConstants.NETWORK_SPEED) @Param(description="the speed of the physical network")
private String networkSpeed;
@Override
public String getObjectId() {
return this.id;
}
public void setId(String uuid) {
this.id = uuid;
}

View File

@ -72,6 +72,11 @@ public class PrivateGatewayResponse extends BaseResponse implements ControlledEn
private String state;
@Override
public String getObjectId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}

View File

@ -69,11 +69,15 @@ public class SecurityGroupResponse extends BaseResponse implements ControlledVie
this.tags = new HashSet<ResourceTagResponse>();
}
@Override
public String getObjectUuid() {
public String getObjectId() {
return this.getId();
}
public String getId() {
return id;
}

View File

@ -85,6 +85,11 @@ public class SnapshotResponse extends BaseResponse implements ControlledEntityRe
private List<ResourceTagResponse> tags;
@Override
public String getObjectId() {
return this.getId();
}
private String getId() {
return id;
}

View File

@ -62,6 +62,12 @@ public class StaticRouteResponse extends BaseResponse implements ControlledEntit
responseObject = ResourceTagResponse.class)
private List<ResourceTagResponse> tags;
@Override
public String getObjectId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}

View File

@ -80,6 +80,12 @@ public class StoragePoolResponse extends BaseResponse {
private StoragePoolStatus state;
@Override
public String getObjectId() {
return this.getId();
}
public String getId() {
return id;
}

View File

@ -108,15 +108,15 @@ public class SystemVmResponse extends BaseResponse {
@SerializedName("activeviewersessions") @Param(description="the number of active console sessions for the console proxy system vm")
private Integer activeViewerSessions;
private Long objectId;
// private Long objectId;
public Long getObjectId() {
return objectId;
@Override
public String getObjectId() {
return this.getId();
}
public void setObjectId(Long objectId) {
this.objectId = objectId;
}
public String getId() {
return id;

View File

@ -135,6 +135,11 @@ public class TemplateResponse extends BaseResponse implements ControlledEntityRe
@Override
public String getObjectId() {
return this.getId();
}
public String getId() {
return id;
}

View File

@ -41,6 +41,12 @@ public class TrafficTypeResponse extends BaseResponse {
@SerializedName(ApiConstants.VMWARE_NETWORK_LABEL) @Param(description="The network name label of the physical device dedicated to this traffic on a VMware host")
private String vmwareNetworkLabel;
@Override
public String getObjectId() {
return this.id;
}
public void setPhysicalNetworkId(String physicalNetworkId) {
this.physicalNetworkId = physicalNetworkId;
}

View File

@ -72,6 +72,12 @@ public class UserResponse extends BaseResponse {
@SerializedName("accountid") @Param(description="the account ID of the user")
private String accountId;
@Override
public String getObjectId() {
return this.getId();
}
public String getId() {
return id;
}

View File

@ -185,8 +185,10 @@ public class UserVmResponse extends BaseResponse implements ControlledEntityResp
return this.id;
}
@Override
public String getObjectUuid() {
public String getObjectId() {
return this.getId();
}

View File

@ -157,6 +157,11 @@ public class VolumeResponse extends BaseResponse implements ControlledEntityResp
@Override
public String getObjectId() {
return this.getId();
}
public Boolean getDestroyed() {
return destroyed;
}

View File

@ -39,6 +39,7 @@ import org.apache.cloudstack.api.response.UserResponse;
import org.apache.cloudstack.api.response.UserVmResponse;
import com.cloud.async.AsyncJob;
import com.cloud.exception.PermissionDeniedException;
import com.cloud.storage.Snapshot;
@ -69,6 +70,5 @@ public interface QueryService {
public ListResponse<ProjectAccountResponse> listProjectAccounts(ListProjectAccountsCmd cmd);
public Snapshot findSnapshotById(long snapshotId);
}

View File

@ -38,47 +38,50 @@ public class UploadVO implements Upload {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
long id;
@Column(name="uuid")
private String uuid;
@Column(name="host_id")
private long hostId;
@Column(name="type_id")
private long typeId;
@Column(name=GenericDaoBase.CREATED_COLUMN)
private Date created = null;
@Column(name="last_updated")
@Temporal(value=TemporalType.TIMESTAMP)
private Date lastUpdated = null;
private Date lastUpdated = null;
@Column (name="upload_pct")
private int uploadPercent;
private int uploadPercent;
@Column (name="type")
@Enumerated(EnumType.STRING)
private Type type;
@Column (name="mode")
@Enumerated(EnumType.STRING)
private Mode mode = Mode.FTP_UPLOAD;
@Column (name="upload_state")
@Enumerated(EnumType.STRING)
private Status uploadState;
@Column (name="error_str")
private String errorString;
@Column (name="job_id")
private String jobId;
@Column (name="url")
private String uploadUrl;
@Column (name="install_path")
private String installPath;
@Override
public long getHostId() {
return hostId;
@ -93,7 +96,12 @@ public class UploadVO implements Upload {
return id;
}
@Override
public String getUuid() {
return uuid;
}
@Override
public Date getCreated() {
return created;
}
@ -102,7 +110,7 @@ public class UploadVO implements Upload {
public Date getLastUpdated() {
return lastUpdated;
}
public void setLastUpdated(Date date) {
lastUpdated = date;
}
@ -125,7 +133,7 @@ public class UploadVO implements Upload {
this.type = type;
this.uploadUrl = uploadUrl;
}
public UploadVO(long hostId, long typeId, Date lastUpdated,
Status uploadState, int uploadPercent, Type type,
Mode mode) {
@ -139,7 +147,7 @@ public class UploadVO implements Upload {
this.mode = mode;
}
protected UploadVO() {
protected UploadVO() {
}
public UploadVO(Long uploadId) {
@ -219,7 +227,7 @@ public class UploadVO implements Upload {
return mode;
}
public void setMode(Mode mode) {
public void setMode(Mode mode) {
this.mode = mode;
}

View File

@ -52,8 +52,10 @@ import com.cloud.api.query.vo.ResourceTagJoinVO;
import com.cloud.api.query.vo.SecurityGroupJoinVO;
import com.cloud.api.query.vo.UserAccountJoinVO;
import com.cloud.api.query.vo.UserVmJoinVO;
import com.cloud.async.AsyncJob;
import com.cloud.async.AsyncJobManager;
import com.cloud.async.AsyncJobVO;
import com.cloud.async.dao.AsyncJobDao;
import com.cloud.capacity.CapacityVO;
import com.cloud.capacity.dao.CapacityDao;
import com.cloud.capacity.dao.CapacityDaoImpl.SummedCapacity;
@ -95,6 +97,7 @@ import com.cloud.network.NetworkManager;
import com.cloud.network.NetworkProfile;
import com.cloud.network.NetworkRuleConfigVO;
import com.cloud.network.NetworkVO;
import com.cloud.network.PhysicalNetworkServiceProvider;
import com.cloud.network.PhysicalNetworkVO;
import com.cloud.network.Site2SiteVpnGatewayVO;
import com.cloud.network.Site2SiteCustomerGatewayVO;
@ -311,6 +314,7 @@ public class ApiDBUtils {
private static VpcDao _vpcDao;
private static VpcOfferingDao _vpcOfferingDao;
private static SnapshotPolicyDao _snapshotPolicyDao;
private static AsyncJobDao _asyncJobDao;
static {
_ms = (ManagementServer) ComponentLocator.getComponent(ManagementServer.Name);
@ -397,6 +401,7 @@ public class ApiDBUtils {
_vpcDao = locator.getDao(VpcDao.class);
_vpcOfferingDao = locator.getDao(VpcOfferingDao.class);
_snapshotPolicyDao = locator.getDao(SnapshotPolicyDao.class);
_asyncJobDao = locator.getDao(AsyncJobDao.class);
// Note: stats collector should already have been initialized by this time, otherwise a null instance is returned
_statsCollector = StatsCollector.getInstance();
@ -1044,6 +1049,130 @@ public class ApiDBUtils {
public static VpcOffering findVpcOfferingById(long offeringId){
return _vpcOfferingDao.findById(offeringId);
}
public static AsyncJob findAsyncJobById(long jobId){
return _asyncJobDao.findById(jobId);
}
public static String findJobInstanceUuid(AsyncJob job){
if ( job == null )
return null;
String jobInstanceId = null;
if (job.getInstanceType() == AsyncJob.Type.Volume) {
VolumeVO volume = ApiDBUtils.findVolumeById(job.getInstanceId());
if (volume != null) {
jobInstanceId = volume.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Template || job.getInstanceType() == AsyncJob.Type.Iso) {
VMTemplateVO template = ApiDBUtils.findTemplateById(job.getInstanceId());
if (template != null) {
jobInstanceId = template.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.VirtualMachine || job.getInstanceType() == AsyncJob.Type.ConsoleProxy
|| job.getInstanceType() == AsyncJob.Type.SystemVm || job.getInstanceType() == AsyncJob.Type.DomainRouter) {
VMInstanceVO vm = ApiDBUtils.findVMInstanceById(job.getInstanceId());
if (vm != null) {
jobInstanceId = vm.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Snapshot) {
Snapshot snapshot = ApiDBUtils.findSnapshotById(job.getInstanceId());
if (snapshot != null) {
jobInstanceId = snapshot.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Host) {
Host host = ApiDBUtils.findHostById(job.getInstanceId());
if (host != null) {
jobInstanceId = host.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.StoragePool) {
StoragePoolVO spool = ApiDBUtils.findStoragePoolById(job.getInstanceId());
if (spool != null) {
jobInstanceId = spool.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.IpAddress) {
IPAddressVO ip = ApiDBUtils.findIpAddressById(job.getInstanceId());
if (ip != null) {
jobInstanceId = ip.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.SecurityGroup) {
SecurityGroup sg = ApiDBUtils.findSecurityGroupById(job.getInstanceId());
if (sg != null) {
jobInstanceId = sg.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.PhysicalNetwork) {
PhysicalNetworkVO pnet = ApiDBUtils.findPhysicalNetworkById(job.getInstanceId());
if (pnet != null) {
jobInstanceId = pnet.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.TrafficType) {
PhysicalNetworkTrafficTypeVO trafficType = ApiDBUtils.findPhysicalNetworkTrafficTypeById(job.getInstanceId());
if (trafficType != null) {
jobInstanceId = trafficType.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.PhysicalNetworkServiceProvider) {
PhysicalNetworkServiceProvider sp = ApiDBUtils.findPhysicalNetworkServiceProviderById(job.getInstanceId());
if (sp != null) {
jobInstanceId = sp.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.FirewallRule) {
FirewallRuleVO fw = ApiDBUtils.findFirewallRuleById(job.getInstanceId());
if (fw != null) {
jobInstanceId = fw.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Account) {
Account acct = ApiDBUtils.findAccountById(job.getInstanceId());
if (acct != null) {
jobInstanceId = acct.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.User) {
User usr = ApiDBUtils.findUserById(job.getInstanceId());
if (usr != null) {
jobInstanceId = usr.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.StaticRoute) {
StaticRouteVO route = ApiDBUtils.findStaticRouteById(job.getInstanceId());
if (route != null) {
jobInstanceId = route.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.PrivateGateway) {
VpcGatewayVO gateway = ApiDBUtils.findVpcGatewayById(job.getInstanceId());
if (gateway != null) {
jobInstanceId = gateway.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Counter) {
CounterVO counter = ApiDBUtils.getCounter(job.getInstanceId());
if (counter != null) {
jobInstanceId = counter.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Condition) {
ConditionVO condition = ApiDBUtils.findConditionById(job.getInstanceId());
if (condition != null) {
jobInstanceId = condition.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.AutoScalePolicy) {
AutoScalePolicyVO policy = ApiDBUtils.findAutoScalePolicyById(job.getInstanceId());
if (policy != null) {
jobInstanceId = policy.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.AutoScaleVmProfile) {
AutoScaleVmProfileVO profile = ApiDBUtils.findAutoScaleVmProfileById(job.getInstanceId());
if (profile != null) {
jobInstanceId = profile.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.AutoScaleVmGroup) {
AutoScaleVmGroupVO group = ApiDBUtils.findAutoScaleVmGroupById(job.getInstanceId());
if (group != null) {
jobInstanceId = group.getUuid();
}
} else if (job.getInstanceType() != AsyncJob.Type.None) {
// TODO : when we hit here, we need to add instanceType -> UUID
// entity table mapping
assert (false);
}
return jobInstanceId;
}
///////////////////////////////////////////////////////////////////////
// Newly Added Utility Methods for List API refactoring //
///////////////////////////////////////////////////////////////////////

View File

@ -1480,7 +1480,7 @@ public class ApiResponseHelper implements ResponseGenerator {
if (vm.getType() == Type.SecondaryStorageVm || vm.getType() == Type.ConsoleProxy) {
// SystemVm vm = (SystemVm) systemVM;
vmResponse.setId(vm.getUuid());
vmResponse.setObjectId(vm.getId());
//vmResponse.setObjectId(vm.getId());
vmResponse.setSystemVmType(vm.getType().toString().toLowerCase());
vmResponse.setName(vm.getHostName());
@ -2089,16 +2089,19 @@ public class ApiResponseHelper implements ResponseGenerator {
UploadVO uploadInfo = ApiDBUtils.findUploadById(uploadId);
ExtractResponse response = new ExtractResponse();
response.setObjectName("template");
response.setId(id);
response.setName(ApiDBUtils.findTemplateById(id).getName());
VMTemplateVO template = ApiDBUtils.findTemplateById(id);
response.setId(template.getUuid());
response.setName(template.getName());
if (zoneId != null) {
response.setZoneId(zoneId);
response.setZoneName(ApiDBUtils.findZoneById(zoneId).getName());
DataCenter zone = ApiDBUtils.findZoneById(zoneId);
response.setZoneId(zone.getUuid());
response.setZoneName(zone.getName());
}
response.setMode(mode);
response.setUploadId(uploadId);
response.setUploadId(uploadInfo.getUuid());
response.setState(uploadInfo.getUploadState().toString());
response.setAccountId(accountId);
Account account = ApiDBUtils.findAccountById(accountId);
response.setAccountId(account.getUuid());
response.setUrl(uploadInfo.getUploadUrl());
return response;
@ -2122,124 +2125,14 @@ public class ApiResponseHelper implements ResponseGenerator {
}
jobResponse.setCmd(job.getCmd());
jobResponse.setCreated(job.getCreated());
jobResponse.setJobId(job.getId());
jobResponse.setJobId(job.getUuid());
jobResponse.setJobStatus(job.getStatus());
jobResponse.setJobProcStatus(job.getProcessStatus());
if (job.getInstanceType() != null && job.getInstanceId() != null) {
jobResponse.setJobInstanceType(job.getInstanceType().toString());
String jobInstanceId = null;
if (job.getInstanceType() == AsyncJob.Type.Volume) {
VolumeVO volume = ApiDBUtils.findVolumeById(job.getInstanceId());
if (volume != null) {
jobInstanceId = volume.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Template || job.getInstanceType() == AsyncJob.Type.Iso) {
VMTemplateVO template = ApiDBUtils.findTemplateById(job.getInstanceId());
if (template != null) {
jobInstanceId = template.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.VirtualMachine || job.getInstanceType() == AsyncJob.Type.ConsoleProxy
|| job.getInstanceType() == AsyncJob.Type.SystemVm || job.getInstanceType() == AsyncJob.Type.DomainRouter) {
VMInstanceVO vm = ApiDBUtils.findVMInstanceById(job.getInstanceId());
if (vm != null) {
jobInstanceId = vm.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Snapshot) {
Snapshot snapshot = ApiDBUtils.findSnapshotById(job.getInstanceId());
if (snapshot != null) {
jobInstanceId = snapshot.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Host) {
Host host = ApiDBUtils.findHostById(job.getInstanceId());
if (host != null) {
jobInstanceId = host.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.StoragePool) {
StoragePoolVO spool = ApiDBUtils.findStoragePoolById(job.getInstanceId());
if (spool != null) {
jobInstanceId = spool.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.IpAddress) {
IPAddressVO ip = ApiDBUtils.findIpAddressById(job.getInstanceId());
if (ip != null) {
jobInstanceId = ip.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.SecurityGroup) {
SecurityGroup sg = ApiDBUtils.findSecurityGroupById(job.getInstanceId());
if (sg != null) {
jobInstanceId = sg.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.PhysicalNetwork) {
PhysicalNetworkVO pnet = ApiDBUtils.findPhysicalNetworkById(job.getInstanceId());
if (pnet != null) {
jobInstanceId = pnet.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.TrafficType) {
PhysicalNetworkTrafficTypeVO trafficType = ApiDBUtils.findPhysicalNetworkTrafficTypeById(job.getInstanceId());
if (trafficType != null) {
jobInstanceId = trafficType.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.PhysicalNetworkServiceProvider) {
PhysicalNetworkServiceProvider sp = ApiDBUtils.findPhysicalNetworkServiceProviderById(job.getInstanceId());
if (sp != null) {
jobInstanceId = sp.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.FirewallRule) {
FirewallRuleVO fw = ApiDBUtils.findFirewallRuleById(job.getInstanceId());
if (fw != null) {
jobInstanceId = fw.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Account) {
Account acct = ApiDBUtils.findAccountById(job.getInstanceId());
if (acct != null) {
jobInstanceId = acct.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.User) {
User usr = ApiDBUtils.findUserById(job.getInstanceId());
if (usr != null) {
jobInstanceId = usr.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.StaticRoute) {
StaticRouteVO route = ApiDBUtils.findStaticRouteById(job.getInstanceId());
if (route != null) {
jobInstanceId = route.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.PrivateGateway) {
VpcGatewayVO gateway = ApiDBUtils.findVpcGatewayById(job.getInstanceId());
if (gateway != null) {
jobInstanceId = gateway.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Counter) {
CounterVO counter = ApiDBUtils.getCounter(job.getInstanceId());
if (counter != null) {
jobInstanceId = counter.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.Condition) {
ConditionVO condition = ApiDBUtils.findConditionById(job.getInstanceId());
if (condition != null) {
jobInstanceId = condition.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.AutoScalePolicy) {
AutoScalePolicyVO policy = ApiDBUtils.findAutoScalePolicyById(job.getInstanceId());
if (policy != null) {
jobInstanceId = policy.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.AutoScaleVmProfile) {
AutoScaleVmProfileVO profile = ApiDBUtils.findAutoScaleVmProfileById(job.getInstanceId());
if (profile != null) {
jobInstanceId = profile.getUuid();
}
} else if (job.getInstanceType() == AsyncJob.Type.AutoScaleVmGroup) {
AutoScaleVmGroupVO group = ApiDBUtils.findAutoScaleVmGroupById(job.getInstanceId());
if (group != null) {
jobInstanceId = group.getUuid();
}
} else if (job.getInstanceType() != AsyncJob.Type.None) {
// TODO : when we hit here, we need to add instanceType -> UUID
// entity table mapping
assert (false);
}
String jobInstanceId = ApiDBUtils.findJobInstanceUuid(job);
if (jobInstanceId != null) {
jobResponse.setJobInstanceId(jobInstanceId);
}

View File

@ -51,6 +51,7 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.cloudstack.api.*;
import org.apache.cloudstack.api.command.user.account.ListProjectAccountsCmd;
import org.apache.cloudstack.api.command.user.event.ListEventsCmd;
import org.apache.cloudstack.api.command.user.vm.ListVMsCmd;
import org.apache.cloudstack.api.command.user.vmgroup.ListVMGroupsCmd;
@ -85,6 +86,8 @@ import org.apache.http.protocol.ResponseServer;
import org.apache.log4j.Logger;
import org.apache.cloudstack.api.command.admin.router.ListRoutersCmd;
import org.apache.cloudstack.api.command.user.project.ListProjectInvitationsCmd;
import org.apache.cloudstack.api.command.user.project.ListProjectsCmd;
import org.apache.cloudstack.api.command.user.securitygroup.ListSecurityGroupsCmd;
import org.apache.cloudstack.api.command.user.tag.ListTagsCmd;
import com.cloud.acl.ControlledEntity;
@ -454,7 +457,10 @@ public class ApiServer implements HttpRequestHandler {
&& !(cmdObj instanceof ListSecurityGroupsCmd)
&& !(cmdObj instanceof ListTagsCmd)
&& !(cmdObj instanceof ListEventsCmd)
&& !(cmdObj instanceof ListVMGroupsCmd)) {
&& !(cmdObj instanceof ListVMGroupsCmd)
&& !(cmdObj instanceof ListProjectsCmd)
&& !(cmdObj instanceof ListProjectAccountsCmd)
&& !(cmdObj instanceof ListProjectInvitationsCmd)) {
buildAsyncListResponse((BaseListCmd) cmdObj, caller);
}
@ -479,17 +485,22 @@ public class ApiServer implements HttpRequestHandler {
return;
}
// Using maps might possibly be more efficient if the set is large enough but for now, we'll just do a
// comparison of two lists. Either way, there shouldn't be too many async jobs active for the account.
Map<String, AsyncJob> objectJobMap = new HashMap<String, AsyncJob>();
for (AsyncJob job : jobs) {
if (job.getInstanceId() == null) {
continue;
}
for (ResponseObject response : responses) {
if (response.getObjectId() != null && job.getInstanceId().longValue() == response.getObjectId().longValue()) {
response.setJobId(job.getId());
response.setJobStatus(job.getStatus());
}
String instanceUuid = ApiDBUtils.findJobInstanceUuid(job);
if (instanceUuid != null) {
objectJobMap.put(instanceUuid, job);
}
}
for (ResponseObject response : responses) {
if (response.getObjectId() != null && objectJobMap.containsKey(response.getObjectId())) {
AsyncJob job = objectJobMap.get(response.getObjectId());
response.setJobId(job.getUuid());
response.setJobStatus(job.getStatus());
}
}
}

View File

@ -71,6 +71,7 @@ import com.cloud.api.query.vo.ResourceTagJoinVO;
import com.cloud.api.query.vo.SecurityGroupJoinVO;
import com.cloud.api.query.vo.UserAccountJoinVO;
import com.cloud.api.query.vo.UserVmJoinVO;
import com.cloud.async.AsyncJob;
import com.cloud.domain.Domain;
import com.cloud.domain.DomainVO;
import com.cloud.domain.dao.DomainDao;
@ -1308,10 +1309,5 @@ public class QueryManagerImpl implements QueryService, Manager {
return _projectAccountJoinDao.searchAndCount(sc, searchFilter);
}
@Override
public Snapshot findSnapshotById(long snapshotId) {
return ApiDBUtils.findSnapshotById(snapshotId);
}
}

View File

@ -2891,8 +2891,10 @@ public class ManagementServerImpl implements ManagementServer {
uploadJob = _uploadDao.createForUpdate(uploadJob.getId());
// Update the async Job
ExtractResponse resultObj = new ExtractResponse(volumeId, volume.getName(), accountId, UploadVO.Status.COPY_IN_PROGRESS.toString(),
uploadJob.getId());
ExtractResponse resultObj = new ExtractResponse(ApiDBUtils.findVolumeById(volumeId).getUuid(),
volume.getName(), ApiDBUtils.findAccountById(accountId).getUuid(), UploadVO.Status.COPY_IN_PROGRESS.toString(),
uploadJob.getUuid());
resultObj.setResponseName(cmd.getCommandName());
AsyncJobExecutor asyncExecutor = BaseAsyncJobExecutor.getCurrentExecutor();
if (asyncExecutor != null) {

View File

@ -42,6 +42,8 @@ import com.cloud.agent.api.storage.UploadProgressCommand;
import com.cloud.agent.api.storage.UploadProgressCommand.RequestType;
import org.apache.cloudstack.api.command.user.template.ExtractTemplateCmd;
import org.apache.cloudstack.api.response.ExtractResponse;
import com.cloud.api.ApiDBUtils;
import com.cloud.async.AsyncJobManager;
import com.cloud.async.AsyncJobResult;
import com.cloud.exception.AgentUnavailableException;
@ -55,12 +57,12 @@ import com.cloud.storage.upload.UploadState.UploadEvent;
import com.cloud.utils.exception.CloudRuntimeException;
public class UploadListener implements Listener {
private static final class StatusTask extends TimerTask {
private final UploadListener ul;
private final RequestType reqType;
public StatusTask( UploadListener ul, RequestType req) {
this.reqType = req;
this.ul = ul;
@ -72,10 +74,10 @@ public class UploadListener implements Listener {
}
}
private static final class TimeoutTask extends TimerTask {
private final UploadListener ul;
public TimeoutTask( UploadListener ul) {
this.ul = ul;
}
@ -89,13 +91,13 @@ public class UploadListener implements Listener {
public static final Logger s_logger = Logger.getLogger(UploadListener.class.getName());
public static final int SMALL_DELAY = 100;
public static final long STATUS_POLL_INTERVAL = 10000L;
public static final String UPLOADED=Status.UPLOADED.toString();
public static final String NOT_UPLOADED=Status.NOT_UPLOADED.toString();
public static final String UPLOAD_ERROR=Status.UPLOAD_ERROR.toString();
public static final String UPLOAD_IN_PROGRESS=Status.UPLOAD_IN_PROGRESS.toString();
public static final String UPLOAD_ABANDONED=Status.ABANDONED.toString();
public static final Map<String,String> responseNameMap;
public static final Map<String,String> responseNameMap;
static{
Map<String, String>tempMap = new HashMap<String, String>();
tempMap.put(Type.ISO.toString(), ExtractIsoCmd.getStaticName());
@ -106,16 +108,16 @@ public class UploadListener implements Listener {
}
private HostVO sserver;
private HostVO sserver;
private boolean uploadActive = true;
private UploadDao uploadDao;
private final UploadMonitorImpl uploadMonitor;
private UploadState currState;
private UploadCommand cmd;
private Timer timer;
@ -131,7 +133,7 @@ public class UploadListener implements Listener {
private long eventId;
private AsyncJobManager asyncMgr;
private ExtractResponse resultObj;
public AsyncJobManager getAsyncMgr() {
return asyncMgr;
}
@ -157,12 +159,12 @@ public class UploadListener implements Listener {
}
private final Map<String, UploadState> stateMap = new HashMap<String, UploadState>();
private Long uploadId;
private Long uploadId;
public UploadListener(HostVO host, Timer _timer, UploadDao uploadDao,
UploadVO uploadObj, UploadMonitorImpl uploadMonitor, UploadCommand cmd,
Long accountId, String typeName, Type type, long eventId, long asyncJobId, AsyncJobManager asyncMgr) {
this.sserver = host;
this.sserver = host;
this.uploadDao = uploadDao;
this.uploadMonitor = uploadMonitor;
this.cmd = cmd;
@ -178,15 +180,23 @@ public class UploadListener implements Listener {
this.eventId = eventId;
this.asyncJobId = asyncJobId;
this.asyncMgr = asyncMgr;
this.resultObj = new ExtractResponse(uploadObj.getTypeId(), typeName, accountId, Status.NOT_UPLOADED.toString(), uploadId);
String extractId = null;
if ( type == Type.VOLUME ){
extractId = ApiDBUtils.findVolumeById(uploadObj.getTypeId()).getUuid();
}
else{
extractId = ApiDBUtils.findTemplateById(uploadObj.getTypeId()).getUuid();
}
this.resultObj = new ExtractResponse(extractId, typeName, ApiDBUtils.findAccountById(accountId).getUuid(), Status.NOT_UPLOADED.toString(),
ApiDBUtils.findUploadById(uploadId).getUuid());
resultObj.setResponseName(responseNameMap.get(type.toString()));
updateDatabase(Status.NOT_UPLOADED, cmd.getUrl(),"");
}
public UploadListener(UploadMonitorImpl monitor) {
uploadMonitor = monitor;
}
}
public void checkProgress() {
transition(UploadEvent.TIMEOUT_CHECK, null);
}
@ -204,15 +214,15 @@ public class UploadListener implements Listener {
public void setCommand(UploadCommand _cmd) {
this.cmd = _cmd;
}
public void setJobId(String _jobId) {
this.jobId = _jobId;
}
public String getJobId() {
return jobId;
}
@Override
public boolean processAnswers(long agentId, long seq, Answer[] answers) {
boolean processed = false;
@ -230,7 +240,7 @@ public class UploadListener implements Listener {
}
return processed;
}
@Override
public boolean processCommands(long agentId, long seq, Command[] commands) {
@ -238,13 +248,13 @@ public class UploadListener implements Listener {
}
@Override
public void processConnect(HostVO agent, StartupCommand cmd, boolean forRebalance) {
public void processConnect(HostVO agent, StartupCommand cmd, boolean forRebalance) {
if (!(cmd instanceof StartupStorageCommand)) {
return;
}
long agentId = agent.getId();
StartupStorageCommand storage = (StartupStorageCommand)cmd;
if (storage.getResourceType() == Storage.StorageResourceType.STORAGE_HOST ||
storage.getResourceType() == Storage.StorageResourceType.SECONDARY_STORAGE )
@ -258,35 +268,35 @@ public class UploadListener implements Listener {
AgentControlCommand cmd) {
return null;
}
public void setUploadInactive(Status reason) {
uploadActive=false;
uploadMonitor.handleUploadEvent(sserver, accountId, typeName, type, uploadId, reason, eventId);
}
public void logUploadStart() {
//uploadMonitor.logEvent(accountId, event, "Storage server " + sserver.getName() + " started upload of " +type.toString() + " " + typeName, EventVO.LEVEL_INFO, eventId);
}
public void cancelTimeoutTask() {
if (timeoutTask != null) timeoutTask.cancel();
}
public void cancelStatusTask() {
if (statusTask != null) statusTask.cancel();
}
@Override
public boolean processDisconnect(long agentId, com.cloud.host.Status state) {
public boolean processDisconnect(long agentId, com.cloud.host.Status state) {
setDisconnected();
return true;
}
@Override
public boolean processTimeout(long agentId, long seq) {
public boolean processTimeout(long agentId, long seq) {
return true;
}
private void initStateMachine() {
stateMap.put(Status.NOT_UPLOADED.toString(), new NotUploadedState(this));
stateMap.put(Status.UPLOADED.toString(), new UploadCompleteState(this));
@ -294,7 +304,7 @@ public class UploadListener implements Listener {
stateMap.put(Status.UPLOAD_IN_PROGRESS.toString(), new UploadInProgressState(this));
stateMap.put(Status.ABANDONED.toString(), new UploadAbandonedState(this));
}
private UploadState getState(String stateName) {
return stateMap.get(stateName);
}
@ -316,15 +326,15 @@ public class UploadListener implements Listener {
throw new CloudRuntimeException("Unhandled event transition: currState="+prevName+", evt="+event);
}
}
public Date getLastUpdated() {
return lastUpdated;
}
public void setLastUpdated() {
lastUpdated = new Date();
}
public void log(String message, Level level) {
s_logger.log(level, message + ", " + type.toString() + " = " + typeName + " at host " + sserver.getName());
}
@ -332,7 +342,7 @@ public class UploadListener implements Listener {
public void setDisconnected() {
transition(UploadEvent.DISCONNECT, null);
}
public void scheduleStatusCheck(com.cloud.agent.api.storage.UploadProgressCommand.RequestType getStatus) {
if (statusTask != null) statusTask.cancel();
@ -349,27 +359,27 @@ public class UploadListener implements Listener {
log("Scheduling timeout at " + delay + " ms", Level.DEBUG);
}
}
public void updateDatabase(Status state, String uploadErrorString) {
resultObj.setResultString(uploadErrorString);
resultObj.setState(state.toString());
asyncMgr.updateAsyncJobAttachment(asyncJobId, type.toString(), 1L);
asyncMgr.updateAsyncJobStatus(asyncJobId, AsyncJobResult.STATUS_IN_PROGRESS, resultObj);
UploadVO vo = uploadDao.createForUpdate();
vo.setUploadState(state);
vo.setLastUpdated(new Date());
vo.setErrorString(uploadErrorString);
uploadDao.update(getUploadId(), vo);
}
public void updateDatabase(Status state, String uploadUrl,String uploadErrorString) {
resultObj.setResultString(uploadErrorString);
resultObj.setState(state.toString());
asyncMgr.updateAsyncJobAttachment(asyncJobId, type.toString(), 1L);
asyncMgr.updateAsyncJobStatus(asyncJobId, AsyncJobResult.STATUS_IN_PROGRESS, resultObj);
UploadVO vo = uploadDao.createForUpdate();
vo.setUploadState(state);
vo.setLastUpdated(new Date());
@ -377,23 +387,23 @@ public class UploadListener implements Listener {
vo.setJobId(null);
vo.setUploadPercent(0);
vo.setErrorString(uploadErrorString);
uploadDao.update(getUploadId(), vo);
}
private Long getUploadId() {
return uploadId;
}
public synchronized void updateDatabase(UploadAnswer answer) {
public synchronized void updateDatabase(UploadAnswer answer) {
if(answer.getErrorString().startsWith("553")){
answer.setErrorString(answer.getErrorString().concat("Please check if the file name already exists."));
}
resultObj.setResultString(answer.getErrorString());
resultObj.setState(answer.getUploadStatus().toString());
resultObj.setUploadPercent(answer.getUploadPct());
if (answer.getUploadStatus() == Status.UPLOAD_IN_PROGRESS){
asyncMgr.updateAsyncJobAttachment(asyncJobId, type.toString(), 1L);
asyncMgr.updateAsyncJobStatus(asyncJobId, AsyncJobResult.STATUS_IN_PROGRESS, resultObj);
@ -409,7 +419,7 @@ public class UploadListener implements Listener {
updateBuilder.setLastUpdated(new Date());
updateBuilder.setErrorString(answer.getErrorString());
updateBuilder.setJobId(answer.getJobId());
uploadDao.update(getUploadId(), updateBuilder);
}
@ -425,9 +435,9 @@ public class UploadListener implements Listener {
setDisconnected();
}
}
}
private UploadCommand getCommand() {
return cmd;
}
@ -435,7 +445,7 @@ public class UploadListener implements Listener {
public void logDisconnect() {
s_logger.warn("Unable to monitor upload progress of " + typeName + " at host " + sserver.getName());
}
public void scheduleImmediateStatusCheck(RequestType request) {
if (statusTask != null) statusTask.cancel();
statusTask = new StatusTask(this, request);
@ -443,6 +453,6 @@ public class UploadListener implements Listener {
}
public void setCurrState(Status uploadState) {
this.currState = getState(currState.toString());
this.currState = getState(currState.toString());
}
}

View File

@ -2511,6 +2511,7 @@ INSERT INTO `cloud`.`counter` (id, source, name, value,created) VALUES (100,'net
SET foreign_key_checks = 1;
ALTER TABLE upload ADD uuid VARCHAR(40);
--- DB views for list api ---
DROP VIEW IF EXISTS `cloud`.`user_vm_view`;