Songping Lv created WHIRR-729:
---------------------------------
Summary: Support default value of whirr.blobstore-provider when it
comes to the Openstack swift
Key: WHIRR-729
URL: https://issues.apache.org/jira/browse/WHIRR-729
Project: Whirr
Issue Type: Bug
Components: core
Affects Versions: 0.8.2
Environment: Ubuntu,Openstack
Reporter: Songping Lv
Priority: Critical
Fix For: 0.9.0
I have try to launch a cluster based on the environment of Openstack and found
it will be failed when we didn't specify the value of whirr.blobstore-provider.
Here's some of the failed informations:
{code}
2013-06-21 19:36:52,428 ERROR [org.apache.whirr.ClusterController] (main)
Unable to start the cluster. Terminating all nodes.
com.google.common.util.concurrent.UncheckedExecutionException:
java.lang.IllegalArgumentException: id must be defined
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2258)
at com.google.common.cache.LocalCache.get(LocalCache.java:3990)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3994)
at
com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4878)
at
com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4884)
at
org.apache.whirr.service.BlobStoreContextBuilder$Cache.apply(BlobStoreContextBuilder.java:72)
at
org.apache.whirr.service.BlobStoreContextBuilder.build(BlobStoreContextBuilder.java:101)
at org.apache.whirr.util.BlobCache.<init>(BlobCache.java:95)
at org.apache.whirr.util.BlobCache.getInstance(BlobCache.java:69)
at
org.apache.whirr.service.ClusterActionHandlerSupport.prepareRemoteFileUrl(ClusterActionHandlerSupport.java:239)
at
org.apache.whirr.service.zookeeper.ZooKeeperClusterActionHandler.beforeBootstrap(ZooKeeperClusterActionHandler.java:71)
at
org.apache.whirr.service.ClusterActionHandlerSupport.beforeAction(ClusterActionHandlerSupport.java:55)
at
org.apache.whirr.actions.ScriptBasedClusterAction.execute(ScriptBasedClusterAction.java:123)
at
org.apache.whirr.ClusterController.bootstrapCluster(ClusterController.java:137)
at
org.apache.whirr.ClusterController.launchCluster(ClusterController.java:113)
at
org.apache.whirr.cli.command.LaunchClusterCommand.run(LaunchClusterCommand.java:69)
at
org.apache.whirr.cli.command.LaunchClusterCommand.run(LaunchClusterCommand.java:59)
at org.apache.whirr.cli.Main.run(Main.java:69)
at org.apache.whirr.cli.Main.main(Main.java:102)
Caused by: java.lang.IllegalArgumentException: id must be defined
at
com.google.common.base.Preconditions.checkArgument(Preconditions.java:92)
at org.jclouds.util.Preconditions2.checkNotEmpty(Preconditions2.java:50)
at
org.jclouds.providers.ProviderPredicates.id(ProviderPredicates.java:107)
at org.jclouds.providers.Providers.withId(Providers.java:103)
at org.jclouds.ContextBuilder.newBuilder(ContextBuilder.java:164)
at
org.apache.whirr.service.BlobStoreContextBuilder$Cache$1.load(BlobStoreContextBuilder.java:83)
at
org.apache.whirr.service.BlobStoreContextBuilder$Cache$1.load(BlobStoreContextBuilder.java:78)
at
com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3589)
at
com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2374)
at
com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2337)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2252)
... 18 more
{code}
Here's my property file:
{code}
whirr.cluster-name=myhadoopcluster
#whirr.instance-templates=1 hadoop-jobtracker+hadoop-namenode,1
hadoop-datanode+hadoop-tasktracker
whirr.instance-templates=1 zookeeper
whirr.provider=openstack-nova
whirr.location-id=RegionOne
whirr.identity=admin:admin
whirr.credential=hastexo
whirr.image-id=RegionOne/7cf21d93-d04a-4fb4-a09b-f546a9461726
whirr.endpoint = http://10.167.157.86:5000/v2.0
#whirr.blobstore-provider=swift-keystone
whirr.blobstore-endpoint=http://10.167.157.86:5000/v2.0/
whirr.blobstore-identity=service:swift
whirr.blobstore-credential=hastexo
#whirr.blobstore-cache-container=swift
#whirr.blobstore-location-id=swift-keystone
whirr.zookeeper.tarball.url=file:///home/Jeremy/test_sample1.war
jclouds.openstack-nova.auto-generate-keypairs = true
#jclouds.openstack-nova.auto-create-floating-ips = true
whirr.private-key-file=${sys:user.home}/.ssh/id_rsa
whirr.public-key-file=${sys:user.home}/.ssh/id_rsa.pub
{code}
After detailed investigation about the whirr project, I found it is becasue the
whirr-core component didn't specify the default value which will Computed from
whirr.provider as documented in the offical specification:
http://whirr.apache.org/docs/0.8.2/configuration-guide.html
Here's my modification to support the specification which is documented in the
official website
{code:title=ClusterSpec.java|borderStyle=solid}
Index: ClusterSpec.java
===================================================================
--- ClusterSpec.java (revision 1488828)
+++ ClusterSpec.java (working copy)
@@ -576,6 +576,7 @@
mappings.put("cloudservers", "cloudfiles-us");
mappings.put("cloudservers-us", "cloudfiles-us");
mappings.put("cloudservers-uk", "cloudfiles-uk");
+ mappings.put("openstack-nova", "swift-keystone");
if (!mappings.containsKey(provider)) {
return null;
{code}
Thanks
-Jeremy Lv
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira