Aled Sage created BROOKLYN-351:
----------------------------------
Summary: extra jclouds providers not found (in karaf)
Key: BROOKLYN-351
URL: https://issues.apache.org/jira/browse/BROOKLYN-351
Project: Brooklyn
Issue Type: Bug
Reporter: Aled Sage
When using a downstream build of Brooklyn 0.10.0-SNAPSHOT (with karaf), I added
a couple of extra jclouds labs providers/apis via the feature.xml.
However, when I tried to use it with the blueprint below, I got the error shown:
{noformat}
location: jclouds:azurecompute
services:
- type: org.apache.brooklyn.entity.stock.BasicApplication
2016-09-26 12:10:12,346 DEBUG 115 o.a.b.c.t.AbstractTypePlanTransformer
[p1212877220-1463] Could not instantiate BasicRegisteredType[null;null]
(rethrowing): Illegal parameter for 'location' (jclouds:azurecompute); not
resolvable: NoSuchElementException: Cloud provider/
API type azurecompute is not supported by jclouds
{noformat}
Looking in {{org.jclouds.providers.Providers.withId("azurecompute")}}, jclouds
does know about azurecompute.
The problem is that the providers/apis list are retrieved and stored in
{{JcloudsLocationResolver.PROVIDERS}} and {{JcloudsLocationResolver.APIS}}
(during static init). At that point, the azurecompute bundle has not been
activated, so {{org.jclouds.osgi.ProviderRegistry}} had not yet had it added by
{{org.jclouds.osgi.MetadataBundleListener}}.
Below is a stacktrace of where this happens:
{noformat}
Daemon Thread [FelixStartLevel] (Suspended (breakpoint at line 82 in
Providers))
owns: AtomicBoolean (id=1573)
Providers.all() line: 82
JcloudsLocationResolver.getProvidersMap() line: 61
JcloudsLocationResolver.<clinit>() line: 56
NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line:
not available [native method]
NativeConstructorAccessorImpl.newInstance(Object[]) line: 57
DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 45
Constructor<T>.newInstance(Object...) line: 526
ReflectionUtils.newInstance(AccessControlContext, Constructor,
Object...) line: 331
BeanRecipe.newInstance(Constructor, Object...) line: 984
BeanRecipe.getInstanceFromType(List<Object>, List<ReifiedType>) line:
349
BeanRecipe.getInstance() line: 282
BeanRecipe.internalCreate2() line: 830
BeanRecipe.internalCreate() line: 811
BeanRecipe(AbstractRecipe).create() line: 106
RefRecipe.internalCreate() line: 62
RefRecipe(AbstractRecipe).create() line: 106
ServiceRecipe.createService() line: 285
ServiceRecipe.internalGetService(Bundle, ServiceRegistration) line: 252
ServiceRecipe.internalCreate() line: 149
AbstractRecipe$1.call() line: 79
FutureTask<V>.run() line: 262
ServiceRecipe(AbstractRecipe).create() line: 88
BlueprintRepository.createInstances(Collection<String>) line: 255
BlueprintRepository.createAll(Collection<String>) line: 186
BlueprintContainerImpl.instantiateEagerComponents() line: 712
BlueprintContainerImpl.doRun() line: 399
BlueprintContainerImpl.run() line: 273
BlueprintExtender.createContainer(Bundle, List<Object>) line: 294
BlueprintExtender.createContainer(Bundle) line: 263
BlueprintExtender.modifiedBundle(Bundle, BundleEvent, Object) line: 253
BundleHookBundleTracker$Tracked.customizerModified(Bundle, BundleEvent,
T) line: 500
BundleHookBundleTracker$Tracked.customizerModified(Object, Object,
Object) line: 433
BundleHookBundleTracker$Tracked(BundleHookBundleTracker$AbstractTracked<S,T,R>).track(S,
R) line: 725
BundleHookBundleTracker$Tracked.bundleChanged(BundleEvent) line: 463
BundleHookBundleTracker$BundleEventHook.event(BundleEvent, Collection)
line: 422
SecureAction.invokeBundleEventHook(EventHook, BundleEvent,
Collection<BundleContext>) line: 1179
EventDispatcher.createWhitelistFromHooks(EventObject, Framework,
Map<BundleContext,List<ListenerInfo>>, Map<BundleContext,List<ListenerInfo>>,
Class<T>) line: 731
EventDispatcher.fireBundleEvent(BundleEvent, Framework) line: 486
Felix.fireBundleEvent(int, Bundle) line: 4541
Felix.startBundle(BundleImpl, int) line: 2172
Felix.setActiveStartLevel(int, FrameworkListener[]) line: 1371
FrameworkStartLevelImpl.run() line: 308
Thread.run() line: 745
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)