blob: 3c223eb71c7d35d89830cb50c0cfbdba1e5e04cc [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version
* 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package org.apache.storm;
import java.util.Map;
import org.apache.storm.cluster.IStormClusterState;
import org.apache.storm.generated.ClusterSummary;
import org.apache.storm.generated.Credentials;
import org.apache.storm.generated.KillOptions;
import org.apache.storm.generated.RebalanceOptions;
import org.apache.storm.generated.StormTopology;
import org.apache.storm.generated.SubmitOptions;
import org.apache.storm.generated.TopologyInfo;
import org.apache.storm.thrift.TException;
/**
* This is here mostly for backwards compatibility.
*/
public interface ILocalCluster extends AutoCloseable {
/**
* Submit a topology to be run in local mode.
*
* @param topologyName the name of the topology to use
* @param conf the config for the topology
* @param topology the topology itself.
* @return an AutoCloseable that will kill the topology.
* @throws TException on any error from nimbus
*/
ILocalTopology submitTopology(String topologyName, Map<String, Object> conf, StormTopology topology) throws TException;
/**
* Submit a topology to be run in local mode.
*
* @param topologyName the name of the topology to use
* @param conf the config for the topology
* @param topology the topology itself.
* @param submitOpts options for topology
* @return an AutoCloseable that will kill the topology.
* @throws TException on any error from nimbus
*/
ILocalTopology submitTopologyWithOpts(String topologyName, Map<String, Object> conf, StormTopology topology,
SubmitOptions submitOpts) throws TException;
/**
* Upload new credentials to a topology.
*
* @param topologyName the name of the topology
* @param creds the new credentails for the topology.
* @throws TException on any error from nimbus
*/
void uploadNewCredentials(String topologyName, Credentials creds) throws TException;
/**
* Kill a topology (if you are not using ILocalTopology).
*
* @param topologyName the name of the topology
* @throws TException on any error from nimbus
*/
void killTopology(String topologyName) throws TException;
/**
* Kill a topology (if you are not using ILocalTopology).
*
* @param topologyName the name of the topology
* @param options for how to kill the topology
* @throws TException on any error from nimbus
*/
void killTopologyWithOpts(String name, KillOptions options) throws TException;
/**
* Activate a topology.
*
* @param topologyName the name of the topology to activate
* @throws TException on any error from nimbus
*/
void activate(String topologyName) throws TException;
/**
* Deactivate a topology.
*
* @param topologyName the name of the topology to deactivate
* @throws TException on any error from nimbus
*/
void deactivate(String topologyName) throws TException;
/**
* Rebalance a topology.
*
* @param name the name of the topology
* @param options options for rebalanceing the topology.
* @throws TException on any error from nimbus
*/
void rebalance(String name, RebalanceOptions options) throws TException;
/**
* Shut down the cluster.
*
* @deprecated use {@link #close()} instead.
*/
@Deprecated
void shutdown();
/**
* The config of a topology as a JSON string.
*
* @param id the id of the topology (not the name)
* @return The config of a topology as a JSON string
* @throws TException on any error from nimbus
*/
String getTopologyConf(String id) throws TException;
/**
* Get the compiled storm topology.
*
* @param id the id of the topology (not the name)
* @return the compiled storm topology
* @throws TException on any error from nimbus
*/
StormTopology getTopology(String id) throws TException;
/**
* Get cluster information.
* @return a summary of the current state of the cluster
* @throws TException on any error from nimbus
*/
ClusterSummary getClusterInfo() throws TException;
/**
* Get the state of a topology.
*
* @param id the id of the topology (not the name)
* @return the state of a topology
* @throws TException on any error from nimbus
*/
TopologyInfo getTopologyInfo(String id) throws TException;
/**
* This is intended for internal testing only.
*
* @return an internal class that holds the state of the cluster.
*/
IStormClusterState getClusterState();
/**
* Advance the cluster time when the cluster is using SimulatedTime. This is intended for internal testing only.
*
* @param secs the number of seconds to advance time
*/
void advanceClusterTime(int secs) throws InterruptedException;
/**
* Advance the cluster time when the cluster is using SimulatedTime. This is intended for internal testing only.
*
* @param secs the number of seconds to advance time
* @param steps the number of steps we should take when advancing simulated time
*/
void advanceClusterTime(int secs, int step) throws InterruptedException;
/**
* If the cluster is tracked get the id for the tracked cluster. This is intended for internal testing only.
*
* @return the id of the tracked cluster
*/
String getTrackedId();
/**
* Close this class to kill the topology. This is here mostly for backwards compatibility.
*/
interface ILocalTopology extends AutoCloseable {
}
}