Richard Downer created JCLOUDS-1350:
---------------------------------------
Summary: AWS EC2 mis-detecting OS version of image
Key: JCLOUDS-1350
URL: https://issues.apache.org/jira/browse/JCLOUDS-1350
Project: jclouds
Issue Type: Bug
Affects Versions: 2.0.2
Reporter: Richard Downer
Priority: Minor
I have an image in my AWS EC2 account with this metadata:
Image [architecture=X86_64, description=null,
ebsBlockDevices={/dev/sda1=EbsBlockDevice [deleteOnTermination=false,
snapshotId=snap-0f1dbc42eb5353012, volumeSize=8, volumeType=null, iops=null,
encrypted=false]}, imageId=ami-dc667dba, imageLocation=449550055360/CentOS 7
x86_64 repacked by Richard, imageOwnerId=449550055360, imageState=available,
imageType=MACHINE, isPublic=false, kernelId=null, name=CentOS 7 x86_64 repacked
by Richard, platform=null, productCodes=[aw0evgkw8e5c1q413zgy5pjce],
ramdiskId=null, region=eu-west-1, rootDeviceName=/dev/sda1, rootDeviceType=ebs,
virtualizationType=hvm, hypervisor=xen, tags={group=random}]
jclouds is detecting this as version 5, not version 7.
The reason for this appears to be
{{ComputeServiceUtils.parseVersionOrReturnEmptyString}}. This is being invoked
from {{EC2ImageParser}} with the argument {{449550055360/CentOS 7 x86_64
repacked by Richard}}. This function searches for a number that might be a
version, and if it finds it, applies it to the OS metadata builder.
In this case, it is matching one of the {{5}} digits and thinking that my image
is CentOS 5.
EC2ImageParser is providing {{imageLocation}} as the method's argument, which
is a combination of the owning account ID and the name. A simple solution to
this problem might be to use the {{name}} field instead.
However I wonder if the {{parseVersionOrReturnEmptyString}} method should be a
bit smarter and not attempt to use a number if it appears in the middle of a
group of numbers.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)