From 7cb4b571c8ebb27e5dc6aaf4dcc985e7238c87ae Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Tue, 4 Feb 2014 15:21:09 -0800 Subject: [PATCH] ExternalUUID control: enforce checking uuid validity by defining checkUUID method in the corresponding absract class, and performing the check during API command dispatching --- .../apache/cloudstack/api/BaseAsyncCustomIdCmd.java | 2 +- .../org/apache/cloudstack/api/BaseCustomIdCmd.java | 2 +- .../user/autoscale/UpdateAutoScaleVmGroupCmd.java | 2 +- .../user/autoscale/UpdateAutoScaleVmProfileCmd.java | 2 +- .../command/user/network/UpdateNetworkACLItemCmd.java | 2 +- .../api/command/user/network/UpdateNetworkCmd.java | 2 +- .../cloudstack/api/command/user/vm/UpdateVMCmd.java | 2 +- .../api/command/user/volume/UpdateVolumeCmd.java | 2 +- .../cloudstack/api/command/user/vpc/UpdateVPCCmd.java | 2 +- server/src/com/cloud/api/ApiDispatcher.java | 11 ++++++++++- 10 files changed, 19 insertions(+), 10 deletions(-) diff --git a/api/src/org/apache/cloudstack/api/BaseAsyncCustomIdCmd.java b/api/src/org/apache/cloudstack/api/BaseAsyncCustomIdCmd.java index e57e0380490..dfb9439b0b4 100644 --- a/api/src/org/apache/cloudstack/api/BaseAsyncCustomIdCmd.java +++ b/api/src/org/apache/cloudstack/api/BaseAsyncCustomIdCmd.java @@ -27,6 +27,6 @@ public abstract class BaseAsyncCustomIdCmd extends BaseAsyncCmd { return customId; } - public abstract void checkUuid(String id, Class cls); + public abstract void checkUuid(); } diff --git a/api/src/org/apache/cloudstack/api/BaseCustomIdCmd.java b/api/src/org/apache/cloudstack/api/BaseCustomIdCmd.java index c9c8e040bd9..942f29f5664 100644 --- a/api/src/org/apache/cloudstack/api/BaseCustomIdCmd.java +++ b/api/src/org/apache/cloudstack/api/BaseCustomIdCmd.java @@ -27,6 +27,6 @@ public abstract class BaseCustomIdCmd extends BaseCmd { return customId; } - public abstract void checkUuid(String id, Class cls); + public abstract void checkUuid(); } diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java index 221cc36ee19..628bb8a1318 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java @@ -155,7 +155,7 @@ public class UpdateAutoScaleVmGroupCmd extends BaseAsyncCustomIdCmd { } @Override - public void checkUuid(String id, Class cls) { + public void checkUuid() { if (this.getCustomId() != null) { _uuidMgr.checkUuid(this.getCustomId(), AutoScaleVmGroup.class); } diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java index b9d53b2275f..d6405c1d884 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java @@ -147,7 +147,7 @@ public class UpdateAutoScaleVmProfileCmd extends BaseAsyncCustomIdCmd { } @Override - public void checkUuid(String id, Class cls) { + public void checkUuid() { if (this.getCustomId() != null) { _uuidMgr.checkUuid(this.getCustomId(), AutoScaleVmProfile.class); } diff --git a/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkACLItemCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkACLItemCmd.java index accad84c5bf..e684dcf6f60 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkACLItemCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkACLItemCmd.java @@ -174,7 +174,7 @@ public class UpdateNetworkACLItemCmd extends BaseAsyncCustomIdCmd { } @Override - public void checkUuid(String id, Class cls) { + public void checkUuid() { if (this.getCustomId() != null) { _uuidMgr.checkUuid(this.getCustomId(), NetworkACLItem.class); } diff --git a/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java index 65da3c3d42d..85bea5f6c1b 100644 --- a/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/UpdateNetworkCmd.java @@ -190,7 +190,7 @@ public class UpdateNetworkCmd extends BaseAsyncCustomIdCmd { } @Override - public void checkUuid(String id, Class cls) { + public void checkUuid() { if (this.getCustomId() != null) { _uuidMgr.checkUuid(this.getCustomId(), Network.class); } diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java index 630d4fc6df1..0639477c3f7 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vm/UpdateVMCmd.java @@ -148,7 +148,7 @@ public class UpdateVMCmd extends BaseCustomIdCmd { } @Override - public void checkUuid(String id, Class cls) { + public void checkUuid() { if (this.getCustomId() != null) { _uuidMgr.checkUuid(this.getCustomId(), UserVm.class); 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 310acdeb58a..65d2849632b 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 @@ -150,7 +150,7 @@ public class UpdateVolumeCmd extends BaseAsyncCustomIdCmd { } @Override - public void checkUuid(String id, Class cls) { + public void checkUuid() { if (this.getCustomId() != null) { _uuidMgr.checkUuid(this.getCustomId(), Volume.class); } diff --git a/api/src/org/apache/cloudstack/api/command/user/vpc/UpdateVPCCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpc/UpdateVPCCmd.java index 38ecf88e07a..3f24a2f13ee 100644 --- a/api/src/org/apache/cloudstack/api/command/user/vpc/UpdateVPCCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/vpc/UpdateVPCCmd.java @@ -115,7 +115,7 @@ public class UpdateVPCCmd extends BaseAsyncCustomIdCmd { } @Override - public void checkUuid(String id, Class cls) { + public void checkUuid() { if (this.getCustomId() != null) { _uuidMgr.checkUuid(this.getCustomId(), Vpc.class); } diff --git a/server/src/com/cloud/api/ApiDispatcher.java b/server/src/com/cloud/api/ApiDispatcher.java index 19406c241ed..7d9b7d7ef37 100755 --- a/server/src/com/cloud/api/ApiDispatcher.java +++ b/server/src/com/cloud/api/ApiDispatcher.java @@ -21,14 +21,16 @@ import java.util.Map; import javax.annotation.PostConstruct; import javax.inject.Inject; -import org.apache.log4j.Logger; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.BaseAsyncCreateCmd; +import org.apache.cloudstack.api.BaseAsyncCustomIdCmd; import org.apache.cloudstack.api.BaseCmd; +import org.apache.cloudstack.api.BaseCustomIdCmd; import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.framework.jobs.AsyncJob; import org.apache.cloudstack.framework.jobs.AsyncJobManager; +import org.apache.log4j.Logger; import com.cloud.api.dispatch.DispatchChain; import com.cloud.api.dispatch.DispatchChainFactory; @@ -97,6 +99,13 @@ public class ApiDispatcher { } } } + + if (cmd instanceof BaseAsyncCustomIdCmd) { + ((BaseAsyncCustomIdCmd)cmd).checkUuid(); + } else if (cmd instanceof BaseCustomIdCmd) { + ((BaseCustomIdCmd)cmd).checkUuid(); + } + cmd.execute(); }