You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2014/11/23 23:11:12 UTC

[07/11] jclouds-chef git commit: Removed all code after promoting, to avoid confusion

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/predicates/CookbookVersionPredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/predicates/CookbookVersionPredicates.java b/core/src/main/java/org/jclouds/chef/predicates/CookbookVersionPredicates.java
deleted file mode 100644
index 7edbcae..0000000
--- a/core/src/main/java/org/jclouds/chef/predicates/CookbookVersionPredicates.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.jclouds.chef.predicates;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.any;
-import static com.google.common.collect.Iterables.get;
-
-import org.jclouds.chef.domain.CookbookVersion;
-import org.jclouds.chef.domain.Resource;
-
-import com.google.common.base.Predicate;
-import com.google.common.base.Splitter;
-import com.google.common.collect.LinkedListMultimap;
-import com.google.common.collect.Multimap;
-
-/**
- * Container for cookbook filters (predicates).
- * 
- * This class has static methods that create customized predicates to use with
- * {@link org.jclouds.chef.ChefService}.
- */
-public class CookbookVersionPredicates {
-   /**
-    * @see #containsRecipes
-    */
-   public static Predicate<CookbookVersion> containsRecipe(String recipe) {
-      return containsRecipes(checkNotNull(recipe, "recipe must be defined"));
-   }
-
-   /**
-    * Note that the default recipe of a cookbook is its name. Otherwise, you
-    * prefix the recipe with the name of the cookbook. ex. {@code apache2} will
-    * be the default recipe where {@code apache2::mod_proxy} is a specific one
-    * in the cookbook.
-    * 
-    * @param recipes
-    *           names of the recipes.
-    * @return true if the cookbook version contains a recipe in the list.
-    */
-   public static Predicate<CookbookVersion> containsRecipes(String... recipes) {
-      checkNotNull(recipes, "recipes must be defined");
-      final Multimap<String, String> search = LinkedListMultimap.create();
-      for (String recipe : recipes) {
-         if (recipe.indexOf("::") != -1) {
-            Iterable<String> nameRecipe = Splitter.on("::").split(recipe);
-            search.put(get(nameRecipe, 0), get(nameRecipe, 1) + ".rb");
-         } else {
-            search.put(recipe, "default.rb");
-         }
-      }
-      return new Predicate<CookbookVersion>() {
-         @Override
-         public boolean apply(final CookbookVersion cookbookVersion) {
-            return search.containsKey(cookbookVersion.getCookbookName())
-                  && any(search.get(cookbookVersion.getCookbookName()), new Predicate<String>() {
-
-                     @Override
-                     public boolean apply(final String recipeName) {
-                        return any(cookbookVersion.getRecipes(), new Predicate<Resource>() {
-
-                           @Override
-                           public boolean apply(Resource resource) {
-                              return resource.getName().equals(recipeName);
-                           }
-
-                        });
-                     }
-
-                  });
-         }
-
-         @Override
-         public String toString() {
-            return "containsRecipes(" + search + ")";
-         }
-      };
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/CleanupStaleNodesAndClients.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/CleanupStaleNodesAndClients.java b/core/src/main/java/org/jclouds/chef/strategy/CleanupStaleNodesAndClients.java
deleted file mode 100644
index 8519450..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/CleanupStaleNodesAndClients.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.jclouds.chef.strategy;
-
-import org.jclouds.chef.strategy.internal.CleanupStaleNodesAndClientsImpl;
-
-import com.google.inject.ImplementedBy;
-
-/**
- * 
- * Cleans up nodes and clients who have been hanging around too long.
- */
-@ImplementedBy(CleanupStaleNodesAndClientsImpl.class)
-public interface CleanupStaleNodesAndClients {
-
-   void execute(String prefix, int secondsStale);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/CreateNodeAndPopulateAutomaticAttributes.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/CreateNodeAndPopulateAutomaticAttributes.java b/core/src/main/java/org/jclouds/chef/strategy/CreateNodeAndPopulateAutomaticAttributes.java
deleted file mode 100644
index 249be48..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/CreateNodeAndPopulateAutomaticAttributes.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.jclouds.chef.strategy;
-
-import org.jclouds.chef.domain.Node;
-import org.jclouds.chef.strategy.internal.CreateNodeAndPopulateAutomaticAttributesImpl;
-
-import com.google.inject.ImplementedBy;
-
-/**
- * 
- * Creates a new node with automatic attributes.
- */
-@ImplementedBy(CreateNodeAndPopulateAutomaticAttributesImpl.class)
-public interface CreateNodeAndPopulateAutomaticAttributes {
-   Node execute(Node node);
-
-   Node execute(String nodeName, Iterable<String> runList);
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/DeleteAllClientsInList.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/DeleteAllClientsInList.java b/core/src/main/java/org/jclouds/chef/strategy/DeleteAllClientsInList.java
deleted file mode 100644
index 7dd7b89..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/DeleteAllClientsInList.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.jclouds.chef.strategy;
-
-import org.jclouds.chef.strategy.internal.DeleteAllClientsInListImpl;
-
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.inject.ImplementedBy;
-
-/**
- * Deletes all clients in a given list.
- */
-@ImplementedBy(DeleteAllClientsInListImpl.class)
-public interface DeleteAllClientsInList {
-
-   void execute(Iterable<String> names);
-
-   void execute(ListeningExecutorService executor, Iterable<String> names);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/DeleteAllNodesInList.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/DeleteAllNodesInList.java b/core/src/main/java/org/jclouds/chef/strategy/DeleteAllNodesInList.java
deleted file mode 100644
index 8867e49..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/DeleteAllNodesInList.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.jclouds.chef.strategy;
-
-import org.jclouds.chef.strategy.internal.DeleteAllNodesInListImpl;
-
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.inject.ImplementedBy;
-
-@ImplementedBy(DeleteAllNodesInListImpl.class)
-public interface DeleteAllNodesInList {
-
-   void execute(Iterable<String> names);
-
-   void execute(ListeningExecutorService executor, Iterable<String> names);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/ListClients.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/ListClients.java b/core/src/main/java/org/jclouds/chef/strategy/ListClients.java
deleted file mode 100644
index aa40c2a..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/ListClients.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.jclouds.chef.strategy;
-
-import com.google.inject.ImplementedBy;
-import org.jclouds.chef.domain.Client;
-import org.jclouds.chef.strategy.internal.ListClientsImpl;
-
-import java.util.concurrent.ExecutorService;
-
-@ImplementedBy(ListClientsImpl.class)
-public interface ListClients {
-
-   Iterable<? extends Client> execute();
-
-   Iterable<? extends Client> execute(ExecutorService executor);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/ListCookbookVersions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/ListCookbookVersions.java b/core/src/main/java/org/jclouds/chef/strategy/ListCookbookVersions.java
deleted file mode 100644
index 45663a3..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/ListCookbookVersions.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.jclouds.chef.strategy;
-
-import com.google.inject.ImplementedBy;
-import org.jclouds.chef.domain.CookbookVersion;
-import org.jclouds.chef.strategy.internal.ListCookbookVersionsImpl;
-
-import java.util.concurrent.ExecutorService;
-
-@ImplementedBy(ListCookbookVersionsImpl.class)
-public interface ListCookbookVersions {
-
-   Iterable<? extends CookbookVersion> execute();
-
-   Iterable<? extends CookbookVersion> execute(ExecutorService executor);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/ListCookbookVersionsInEnvironment.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/ListCookbookVersionsInEnvironment.java b/core/src/main/java/org/jclouds/chef/strategy/ListCookbookVersionsInEnvironment.java
deleted file mode 100644
index 188d29f..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/ListCookbookVersionsInEnvironment.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.jclouds.chef.strategy;
-
-import com.google.inject.ImplementedBy;
-import org.jclouds.chef.domain.CookbookVersion;
-import org.jclouds.chef.strategy.internal.ListCookbookVersionsInEnvironmentImpl;
-
-import java.util.concurrent.ExecutorService;
-
-@ImplementedBy(ListCookbookVersionsInEnvironmentImpl.class)
-public interface ListCookbookVersionsInEnvironment {
-
-   Iterable<? extends CookbookVersion> execute(String environmentName);
-
-   Iterable<? extends CookbookVersion> execute(String environmentName, String numVersions);
-
-   Iterable<? extends CookbookVersion> execute(ExecutorService executor, String environmentName);
-
-   Iterable<? extends CookbookVersion> execute(ExecutorService executor, String environmentName, String numVersions);
-
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/ListEnvironments.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/ListEnvironments.java b/core/src/main/java/org/jclouds/chef/strategy/ListEnvironments.java
deleted file mode 100644
index 553e8d4..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/ListEnvironments.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.jclouds.chef.strategy;
-
-import com.google.inject.ImplementedBy;
-import org.jclouds.chef.domain.Environment;
-import org.jclouds.chef.strategy.internal.ListEnvironmentsImpl;
-
-import java.util.concurrent.ExecutorService;
-
-@ImplementedBy(ListEnvironmentsImpl.class)
-public interface ListEnvironments {
-
-   Iterable<? extends Environment> execute();
-
-   Iterable<? extends Environment> execute(ExecutorService executor);
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/ListNodes.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/ListNodes.java b/core/src/main/java/org/jclouds/chef/strategy/ListNodes.java
deleted file mode 100644
index 660eed0..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/ListNodes.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.jclouds.chef.strategy;
-
-import com.google.inject.ImplementedBy;
-import org.jclouds.chef.domain.Node;
-import org.jclouds.chef.strategy.internal.ListNodesImpl;
-
-import java.util.concurrent.ExecutorService;
-
-@ImplementedBy(ListNodesImpl.class)
-public interface ListNodes {
-
-   Iterable<? extends Node> execute();
-
-   Iterable<? extends Node> execute(ExecutorService executor);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/ListNodesInEnvironment.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/ListNodesInEnvironment.java b/core/src/main/java/org/jclouds/chef/strategy/ListNodesInEnvironment.java
deleted file mode 100644
index efeffe6..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/ListNodesInEnvironment.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.jclouds.chef.strategy;
-
-import com.google.inject.ImplementedBy;
-import org.jclouds.chef.domain.Node;
-import org.jclouds.chef.strategy.internal.ListNodesInEnvironmentImpl;
-
-import java.util.concurrent.ExecutorService;
-
-@ImplementedBy(ListNodesInEnvironmentImpl.class)
-public interface ListNodesInEnvironment {
-
-   Iterable<? extends Node> execute(String environmentName);
-
-   Iterable<? extends Node> execute(ExecutorService executor, String environmentName);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/UpdateAutomaticAttributesOnNode.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/UpdateAutomaticAttributesOnNode.java b/core/src/main/java/org/jclouds/chef/strategy/UpdateAutomaticAttributesOnNode.java
deleted file mode 100644
index 0dcb81e..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/UpdateAutomaticAttributesOnNode.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.jclouds.chef.strategy;
-
-import org.jclouds.chef.strategy.internal.UpdateAutomaticAttributesOnNodeImpl;
-
-import com.google.inject.ImplementedBy;
-
-/**
- * 
- * Updates node with new automatic attributes.
- */
-@ImplementedBy(UpdateAutomaticAttributesOnNodeImpl.class)
-public interface UpdateAutomaticAttributesOnNode {
-
-   void execute(String nodeName);
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/BaseListCookbookVersionsImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/BaseListCookbookVersionsImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/BaseListCookbookVersionsImpl.java
deleted file mode 100644
index 94cf79a..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/BaseListCookbookVersionsImpl.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import com.google.common.base.Function;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.domain.CookbookVersion;
-import org.jclouds.logging.Logger;
-
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.Callable;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.concat;
-import static com.google.common.collect.Iterables.transform;
-import static com.google.common.util.concurrent.Futures.allAsList;
-import static com.google.common.util.concurrent.Futures.getUnchecked;
-
-public abstract class BaseListCookbookVersionsImpl {
-
-   protected final ChefApi api;
-
-   protected Logger logger = Logger.NULL;
-
-   BaseListCookbookVersionsImpl(ChefApi api) {
-      this.api = checkNotNull(api, "api");
-   }
-
-   protected Iterable<? extends CookbookVersion> execute(Iterable<String> toGet) {
-      return concat(transform(toGet, new Function<String, Iterable<? extends CookbookVersion>>() {
-
-         @Override
-         public Iterable<? extends CookbookVersion> apply(final String cookbook) {
-            // TODO getting each version could also go parallel
-            Set<String> cookbookVersions = api.listVersionsOfCookbook(cookbook);
-            Iterable<? extends CookbookVersion> cookbooksVersions = transform(cookbookVersions,
-                  new Function<String, CookbookVersion>() {
-                     @Override
-                     public CookbookVersion apply(final String version) {
-                        return api.getCookbook(cookbook, version);
-                     }
-                  }
-            );
-
-            logger.trace(String.format("getting versions of cookbook: %s", cookbook));
-            return cookbooksVersions;
-         }
-      }));
-
-   }
-
-   protected Iterable<? extends CookbookVersion> executeConcurrently(final ListeningExecutorService executor,
-         Iterable<String> cookbookNames) {
-      return concat(transform(cookbookNames, new Function<String, Iterable<? extends CookbookVersion>>() {
-
-         @Override
-         public Iterable<? extends CookbookVersion> apply(final String cookbook) {
-            // TODO getting each version could also go parallel
-            Set<String> cookbookVersions = api.listVersionsOfCookbook(cookbook);
-            ListenableFuture<List<CookbookVersion>> futures = allAsList(transform(cookbookVersions,
-                  new Function<String, ListenableFuture<CookbookVersion>>() {
-                     @Override
-                     public ListenableFuture<CookbookVersion> apply(final String version) {
-                        return executor.submit(new Callable<CookbookVersion>() {
-                           @Override
-                           public CookbookVersion call() throws Exception {
-                              return api.getCookbook(cookbook, version);
-                           }
-                        });
-                     }
-                  }
-            ));
-
-            logger.trace(String.format("getting versions of cookbook: %s", cookbook));
-            return getUnchecked(futures);
-         }
-      }));
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/BaseListNodesImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/BaseListNodesImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/BaseListNodesImpl.java
deleted file mode 100644
index a426b8d..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/BaseListNodesImpl.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.domain.Node;
-import org.jclouds.logging.Logger;
-
-import java.util.List;
-import java.util.concurrent.Callable;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.transform;
-import static com.google.common.util.concurrent.Futures.allAsList;
-import static com.google.common.util.concurrent.Futures.getUnchecked;
-
-public abstract class BaseListNodesImpl {
-
-   protected final ChefApi api;
-
-   protected Logger logger = Logger.NULL;
-
-   BaseListNodesImpl(ChefApi api) {
-      this.api = checkNotNull(api, "api");
-   }
-
-   protected Iterable<? extends Node> execute(Iterable<String> toGet) {
-      Iterable<? extends Node> nodes = transform(toGet, new Function<String, Node>() {
-               @Override
-               public Node apply(final String input) {
-                  return api.getNode(input);
-               }
-            }
-      );
-
-      logger.trace(String.format("getting nodes: %s", Joiner.on(',').join(toGet)));
-      return nodes;
-
-   }
-
-   protected Iterable<? extends Node> executeConcurrently(final ListeningExecutorService executor,
-         Iterable<String> toGet) {
-      ListenableFuture<List<Node>> futures = allAsList(transform(toGet, new Function<String, ListenableFuture<Node>>() {
-         @Override
-         public ListenableFuture<Node> apply(final String input) {
-            return executor.submit(new Callable<Node>() {
-               @Override
-               public Node call() throws Exception {
-                  return api.getNode(input);
-               }
-            });
-         }
-      }));
-
-      logger.trace(String.format("getting nodes: %s", Joiner.on(',').join(toGet)));
-      return getUnchecked(futures);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/CleanupStaleNodesAndClientsImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/CleanupStaleNodesAndClientsImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/CleanupStaleNodesAndClientsImpl.java
deleted file mode 100644
index 46c765b..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/CleanupStaleNodesAndClientsImpl.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Predicates.and;
-import static com.google.common.base.Predicates.notNull;
-import static com.google.common.collect.Iterables.filter;
-import static com.google.common.collect.Iterables.transform;
-import static org.jclouds.chef.util.ChefUtils.fromOhaiTime;
-
-import java.util.Calendar;
-import java.util.Date;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.chef.domain.Node;
-import org.jclouds.chef.strategy.CleanupStaleNodesAndClients;
-import org.jclouds.chef.strategy.DeleteAllClientsInList;
-import org.jclouds.chef.strategy.DeleteAllNodesInList;
-import org.jclouds.chef.strategy.ListNodes;
-import org.jclouds.domain.JsonBall;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-
-/**
- * 
- * Cleans up nodes and apis who have been hanging around too long.
- */
-@Singleton
-public class CleanupStaleNodesAndClientsImpl implements CleanupStaleNodesAndClients {
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   private final ListNodes nodeLister;
-   private final DeleteAllNodesInList nodeDeleter;
-   private final DeleteAllClientsInList clientDeleter;
-
-   @Inject
-   public CleanupStaleNodesAndClientsImpl(DeleteAllNodesInList nodeDeleter, DeleteAllClientsInList clientDeleter,
-         ListNodes nodeLister) {
-      this.nodeLister = checkNotNull(nodeLister, "nodeLister");
-      this.nodeDeleter = checkNotNull(nodeDeleter, "nodeDeleter");
-      this.clientDeleter = checkNotNull(clientDeleter, "clientDeleter");
-   }
-
-   @Override
-   public void execute(final String prefix, int secondsStale) {
-      final Calendar expired = Calendar.getInstance();
-      expired.setTime(new Date());
-      expired.add(Calendar.SECOND, -secondsStale);
-      Iterable<? extends Node> staleNodes = filter(
-         nodeLister.execute(), and(notNull(), new Predicate<Node>() {
-               @Override
-               public boolean apply(Node input) {
-                  return input.getName().startsWith(prefix);
-               }
-         },
-         new Predicate<Node>() {
-             @Override
-             public boolean apply(Node input) {
-                JsonBall dateLong = input.getAutomaticAttributes().get("ohai_time");
-                if (dateLong == null)
-                   return true;
-                Calendar nodeUpdate = Calendar.getInstance();
-                nodeUpdate.setTime(fromOhaiTime(dateLong));
-                return expired.after(nodeUpdate);
-             }
-         }));
-      Iterable<String> nodeNames = transform(staleNodes, new Function<Node, String>() {
-
-         @Override
-         public String apply(Node from) {
-            return from.getName();
-         }
-
-      });
-      nodeDeleter.execute(nodeNames);
-      clientDeleter.execute(nodeNames);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImpl.java
deleted file mode 100644
index 7dabd06..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImpl.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.chef.domain.Node;
-import org.jclouds.chef.strategy.CreateNodeAndPopulateAutomaticAttributes;
-import org.jclouds.domain.JsonBall;
-import org.jclouds.logging.Logger;
-import org.jclouds.ohai.Automatic;
-
-import com.google.common.base.Supplier;
-
-/**
- * 
- * Updates node with new automatic attributes.
- */
-@Singleton
-public class CreateNodeAndPopulateAutomaticAttributesImpl implements CreateNodeAndPopulateAutomaticAttributes {
-
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   private final ChefApi chef;
-   private final Supplier<Map<String, JsonBall>> automaticSupplier;
-
-   @Inject
-   public CreateNodeAndPopulateAutomaticAttributesImpl(ChefApi chef,
-         @Automatic Supplier<Map<String, JsonBall>> automaticSupplier) {
-      this.chef = checkNotNull(chef, "chef");
-      this.automaticSupplier = checkNotNull(automaticSupplier, "automaticSupplier");
-   }
-
-   @Override
-   public Node execute(Node node) {
-      logger.trace("creating node %s", node.getName());
-      Node withAutomatic = Node.builder() //
-            .name(node.getName()) //
-            .normalAttributes(node.getNormalAttributes()) //
-            .overrideAttributes(node.getOverrideAttributes()) //
-            .defaultAttributes(node.getDefaultAttributes()) //
-            .automaticAttributes(node.getAutomaticAttributes()) //
-            .automaticAttributes(automaticSupplier.get()) //
-            .runList(node.getRunList()) //
-            .environment(node.getEnvironment()) //
-            .build();
-      
-      
-      chef.createNode(withAutomatic);
-      logger.debug("created node %s", withAutomatic.getName());
-      return node;
-   }
-
-   @Override
-   public Node execute(String nodeName, Iterable<String> runList) {
-      return execute(Node.builder().name(nodeName).runList(runList).environment("_default").build());
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java
deleted file mode 100644
index ffdd3ec..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.transform;
-import static com.google.common.util.concurrent.Futures.allAsList;
-import static com.google.common.util.concurrent.Futures.getUnchecked;
-
-import java.util.List;
-import java.util.concurrent.Callable;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.Constants;
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.chef.domain.Client;
-import org.jclouds.chef.strategy.DeleteAllClientsInList;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.inject.Inject;
-
-/**
- * Concurrently delete all given clients.
- */
-@Singleton
-public class DeleteAllClientsInListImpl implements DeleteAllClientsInList {
-
-   protected final ChefApi api;
-   protected final ListeningExecutorService userExecutor;
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   @Inject
-   DeleteAllClientsInListImpl(@Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor, ChefApi api) {
-      this.userExecutor = checkNotNull(userExecutor, "userExecuor");
-      this.api = checkNotNull(api, "api");
-   }
-
-   @Override
-   public void execute(Iterable<String> names) {
-      execute(userExecutor, names);
-   }
-
-   @Override
-   public void execute(final ListeningExecutorService executor, Iterable<String> names) {
-      ListenableFuture<List<Client>> futures = allAsList(transform(names,
-            new Function<String, ListenableFuture<Client>>() {
-               @Override
-               public ListenableFuture<Client> apply(final String input) {
-                  return executor.submit(new Callable<Client>() {
-                     @Override
-                     public Client call() throws Exception {
-                        return api.deleteClient(input);
-                     }
-                  });
-               }
-            }));
-
-      logger.trace(String.format("deleting clients: %s", Joiner.on(',').join(names)));
-      getUnchecked(futures);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java
deleted file mode 100644
index 212d8b7..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.transform;
-import static com.google.common.util.concurrent.Futures.allAsList;
-import static com.google.common.util.concurrent.Futures.getUnchecked;
-
-import java.util.List;
-import java.util.concurrent.Callable;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.Constants;
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.chef.domain.Node;
-import org.jclouds.chef.strategy.DeleteAllNodesInList;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.inject.Inject;
-
-@Singleton
-public class DeleteAllNodesInListImpl implements DeleteAllNodesInList {
-
-   protected final ChefApi api;
-   protected final ListeningExecutorService userExecutor;
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   @Inject
-   DeleteAllNodesInListImpl(@Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor, ChefApi api) {
-      this.userExecutor = checkNotNull(userExecutor, "userExecuor");
-      this.api = checkNotNull(api, "api");
-   }
-
-   @Override
-   public void execute(Iterable<String> names) {
-      execute(userExecutor, names);
-   }
-
-   @Override
-   public void execute(final ListeningExecutorService executor, Iterable<String> names) {
-      ListenableFuture<List<Node>> futures = allAsList(transform(names, new Function<String, ListenableFuture<Node>>() {
-         @Override
-         public ListenableFuture<Node> apply(final String input) {
-            return executor.submit(new Callable<Node>() {
-               @Override
-               public Node call() throws Exception {
-                  return api.deleteNode(input);
-               }
-            });
-         }
-      }));
-
-      logger.trace(String.format("deleting nodes: %s", Joiner.on(',').join(names)));
-      getUnchecked(futures);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/ListClientsImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/ListClientsImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/ListClientsImpl.java
deleted file mode 100644
index 105be2f..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/ListClientsImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.transform;
-import static com.google.common.util.concurrent.Futures.allAsList;
-import static com.google.common.util.concurrent.Futures.getUnchecked;
-
-import java.util.List;
-import java.util.concurrent.Callable;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.google.inject.Inject;
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.chef.domain.Client;
-import org.jclouds.chef.strategy.ListClients;
-import org.jclouds.logging.Logger;
-
-import java.util.concurrent.ExecutorService;
-
-
-@Singleton
-public class ListClientsImpl implements ListClients {
-
-   protected final ChefApi api;
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   @Inject
-   ListClientsImpl(ChefApi api) {
-      this.api = checkNotNull(api, "api");
-   }
-
-   @Override
-   public Iterable<? extends Client> execute() {
-
-      Iterable<String> toGet = api.listClients();
-      Iterable<? extends Client> clients = transform(toGet,
-            new Function<String, Client>() {
-               @Override
-               public Client apply(final String input) {
-
-                  return api.getClient(input);
-               }
-
-            }
-      );
-
-      logger.trace(String.format("getting clients: %s", Joiner.on(',').join(toGet)));
-      return clients;
-
-   }
-
-   @Override
-   public Iterable<? extends Client> execute(ExecutorService executorService) {
-      return this.execute(MoreExecutors.listeningDecorator(executorService));
-   }
-
-
-   private Iterable<? extends Client> execute(ListeningExecutorService listeningExecutor) {
-      return executeConcurrently(listeningExecutor, api.listClients());
-   }
-
-   private Iterable<? extends Client> executeConcurrently(final ListeningExecutorService executor,
-         Iterable<String> toGet) {
-      ListenableFuture<List<Client>> futures = allAsList(transform(toGet,
-            new Function<String, ListenableFuture<Client>>() {
-               @Override
-               public ListenableFuture<Client> apply(final String input) {
-                  return executor.submit(new Callable<Client>() {
-                     @Override
-                     public Client call() throws Exception {
-                        return api.getClient(input);
-                     }
-                  });
-               }
-            }
-      ));
-
-      logger.trace(String.format("getting clients: %s", Joiner.on(',').join(toGet)));
-      return getUnchecked(futures);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsImpl.java
deleted file mode 100644
index d109038..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsImpl.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.google.inject.Inject;
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.chef.domain.CookbookVersion;
-import org.jclouds.chef.strategy.ListCookbookVersions;
-import org.jclouds.logging.Logger;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-import java.util.concurrent.ExecutorService;
-
-@Singleton
-public class ListCookbookVersionsImpl extends BaseListCookbookVersionsImpl implements ListCookbookVersions {
-
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   @Inject
-   ListCookbookVersionsImpl(ChefApi api) {
-      super(api);
-   }
-
-   @Override
-   public Iterable<? extends CookbookVersion> execute() {
-      return super.execute(api.listCookbooks());
-   }
-
-   @Override
-   public Iterable<? extends CookbookVersion> execute(ExecutorService executor) {
-      return this.executeConcurrently(MoreExecutors.listeningDecorator(executor));
-   }
-
-
-   private Iterable<? extends CookbookVersion> executeConcurrently(ListeningExecutorService executor) {
-      return super.executeConcurrently(executor, api.listCookbooks());
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsInEnvironmentImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsInEnvironmentImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsInEnvironmentImpl.java
deleted file mode 100644
index a7142dc..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsInEnvironmentImpl.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import static com.google.common.collect.Iterables.transform;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import com.google.common.base.Function;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.google.inject.Inject;
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.chef.domain.CookbookDefinition;
-import org.jclouds.chef.domain.CookbookVersion;
-import org.jclouds.chef.strategy.ListCookbookVersionsInEnvironment;
-import org.jclouds.logging.Logger;
-
-import java.util.concurrent.ExecutorService;
-
-@Singleton
-public class ListCookbookVersionsInEnvironmentImpl extends BaseListCookbookVersionsImpl
-      implements ListCookbookVersionsInEnvironment {
-
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   @Inject
-   ListCookbookVersionsInEnvironmentImpl(ChefApi api) {
-      super(api);
-   }
-
-   @Override
-   public Iterable<? extends CookbookVersion> execute(String environmentName) {
-      return super.execute(transform(api.listCookbooksInEnvironment(environmentName),
-            new Function<CookbookDefinition, String>() {
-
-               @Override
-               public String apply(CookbookDefinition cookbookDefinition) {
-                  return cookbookDefinition.getName();
-               }
-            }
-      ));
-   }
-
-   @Override
-   public Iterable<? extends CookbookVersion> execute(String environmentName, String numVersions) {
-      return super.execute(transform(api.listCookbooksInEnvironment(environmentName, numVersions),
-            new Function<CookbookDefinition, String>() {
-
-               @Override
-               public String apply(CookbookDefinition cookbookDefinition) {
-                  return cookbookDefinition.getName();
-               }
-            }
-      ));
-   }
-
-   @Override
-   public Iterable<? extends CookbookVersion> execute(ExecutorService executor,
-         String environmentName) {
-      return this.executeConcurrently(MoreExecutors.listeningDecorator(executor), environmentName);
-   }
-
-   @Override
-   public Iterable<? extends CookbookVersion> execute(ExecutorService executor,
-         String environmentName, String numVersions) {
-      return this.executeConcurrently(MoreExecutors.listeningDecorator(executor), environmentName, numVersions);
-   }
-
-
-   private Iterable<? extends CookbookVersion> executeConcurrently(ListeningExecutorService executor,
-         String environmentName) {
-      return super.execute(
-            transform(api.listCookbooksInEnvironment(environmentName), new Function<CookbookDefinition, String>() {
-
-               @Override
-               public String apply(CookbookDefinition cookbookDefinition) {
-                  return cookbookDefinition.getName();
-               }
-            })
-      );
-   }
-
-
-   private Iterable<? extends CookbookVersion> executeConcurrently(ListeningExecutorService executor,
-         String environmentName, String numVersions) {
-      return super.execute(transform(api.listCookbooksInEnvironment(environmentName, numVersions),
-            new Function<CookbookDefinition, String>() {
-
-               @Override
-               public String apply(CookbookDefinition cookbookDefinition) {
-                  return cookbookDefinition.getName();
-               }
-            }
-      ));
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/ListEnvironmentsImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/ListEnvironmentsImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/ListEnvironmentsImpl.java
deleted file mode 100644
index 0ed792e..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/ListEnvironmentsImpl.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.transform;
-import static com.google.common.util.concurrent.Futures.allAsList;
-import static com.google.common.util.concurrent.Futures.getUnchecked;
-
-import java.util.List;
-import java.util.concurrent.Callable;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.Constants;
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.chef.domain.Environment;
-import org.jclouds.chef.strategy.ListEnvironments;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.inject.Inject;
-import com.google.common.util.concurrent.MoreExecutors;
-
-
-import java.util.concurrent.ExecutorService;
-
-
-
-@Singleton
-public class ListEnvironmentsImpl implements ListEnvironments {
-
-   protected final ChefApi api;
-   protected final ListeningExecutorService userExecutor;
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   @Inject
-   ListEnvironmentsImpl(@Named(Constants.PROPERTY_USER_THREADS) ListeningExecutorService userExecutor, ChefApi api) {
-      this.userExecutor = checkNotNull(userExecutor, "userExecuor");
-      this.api = checkNotNull(api, "api");
-   }
-
-   @Override
-   public Iterable<? extends Environment> execute() {
-      return execute(userExecutor);
-   }
-
-   @Override
-   public Iterable<? extends Environment> execute(ExecutorService executor) {
-      return this.execute(MoreExecutors.listeningDecorator(executor));
-   }
-
-   private Iterable<? extends Environment> execute(ListeningExecutorService executor) {
-      return execute(executor, api.listEnvironments());
-   }
-
-   private Iterable<? extends Environment> execute(final ListeningExecutorService executor, Iterable<String> toGet) {
-      ListenableFuture<List<Environment>> futures = allAsList(transform(toGet,
-            new Function<String, ListenableFuture<Environment>>() {
-               @Override
-               public ListenableFuture<Environment> apply(final String input) {
-                  return executor.submit(new Callable<Environment>() {
-                     @Override
-                     public Environment call() throws Exception {
-                        return api.getEnvironment(input);
-                     }
-                  });
-               }
-            }));
-
-      logger.trace(String.format("deleting environments: %s", Joiner.on(',').join(toGet)));
-      return getUnchecked(futures);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/ListNodesImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/ListNodesImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/ListNodesImpl.java
deleted file mode 100644
index 8d95965..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/ListNodesImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.google.inject.Inject;
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.chef.domain.Node;
-import org.jclouds.chef.strategy.ListNodes;
-import org.jclouds.logging.Logger;
-
-import java.util.concurrent.ExecutorService;
-
-@Singleton
-public class ListNodesImpl extends BaseListNodesImpl implements ListNodes {
-
-
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   @Inject
-   ListNodesImpl(ChefApi api) {
-      super(api);
-   }
-
-   @Override
-   public Iterable<? extends Node> execute() {
-      return super.execute(api.listNodes());
-   }
-
-   @Override
-   public Iterable<? extends Node> execute(ExecutorService executor) {
-      return this.executeConcurrently(MoreExecutors.listeningDecorator(executor));
-   }
-
-
-   private Iterable<? extends Node> executeConcurrently(ListeningExecutorService executor) {
-      return super.executeConcurrently(executor, api.listNodes());
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/ListNodesInEnvironmentImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/ListNodesInEnvironmentImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/ListNodesInEnvironmentImpl.java
deleted file mode 100644
index 58ecaaa..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/ListNodesInEnvironmentImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.google.inject.Inject;
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.chef.domain.Node;
-import org.jclouds.chef.strategy.ListNodesInEnvironment;
-import org.jclouds.logging.Logger;
-
-import java.util.concurrent.ExecutorService;
-
-@Singleton
-public class ListNodesInEnvironmentImpl extends BaseListNodesImpl implements ListNodesInEnvironment {
-
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   @Inject
-   ListNodesInEnvironmentImpl(ChefApi api) {
-      super(api);
-   }
-
-   @Override
-   public Iterable<? extends Node> execute(String environmentName) {
-      return super.execute(api.listNodesInEnvironment(environmentName));
-   }
-
-   @Override
-   public Iterable<? extends Node> execute(ExecutorService executor, String environmentName) {
-      return this.executeConcurrently(MoreExecutors.listeningDecorator(executor), environmentName);
-   }
-
-
-   private Iterable<? extends Node> executeConcurrently(ListeningExecutorService executor,
-         String environmentName) {
-      return super.executeConcurrently(executor, api.listNodesInEnvironment(environmentName));
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImpl.java b/core/src/main/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImpl.java
deleted file mode 100644
index a6dcac2..0000000
--- a/core/src/main/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImpl.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.jclouds.chef.strategy.internal;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.chef.domain.Node;
-import org.jclouds.chef.strategy.UpdateAutomaticAttributesOnNode;
-import org.jclouds.domain.JsonBall;
-import org.jclouds.logging.Logger;
-import org.jclouds.ohai.Automatic;
-
-import com.google.common.base.Supplier;
-
-/**
- * 
- * Updates node with new automatic attributes.
- */
-@Singleton
-public class UpdateAutomaticAttributesOnNodeImpl implements UpdateAutomaticAttributesOnNode {
-
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   private final ChefApi chef;
-   private final Supplier<Map<String, JsonBall>> automaticSupplier;
-
-   @Inject
-   public UpdateAutomaticAttributesOnNodeImpl(ChefApi chef, @Automatic Supplier<Map<String, JsonBall>> automaticSupplier) {
-      this.chef = checkNotNull(chef, "chef");
-      this.automaticSupplier = checkNotNull(automaticSupplier, "automaticSupplier");
-   }
-
-   @Override
-   public void execute(String nodeName) {
-      logger.trace("updating node %s", nodeName);
-      Node node = chef.getNode(nodeName);
-      Node updated = Node.builder() //
-            .name(node.getName()) //
-            .normalAttributes(node.getNormalAttributes()) //
-            .overrideAttributes(node.getOverrideAttributes()) //
-            .defaultAttributes(node.getDefaultAttributes()) //
-            .automaticAttributes(automaticSupplier.get()) //
-            .runList(node.getRunList()) //
-            .environment(node.getEnvironment()) //
-            .build();
-
-      chef.updateNode(updated);
-      logger.debug("updated node %s", nodeName);
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java b/core/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java
deleted file mode 100644
index a0d8b04..0000000
--- a/core/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.jclouds.chef.suppliers;
-
-import static com.google.common.base.Objects.firstNonNull;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.chef.config.ChefProperties;
-import org.jclouds.logging.Logger;
-import org.jclouds.rest.annotations.ApiVersion;
-
-import com.google.common.base.Supplier;
-
-/**
- * Properly supply the version of the Chef Server.
- */
-@Singleton
-public class ChefVersionSupplier implements Supplier<Integer> {
-
-   /** The default version to assume in case we can not parse it. */
-   public static final Integer FALLBACK_VERSION = 10;
-
-   @Resource
-   @Named(ChefProperties.CHEF_LOGGER)
-   private Logger logger = Logger.NULL;
-
-   /** The configured version of the Chef Server API. */
-   private final String apiVersion;
-
-   @Inject
-   ChefVersionSupplier(@ApiVersion String apiVersion) {
-      this.apiVersion = checkNotNull(apiVersion, "apiVersion must not be null");
-   }
-
-   @Override
-   public Integer get() {
-      // Old versions of Chef have versions like 0.9.x, 0.10.x, but newer
-      // versions are in the format 10.x.y, 11.x.y
-      Pattern versionPattern = Pattern.compile("(?:0\\.(\\d+)|(\\d+)\\.\\d+)(?:\\.\\d)*");
-
-      Matcher m = versionPattern.matcher(apiVersion);
-      if (!m.matches()) {
-         logger.warn("Configured version does not match the standard version pattern. Assuming version %s",
-               FALLBACK_VERSION);
-         return FALLBACK_VERSION;
-      }
-
-      return Integer.valueOf(firstNonNull(m.group(1), m.group(2)));
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-chef/blob/cffeede4/core/src/main/java/org/jclouds/chef/test/TransientChefApi.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/chef/test/TransientChefApi.java b/core/src/main/java/org/jclouds/chef/test/TransientChefApi.java
deleted file mode 100644
index c2c5f10..0000000
--- a/core/src/main/java/org/jclouds/chef/test/TransientChefApi.java
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * 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.jclouds.chef.test;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Throwables.propagate;
-import static com.google.common.collect.Iterables.transform;
-import static com.google.common.collect.Sets.newLinkedHashSet;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.util.List;
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.blobstore.config.LocalBlobStore;
-import org.jclouds.blobstore.domain.Blob;
-import org.jclouds.blobstore.domain.PageSet;
-import org.jclouds.blobstore.domain.StorageMetadata;
-import org.jclouds.chef.ChefApi;
-import org.jclouds.chef.domain.Client;
-import org.jclouds.chef.domain.CookbookDefinition;
-import org.jclouds.chef.domain.CookbookVersion;
-import org.jclouds.chef.domain.DatabagItem;
-import org.jclouds.chef.domain.Environment;
-import org.jclouds.chef.domain.Node;
-import org.jclouds.chef.domain.Resource;
-import org.jclouds.chef.domain.Role;
-import org.jclouds.chef.domain.Sandbox;
-import org.jclouds.chef.domain.SearchResult;
-import org.jclouds.chef.domain.UploadSandbox;
-import org.jclouds.chef.options.CreateClientOptions;
-import org.jclouds.chef.options.SearchOptions;
-import org.jclouds.io.Payload;
-import org.jclouds.lifecycle.Closer;
-import org.jclouds.util.Strings2;
-
-import com.google.common.base.Function;
-
-/**
- * In-memory chef simulator.
- */
-public class TransientChefApi implements ChefApi {
-   @Singleton
-   private static class StorageMetadataToName implements Function<PageSet<? extends StorageMetadata>, Set<String>> {
-      @Override
-      public Set<String> apply(PageSet<? extends StorageMetadata> from) {
-         return newLinkedHashSet(transform(from, new Function<StorageMetadata, String>() {
-
-            @Override
-            public String apply(StorageMetadata from) {
-               return from.getName();
-            }
-         }));
-      }
-   }
-
-   @Singleton
-   private static class BlobToDatabagItem implements Function<Blob, DatabagItem> {
-      @Override
-      public DatabagItem apply(Blob from) {
-         try {
-            return from == null ? null : new DatabagItem(from.getMetadata().getName(), Strings2.toStringAndClose(from
-                  .getPayload().getInput()));
-         } catch (IOException e) {
-            propagate(e);
-            return null;
-         }
-      }
-   }
-
-   private final LocalBlobStore databags;
-   private final BlobToDatabagItem blobToDatabagItem;
-   private final StorageMetadataToName storageMetadataToName;
-   private final Closer closer;
-
-   @Inject
-   TransientChefApi(@Named("databags") LocalBlobStore databags, StorageMetadataToName storageMetadataToName,
-         BlobToDatabagItem blobToDatabagItem, Closer closer) {
-      this.databags = checkNotNull(databags, "databags");
-      this.storageMetadataToName = checkNotNull(storageMetadataToName, "storageMetadataToName");
-      this.blobToDatabagItem = checkNotNull(blobToDatabagItem, "blobToDatabagItem");
-      this.closer = checkNotNull(closer, "closer");
-   }
-
-   @Override
-   public Sandbox commitSandbox(String id, boolean isCompleted) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Client createClient(String clientName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Client createClient(String clientName, CreateClientOptions options) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public void createDatabag(String databagName) {
-      databags.createContainerInLocation(null, databagName);
-   }
-
-   @Override
-   public DatabagItem createDatabagItem(String databagName, DatabagItem databagItem) {
-      Blob blob = databags.blobBuilder(databagItem.getId()).payload(databagItem.toString()).build();
-      databags.putBlob(databagName, blob);
-      return databagItem;
-   }
-
-   @Override
-   public void createNode(Node node) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public void createRole(Role role) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Client deleteClient(String clientName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public CookbookVersion deleteCookbook(String cookbookName, String version) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public void deleteDatabag(String databagName) {
-      databags.deleteContainer(databagName);
-   }
-
-   @Override
-   public DatabagItem deleteDatabagItem(String databagName, String databagItemId) {
-      DatabagItem item = blobToDatabagItem.apply(databags.getBlob(databagName, databagItemId));
-      databags.removeBlob(databagName, databagItemId);
-      return item;
-   }
-
-   @Override
-   public Node deleteNode(String nodeName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Role deleteRole(String rolename) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Client generateKeyForClient(String clientName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Client getClient(String clientName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public CookbookVersion getCookbook(String cookbookName, String version) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public DatabagItem getDatabagItem(String databagName, String databagItemId) {
-      return blobToDatabagItem.apply(databags.getBlob(databagName, databagItemId));
-   }
-
-   @Override
-   public Node getNode(String nodeName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Role getRole(String roleName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public UploadSandbox createUploadSandboxForChecksums(Set<List<Byte>> md5s) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Set<String> listVersionsOfCookbook(String cookbookName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Set<String> listClients() {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Set<String> listCookbooks() {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Set<String> listDatabagItems(String databagName) {
-      return storageMetadataToName.apply(databags.list(databagName));
-   }
-
-   @Override
-   public Set<String> listDatabags() {
-      return storageMetadataToName.apply(databags.list());
-   }
-
-   @Override
-   public Set<String> listNodes() {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Set<String> listRoles() {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Set<String> listSearchIndexes() {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public SearchResult<? extends Client> searchClients() {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public SearchResult<? extends Client> searchClients(SearchOptions options) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public SearchResult<? extends DatabagItem> searchDatabagItems(String databagName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public SearchResult<? extends DatabagItem> searchDatabagItems(String databagName, SearchOptions options) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public SearchResult<? extends Node> searchNodes() {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public SearchResult<? extends Node> searchNodes(SearchOptions options) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public SearchResult<? extends Role> searchRoles() {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public SearchResult<? extends Role> searchRoles(SearchOptions options) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public CookbookVersion updateCookbook(String cookbookName, String version, CookbookVersion cookbook) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public DatabagItem updateDatabagItem(String databagName, DatabagItem item) {
-      return createDatabagItem(databagName, item);
-   }
-
-   @Override
-   public Node updateNode(Node node) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Role updateRole(Role role) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public void uploadContent(URI location, Payload content) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public InputStream getResourceContents(Resource resource) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Set<String> listEnvironments() {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public void createEnvironment(Environment environment) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Environment deleteEnvironment(String environmentName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Environment getEnvironment(String environmentName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Environment updateEnvironment(Environment environment) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Set<CookbookDefinition> listCookbooksInEnvironment(String environmentName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Set<CookbookDefinition> listCookbooksInEnvironment(String environmentName, String numVersions) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public CookbookDefinition getCookbookInEnvironment(String environmentName, String cookbookName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public CookbookDefinition getCookbookInEnvironment(String environmentName, String cookbookName, String numVersions) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public SearchResult<? extends Environment> searchEnvironments() {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public SearchResult<? extends Environment> searchEnvironments(SearchOptions options) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Set<String> listRecipesInEnvironment(String environmentName) {
-      throw new UnsupportedOperationException();
-   }
-
-   @Override
-   public Set<String> listNodesInEnvironment(String environmentName) {
-      throw new UnsupportedOperationException();
-   }
-  
-   @Override
-   public void close() throws IOException {
-      closer.close();
-   }
-}