Skip to content

Commit 12ad296

Browse files
Likitha ShettyPrachi Damle
authored andcommitted
CLOUDSTACK-1117 [EC2 Query API] DescribeImageAttribute fails
EC2DescribeImageAttribute fails with 'Unsupported - only description supported' error. And this is observed for both the supported attributes 'Description' and 'LaunchPermission'
1 parent 4e4edc9 commit 12ad296

1 file changed

Lines changed: 22 additions & 11 deletions

File tree

awsapi/src/com/cloud/bridge/service/EC2RestServlet.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@
113113
import com.cloud.bridge.service.core.ec2.EC2DeleteKeyPair;
114114
import com.cloud.bridge.service.core.ec2.EC2DescribeAddresses;
115115
import com.cloud.bridge.service.core.ec2.EC2DescribeAvailabilityZones;
116+
import com.cloud.bridge.service.core.ec2.EC2DescribeImageAttribute;
116117
import com.cloud.bridge.service.core.ec2.EC2DescribeImages;
117118
import com.cloud.bridge.service.core.ec2.EC2DescribeInstances;
118119
import com.cloud.bridge.service.core.ec2.EC2DescribeKeyPairs;
@@ -1311,25 +1312,35 @@ private void describeImages( HttpServletRequest request, HttpServletResponse res
13111312

13121313
private void describeImageAttribute( HttpServletRequest request, HttpServletResponse response )
13131314
throws ADBException, XMLStreamException, IOException {
1314-
EC2DescribeImages EC2request = new EC2DescribeImages();
1315+
EC2DescribeImageAttribute ec2request = new EC2DescribeImageAttribute();
13151316

1316-
// -> only works for queries about descriptions
1317-
String[] descriptions = request.getParameterValues( "Description" );
1318-
if ( null != descriptions && 0 < descriptions.length ) {
1319-
String[] value = request.getParameterValues( "ImageId" );
1320-
EC2request.addImageSet( value[0] );
1321-
}
1317+
String[] imageId = request.getParameterValues( "ImageId" );
1318+
if (imageId != null && imageId.length > 0)
1319+
ec2request.setImageId(imageId[0]);
13221320
else {
1323-
response.sendError(501, "Unsupported - only description supported" );
1321+
response.sendError(530, "Missing ImageId parameter");
13241322
return;
13251323
}
13261324

1327-
// -> execute the request
1328-
DescribeImageAttributeResponse EC2response = EC2SoapServiceImpl.toDescribeImageAttributeResponse( ServiceProvider.getInstance().getEC2Engine().describeImages( EC2request ));
1325+
String[] attribute = request.getParameterValues( "Attribute" );
1326+
if (attribute != null && attribute.length > 0) {
1327+
if (attribute[0].equalsIgnoreCase("description"))
1328+
ec2request.setAttribute(ImageAttribute.description);
1329+
else if (attribute[0].equalsIgnoreCase("launchPermission"))
1330+
ec2request.setAttribute(ImageAttribute.launchPermission);
1331+
else {
1332+
response.sendError(501, "Unsupported Attribute - description and launchPermission supported" );
1333+
return;
1334+
}
1335+
} else {
1336+
response.sendError(530, "Missing Attribute parameter");
1337+
return;
1338+
}
1339+
1340+
DescribeImageAttributeResponse EC2response = EC2SoapServiceImpl.toDescribeImageAttributeResponse( ServiceProvider.getInstance().getEC2Engine().describeImageAttribute( ec2request ));
13291341
serializeResponse(response, EC2response);
13301342
}
13311343

1332-
13331344
private void describeInstances( HttpServletRequest request, HttpServletResponse response )
13341345
throws ADBException, XMLStreamException, IOException
13351346
{

0 commit comments

Comments
 (0)