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 57f5e4bc2f5..f66fcf75484 100644 --- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java +++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java @@ -1064,10 +1064,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(), toZoneId(request.getZoneName(), null), null, null, null, null, null, null, null, null, null); 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 2ba12a7f5f6..c8770c0fcca 100644 --- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2RegisterImage.java +++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2RegisterImage.java @@ -15,6 +15,9 @@ */ 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; @@ -66,14 +69,20 @@ 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() {