diff --git a/api/src/com/cloud/storage/VolumeApiService.java b/api/src/com/cloud/storage/VolumeApiService.java index 310f69ebd41..3560db64ae8 100644 --- a/api/src/com/cloud/storage/VolumeApiService.java +++ b/api/src/com/cloud/storage/VolumeApiService.java @@ -94,4 +94,6 @@ public interface VolumeApiService { * */ String extractVolume(ExtractVolumeCmd cmd); + + boolean isDisplayResourceEnabled(Long id); } diff --git a/api/src/com/cloud/vm/UserVmService.java b/api/src/com/cloud/vm/UserVmService.java index 51a8fdfbe38..af4e1d3699e 100755 --- a/api/src/com/cloud/vm/UserVmService.java +++ b/api/src/com/cloud/vm/UserVmService.java @@ -469,4 +469,10 @@ public interface UserVmService { */ String getVmUserData(long vmId); + /** + * determin whether the uservm should be visible to the end user + * @return value of the display flag + */ + public boolean isDisplayResourceEnabled(Long vmId); + } diff --git a/api/src/org/apache/cloudstack/api/BaseAsyncVMCmd.java b/api/src/org/apache/cloudstack/api/BaseAsyncVMCmd.java new file mode 100644 index 00000000000..abfc9530274 --- /dev/null +++ b/api/src/org/apache/cloudstack/api/BaseAsyncVMCmd.java @@ -0,0 +1,30 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +package org.apache.cloudstack.api; + +/** + * A generic class for implementing methods common to all async vm commands + */ +public abstract class BaseAsyncVMCmd extends BaseAsyncCmd { + + @Override + public boolean isDisplayResourceEnabled(){ + return _userVmService.isDisplayResourceEnabled(getId()); + } + + public abstract Long getId(); +} diff --git a/api/src/org/apache/cloudstack/api/BaseAsyncVolumeCmd.java b/api/src/org/apache/cloudstack/api/BaseAsyncVolumeCmd.java new file mode 100644 index 00000000000..1782e4a1348 --- /dev/null +++ b/api/src/org/apache/cloudstack/api/BaseAsyncVolumeCmd.java @@ -0,0 +1,30 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +package org.apache.cloudstack.api; + +/** + * A generic class for implementing methods common to all async volume commands + */ +public abstract class BaseAsyncVolumeCmd extends BaseAsyncCmd { + + @Override + public boolean isDisplayResourceEnabled(){ + return _volumeService.isDisplayResourceEnabled(getId()); + } + + public abstract Long getId(); +} diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java index c6f4e1967d8..1cc83809535 100755 --- a/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java @@ -389,6 +389,16 @@ public class DeployVMCmd extends BaseAsyncCreateCustomIdCmd { return accountId; } + @Override + public boolean isDisplayResourceEnabled(){ + Boolean display = getDisplayVm(); + if(display == null){ + return true; + } else { + return display; + } + } + @Override public String getEventType() { return EventTypes.EVENT_VM_CREATE; diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/DestroyVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/DestroyVMCmd.java index 9bfd611d187..e9a5213fd76 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/DestroyVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/DestroyVMCmd.java @@ -18,13 +18,13 @@ package org.apache.cloudstack.api.command.user.vm; import java.util.List; +import org.apache.cloudstack.api.BaseAsyncVMCmd; import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; @@ -41,7 +41,7 @@ import com.cloud.uservm.UserVm; responseObject = UserVmResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = true) -public class DestroyVMCmd extends BaseAsyncCmd { +public class DestroyVMCmd extends BaseAsyncVMCmd { public static final Logger s_logger = Logger.getLogger(DestroyVMCmd.class.getName()); private static final String s_name = "destroyvirtualmachineresponse"; diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/RebootVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/RebootVMCmd.java index c54d62f95fb..c547d621d25 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/RebootVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/RebootVMCmd.java @@ -16,13 +16,13 @@ // under the License. package org.apache.cloudstack.api.command.user.vm; +import org.apache.cloudstack.api.BaseAsyncVMCmd; import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; @@ -36,7 +36,7 @@ import com.cloud.uservm.UserVm; @APICommand(name = "rebootVirtualMachine", description = "Reboots a virtual machine.", responseObject = UserVmResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = true) -public class RebootVMCmd extends BaseAsyncCmd { +public class RebootVMCmd extends BaseAsyncVMCmd { public static final Logger s_logger = Logger.getLogger(RebootVMCmd.class.getName()); private static final String s_name = "rebootvirtualmachineresponse"; diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMPasswordCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMPasswordCmd.java index e8d5f730771..461ce7f361d 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMPasswordCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMPasswordCmd.java @@ -16,13 +16,13 @@ // under the License. package org.apache.cloudstack.api.command.user.vm; +import org.apache.cloudstack.api.BaseAsyncVMCmd; import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; @@ -37,7 +37,7 @@ import com.cloud.uservm.UserVm; @APICommand(name = "resetPasswordForVirtualMachine", responseObject = UserVmResponse.class, description = "Resets the password for virtual machine. " + "The virtual machine must be in a \"Stopped\" state and the template must already " + "support this feature for this command to take effect. [async]", requestHasSensitiveInfo = false, responseHasSensitiveInfo = true) -public class ResetVMPasswordCmd extends BaseAsyncCmd { +public class ResetVMPasswordCmd extends BaseAsyncVMCmd { public static final Logger s_logger = Logger.getLogger(ResetVMPasswordCmd.class.getName()); private static final String s_name = "resetpasswordforvirtualmachineresponse"; diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMSSHKeyCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMSSHKeyCmd.java index 318d3c870cc..b7ab357787c 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMSSHKeyCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/ResetVMSSHKeyCmd.java @@ -17,13 +17,13 @@ package org.apache.cloudstack.api.command.user.vm; +import org.apache.cloudstack.api.BaseAsyncVMCmd; import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DomainResponse; @@ -40,7 +40,7 @@ import com.cloud.uservm.UserVm; @APICommand(name = "resetSSHKeyForVirtualMachine", responseObject = UserVmResponse.class, description = "Resets the SSH Key for virtual machine. " + "The virtual machine must be in a \"Stopped\" state. [async]", requestHasSensitiveInfo = false, responseHasSensitiveInfo = true) -public class ResetVMSSHKeyCmd extends BaseAsyncCmd { +public class ResetVMSSHKeyCmd extends BaseAsyncVMCmd { public static final Logger s_logger = Logger.getLogger(ResetVMSSHKeyCmd.class.getName()); diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/RestoreVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/RestoreVMCmd.java index 7c3568070f3..81c40ec2394 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/RestoreVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/RestoreVMCmd.java @@ -16,12 +16,12 @@ // under the License. package org.apache.cloudstack.api.command.user.vm; +import org.apache.cloudstack.api.BaseAsyncVMCmd; import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.TemplateResponse; @@ -42,7 +42,7 @@ import com.cloud.uservm.UserVm; since = "3.0.0", requestHasSensitiveInfo = false, responseHasSensitiveInfo = true) -public class RestoreVMCmd extends BaseAsyncCmd { +public class RestoreVMCmd extends BaseAsyncVMCmd { public static final Logger s_logger = Logger.getLogger(RestoreVMCmd.class); private static final String s_name = "restorevmresponse"; @@ -101,4 +101,10 @@ public class RestoreVMCmd extends BaseAsyncCmd { public Long getTemplateId() { return templateId; } + + // TODO - Remove vmid param and make it "id" in 5.0 so that we dont have two getters + @Override + public Long getId() { + return getVmId(); + } } diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/ScaleVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/ScaleVMCmd.java index fe752cbd7fc..07672c0d4b1 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/ScaleVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/ScaleVMCmd.java @@ -26,7 +26,7 @@ import org.apache.cloudstack.api.ACL; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; +import org.apache.cloudstack.api.BaseAsyncVMCmd; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; @@ -45,7 +45,7 @@ import com.cloud.uservm.UserVm; @APICommand(name = "scaleVirtualMachine", description = "Scales the virtual machine to a new service offering.", responseObject = SuccessResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) -public class ScaleVMCmd extends BaseAsyncCmd { +public class ScaleVMCmd extends BaseAsyncVMCmd { public static final Logger s_logger = Logger.getLogger(ScaleVMCmd.class.getName()); private static final String s_name = "scalevirtualmachineresponse"; diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/StartVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/StartVMCmd.java index a59dc6e9fbf..553b753ba27 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/StartVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/StartVMCmd.java @@ -16,13 +16,13 @@ // under the License. package org.apache.cloudstack.api.command.user.vm; +import org.apache.cloudstack.api.BaseAsyncVMCmd; import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.HostResponse; @@ -42,7 +42,7 @@ import com.cloud.utils.exception.ExecutionException; @APICommand(name = "startVirtualMachine", responseObject = UserVmResponse.class, description = "Starts a virtual machine.", requestHasSensitiveInfo = false, responseHasSensitiveInfo = true) -public class StartVMCmd extends BaseAsyncCmd { +public class StartVMCmd extends BaseAsyncVMCmd { public static final Logger s_logger = Logger.getLogger(StartVMCmd.class.getName()); private static final String s_name = "startvirtualmachineresponse"; diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/StopVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/StopVMCmd.java index b5473575fdf..e9fa97b0cff 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/StopVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/StopVMCmd.java @@ -16,6 +16,7 @@ // under the License. package org.apache.cloudstack.api.command.user.vm; +import org.apache.cloudstack.api.BaseAsyncVMCmd; import org.apache.log4j.Logger; import org.apache.cloudstack.api.ACL; @@ -23,7 +24,6 @@ import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; @@ -36,7 +36,7 @@ import com.cloud.uservm.UserVm; @APICommand(name = "stopVirtualMachine", responseObject = UserVmResponse.class, description = "Stops a virtual machine.", requestHasSensitiveInfo = false, responseHasSensitiveInfo = true) -public class StopVMCmd extends BaseAsyncCmd { +public class StopVMCmd extends BaseAsyncVMCmd { public static final Logger s_logger = Logger.getLogger(StopVMCmd.class.getName()); private static final String s_name = "stopvirtualmachineresponse"; diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/UpgradeVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/UpgradeVMCmd.java index 46cce80f978..9fa89d05f49 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/UpgradeVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/UpgradeVMCmd.java @@ -108,6 +108,11 @@ public class UpgradeVMCmd extends BaseCmd { return Account.ACCOUNT_ID_SYSTEM; // no account info given, parent this command to SYSTEM so ERROR events are tracked } + @Override + public boolean isDisplayResourceEnabled(){ + return _userVmService.isDisplayResourceEnabled(getId()); + } + @Override public void execute() throws ResourceAllocationException { CallContext.current().setEventDetails("Vm Id: " + getId()); diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/AttachVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/AttachVolumeCmd.java index 78e1a694004..7939edf42ac 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/AttachVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/AttachVolumeCmd.java @@ -16,13 +16,13 @@ // under the License. package org.apache.cloudstack.api.command.user.volume; +import org.apache.cloudstack.api.BaseAsyncVolumeCmd; import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; @@ -35,7 +35,7 @@ import com.cloud.user.Account; @APICommand(name = "attachVolume", description = "Attaches a disk volume to a virtual machine.", responseObject = VolumeResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) -public class AttachVolumeCmd extends BaseAsyncCmd { +public class AttachVolumeCmd extends BaseAsyncVolumeCmd { public static final Logger s_logger = Logger.getLogger(AttachVolumeCmd.class.getName()); private static final String s_name = "attachvolumeresponse"; @@ -107,15 +107,6 @@ public class AttachVolumeCmd extends BaseAsyncCmd { return EventTypes.EVENT_VOLUME_ATTACH; } - @Override - public boolean isDisplayResourceEnabled(){ - Volume volume = _responseGenerator.findVolumeById(getId()); - if (volume == null) { - return true; // bad id given, parent this command to true so ERROR events are tracked - } - return volume.isDisplayVolume(); - } - @Override public String getEventDescription() { return "attaching volume: " + getId() + " to vm: " + getVirtualMachineId(); diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/CreateVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/CreateVolumeCmd.java index 555711b7f6e..80b49fd1470 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/CreateVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/CreateVolumeCmd.java @@ -152,10 +152,6 @@ public class CreateVolumeCmd extends BaseAsyncCreateCustomIdCmd { } public Boolean getDisplayVolume() { - if(displayVolume == null){ - return true; - } - return displayVolume; } @@ -197,7 +193,12 @@ public class CreateVolumeCmd extends BaseAsyncCreateCustomIdCmd { @Override public boolean isDisplayResourceEnabled(){ - return getDisplayVolume(); + Boolean display = getDisplayVolume(); + if(display == null){ + return true; + } else { + return display; + } } @Override @@ -220,7 +221,6 @@ public class CreateVolumeCmd extends BaseAsyncCreateCustomIdCmd { @Override public void execute() { CallContext.current().setEventDetails("Volume Id: " + getEntityId() + ((getSnapshotId() == null) ? "" : " from snapshot: " + getSnapshotId())); - CallContext.current().setEventDisplayEnabled(getDisplayVolume()); Volume volume = _volumeService.createVolume(this); if (volume != null) { VolumeResponse response = _responseGenerator.createVolumeResponse(volume); diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/DeleteVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/DeleteVolumeCmd.java index 2c66dea7b42..eff7a3579b9 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/DeleteVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/DeleteVolumeCmd.java @@ -76,6 +76,11 @@ public class DeleteVolumeCmd extends BaseCmd { return Account.ACCOUNT_ID_SYSTEM; // no account info given, parent this command to SYSTEM so ERROR events are tracked } + @Override + public boolean isDisplayResourceEnabled(){ + return _volumeService.isDisplayResourceEnabled(getId()); + } + @Override public void execute() throws ConcurrentOperationException { CallContext.current().setEventDetails("Volume Id: " + getId()); diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java index 2b87ff8024e..b45ad0b8d36 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/DetachVolumeCmd.java @@ -16,13 +16,13 @@ // under the License. package org.apache.cloudstack.api.command.user.volume; +import org.apache.cloudstack.api.BaseAsyncVolumeCmd; import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.UserVmResponse; @@ -36,7 +36,7 @@ import com.cloud.uservm.UserVm; @APICommand(name = "detachVolume", description = "Detaches a disk volume from a virtual machine.", responseObject = VolumeResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) -public class DetachVolumeCmd extends BaseAsyncCmd { +public class DetachVolumeCmd extends BaseAsyncVolumeCmd { public static final Logger s_logger = Logger.getLogger(DetachVolumeCmd.class.getName()); private static final String s_name = "detachvolumeresponse"; diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/ExtractVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/ExtractVolumeCmd.java index da466fdde91..7f5cd0df47d 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/ExtractVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/ExtractVolumeCmd.java @@ -16,13 +16,13 @@ // under the License. package org.apache.cloudstack.api.command.user.volume; +import org.apache.cloudstack.api.BaseAsyncVolumeCmd; import org.apache.log4j.Logger; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.ExtractResponse; @@ -38,7 +38,7 @@ import com.cloud.user.Account; @APICommand(name = "extractVolume", description = "Extracts volume", responseObject = ExtractResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) -public class ExtractVolumeCmd extends BaseAsyncCmd { +public class ExtractVolumeCmd extends BaseAsyncVolumeCmd { public static final Logger s_logger = Logger.getLogger(ExtractVolumeCmd.class.getName()); private static final String s_name = "extractvolumeresponse"; diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/MigrateVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/MigrateVolumeCmd.java index 47bf26f3909..126f1f3e3ec 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/MigrateVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/MigrateVolumeCmd.java @@ -19,7 +19,7 @@ package org.apache.cloudstack.api.command.user.volume; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; +import org.apache.cloudstack.api.BaseAsyncVolumeCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.StoragePoolResponse; @@ -31,7 +31,7 @@ import com.cloud.user.Account; @APICommand(name = "migrateVolume", description = "Migrate volume", responseObject = VolumeResponse.class, since = "3.0.0", requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) -public class MigrateVolumeCmd extends BaseAsyncCmd { +public class MigrateVolumeCmd extends BaseAsyncVolumeCmd { private static final String s_name = "migratevolumeresponse"; ///////////////////////////////////////////////////// @@ -58,10 +58,16 @@ public class MigrateVolumeCmd extends BaseAsyncCmd { /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// + // TODO remove this in 5.0 and use id as param instead. public Long getVolumeId() { return volumeId; } + @Override + public Long getId() { + return getVolumeId(); + } + public Long getStoragePoolId() { return storageId; } diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java index a95c95bb5c6..d51cdc5f2e6 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/ResizeVolumeCmd.java @@ -20,7 +20,7 @@ import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; +import org.apache.cloudstack.api.BaseAsyncVolumeCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.DiskOfferingResponse; @@ -38,7 +38,7 @@ import com.cloud.user.Account; @APICommand(name = "resizeVolume", description = "Resizes a volume", responseObject = VolumeResponse.class, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false) -public class ResizeVolumeCmd extends BaseAsyncCmd { +public class ResizeVolumeCmd extends BaseAsyncVolumeCmd { public static final Logger s_logger = Logger.getLogger(ResizeVolumeCmd.class.getName()); private static final String s_name = "resizevolumeresponse"; @@ -67,10 +67,16 @@ public class ResizeVolumeCmd extends BaseAsyncCmd { /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// + //TODO use the method getId() instead of this one. public Long getEntityId() { return id; } + @Override + public Long getId() { + return getEntityId(); + } + public Long getSize() { return size; } diff --git a/api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java b/api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java index 2d2b215cc4e..affb3123c7a 100644 --- a/api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/volume/UpdateVolumeCmd.java @@ -122,6 +122,11 @@ public class UpdateVolumeCmd extends BaseAsyncCustomIdCmd { return volume.getAccountId(); } + @Override + public boolean isDisplayResourceEnabled(){ + return _volumeService.isDisplayResourceEnabled(getId()); + } + @Override public String getEventType() { return EventTypes.EVENT_VOLUME_UPDATE; diff --git a/engine/schema/src/com/cloud/event/EventVO.java b/engine/schema/src/com/cloud/event/EventVO.java index 6fecaa61452..c857f518e26 100644 --- a/engine/schema/src/com/cloud/event/EventVO.java +++ b/engine/schema/src/com/cloud/event/EventVO.java @@ -78,8 +78,8 @@ public class EventVO implements Event { @Column(name = "archived") private boolean archived; - @Column(name = "display_event", updatable = true, nullable = false) - protected boolean isDisplayEventEnabled = true; + @Column(name = "display", updatable = true, nullable = false) + protected boolean display = true; @Transient private int totalSize; @@ -214,12 +214,12 @@ public class EventVO implements Event { this.archived = archived; } - public boolean isDisplayEventEnabled() { - return isDisplayEventEnabled; + public boolean isDisplay() { + return display; } - public void setDisplayEventEnabled(boolean displayEventEnabled) { - isDisplayEventEnabled = displayEventEnabled; + public void setDisplay(boolean display) { + this.display = display; } @Override diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java index 05fe6e8bb8d..7e29324a23b 100755 --- a/server/src/com/cloud/api/ApiServer.java +++ b/server/src/com/cloud/api/ApiServer.java @@ -479,7 +479,6 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer CallContext ctx = CallContext.current(); Long callerUserId = ctx.getCallingUserId(); Account caller = ctx.getCallingAccount(); - ctx.setEventDisplayEnabled(cmdObj.isDisplayResourceEnabled()); // Queue command based on Cmd super class: // BaseCmd: cmd is dispatched to ApiDispatcher, executed, serialized and returned. diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java index 66794c08e8d..4200799a68a 100644 --- a/server/src/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/com/cloud/api/query/QueryManagerImpl.java @@ -504,7 +504,7 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { sb.and("state", sb.entity().getState(), SearchCriteria.Op.NEQ); sb.and("startId", sb.entity().getStartId(), SearchCriteria.Op.EQ); sb.and("createDate", sb.entity().getCreateDate(), SearchCriteria.Op.BETWEEN); - sb.and("displayEvent", sb.entity().getDisplayEvent(), SearchCriteria.Op.EQ); + sb.and("displayEvent", sb.entity().getDisplay(), SearchCriteria.Op.EQ); sb.and("archived", sb.entity().getArchived(), SearchCriteria.Op.EQ); SearchCriteria sc = sb.create(); diff --git a/server/src/com/cloud/api/query/vo/EventJoinVO.java b/server/src/com/cloud/api/query/vo/EventJoinVO.java index 696221dde71..9e9e73cb21f 100644 --- a/server/src/com/cloud/api/query/vo/EventJoinVO.java +++ b/server/src/com/cloud/api/query/vo/EventJoinVO.java @@ -108,8 +108,8 @@ public class EventJoinVO extends BaseViewVO implements ControlledViewEntity { @Column(name = "archived") private boolean archived; - @Column(name = "display_event") - protected boolean displayEvent = true; + @Column(name = "display") + protected boolean display = true; public EventJoinVO() { } @@ -222,8 +222,8 @@ public class EventJoinVO extends BaseViewVO implements ControlledViewEntity { return archived; } - public boolean getDisplayEvent() { - return displayEvent; + public boolean getDisplay() { + return display; } @Override diff --git a/server/src/com/cloud/event/ActionEventUtils.java b/server/src/com/cloud/event/ActionEventUtils.java index a9999dc520e..9724d99e5e6 100755 --- a/server/src/com/cloud/event/ActionEventUtils.java +++ b/server/src/com/cloud/event/ActionEventUtils.java @@ -159,7 +159,7 @@ public class ActionEventUtils { event.setType(type); event.setState(state); event.setDescription(description); - event.setDisplayEventEnabled(eventDisplayEnabled); + event.setDisplay(eventDisplayEnabled); if (domainId != null) { event.setDomainId(domainId); diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java index 50aa87ee2d9..17461c08774 100644 --- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java +++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java @@ -1820,6 +1820,15 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic return extractUrl; } + @Override + public boolean isDisplayResourceEnabled(Long id) { + Volume volume = _volumeDao.findById(id); + if (volume == null) { + return true; // bad id given, default to true + } + return volume.isDisplayVolume(); + } + private String getFormatForPool(StoragePool pool) { ClusterVO cluster = ApiDBUtils.findClusterById(pool.getClusterId()); diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 9874dc30f4e..9c38430ab1c 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -4811,4 +4811,14 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir _accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true, vm); return vm.getUserData(); } + + @Override + public boolean isDisplayResourceEnabled(Long vmId) { + UserVm vm = _vmDao.findById(vmId); + if (vm != null) { + return vm.isDisplayVm(); + } + + return true; // no info then default to true + } } diff --git a/setup/db/db/schema-430to440.sql b/setup/db/db/schema-430to440.sql index f755a0858d7..acc7e213577 100644 --- a/setup/db/db/schema-430to440.sql +++ b/setup/db/db/schema-430to440.sql @@ -543,7 +543,7 @@ ALTER TABLE `cloud`.`s2s_vpn_gateway` ADD COLUMN `display` tinyint(1) NOT NULL D INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name) VALUES (225, UUID(), 9, 'FreeBSD 10 (32-bit)'); INSERT IGNORE INTO `cloud`.`guest_os` (id, uuid, category_id, display_name) VALUES (226, UUID(), 9, 'FreeBSD 10 (64-bit)'); -ALTER TABLE `cloud`.`event` ADD COLUMN `display_event` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'True if the detail can be displayed to the end user'; +ALTER TABLE `cloud`.`event` ADD COLUMN `display` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'True if the detail can be displayed to the end user'; DROP VIEW IF EXISTS `cloud`.`event_view`; CREATE VIEW `cloud`.`event_view` AS @@ -560,7 +560,7 @@ CREATE VIEW `cloud`.`event_view` AS eve.uuid start_uuid, event.user_id, event.archived, - event.display_event, + event.display, user.username user_name, account.id account_id, account.uuid account_uuid,