From 83e4922b942989a80d14ffca23b2444ca7473d3e Mon Sep 17 00:00:00 2001 From: Kris McQueen Date: Mon, 25 Oct 2010 15:01:34 -0700 Subject: [PATCH] bug 6703, 6704: use the correct method signatures for invoking updateTemplate/updateIso and updateTemplatePermissions/updateIsoPermissions APIs. It's possible that the reflection should just use 'isAssignableFrom' when getting methods since the manager methods were using a base class as the parameter rather than UpdateTemplateCmd/UpdateIsoCmd and UpdateTemplatePermissions/UpdateIsoPermissions, but for now the explicit methods are added for simplicity. status 6703, 6704: resolved fixed --- .../api/commands/UpdateTemplateOrIsoCmd.java | 7 ++- .../com/cloud/server/ManagementServer.java | 14 +++--- .../cloud/server/ManagementServerImpl.java | 43 ++++++++++++++----- 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/server/src/com/cloud/api/commands/UpdateTemplateOrIsoCmd.java b/server/src/com/cloud/api/commands/UpdateTemplateOrIsoCmd.java index 322c412a900..2a368d458f2 100644 --- a/server/src/com/cloud/api/commands/UpdateTemplateOrIsoCmd.java +++ b/server/src/com/cloud/api/commands/UpdateTemplateOrIsoCmd.java @@ -43,7 +43,7 @@ public abstract class UpdateTemplateOrIsoCmd extends BaseCmd { private Long id; @Parameter(name="name", type=CommandType.STRING, description="the name of the image file") - private String isoName; + private String templateName; @Parameter(name="ostypeid", type=CommandType.LONG, description="the ID of the OS type that best represents the OS of this image.") private Long osTypeId; @@ -70,8 +70,8 @@ public abstract class UpdateTemplateOrIsoCmd extends BaseCmd { return id; } - public String isoName() { - return isoName; + public String getTemplateName() { + return templateName; } public Long getOsTypeId() { @@ -85,5 +85,4 @@ public abstract class UpdateTemplateOrIsoCmd extends BaseCmd { public String getFormat() { return format; } - } diff --git a/server/src/com/cloud/server/ManagementServer.java b/server/src/com/cloud/server/ManagementServer.java index f6278a5686e..e6d189d26c1 100644 --- a/server/src/com/cloud/server/ManagementServer.java +++ b/server/src/com/cloud/server/ManagementServer.java @@ -89,8 +89,10 @@ import com.cloud.api.commands.StopSystemVmCmd; import com.cloud.api.commands.UpdateAccountCmd; import com.cloud.api.commands.UpdateDomainCmd; import com.cloud.api.commands.UpdateIPForwardingRuleCmd; -import com.cloud.api.commands.UpdateTemplateOrIsoCmd; -import com.cloud.api.commands.UpdateTemplateOrIsoPermissionsCmd; +import com.cloud.api.commands.UpdateIsoCmd; +import com.cloud.api.commands.UpdateIsoPermissionsCmd; +import com.cloud.api.commands.UpdateTemplateCmd; +import com.cloud.api.commands.UpdateTemplatePermissionsCmd; import com.cloud.api.commands.UpdateUserCmd; import com.cloud.api.commands.UpdateVMGroupCmd; import com.cloud.api.commands.UploadCustomCertificateCmd; @@ -595,10 +597,11 @@ public interface ManagementServer { /** * Creates a new template * @param cmd - * @return success/failure + * @return updated template * @throws InvalidParameterValueException, PermissionDeniedException */ - boolean updateTemplate(UpdateTemplateOrIsoCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; + VMTemplateVO updateTemplate(UpdateIsoCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; + VMTemplateVO updateTemplate(UpdateTemplateCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; /** * Copies a template from one secondary storage server to another @@ -1173,7 +1176,8 @@ public interface ManagementServer { boolean checkLocalStorageConfigVal(); boolean updateUser(UpdateUserCmd cmd) throws InvalidParameterValueException; - boolean updateTemplatePermissions(UpdateTemplateOrIsoPermissionsCmd cmd)throws InvalidParameterValueException, PermissionDeniedException,InternalErrorException; + boolean updateTemplatePermissions(UpdateTemplatePermissionsCmd cmd)throws InvalidParameterValueException, PermissionDeniedException,InternalErrorException; + boolean updateTemplatePermissions(UpdateIsoPermissionsCmd cmd)throws InvalidParameterValueException, PermissionDeniedException,InternalErrorException; String[] createApiKeyAndSecretKey(RegisterCmd cmd); VolumeVO findVolumeByInstanceAndDeviceId(long instanceId, long deviceId); diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 0bf1a5591b8..0fe1e29d75a 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -128,7 +128,9 @@ import com.cloud.api.commands.StopSystemVmCmd; import com.cloud.api.commands.UpdateAccountCmd; import com.cloud.api.commands.UpdateDomainCmd; import com.cloud.api.commands.UpdateIPForwardingRuleCmd; +import com.cloud.api.commands.UpdateIsoCmd; import com.cloud.api.commands.UpdateIsoPermissionsCmd; +import com.cloud.api.commands.UpdateTemplateCmd; import com.cloud.api.commands.UpdateTemplateOrIsoCmd; import com.cloud.api.commands.UpdateTemplateOrIsoPermissionsCmd; import com.cloud.api.commands.UpdateTemplatePermissionsCmd; @@ -222,8 +224,6 @@ import com.cloud.storage.GuestOSCategoryVO; import com.cloud.storage.GuestOSVO; import com.cloud.storage.LaunchPermissionVO; import com.cloud.storage.Snapshot; -import com.cloud.storage.Upload; -import com.cloud.storage.Volume; import com.cloud.storage.Snapshot.SnapshotType; import com.cloud.storage.SnapshotPolicyVO; import com.cloud.storage.SnapshotVO; @@ -236,7 +236,7 @@ import com.cloud.storage.StorageStats; import com.cloud.storage.Upload.Type; import com.cloud.storage.UploadVO; import com.cloud.storage.VMTemplateVO; -import com.cloud.storage.Volume.VolumeType; +import com.cloud.storage.Volume; import com.cloud.storage.VolumeStats; import com.cloud.storage.VolumeVO; import com.cloud.storage.dao.DiskOfferingDao; @@ -252,7 +252,6 @@ import com.cloud.storage.dao.UploadDao; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VMTemplateDao.TemplateFilter; import com.cloud.storage.dao.VolumeDao; -import com.cloud.storage.download.DownloadMonitor; import com.cloud.storage.preallocatedlun.PreallocatedLunVO; import com.cloud.storage.preallocatedlun.dao.PreallocatedLunDao; import com.cloud.storage.secondary.SecondaryStorageVmManager; @@ -3423,9 +3422,18 @@ public class ManagementServerImpl implements ManagementServer { } @Override - public boolean updateTemplate(UpdateTemplateOrIsoCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { + public VMTemplateVO updateTemplate(UpdateIsoCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { + return updateTemplateOrIso(cmd); + } + + @Override + public VMTemplateVO updateTemplate(UpdateTemplateCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { + return updateTemplateOrIso(cmd); + } + + private VMTemplateVO updateTemplateOrIso(UpdateTemplateOrIsoCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { Long id = cmd.getId(); - String name = cmd.getName(); + String name = cmd.getTemplateName(); String displayText = cmd.getDisplayText(); String format = cmd.getFormat(); Long guestOSId = cmd.getOsTypeId(); @@ -3462,7 +3470,7 @@ public class ManagementServerImpl implements ManagementServer { boolean updateNeeded = !(name == null && displayText == null && format == null && guestOSId == null && passwordEnabled == null && bootable == null); if (!updateNeeded) { - return true; + return template; } template = _templateDao.createForUpdate(id); @@ -3504,7 +3512,9 @@ public class ManagementServerImpl implements ManagementServer { template.setBootable(bootable); } - return _templateDao.update(id, template); + _templateDao.update(id, template); + + return _templateDao.findById(id); } @Override @@ -5178,7 +5188,7 @@ public class ManagementServerImpl implements ManagementServer { sc.setParameters("accountId", accountId); } else if (domainId != null) { DomainVO domain = _domainDao.findById((Long)domainId); - SearchCriteria joinSearch = sc.getJoin("accountSearch"); + SearchCriteria joinSearch = sc.getJoin("accountSearch"); joinSearch.setJoinParameters("domainSearch", "path", domain.getPath() + "%"); } @@ -5216,9 +5226,20 @@ public class ManagementServerImpl implements ManagementServer { (accountType == Account.ACCOUNT_TYPE_READ_ONLY_ADMIN)); } - @Override + @Override @DB + public boolean updateTemplatePermissions(UpdateTemplatePermissionsCmd cmd) throws InvalidParameterValueException, + PermissionDeniedException, InternalErrorException { + return updateTemplateOrIsoPermissions(cmd); + } + + @Override @DB + public boolean updateTemplatePermissions(UpdateIsoPermissionsCmd cmd) throws InvalidParameterValueException, + PermissionDeniedException, InternalErrorException { + return updateTemplateOrIsoPermissions(cmd); + } + @DB - public boolean updateTemplatePermissions(UpdateTemplateOrIsoPermissionsCmd cmd) throws InvalidParameterValueException, + protected boolean updateTemplateOrIsoPermissions(UpdateTemplateOrIsoPermissionsCmd cmd) throws InvalidParameterValueException, PermissionDeniedException, InternalErrorException { Transaction txn = Transaction.currentTxn();