Author: asavu
Date: Mon Nov  7 20:45:39 2011
New Revision: 1198922

URL: http://svn.apache.org/viewvc?rev=1198922&view=rev
Log:
WHIRR-417. Allow users to choose their own jclouds modules with properties 
(Adrian Cole via asavu)

Added:
    
whirr/trunk/core/src/main/java/org/apache/whirr/service/jclouds/BindLoginCredentialsPatchForEC2.java
Modified:
    whirr/trunk/CHANGES.txt
    
whirr/trunk/core/src/main/java/org/apache/whirr/service/BlobStoreContextBuilder.java
    whirr/trunk/core/src/main/java/org/apache/whirr/service/ComputeCache.java
    whirr/trunk/core/src/main/resources/whirr-default.properties
    
whirr/trunk/services/hbase/src/test/resources/whirr-hbase-0.90-singlenode-test.properties

Modified: whirr/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/whirr/trunk/CHANGES.txt?rev=1198922&r1=1198921&r2=1198922&view=diff
==============================================================================
--- whirr/trunk/CHANGES.txt (original)
+++ whirr/trunk/CHANGES.txt Mon Nov  7 20:45:39 2011
@@ -62,6 +62,9 @@ Trunk (unreleased changes)
     WHIRR-399. Move common script setup and script execution fork/join outside 
of 
     ConfigureClusterAction and DestroyClusterAction (David Alves via asavu)
 
+    WHIRR-417. Allow users to choose their own jclouds modules with properties 
+    (Adrian Cole via asavu)
+
   BUG FIXES
 
     WHIRR-377. Fix broken CLI logging config. (asavu via tomwhite)

Modified: 
whirr/trunk/core/src/main/java/org/apache/whirr/service/BlobStoreContextBuilder.java
URL: 
http://svn.apache.org/viewvc/whirr/trunk/core/src/main/java/org/apache/whirr/service/BlobStoreContextBuilder.java?rev=1198922&r1=1198921&r2=1198922&view=diff
==============================================================================
--- 
whirr/trunk/core/src/main/java/org/apache/whirr/service/BlobStoreContextBuilder.java
 (original)
+++ 
whirr/trunk/core/src/main/java/org/apache/whirr/service/BlobStoreContextBuilder.java
 Mon Nov  7 20:45:39 2011
@@ -20,7 +20,6 @@ package org.apache.whirr.service;
 
 import java.util.Map;
 import java.util.Properties;
-import java.util.Set;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationConverter;
@@ -34,8 +33,6 @@ import org.jclouds.blobstore.BlobStoreCo
 import org.jclouds.blobstore.InputStreamMap;
 import org.jclouds.blobstore.attr.ConsistencyModel;
 import org.jclouds.blobstore.options.ListContainerOptions;
-import org.jclouds.enterprise.config.EnterpriseConfigurationModule;
-import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.Providers;
 import org.jclouds.rest.RestContext;
@@ -50,7 +47,7 @@ import com.google.common.collect.Forward
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.MapMaker;
-import com.google.inject.AbstractModule;
+import com.google.inject.Module;
 
 public class BlobStoreContextBuilder {
 
@@ -71,16 +68,12 @@ public class BlobStoreContextBuilder {
        new Function<Key, BlobStoreContext>(){
         private final BlobStoreContextFactory factory =  new 
BlobStoreContextFactory();
         
-        private final Set<AbstractModule> wiring = ImmutableSet.of(
-            new SLF4JLoggingModule(), 
-            new EnterpriseConfigurationModule());        
-        
         @Override
         public BlobStoreContext apply(Key arg0) {
           LOG.debug("creating new BlobStoreContext {}", arg0);
           BlobStoreContext context = new IgnoreCloseBlobStoreContext(
               factory.createContext(arg0.provider, arg0.identity, 
arg0.credential,
-                                    wiring, arg0.overrides));
+                                    ImmutableSet.<Module>of(), 
arg0.overrides));
           LOG.info("created new BlobStoreContext {}", context);
           return context;
        }

Modified: 
whirr/trunk/core/src/main/java/org/apache/whirr/service/ComputeCache.java
URL: 
http://svn.apache.org/viewvc/whirr/trunk/core/src/main/java/org/apache/whirr/service/ComputeCache.java?rev=1198922&r1=1198921&r2=1198922&view=diff
==============================================================================
--- whirr/trunk/core/src/main/java/org/apache/whirr/service/ComputeCache.java 
(original)
+++ whirr/trunk/core/src/main/java/org/apache/whirr/service/ComputeCache.java 
Mon Nov  7 20:45:39 2011
@@ -26,28 +26,23 @@ import com.google.common.collect.Forward
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.MapMaker;
-import com.google.inject.AbstractModule;
+import com.google.inject.Module;
 
 import java.util.Map;
 import java.util.Properties;
-import java.util.Set;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationConverter;
 import org.apache.whirr.ClusterSpec;
-import 
org.apache.whirr.service.jclouds.TakeLoginCredentialsFromWhirrProperties;
 import org.jclouds.compute.ComputeService;
 import org.jclouds.compute.ComputeServiceContext;
 import org.jclouds.compute.ComputeServiceContextFactory;
 import org.jclouds.compute.Utils;
 import org.jclouds.domain.Credentials;
-import 
org.jclouds.ec2.compute.strategy.EC2PopulateDefaultLoginCredentialsForImageStrategy;
-import org.jclouds.enterprise.config.EnterpriseConfigurationModule;
 import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
 import org.jclouds.providers.ProviderMetadata;
 import org.jclouds.providers.Providers;
 import org.jclouds.rest.RestContext;
-import org.jclouds.sshj.config.SshjSshClientModule;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -72,31 +67,23 @@ public enum ComputeCache implements Func
   final Map<Key, ComputeServiceContext> cache = new 
MapMaker().makeComputingMap(
       new Function<Key, ComputeServiceContext>(){
         private final ComputeServiceContextFactory factory =  new 
ComputeServiceContextFactory();
-        private Set<AbstractModule> wiring;
                
         @Override
         public ComputeServiceContext apply(Key arg0) {
-          if (wiring == null) {
-            if (arg0.provider.equals("stub")) {
-              try {
-                wiring = ImmutableSet.of(
-                    new SLF4JLoggingModule(),
-                    (AbstractModule) 
Class.forName("org.apache.whirr.service.DryRunModule").newInstance());
-              } catch (Exception e) {
-                Throwables.propagate(e);
-              }
-            } else {
-              wiring = ImmutableSet.of(
-                  new SshjSshClientModule(),
-                  new SLF4JLoggingModule(), 
-                  new EnterpriseConfigurationModule(),
-                  new BindLoginCredentialsPatchForEC2());  
+          Properties overrides = new Properties();
+          overrides.putAll(arg0.overrides);
+          if (arg0.provider.equals("stub")) {
+            try {
+              overrides.setProperty("jclouds.modules", 
+                SLF4JLoggingModule.class.getName() + 
",org.apache.whirr.service.DryRunModule");
+            } catch (Exception e) {
+              Throwables.propagate(e);
             }
           }
           LOG.debug("creating new ComputeServiceContext {}", arg0);
           ComputeServiceContext context = new 
IgnoreCloseComputeServiceContext(factory.createContext(
             arg0.provider, arg0.identity, arg0.credential,
-            wiring, arg0.overrides));
+            ImmutableSet.<Module>of(), overrides));
           LOG.debug("created new ComputeServiceContext {}", context);
           return context;
         }
@@ -229,18 +216,12 @@ public enum ComputeCache implements Func
     public int hashCode() {
       return Objects.hashCode(key, overrides);
     }
-  }
-  
-  //patch until jclouds 1.0-beta-10
-  private static class BindLoginCredentialsPatchForEC2 extends AbstractModule {
-
+    
     @Override
-    protected void configure() {
-      bind(EC2PopulateDefaultLoginCredentialsForImageStrategy.class)
-        .to(TakeLoginCredentialsFromWhirrProperties.class);
+    public String toString() {
+      return Objects.toStringHelper(this).add("provider", 
provider).add("identity", identity)
+          .add("overrides", overrides).toString();
     }
-     
   }
 
-
 }

Added: 
whirr/trunk/core/src/main/java/org/apache/whirr/service/jclouds/BindLoginCredentialsPatchForEC2.java
URL: 
http://svn.apache.org/viewvc/whirr/trunk/core/src/main/java/org/apache/whirr/service/jclouds/BindLoginCredentialsPatchForEC2.java?rev=1198922&view=auto
==============================================================================
--- 
whirr/trunk/core/src/main/java/org/apache/whirr/service/jclouds/BindLoginCredentialsPatchForEC2.java
 (added)
+++ 
whirr/trunk/core/src/main/java/org/apache/whirr/service/jclouds/BindLoginCredentialsPatchForEC2.java
 Mon Nov  7 20:45:39 2011
@@ -0,0 +1,35 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.whirr.service.jclouds;
+
+import 
org.jclouds.ec2.compute.strategy.EC2PopulateDefaultLoginCredentialsForImageStrategy;
+
+import com.google.inject.AbstractModule;
+
+/**
+ * patch until http://code.google.com/p/jclouds/issues/detail?id=441
+ */
+public class BindLoginCredentialsPatchForEC2 extends AbstractModule {
+
+  @Override
+  protected void configure() {
+    
bind(EC2PopulateDefaultLoginCredentialsForImageStrategy.class).to(TakeLoginCredentialsFromWhirrProperties.class);
+  }
+
+}

Modified: whirr/trunk/core/src/main/resources/whirr-default.properties
URL: 
http://svn.apache.org/viewvc/whirr/trunk/core/src/main/resources/whirr-default.properties?rev=1198922&r1=1198921&r2=1198922&view=diff
==============================================================================
--- whirr/trunk/core/src/main/resources/whirr-default.properties (original)
+++ whirr/trunk/core/src/main/resources/whirr-default.properties Mon Nov  7 
20:45:39 2011
@@ -23,3 +23,4 @@ whirr.cluster-user=${sys:user.name}
 
 whirr.state-store=local
 
+jclouds.modules=org.jclouds.logging.slf4j.config.SLF4JLoggingModule,org.jclouds.enterprise.config.EnterpriseConfigurationModule,org.jclouds.sshj.config.SshjSshClientModule,org.apache.whirr.service.jclouds.BindLoginCredentialsPatchForEC2
\ No newline at end of file

Modified: 
whirr/trunk/services/hbase/src/test/resources/whirr-hbase-0.90-singlenode-test.properties
URL: 
http://svn.apache.org/viewvc/whirr/trunk/services/hbase/src/test/resources/whirr-hbase-0.90-singlenode-test.properties?rev=1198922&r1=1198921&r2=1198922&view=diff
==============================================================================
--- 
whirr/trunk/services/hbase/src/test/resources/whirr-hbase-0.90-singlenode-test.properties
 (original)
+++ 
whirr/trunk/services/hbase/src/test/resources/whirr-hbase-0.90-singlenode-test.properties
 Mon Nov  7 20:45:39 2011
@@ -16,11 +16,13 @@
 # limitations under the License.
 #
 whirr.cluster-name=hbaseclustertest
-whirr.instance-templates=1 
hadoop-namenode+hadoop-jobtracker+zookeeper+hbase-master+hbase-thriftserver,hadoop-datanode+hadoop-tasktracker+hbase-regionserver
+whirr.instance-templates=1 
hadoop-namenode+hadoop-jobtracker+zookeeper+hbase-master+hbase-thriftserver+hadoop-datanode+hadoop-tasktracker+hbase-regionserver
 
 whirr.provider=${sys:whirr.test.provider}
 whirr.identity=${sys:whirr.test.identity}
 whirr.credential=${sys:whirr.test.credential}
 
+whirr.hardware-min-ram=4096
+
 
whirr.hbase.tarball.url=http://apache.cu.be/hbase/hbase-0.90.3/hbase-0.90.3.tar.gz
 
whirr.hadoop.tarball.url=http://archive.cloudera.com/cdh/3/hadoop-0.20.2-cdh3u0.tar.gz


Reply via email to