diff --git a/api/src/com/cloud/api/commands/AttachVolumeCmd.java b/api/src/com/cloud/api/commands/AttachVolumeCmd.java index 51507aad251..3639e33cdad 100755 --- a/api/src/com/cloud/api/commands/AttachVolumeCmd.java +++ b/api/src/com/cloud/api/commands/AttachVolumeCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.VolumeResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.storage.Volume; import com.cloud.user.Account; @@ -85,6 +86,14 @@ public class AttachVolumeCmd extends BaseAsyncCmd { public String getName() { return s_name; } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Volume; + } + + public Long getInstanceId() { + return getId(); + } @Override public long getAccountId() { @@ -107,6 +116,11 @@ public class AttachVolumeCmd extends BaseAsyncCmd { @Override public void execute(){ + try { + Thread.sleep(2000); + } catch (Exception e) { + + } Volume result = _userVmService.attachVolumeToVM(this); if (result != null) { VolumeResponse response = _responseGenerator.createVolumeResponse(result); diff --git a/api/src/com/cloud/api/commands/CopyIsoCmd.java b/api/src/com/cloud/api/commands/CopyIsoCmd.java index 712a7a65083..3b5f3b747e7 100644 --- a/api/src/com/cloud/api/commands/CopyIsoCmd.java +++ b/api/src/com/cloud/api/commands/CopyIsoCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.TemplateResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.exception.StorageUnavailableException; import com.cloud.template.VirtualMachineTemplate; @@ -99,6 +100,14 @@ public class CopyIsoCmd extends BaseAsyncCmd { public String getEventDescription() { return "copying ISO: " + getId() + " from zone: " + getSourceZoneId() + " to zone: " + getDestinationZoneId(); } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Iso; + } + + public Long getInstanceId() { + return getId(); + } @Override public void execute(){ diff --git a/api/src/com/cloud/api/commands/CopyTemplateCmd.java b/api/src/com/cloud/api/commands/CopyTemplateCmd.java index d66fafb2b3c..451a2e0a9c2 100644 --- a/api/src/com/cloud/api/commands/CopyTemplateCmd.java +++ b/api/src/com/cloud/api/commands/CopyTemplateCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.TemplateResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.exception.StorageUnavailableException; import com.cloud.template.VirtualMachineTemplate; @@ -100,6 +101,14 @@ public class CopyTemplateCmd extends BaseAsyncCmd { public String getEventDescription() { return "copying template: " + getId() + " from zone: " + getSourceZoneId() + " to zone: " + getDestinationZoneId(); } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Template; + } + + public Long getInstanceId() { + return getId(); + } @Override public void execute(){ diff --git a/api/src/com/cloud/api/commands/CreateSnapshotCmd.java b/api/src/com/cloud/api/commands/CreateSnapshotCmd.java index 53cc4ac549e..94fddf93d17 100644 --- a/api/src/com/cloud/api/commands/CreateSnapshotCmd.java +++ b/api/src/com/cloud/api/commands/CreateSnapshotCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SnapshotResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; import com.cloud.storage.Snapshot; @@ -100,7 +101,11 @@ public class CreateSnapshotCmd extends BaseAsyncCmd { public String getEventDescription() { return "creating snapshot for volume: " + getVolumeId(); } - + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Snapshot; + } + @Override public void execute(){ try { diff --git a/api/src/com/cloud/api/commands/CreateTemplateCmd.java b/api/src/com/cloud/api/commands/CreateTemplateCmd.java index 79e37d92b9f..f4d5ad76448 100644 --- a/api/src/com/cloud/api/commands/CreateTemplateCmd.java +++ b/api/src/com/cloud/api/commands/CreateTemplateCmd.java @@ -28,6 +28,7 @@ import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.StoragePoolResponse; import com.cloud.api.response.TemplateResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.storage.Snapshot; import com.cloud.storage.Volume; @@ -161,6 +162,10 @@ public class CreateTemplateCmd extends BaseAsyncCreateCmd { public String getEventDescription() { return "creating template: " + getTemplateName(); } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Template; + } @Override public void callCreate(){ diff --git a/api/src/com/cloud/api/commands/CreateVolumeCmd.java b/api/src/com/cloud/api/commands/CreateVolumeCmd.java index 4c72088f734..fd921467060 100644 --- a/api/src/com/cloud/api/commands/CreateVolumeCmd.java +++ b/api/src/com/cloud/api/commands/CreateVolumeCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.VolumeResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; import com.cloud.storage.Volume; @@ -108,7 +109,11 @@ public class CreateVolumeCmd extends BaseAsyncCreateCmd { public static String getResultObjectName() { return "volume"; } - + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Volume; + } + @Override public long getAccountId() { Account account = UserContext.current().getAccount(); diff --git a/api/src/com/cloud/api/commands/DeleteIsoCmd.java b/api/src/com/cloud/api/commands/DeleteIsoCmd.java index c90bd942ae5..d73c1c0aa8d 100644 --- a/api/src/com/cloud/api/commands/DeleteIsoCmd.java +++ b/api/src/com/cloud/api/commands/DeleteIsoCmd.java @@ -26,6 +26,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SuccessResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; @@ -91,6 +92,14 @@ public class DeleteIsoCmd extends BaseAsyncCmd { return "Deleting iso " + getId(); } + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Iso; + } + + public Long getInstanceId() { + return getId(); + } + @Override public void execute(){ boolean result = _templateService.deleteIso(this); diff --git a/api/src/com/cloud/api/commands/DeleteSnapshotCmd.java b/api/src/com/cloud/api/commands/DeleteSnapshotCmd.java index bdec3f6e881..ad1b9d0f7aa 100644 --- a/api/src/com/cloud/api/commands/DeleteSnapshotCmd.java +++ b/api/src/com/cloud/api/commands/DeleteSnapshotCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SuccessResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.storage.Snapshot; import com.cloud.user.Account; @@ -80,6 +81,14 @@ public class DeleteSnapshotCmd extends BaseAsyncCmd { public String getEventDescription() { return "deleting snapshot: " + getId(); } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Snapshot; + } + + public Long getInstanceId() { + return getId(); + } @Override public void execute(){ diff --git a/api/src/com/cloud/api/commands/DeleteTemplateCmd.java b/api/src/com/cloud/api/commands/DeleteTemplateCmd.java index ff90c4633c8..7b9c25e565c 100644 --- a/api/src/com/cloud/api/commands/DeleteTemplateCmd.java +++ b/api/src/com/cloud/api/commands/DeleteTemplateCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SuccessResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.template.VirtualMachineTemplate; import com.cloud.user.Account; @@ -93,6 +94,14 @@ public class DeleteTemplateCmd extends BaseAsyncCmd { return "Deleting template " + getId(); } + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Template; + } + + public Long getInstanceId() { + return getId(); + } + @Override public void execute(){ boolean result = _templateService.deleteTemplate(this); diff --git a/api/src/com/cloud/api/commands/DetachVolumeCmd.java b/api/src/com/cloud/api/commands/DetachVolumeCmd.java index 66ebd6988cb..2509bc5ad27 100755 --- a/api/src/com/cloud/api/commands/DetachVolumeCmd.java +++ b/api/src/com/cloud/api/commands/DetachVolumeCmd.java @@ -26,6 +26,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.VolumeResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.storage.Volume; import com.cloud.user.Account; @@ -77,6 +78,14 @@ public class DetachVolumeCmd extends BaseAsyncCmd { public static String getResultObjectName() { return "volume"; } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Volume; + } + + public Long getInstanceId() { + return getId(); + } @Override public long getAccountId() { diff --git a/api/src/com/cloud/api/commands/ExtractIsoCmd.java b/api/src/com/cloud/api/commands/ExtractIsoCmd.java index aaafd7d3ac7..7e335357002 100755 --- a/api/src/com/cloud/api/commands/ExtractIsoCmd.java +++ b/api/src/com/cloud/api/commands/ExtractIsoCmd.java @@ -26,6 +26,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.ExtractResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.exception.InternalErrorException; import com.cloud.template.VirtualMachineTemplate; @@ -106,6 +107,14 @@ public class ExtractIsoCmd extends BaseAsyncCmd { return s_name; } + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Iso; + } + + public Long getInstanceId() { + return getId(); + } + @Override public void execute(){ try { diff --git a/api/src/com/cloud/api/commands/ExtractTemplateCmd.java b/api/src/com/cloud/api/commands/ExtractTemplateCmd.java index e103b81c4cc..0c3f14ae143 100755 --- a/api/src/com/cloud/api/commands/ExtractTemplateCmd.java +++ b/api/src/com/cloud/api/commands/ExtractTemplateCmd.java @@ -26,6 +26,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.ExtractResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.exception.InternalErrorException; import com.cloud.template.VirtualMachineTemplate; @@ -106,6 +107,14 @@ public class ExtractTemplateCmd extends BaseAsyncCmd { public String getEventDescription() { return "Extraction job"; } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Template; + } + + public Long getInstanceId() { + return getId(); + } @Override public void execute(){ diff --git a/api/src/com/cloud/api/commands/ExtractVolumeCmd.java b/api/src/com/cloud/api/commands/ExtractVolumeCmd.java index 0e9386d27f7..7d116f6964a 100755 --- a/api/src/com/cloud/api/commands/ExtractVolumeCmd.java +++ b/api/src/com/cloud/api/commands/ExtractVolumeCmd.java @@ -28,6 +28,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.ExtractResponse; +import com.cloud.async.AsyncJob; import com.cloud.dc.DataCenter; import com.cloud.event.EventTypes; import com.cloud.storage.Upload; @@ -91,6 +92,14 @@ public class ExtractVolumeCmd extends BaseAsyncCmd { public static String getStaticName() { return s_name; } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Volume; + } + + public Long getInstanceId() { + return getId(); + } @Override public long getAccountId() { diff --git a/api/src/com/cloud/api/commands/ListIsosCmd.java b/api/src/com/cloud/api/commands/ListIsosCmd.java index 2e042cdc3fe..ae42cd95310 100755 --- a/api/src/com/cloud/api/commands/ListIsosCmd.java +++ b/api/src/com/cloud/api/commands/ListIsosCmd.java @@ -28,6 +28,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.response.ListResponse; import com.cloud.api.response.TemplateResponse; +import com.cloud.async.AsyncJob; import com.cloud.template.VirtualMachineTemplate; import com.cloud.template.VirtualMachineTemplate.TemplateFilter; import com.cloud.user.Account; @@ -130,6 +131,10 @@ public class ListIsosCmd extends BaseListCmd { return s_name; } + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Iso; + } + @Override public void execute(){ List isos = _mgr.listIsos(this); diff --git a/api/src/com/cloud/api/commands/ListRoutersCmd.java b/api/src/com/cloud/api/commands/ListRoutersCmd.java index 9da699faa8b..35e3550a5c5 100644 --- a/api/src/com/cloud/api/commands/ListRoutersCmd.java +++ b/api/src/com/cloud/api/commands/ListRoutersCmd.java @@ -29,6 +29,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.response.DomainRouterResponse; import com.cloud.api.response.ListResponse; +import com.cloud.async.AsyncJob; import com.cloud.network.router.VirtualRouter; @Implementation(description="List routers.", responseObject=DomainRouterResponse.class) @@ -102,6 +103,10 @@ public class ListRoutersCmd extends BaseListCmd { public String getName() { return s_name; } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.DomainRouter; + } @Override public void execute(){ diff --git a/api/src/com/cloud/api/commands/ListSnapshotsCmd.java b/api/src/com/cloud/api/commands/ListSnapshotsCmd.java index 79d1e0a9451..0469c706094 100644 --- a/api/src/com/cloud/api/commands/ListSnapshotsCmd.java +++ b/api/src/com/cloud/api/commands/ListSnapshotsCmd.java @@ -28,6 +28,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.response.ListResponse; import com.cloud.api.response.SnapshotResponse; +import com.cloud.async.AsyncJob; import com.cloud.storage.Snapshot; @Implementation(description="Lists all available snapshots for the account.", responseObject=SnapshotResponse.class) @@ -101,6 +102,10 @@ public class ListSnapshotsCmd extends BaseListCmd { public String getName() { return s_name; } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Snapshot; + } @Override public void execute(){ diff --git a/api/src/com/cloud/api/commands/ListSystemVMsCmd.java b/api/src/com/cloud/api/commands/ListSystemVMsCmd.java index 4c76c846881..d2f60282aa4 100644 --- a/api/src/com/cloud/api/commands/ListSystemVMsCmd.java +++ b/api/src/com/cloud/api/commands/ListSystemVMsCmd.java @@ -28,6 +28,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.response.ListResponse; import com.cloud.api.response.SystemVmResponse; +import com.cloud.async.AsyncJob; import com.cloud.vm.VirtualMachine; @Implementation(description="List system virtual machines.", responseObject=SystemVmResponse.class) @@ -102,6 +103,10 @@ public class ListSystemVMsCmd extends BaseListCmd { return s_name; } + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.SystemVm; + } + @Override public void execute(){ List systemVMs = _mgr.searchForSystemVm(this); diff --git a/api/src/com/cloud/api/commands/ListTemplatesCmd.java b/api/src/com/cloud/api/commands/ListTemplatesCmd.java index dd0d314d65a..b9776370728 100644 --- a/api/src/com/cloud/api/commands/ListTemplatesCmd.java +++ b/api/src/com/cloud/api/commands/ListTemplatesCmd.java @@ -29,6 +29,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.response.ListResponse; import com.cloud.api.response.TemplateResponse; +import com.cloud.async.AsyncJob; import com.cloud.storage.Storage; import com.cloud.template.VirtualMachineTemplate; import com.cloud.template.VirtualMachineTemplate.TemplateFilter; @@ -111,6 +112,10 @@ public class ListTemplatesCmd extends BaseListCmd { return s_name; } + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Template; + } + @Override public void execute(){ List templates = _mgr.listTemplates(this); diff --git a/api/src/com/cloud/api/commands/ListVolumesCmd.java b/api/src/com/cloud/api/commands/ListVolumesCmd.java index 43d9f4c7871..1f30ddbd9d1 100755 --- a/api/src/com/cloud/api/commands/ListVolumesCmd.java +++ b/api/src/com/cloud/api/commands/ListVolumesCmd.java @@ -28,6 +28,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.response.ListResponse; import com.cloud.api.response.VolumeResponse; +import com.cloud.async.AsyncJob; import com.cloud.storage.Volume; @Implementation(description="Lists all volumes.", responseObject=VolumeResponse.class) @@ -116,6 +117,10 @@ public class ListVolumesCmd extends BaseListCmd { return s_name; } + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Volume; + } + @Override public void execute(){ List volumes = _mgr.searchForVolumes(this); diff --git a/api/src/com/cloud/api/commands/RebootRouterCmd.java b/api/src/com/cloud/api/commands/RebootRouterCmd.java index 76a75b942ad..ba74ae086a7 100644 --- a/api/src/com/cloud/api/commands/RebootRouterCmd.java +++ b/api/src/com/cloud/api/commands/RebootRouterCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.DomainRouterResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.network.router.VirtualRouter; import com.cloud.user.Account; @@ -79,6 +80,14 @@ public class RebootRouterCmd extends BaseAsyncCmd { public String getEventDescription() { return "rebooting router: " + getId(); } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.DomainRouter; + } + + public Long getInstanceId() { + return getId(); + } @Override diff --git a/api/src/com/cloud/api/commands/RebootSystemVmCmd.java b/api/src/com/cloud/api/commands/RebootSystemVmCmd.java index f3c6656f94e..815fdd024bf 100644 --- a/api/src/com/cloud/api/commands/RebootSystemVmCmd.java +++ b/api/src/com/cloud/api/commands/RebootSystemVmCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SystemVmResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.user.Account; import com.cloud.user.UserContext; @@ -82,6 +83,14 @@ public class RebootSystemVmCmd extends BaseAsyncCmd { return "rebooting system vm: " + getId(); } + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.SystemVm; + } + + public Long getInstanceId() { + return getId(); + } + @Override public void execute(){ VirtualMachine result = _mgr.rebootSystemVM(this); diff --git a/api/src/com/cloud/api/commands/RegisterTemplateCmd.java b/api/src/com/cloud/api/commands/RegisterTemplateCmd.java index 4a7075e3073..f8e528513f2 100755 --- a/api/src/com/cloud/api/commands/RegisterTemplateCmd.java +++ b/api/src/com/cloud/api/commands/RegisterTemplateCmd.java @@ -28,6 +28,7 @@ import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.ListResponse; import com.cloud.api.response.TemplateResponse; +import com.cloud.async.AsyncJob; import com.cloud.exception.ResourceAllocationException; import com.cloud.template.VirtualMachineTemplate; @@ -158,6 +159,10 @@ public class RegisterTemplateCmd extends BaseCmd { public String getName() { return s_name; } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.Template; + } @Override public void execute(){ diff --git a/api/src/com/cloud/api/commands/StartRouterCmd.java b/api/src/com/cloud/api/commands/StartRouterCmd.java index db2b83c3a87..e30d6d16a2a 100644 --- a/api/src/com/cloud/api/commands/StartRouterCmd.java +++ b/api/src/com/cloud/api/commands/StartRouterCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.DomainRouterResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; @@ -89,6 +90,14 @@ public class StartRouterCmd extends BaseAsyncCmd { public String getEventDescription() { return "starting router: " + getId(); } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.DomainRouter; + } + + public Long getInstanceId() { + return getId(); + } @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException{ diff --git a/api/src/com/cloud/api/commands/StartSystemVMCmd.java b/api/src/com/cloud/api/commands/StartSystemVMCmd.java index 3250935bb86..11b5fb5f8f7 100644 --- a/api/src/com/cloud/api/commands/StartSystemVMCmd.java +++ b/api/src/com/cloud/api/commands/StartSystemVMCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SystemVmResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.user.Account; import com.cloud.user.UserContext; @@ -85,6 +86,14 @@ public class StartSystemVMCmd extends BaseAsyncCmd { public String getEventDescription() { return "starting system vm: " + getId(); } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.SystemVm; + } + + public Long getInstanceId() { + return getId(); + } @Override public void execute(){ diff --git a/api/src/com/cloud/api/commands/StopRouterCmd.java b/api/src/com/cloud/api/commands/StopRouterCmd.java index 3d60300afd7..cba1afa0166 100644 --- a/api/src/com/cloud/api/commands/StopRouterCmd.java +++ b/api/src/com/cloud/api/commands/StopRouterCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.DomainRouterResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ResourceUnavailableException; @@ -83,6 +84,14 @@ public class StopRouterCmd extends BaseAsyncCmd { public String getEventDescription() { return "stopping router: " + getId(); } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.DomainRouter; + } + + public Long getInstanceId() { + return getId(); + } @Override public void execute() throws ConcurrentOperationException, ResourceUnavailableException{ diff --git a/api/src/com/cloud/api/commands/StopSystemVmCmd.java b/api/src/com/cloud/api/commands/StopSystemVmCmd.java index 7b3bdb7ad67..d7544a9e847 100644 --- a/api/src/com/cloud/api/commands/StopSystemVmCmd.java +++ b/api/src/com/cloud/api/commands/StopSystemVmCmd.java @@ -27,6 +27,7 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.SystemVmResponse; +import com.cloud.async.AsyncJob; import com.cloud.event.EventTypes; import com.cloud.user.Account; import com.cloud.user.UserContext; @@ -81,6 +82,14 @@ public class StopSystemVmCmd extends BaseAsyncCmd { public String getEventDescription() { return "stopping system vm: " + getId(); } + + public AsyncJob.Type getInstanceType() { + return AsyncJob.Type.SystemVm; + } + + public Long getInstanceId() { + return getId(); + } @Override public void execute(){ diff --git a/api/src/com/cloud/api/response/DomainRouterResponse.java b/api/src/com/cloud/api/response/DomainRouterResponse.java index 6ef83fe6af6..54af0bed0ea 100644 --- a/api/src/com/cloud/api/response/DomainRouterResponse.java +++ b/api/src/com/cloud/api/response/DomainRouterResponse.java @@ -102,6 +102,10 @@ public class DomainRouterResponse extends BaseResponse { @SerializedName(ApiConstants.DOMAIN) @Param(description="the domain associated with the router") private String domainName; + + public Long getObjectId() { + return getId(); + } public Long getId() { return id; diff --git a/api/src/com/cloud/api/response/SnapshotResponse.java b/api/src/com/cloud/api/response/SnapshotResponse.java index db8e733e3c1..6e993c43523 100644 --- a/api/src/com/cloud/api/response/SnapshotResponse.java +++ b/api/src/com/cloud/api/response/SnapshotResponse.java @@ -61,6 +61,10 @@ public class SnapshotResponse extends BaseResponse { @SerializedName("intervaltype") @Param(description="valid types are hourly, daily, weekly, monthy, template, and none.") private String intervalType; + + public Long getObjectId() { + return getId(); + } public Long getId() { return id; diff --git a/api/src/com/cloud/api/response/SystemVmResponse.java b/api/src/com/cloud/api/response/SystemVmResponse.java index bc5e0020fb1..a24fd0b5bab 100644 --- a/api/src/com/cloud/api/response/SystemVmResponse.java +++ b/api/src/com/cloud/api/response/SystemVmResponse.java @@ -94,6 +94,10 @@ public class SystemVmResponse extends BaseResponse { @SerializedName("activeviewersessions") @Param(description="the number of active console sessions for the console proxy system vm") private Integer activeViewerSessions; + + public Long getObjectId() { + return getId(); + } public Long getId() { return id; diff --git a/api/src/com/cloud/api/response/TemplateResponse.java b/api/src/com/cloud/api/response/TemplateResponse.java index d66756eefc1..45d7bd307fc 100755 --- a/api/src/com/cloud/api/response/TemplateResponse.java +++ b/api/src/com/cloud/api/response/TemplateResponse.java @@ -107,6 +107,10 @@ public class TemplateResponse extends BaseResponse { @SerializedName("isextractable") @Param(description="true if the template is extractable, false otherwise") private Boolean extractable; + public Long getObjectId() { + return getId(); + } + public Long getZoneId() { return zoneId; } diff --git a/api/src/com/cloud/api/response/VolumeResponse.java b/api/src/com/cloud/api/response/VolumeResponse.java index c7338eea2c7..481b0a640f3 100644 --- a/api/src/com/cloud/api/response/VolumeResponse.java +++ b/api/src/com/cloud/api/response/VolumeResponse.java @@ -119,6 +119,10 @@ public class VolumeResponse extends BaseResponse { @SerializedName("serviceofferingdisplaytext") @Param(description="the display text of the service offering for root disk") private String serviceOfferingDisplayText; + + public Long getObjectId() { + return getId(); + } public Boolean getDestroyed() { return destroyed; diff --git a/api/src/com/cloud/async/AsyncJob.java b/api/src/com/cloud/async/AsyncJob.java index d9eca636556..f0ddb995736 100644 --- a/api/src/com/cloud/async/AsyncJob.java +++ b/api/src/com/cloud/async/AsyncJob.java @@ -23,10 +23,13 @@ public interface AsyncJob { public enum Type { None, VirtualMachine, - Router, + DomainRouter, Volume, ConsoleProxy, - Snapshot + Snapshot, + Template, + Iso, + SystemVm } Long getId(); diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 0da6ee2fe4a..edeb70b087d 100644 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -389,11 +389,6 @@ public class ApiResponseHelper implements ResponseGenerator { snapshotResponse.setCreated(snapshot.getCreated()); snapshotResponse.setName(snapshot.getName()); snapshotResponse.setIntervalType(ApiDBUtils.getSnapshotIntervalTypes(snapshot.getId())); - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("snapshot", snapshot.getId()); - if (asyncJob != null) { - snapshotResponse.setJobId(asyncJob.getId()); - snapshotResponse.setJobStatus(asyncJob.getStatus()); - } snapshotResponse.setObjectName("snapshot"); return snapshotResponse; } @@ -433,12 +428,6 @@ public class ApiResponseHelper implements ResponseGenerator { } userVmResponse.setId(userVm.getId()); - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("vm_instance", userVm.getId()); - if (asyncJob != null) { - userVmResponse.setJobId(asyncJob.getId()); - userVmResponse.setJobStatus(asyncJob.getStatus()); - } - userVmResponse.setName(userVm.getHostName()); userVmResponse.setCreated(userVm.getCreated()); userVmResponse.setIpAddress(userVm.getPrivateIpAddress()); @@ -564,12 +553,6 @@ public class ApiResponseHelper implements ResponseGenerator { // the moment } - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob(instanceType, vm.getId()); - if (asyncJob != null) { - vmResponse.setJobId(asyncJob.getId()); - vmResponse.setJobStatus(asyncJob.getStatus()); - } - vmResponse.setZoneId(vm.getDataCenterId()); vmResponse.setZoneName(ApiDBUtils.findZoneById(vm.getDataCenterId()).getName()); vmResponse.setDns1(vm.getDns1()); @@ -888,12 +871,6 @@ public class ApiResponseHelper implements ResponseGenerator { VolumeResponse volResponse = new VolumeResponse(); volResponse.setId(volume.getId()); - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("volume", volume.getId()); - if (asyncJob != null) { - volResponse.setJobId(asyncJob.getId()); - volResponse.setJobStatus(asyncJob.getStatus()); - } - if (volume.getName() != null) { volResponse.setName(volume.getName()); } else { @@ -1125,12 +1102,6 @@ public class ApiResponseHelper implements ResponseGenerator { } userVmResponse.setId(userVm.getId()); - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("vm_instance", userVm.getId()); - if (asyncJob != null) { - userVmResponse.setJobId(asyncJob.getId()); - userVmResponse.setJobStatus(asyncJob.getStatus()); - } - userVmResponse.setName(userVm.getHostName()); userVmResponse.setCreated(userVm.getCreated()); @@ -1338,12 +1309,6 @@ public class ApiResponseHelper implements ResponseGenerator { // the moment } - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob(instanceType, vm.getId()); - if (asyncJob != null) { - vmResponse.setJobId(asyncJob.getId()); - vmResponse.setJobStatus(asyncJob.getStatus()); - } - // for console proxies, add the active sessions if (systemVM instanceof ConsoleProxyVO) { ConsoleProxyVO proxy = (ConsoleProxyVO) systemVM; @@ -1541,12 +1506,6 @@ public class ApiResponseHelper implements ResponseGenerator { templateResponse.setSize(templateSize); } - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("vm_template", template.getId()); - if (asyncJob != null) { - templateResponse.setJobId(asyncJob.getId()); - templateResponse.setJobStatus(asyncJob.getStatus()); - } - templateResponse.setObjectName("template"); responses.add(templateResponse); } @@ -2083,12 +2042,6 @@ public class ApiResponseHelper implements ResponseGenerator { isoResponse.setSize(isoSize); } - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("vm_template", iso.getId()); - if(asyncJob != null) { - isoResponse.setJobId(asyncJob.getId()); - isoResponse.setJobStatus(asyncJob.getStatus()); - } - isoResponse.setObjectName("iso"); isoResponses.add(isoResponse); } diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java index dba8252ea3b..4a307839a64 100755 --- a/server/src/com/cloud/api/ApiServer.java +++ b/server/src/com/cloud/api/ApiServer.java @@ -380,9 +380,6 @@ public class ApiServer implements HttpRequestHandler { } BaseAsyncCmd asyncCmd = (BaseAsyncCmd)cmdObj; - if (objectId != null) { - objectId = asyncCmd.getInstanceId(); - } if (userId != null) { params.put("ctxUserId", userId.toString()); @@ -400,7 +397,7 @@ public class ApiServer implements HttpRequestHandler { } AsyncJobVO job = new AsyncJobVO(); - job.setInstanceId(asyncCmd.getInstanceId()); + job.setInstanceId((objectId == null) ? asyncCmd.getInstanceId() : objectId); job.setInstanceType(asyncCmd.getInstanceType()); job.setUserId(userId); if (account != null) { @@ -439,7 +436,7 @@ 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 n squared + // 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. for (AsyncJob job : jobs) { if (job.getInstanceId() == null) continue;