diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java index c64a0732f67..1363d0d7a0f 100644 --- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java +++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java @@ -1068,9 +1068,8 @@ public class EC2Engine { { try { CloudStackAccount caller = getCurrentAccount(); - if (null == request.getFormat() || null == request.getName() || null == request.getOsTypeName() || - null == request.getLocation() || null == request.getZoneName()) - throw new EC2ServiceException(ServerError.InternalError, "Missing parameter - location/architecture/name"); + if (null == request.getName()) + throw new EC2ServiceException(ClientError.Unsupported, "Missing parameter - name"); List templates = getApi().registerTemplate((request.getDescription() == null ? request.getName() : request.getDescription()), request.getFormat(), request.getHypervisor(), request.getName(), toOSTypeId(request.getOsTypeName()), request.getLocation(), diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2RegisterImage.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2RegisterImage.java index 3fd36ba358b..d71329701ea 100644 --- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2RegisterImage.java +++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2RegisterImage.java @@ -16,6 +16,9 @@ // under the License. package com.cloud.bridge.service.core.ec2; +import com.cloud.bridge.service.exception.EC2ServiceException; +import com.cloud.bridge.service.exception.EC2ServiceException.ClientError; + public class EC2RegisterImage { private String location; @@ -67,14 +70,19 @@ public class EC2RegisterImage { */ public void setArchitecture( String param ) { if (null != param) { - String parts[] = param.split( ":" ); - if (3 <= parts.length) { - format = parts[0]; - zoneName = parts[1]; - osTypeName = parts[2]; - hypervisor = parts[3]; - } - } + if (!param.contains(":") || param.split(":").length < 4) { + throw new EC2ServiceException( ClientError.InvalidParameterValue, "Supported format for " + + "'architecture' is format:zonename:ostypename:hypervisor" ); + } + String parts[] = param.split( ":" ); + format = parts[0]; + zoneName = parts[1]; + osTypeName = parts[2]; + hypervisor = parts[3]; + } + else { + throw new EC2ServiceException(ClientError.Unsupported, "Missing Parameter -" + " architecture"); + } } public String getFormat() {