/** * Copyright 2011 Intuit Inc. All Rights Reserved */ package com.intuit.tank.vmManager; /* * #%L * VmManager * %% * Copyright (C) 2011 - 2015 Intuit Inc. * %% * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * #L% */ import java.util.ArrayList; import java.util.List; import javax.annotation.Nonnull; import javax.inject.Inject; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.intuit.tank.api.cloud.VMTracker; import com.intuit.tank.vm.vmManager.VMChannel; import com.intuit.tank.vm.vmManager.VMTerminator; /** * VMTerminator * * @author dangleton * */ public class VMTerminatorImpl implements VMTerminator { private static final Logger LOG = LogManager.getLogger(VMTerminatorImpl.class); private static final long WAIT_TIME = 30000;// 30 seconds @Inject private VMQueue queue; @Inject private VMChannel channel; @Inject private VMTracker vmTracker; /** * @{inheritDoc */ @Override public void terminate(@Nonnull String instanceId) { if (!vmTracker.isDevMode()) { final List<String> finalList = new ArrayList<String>(); finalList.add(instanceId); queue.execute(new Runnable() { @Override public void run() { try { Thread.sleep(WAIT_TIME); } catch (InterruptedException e) { LOG.error("Thread interrupted. trying to send mesage to kill vm."); } channel.terminateInstances(finalList); } }); } } }