http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/BaseListNodesImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/BaseListNodesImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/BaseListNodesImpl.java deleted file mode 100644 index a426b8d..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/CleanupStaleNodesAndClientsImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/CleanupStaleNodesAndClientsImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/CleanupStaleNodesAndClientsImpl.java deleted file mode 100644 index 46c765b..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/CreateNodeAndPopulateAutomaticAttributesImpl.java deleted file mode 100644 index 7dabd06..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllClientsInListImpl.java deleted file mode 100644 index ffdd3ec..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/DeleteAllNodesInListImpl.java deleted file mode 100644 index 212d8b7..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListClientsImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListClientsImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListClientsImpl.java deleted file mode 100644 index 105be2f..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsImpl.java deleted file mode 100644 index d109038..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsInEnvironmentImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsInEnvironmentImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListCookbookVersionsInEnvironmentImpl.java deleted file mode 100644 index a7142dc..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListEnvironmentsImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListEnvironmentsImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListEnvironmentsImpl.java deleted file mode 100644 index 0ed792e..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListNodesImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListNodesImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListNodesImpl.java deleted file mode 100644 index 8d95965..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListNodesInEnvironmentImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListNodesInEnvironmentImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/ListNodesInEnvironmentImpl.java deleted file mode 100644 index 58ecaaa..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImpl.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImpl.java b/apis/chef/src/main/java/org/jclouds/chef/strategy/internal/UpdateAutomaticAttributesOnNodeImpl.java deleted file mode 100644 index a6dcac2..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java b/apis/chef/src/main/java/org/jclouds/chef/suppliers/ChefVersionSupplier.java deleted file mode 100644 index a0d8b04..0000000 --- a/apis/chef/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/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/test/TransientChefApi.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/test/TransientChefApi.java b/apis/chef/src/main/java/org/jclouds/chef/test/TransientChefApi.java deleted file mode 100644 index c2c5f10..0000000 --- a/apis/chef/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(); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/test/TransientChefApiMetadata.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/test/TransientChefApiMetadata.java b/apis/chef/src/main/java/org/jclouds/chef/test/TransientChefApiMetadata.java deleted file mode 100644 index c485080..0000000 --- a/apis/chef/src/main/java/org/jclouds/chef/test/TransientChefApiMetadata.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.test; - -import java.net.URI; - -import org.jclouds.chef.ChefApiMetadata; -import org.jclouds.chef.config.ChefBootstrapModule; -import org.jclouds.chef.config.ChefParserModule; -import org.jclouds.chef.test.config.TransientChefApiModule; -import org.jclouds.ohai.config.JMXOhaiModule; -import org.jclouds.rest.internal.BaseHttpApiMetadata; - -import com.google.common.collect.ImmutableSet; -import com.google.inject.Module; - -/** - * Implementation of {@link ApiMetadata} for the Amazon-specific Chef API - */ -public class TransientChefApiMetadata extends BaseHttpApiMetadata<TransientChefApi> { - - @Override - public Builder toBuilder() { - return new Builder().fromApiMetadata(this); - } - - public TransientChefApiMetadata() { - this(new Builder()); - } - - protected TransientChefApiMetadata(Builder builder) { - super(builder); - } - - public static class Builder extends BaseHttpApiMetadata.Builder<TransientChefApi, Builder> { - protected Builder() { - id("transientchef") - .name("In-memory Chef API") - .identityName("unused") - .defaultIdentity("api") - .documentation(URI.create("http://localhost")) - .defaultCredential( - "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEAyb2ZJJqGm0KKR+8nfQJNsSd+F9tXNMV7CfOcW6jsqs8EZgiV\nR09hD1IYOj4YqM0qJONlgyg4xRWewdSG7QTPj1lJpVAida9sXy2+kzyagZA1Am0O\nZcbqb5hoeIDgcX+eDa79s0u0DomjcfO9EKhvHLBz+zM+3QqPRkPV8nYTbfs+HjVz\nzOU6D1B0XR3+IPZZl2AnWs2d0qhnStHcDUvnRVQ0P482YwN9VgceOZtpPz0DCKEJ\n5Tx5STub8k0/zt/VAMHQafLSuQMLd2s4ZLuOZptN//uAsTmxireqd37z+8ZTdBbJ\n8LEpJ+iCXuSfm5aUh7iw6oxvToY2AL53+jK2UQIDAQABAoIBAQDA88B3i/xWn0vX\nBVxFamCYoecuNjGwXXkSyZew616A+EOCu47bh4aTurdFbYL0YFaAtaWvzlaN2eHg\nDb+HDuTefE29+WkcGk6SshPmiz5T0XOCAICWw6wSVDkHmGwS4jZvbAFm7W8nwGk9\nYhxgxFiRngswJZFopOLoF5WXs2td8guIYNslMpo7tu50iFnBHwKO2ZsPAk8t9nnS\nxlDavKruymEmqHCr3+dtio5eaenJcp3fjoXBQOKUk3ipII29XRB8NqeCVV/7Kxwq\nckqOBEbRwBclckyIbD+RiAgKvOelORjEiE9R42vuqvxRA6k9kd9o7utlX0AUtpEn\n3gZc6LepAoGBAP9ael5Y75+sK2JJUNOOhO8ae45cdsilp2yI0X+UBaSuQs2+dyPp\nkpEHAxd4pmmSvn/8c9TlEZhr+qYbABXVPlDncxpIuw2Ajbk7s/S4XaSKsRqpXL57\nzj/QOqLkRk8+OVV9q6lMeQNqLtEj1u6JPviX70Ro+FQtRttNOYbfdP/fAoGBAMpA\nXjR5woV5sUb+REg9vE uYo8RSyOarxqKFCIXVUNsLOx+22+AK4+CQpbueWN7jotrl\nYD6uT6svWi3AAC7kiY0UI/fjVPRCUi8tVoQUE0TaU5VLITaYOB+W/bBaDE4M9560\n1NuDWO90baA5dfU44iuzva02rGJXK9+nS3o8nk/PAoGBALOL6djnDe4mwAaG6Jco\ncd4xr8jkyPzCRZuyBCSBbwphIUXLc7hDprPky064ncJD1UDmwIdkXd/fpMkg2QmA\n/CUk6LEFjMisqHojOaCL9gQZJPhLN5QUN2x1PJWGjs1vQh8Tkx0iUUCOa8bQPXNR\n+34OTsW6TUna4CSZAycLfhffAoGBAIggVsefBCvuQkF0NeUhmDCRZfhnd8y55RHR\n1HCvqKIlpv+rhcX/zmyBLuteopYyRJRsOiE2FW00i8+rIPRu4Z3Q5nybx7w3PzV9\noHN5R5baE9OyI4KpZWztpYYitZF67NcnAvVULHHOvVJQGnKYfLHJYmrJF7GA1ojM\nAuMdFbjFAoGAPxUhxwFy8gaqBahKUEZn4F81HFP5ihGhkT4QL6AFPO2e+JhIGjuR\n27+85hcFqQ+HHVtFsm81b/a+R7P4UuCRgc8eCjxQMoJ1Xl4n7VbjPbHMnIN0Ryvd\nO4ZpWDWYnCO021JTOUUOJ4J/y0416Bvkw0z59y7sNX7wDBBHHbK/XCc=\n-----END RSA PRIVATE KEY-----\n") - .defaultEndpoint("transientchef") - .defaultProperties(ChefApiMetadata.defaultProperties()) - .defaultModules( - ImmutableSet.<Class<? extends Module>> of(TransientChefApiModule.class, ChefParserModule.class, - ChefBootstrapModule.class, JMXOhaiModule.class)); - } - - @Override - public TransientChefApiMetadata build() { - return new TransientChefApiMetadata(this); - } - - @Override - protected Builder self() { - return this; - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/test/config/TransientChefApiModule.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/test/config/TransientChefApiModule.java b/apis/chef/src/main/java/org/jclouds/chef/test/config/TransientChefApiModule.java deleted file mode 100644 index d9eab4d..0000000 --- a/apis/chef/src/main/java/org/jclouds/chef/test/config/TransientChefApiModule.java +++ /dev/null @@ -1,116 +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.config; - -import static com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor; - -import java.io.IOException; -import java.security.PrivateKey; -import java.security.spec.InvalidKeySpecException; -import java.util.List; - -import javax.inject.Singleton; - -import org.jclouds.ContextBuilder; -import org.jclouds.blobstore.TransientApiMetadata; -import org.jclouds.blobstore.config.LocalBlobStore; -import org.jclouds.chef.ChefApi; -import org.jclouds.chef.config.Validator; -import org.jclouds.chef.domain.Client; -import org.jclouds.chef.functions.BootstrapConfigForGroup; -import org.jclouds.chef.functions.ClientForGroup; -import org.jclouds.chef.functions.RunListForGroup; -import org.jclouds.chef.test.TransientChefApi; -import org.jclouds.concurrent.config.ExecutorServiceModule; -import org.jclouds.crypto.Crypto; -import org.jclouds.domain.JsonBall; -import org.jclouds.rest.ConfiguresHttpApi; -import org.jclouds.rest.config.RestModule; -import org.jclouds.rest.config.SyncToAsyncHttpInvocationModule; - -import com.google.common.base.Optional; -import com.google.common.base.Supplier; -import com.google.common.cache.CacheLoader; -import com.google.common.collect.ImmutableSet; -import com.google.inject.AbstractModule; -import com.google.inject.Injector; -import com.google.inject.Module; -import com.google.inject.Provides; -import com.google.inject.name.Names; - -@ConfiguresHttpApi -public class TransientChefApiModule extends AbstractModule { - - @Override - protected void configure() { - install(new RestModule()); - install(new SyncToAsyncHttpInvocationModule()); - bind(ChefApi.class).to(TransientChefApi.class); - bind(LocalBlobStore.class).annotatedWith(Names.named("databags")) - .toInstance( - ContextBuilder - .newBuilder(new TransientApiMetadata()) - .modules( - ImmutableSet.<Module> of(new ExecutorServiceModule(sameThreadExecutor(), - sameThreadExecutor()))).buildInjector().getInstance(LocalBlobStore.class)); - } - - @Provides - @Singleton - public Supplier<PrivateKey> supplyKey() { - return new Supplier<PrivateKey>() { - @Override - public PrivateKey get() { - return null; - } - }; - } - - @Provides - @Singleton - CacheLoader<String, List<String>> runListForGroup(RunListForGroup runListForGroup) { - return CacheLoader.from(runListForGroup); - } - - @Provides - @Singleton - CacheLoader<String, ? extends JsonBall> bootstrapConfigForGroup(BootstrapConfigForGroup bootstrapConfigForGroup) { - return CacheLoader.from(bootstrapConfigForGroup); - } - - @Provides - @Singleton - CacheLoader<String, Client> groupToClient(ClientForGroup clientForGroup) { - return CacheLoader.from(clientForGroup); - } - - @Provides - @Singleton - @Validator - public Optional<String> provideValidatorName(Injector injector) { - return Optional.absent(); - } - - @Provides - @Singleton - @Validator - public Optional<PrivateKey> provideValidatorCredential(Crypto crypto, Injector injector) - throws InvalidKeySpecException, IOException { - return Optional.absent(); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/util/ChefUtils.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/util/ChefUtils.java b/apis/chef/src/main/java/org/jclouds/chef/util/ChefUtils.java deleted file mode 100644 index 3ba0c59..0000000 --- a/apis/chef/src/main/java/org/jclouds/chef/util/ChefUtils.java +++ /dev/null @@ -1,71 +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.util; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Date; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.jclouds.domain.JsonBall; -import org.jclouds.ohai.Automatic; - -import com.google.common.base.Predicate; -import com.google.common.base.Supplier; -import com.google.common.collect.Iterables; -import com.google.inject.Binder; -import com.google.inject.TypeLiteral; -import com.google.inject.multibindings.MapBinder; - -public class ChefUtils { - - public static Date fromOhaiTime(JsonBall ohaiDate) { - return new Date(Long.parseLong(checkNotNull(ohaiDate, "ohaiDate").toString().replaceAll("\\.[0-9]*$", ""))); - } - - public static JsonBall toOhaiTime(long millis) { - return new JsonBall(millis + ""); - } - - public static MapBinder<String, Supplier<JsonBall>> ohaiAutomaticAttributeBinder(Binder binder) { - MapBinder<String, Supplier<JsonBall>> mapbinder = MapBinder.newMapBinder(binder, new TypeLiteral<String>() { - }, new TypeLiteral<Supplier<JsonBall>>() { - }, Automatic.class); - return mapbinder; - } - - /** - * - * @return NoSuchElementException if no element in the runList is a role. - */ - public static String findRoleInRunList(List<String> runList) { - final Pattern pattern = Pattern.compile("^role\\[(.*)\\]$"); - String roleToParse = Iterables.find(runList, new Predicate<String>() { - - @Override - public boolean apply(String input) { - return pattern.matcher(input).matches(); - } - - }); - Matcher matcher = pattern.matcher(roleToParse); - matcher.find(); - return matcher.group(1); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/util/CollectionUtils.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/util/CollectionUtils.java b/apis/chef/src/main/java/org/jclouds/chef/util/CollectionUtils.java deleted file mode 100644 index cabfbde..0000000 --- a/apis/chef/src/main/java/org/jclouds/chef/util/CollectionUtils.java +++ /dev/null @@ -1,69 +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.util; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.jclouds.javax.annotation.Nullable; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; - -/** - * Utility methods to work with collections. - */ -public class CollectionUtils { - - /** - * Creates an immutable list with the elements of the given list. If the - * input list is <code>null</code>, it returns an empty list. - * - * @param input - * The list used to build the immutable one. - * @return An immutable list with the elements of the given list. - */ - public static <T> ImmutableList<T> copyOfOrEmpty(@Nullable List<T> input) { - return input == null ? ImmutableList.<T> of() : ImmutableList.copyOf(input); - } - - /** - * Creates an immutable set with the elements of the given set. If the input - * set is <code>null</code>, it returns an empty set. - * - * @param input - * The set used to build the immutable one. - * @return An immutable set with the elements of the given set. - */ - public static <T> ImmutableSet<T> copyOfOrEmpty(@Nullable Set<T> input) { - return input == null ? ImmutableSet.<T> of() : ImmutableSet.copyOf(input); - } - - /** - * Creates an immutable map with the elements of the given map. If the input - * map is <code>null</code>, it returns an empty map. - * - * @param input - * The map used to build the immutable one. - * @return An immutable map with the elements of the given map. - */ - public static <K, V> ImmutableMap<K, V> copyOfOrEmpty(@Nullable Map<K, V> input) { - return input == null ? ImmutableMap.<K, V> of() : ImmutableMap.copyOf(input); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/chef/util/RunListBuilder.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/chef/util/RunListBuilder.java b/apis/chef/src/main/java/org/jclouds/chef/util/RunListBuilder.java deleted file mode 100644 index 27cc377..0000000 --- a/apis/chef/src/main/java/org/jclouds/chef/util/RunListBuilder.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.util; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.collect.Iterables.addAll; -import static com.google.common.collect.Lists.newArrayList; -import static com.google.common.collect.Lists.transform; - -import java.util.Arrays; -import java.util.List; - -import com.google.common.base.Function; -import com.google.common.collect.ImmutableList; - -/** - * builds a run list in the correct syntax for chef. - */ -public class RunListBuilder { - private List<String> list = newArrayList(); - - /** - * Add the following recipe to the run list - */ - public RunListBuilder addRecipe(String recipe) { - return addRecipes(checkNotNull(recipe, "recipe")); - } - - /** - * Add the following recipes to the run list - */ - public RunListBuilder addRecipes(String... recipes) { - addAll(list, transform(Arrays.asList(checkNotNull(recipes, "recipes")), new Function<String, String>() { - - @Override - public String apply(String from) { - return "recipe[" + from + "]"; - } - - })); - return this; - } - - /** - * Add the following role to the run list - */ - public RunListBuilder addRole(String role) { - return addRoles(checkNotNull(role, "role")); - } - - /** - * Add the following roles to the run list - */ - public RunListBuilder addRoles(String... roles) { - addAll(list, transform(Arrays.asList(checkNotNull(roles, "roles")), new Function<String, String>() { - - @Override - public String apply(String from) { - return "role[" + from + "]"; - } - - })); - return this; - } - - public List<String> build() { - return ImmutableList.copyOf(list); - } -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/ohai/Automatic.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/ohai/Automatic.java b/apis/chef/src/main/java/org/jclouds/ohai/Automatic.java deleted file mode 100644 index 9b3d134..0000000 --- a/apis/chef/src/main/java/org/jclouds/ohai/Automatic.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.ohai; - -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.ElementType.PARAMETER; -import static java.lang.annotation.ElementType.TYPE; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -import javax.inject.Qualifier; - -@Retention(RUNTIME) -@Target({ TYPE, METHOD, PARAMETER }) -@Qualifier -public @interface Automatic { -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/ohai/AutomaticSupplier.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/ohai/AutomaticSupplier.java b/apis/chef/src/main/java/org/jclouds/ohai/AutomaticSupplier.java deleted file mode 100644 index 681558e..0000000 --- a/apis/chef/src/main/java/org/jclouds/ohai/AutomaticSupplier.java +++ /dev/null @@ -1,48 +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.ohai; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Map; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import org.jclouds.domain.JsonBall; -import org.jclouds.ohai.functions.NestSlashKeys; - -import com.google.common.base.Supplier; -import com.google.common.collect.Multimap; - -@Singleton -public class AutomaticSupplier implements Supplier<Map<String, JsonBall>> { - private final Multimap<String, Supplier<JsonBall>> autoAttrs; - private final NestSlashKeys nester; - - @Inject - AutomaticSupplier(@Automatic Multimap<String, Supplier<JsonBall>> autoAttrs, NestSlashKeys nester) { - this.autoAttrs = checkNotNull(autoAttrs, "autoAttrs"); - this.nester = checkNotNull(nester, "nester"); - } - - @Override - public Map<String, JsonBall> get() { - return nester.apply(autoAttrs); - } - -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/ohai/config/ConfiguresOhai.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/ohai/config/ConfiguresOhai.java b/apis/chef/src/main/java/org/jclouds/ohai/config/ConfiguresOhai.java deleted file mode 100644 index 1ca0df4..0000000 --- a/apis/chef/src/main/java/org/jclouds/ohai/config/ConfiguresOhai.java +++ /dev/null @@ -1,28 +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.ohai.config; - -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -import static java.lang.annotation.ElementType.TYPE; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -@Retention(RUNTIME) -@Target(TYPE) -public @interface ConfiguresOhai { -} http://git-wip-us.apache.org/repos/asf/jclouds/blob/8cb2cb44/apis/chef/src/main/java/org/jclouds/ohai/config/JMXOhaiModule.java ---------------------------------------------------------------------- diff --git a/apis/chef/src/main/java/org/jclouds/ohai/config/JMXOhaiModule.java b/apis/chef/src/main/java/org/jclouds/ohai/config/JMXOhaiModule.java deleted file mode 100644 index a8d01f7..0000000 --- a/apis/chef/src/main/java/org/jclouds/ohai/config/JMXOhaiModule.java +++ /dev/null @@ -1,48 +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.ohai.config; - -import java.lang.management.ManagementFactory; -import java.lang.management.RuntimeMXBean; - -import javax.inject.Singleton; - -import org.jclouds.domain.JsonBall; -import org.jclouds.ohai.suppliers.UptimeSecondsSupplier; - -import com.google.common.base.Supplier; -import com.google.inject.Provides; -import com.google.inject.multibindings.MapBinder; - -/** - * Wires the components needed to parse ohai data from a JVM - */ -@ConfiguresOhai -public class JMXOhaiModule extends OhaiModule { - - @Provides - @Singleton - protected RuntimeMXBean provideRuntimeMXBean() { - return ManagementFactory.getRuntimeMXBean(); - } - - public MapBinder<String, Supplier<JsonBall>> bindOhai() { - MapBinder<String, Supplier<JsonBall>> mapBinder = super.bindOhai(); - mapBinder.addBinding("uptime_seconds").to(UptimeSecondsSupplier.class); - return mapBinder; - } -}
