[ 
https://issues.apache.org/jira/browse/JCLOUDS-1348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16234838#comment-16234838
 ] 

Richard Downer commented on JCLOUDS-1348:
-----------------------------------------

Here is the stacktrace reported when attempting to list the templates at this 
cloud service provider:

{{java.lang.IllegalArgumentException: Multiple entries with same key: 
3d72b52b-7ef3-4791-a199-30fc1f7d0520={id=3d72b52b-7ef3-4791-a199-30fc1f7d0520, 
providerId=3d72b52b-7ef3-4791-a199-30fc1f7d0520, name=Windows 2012 R2 - 
Standard, location={scope=ZONE, id=318c6f5f-c9d1-4c35-a145-327ecc521ec0, 
description=EU-FR-IKDC1-Z2-ADV, parent=cloudstack}, os={family=windows, 
name=Windows, description=Windows Server 2012 R2 (64-bit), is64Bit=true}, 
description=Microsoft Windows 2012 R2 - Standard Edition - 64bits 
(login:Administrator), status=AVAILABLE, loginUser=Administrator} and 
3d72b52b-7ef3-4791-a199-30fc1f7d0520={id=3d72b52b-7ef3-4791-a199-30fc1f7d0520, 
providerId=3d72b52b-7ef3-4791-a199-30fc1f7d0520, name=Windows 2012 R2 - 
Standard, location={scope=ZONE, id=c3224240-c62b-49c1-94d5-76a7d7bac77a, 
description=US-FL-Z1-ADV, parent=cloudstack}, os={family=windows, name=Windows, 
description=Windows Server 2012 R2 (64-bit), is64Bit=true}, 
description=Microsoft Windows 2012 R2 - Standard Edition - 64bits 
(login:Administrator), status=AVAILABLE, loginUser=Administrator}
        at 
com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:150)
        at 
com.google.common.collect.RegularImmutableMap.checkNoConflictInBucket(RegularImmutableMap.java:104)
        at 
com.google.common.collect.RegularImmutableMap.<init>(RegularImmutableMap.java:70)
        at 
com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:254)
        at com.google.common.collect.Maps.uniqueIndex(Maps.java:1166)
        at com.google.common.collect.Maps.uniqueIndex(Maps.java:1140)
        at 
org.jclouds.compute.suppliers.ImageCacheSupplier.reset(ImageCacheSupplier.java:134)
        at 
org.jclouds.compute.suppliers.ImageCacheSupplier.valueLoaded(ImageCacheSupplier.java:121)
        at 
org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:76)
        at 
org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier$SetAndThrowAuthorizationExceptionSupplierBackedLoader.load(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:57)
        at 
com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527)
        at 
com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319)
        at 
com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282)
        at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197)
        at com.google.common.cache.LocalCache.get(LocalCache.java:3937)
        at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)
        at 
com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)
        at 
org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.get(MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.java:150)
        at 
org.jclouds.compute.suppliers.ImageCacheSupplier.get(ImageCacheSupplier.java:106)
        at 
org.jclouds.compute.domain.internal.TemplateBuilderImpl.getImages(TemplateBuilderImpl.java:854)
        at 
org.jclouds.compute.domain.internal.TemplateBuilderImpl.build(TemplateBuilderImpl.java:666)
        at 
org.apache.brooklyn.location.jclouds.templates.PortableTemplateBuilder.newJcloudsTemplate(PortableTemplateBuilder.java:76)
        at 
org.apache.brooklyn.location.jclouds.templates.PortableTemplateBuilder.build(PortableTemplateBuilder.java:48)
        at 
org.apache.brooklyn.location.jclouds.JcloudsLocation.buildTemplate(JcloudsLocation.java:1394)
        ... 14 more}}


> CloudStack - template(image) IDs not unique
> -------------------------------------------
>
>                 Key: JCLOUDS-1348
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1348
>             Project: jclouds
>          Issue Type: Bug
>          Components: jclouds-drivers
>    Affects Versions: 2.0.0
>            Reporter: Richard Downer
>            Priority: Major
>
> I've been investigating a problem that a client reported - they were trying 
> to use jclouds with their client's CloudStack instance but were hitting 
> problems caused by the result of the CloudStack `listTemplates` options 
> returning members with duplicated ID fields.
> On inspection of the wire logs, it seemed that some templates were duplicated 
> multiple times but in different zones. All of the fields were the same, 
> except for the zone ID and name.
> These were not "cross zone" templates, which is an option where CloudStack 
> automatically copies a template to every zone. jclouds detects and handles 
> those, by collapsing all templates with the same ID and the `crossZones` 
> paramter set to true, down to a single global-scoped image.
> Instead, it would appear that CloudStack has an option to copy a template to 
> another zone. It's not a global template, it only goes to selective zones. 
> But it does preserve the template ID - so you can end up with multiple 
> region-scoped images that have the same ID.
> My discussion on the Apache CloudStack mailing list is at: 
> https://lists.apache.org/thread.html/f93385bbb0e04d7af9b80e7f8f90f957cb8633144dd2b282cde7d3fc@%3Cusers.cloudstack.apache.org%3E
> Of particular note is this message: 
> https://lists.apache.org/thread.html/8d99f7462618438a6a3bcbb3fe7e736c5632db7d07de449f610b68c2@%3Cusers.cloudstack.apache.org%3E
> "As long as template is copied from zone to zone it will present with 
> duplicate ID. This is by design. crossZone parameter is to indicate to auto 
> replicate template across all available zone on template creation. To put it 
> differently only combination of template ID and zone ID is a primary key for 
> template querying."
> (From: Sergey Levitskiy <[email protected]>)
> This implies that jclouds must change its behaviour to always assume that 
> image IDs are not globally unique, perhaps by - as Sergey suggests - 
> incorporating the zone ID into jclouds' image ID.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to