blob: 9a3a879a15f53c900524586c51fa854e22c5e3bb [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 com.alibaba.jstorm.schedule;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import backtype.storm.generated.StormTopology;
import com.alibaba.jstorm.daemon.supervisor.SupervisorInfo;
import com.alibaba.jstorm.schedule.default_assign.ResourceWorkerSlot;
import com.alibaba.jstorm.schedule.Assignment;
public class TopologyAssignContext {
public static final int ASSIGN_TYPE_NEW = 0; // assign a new topology
public static final int ASSIGN_TYPE_REBALANCE = 1; // rebalance a topology
public static final int ASSIGN_TYPE_MONITOR = 2; // monitor a topology, some
// tasks are dead
protected String topologyId;
protected int assignType;
protected StormTopology rawTopology;
protected Map stormConf;
// if assignType is ASSIGN_TYPE_NEW, oldAssignment is the Assignment last
// time
// otherwise it is the old assignment before assignment.
protected Assignment oldAssignment;
protected Map<String, SupervisorInfo> cluster;
protected int topoMasterTaskId;
protected boolean assignSingleWorkerForTM = false;
protected Map<Integer, String> taskToComponent;
protected Set<Integer> allTaskIds; // all tasks
protected Set<Integer> deadTaskIds; // dead tasks
protected Set<Integer> unstoppedTaskIds; // the task is alive, but his
// supervisor is dead
protected Set<ResourceWorkerSlot> unstoppedWorkers;
protected boolean isReassign;
public TopologyAssignContext() {
}
public TopologyAssignContext(TopologyAssignContext copy) {
this.assignType = copy.getAssignType();
this.rawTopology = copy.getRawTopology();
this.stormConf = copy.getStormConf();
this.oldAssignment = copy.getOldAssignment();
this.cluster = copy.getCluster();
this.taskToComponent = copy.getTaskToComponent();
this.allTaskIds = copy.getAllTaskIds();
this.deadTaskIds = copy.getDeadTaskIds();
this.unstoppedTaskIds = copy.getUnstoppedTaskIds();
this.isReassign = copy.isReassign();
this.topologyId = copy.getTopologyId();
this.topoMasterTaskId = copy.getTopologyMasterTaskId();
this.assignSingleWorkerForTM = copy.getAssignSingleWorkerForTM();
}
public String getTopologyId() {
return topologyId;
}
public void setTopologyId(String topologyId) {
this.topologyId = topologyId;
}
public int getAssignType() {
return assignType;
}
public void setAssignType(int assignType) {
this.assignType = assignType;
}
public StormTopology getRawTopology() {
return rawTopology;
}
public void setRawTopology(StormTopology rawTopology) {
this.rawTopology = rawTopology;
}
public Map getStormConf() {
return stormConf;
}
public void setStormConf(Map stormConf) {
this.stormConf = stormConf;
}
public Assignment getOldAssignment() {
return oldAssignment;
}
public void setOldAssignment(Assignment oldAssignment) {
this.oldAssignment = oldAssignment;
}
public Map<String, SupervisorInfo> getCluster() {
return cluster;
}
public void setCluster(Map<String, SupervisorInfo> cluster) {
this.cluster = cluster;
}
public Set<Integer> getAllTaskIds() {
return allTaskIds;
}
public void setAllTaskIds(Set<Integer> allTaskIds) {
this.allTaskIds = allTaskIds;
}
public Set<Integer> getDeadTaskIds() {
return deadTaskIds;
}
public void setDeadTaskIds(Set<Integer> deadTaskIds) {
this.deadTaskIds = deadTaskIds;
}
public Set<Integer> getUnstoppedTaskIds() {
return unstoppedTaskIds;
}
public void setUnstoppedTaskIds(Set<Integer> unstoppedTaskIds) {
this.unstoppedTaskIds = unstoppedTaskIds;
}
public Map<Integer, String> getTaskToComponent() {
return taskToComponent;
}
public void setTaskToComponent(Map<Integer, String> taskToComponent) {
this.taskToComponent = taskToComponent;
}
public static boolean isAssignTypeValid(int type) {
return (type == ASSIGN_TYPE_NEW) || (type == ASSIGN_TYPE_REBALANCE) || (type == ASSIGN_TYPE_MONITOR);
}
public Set<ResourceWorkerSlot> getUnstoppedWorkers() {
return unstoppedWorkers;
}
public void setUnstoppedWorkers(Set<ResourceWorkerSlot> unstoppedWorkers) {
this.unstoppedWorkers = unstoppedWorkers;
}
public boolean isReassign() {
return isReassign;
}
public void setIsReassign(boolean isReassign) {
this.isReassign = isReassign;
}
public int getTopologyMasterTaskId() {
return topoMasterTaskId;
}
public void setTopologyMasterTaskId(int taskId) {
this.topoMasterTaskId = taskId;
}
public boolean getAssignSingleWorkerForTM() {
return assignSingleWorkerForTM;
}
public void setAssignSingleWorkerForTM(boolean isAssign) {
this.assignSingleWorkerForTM = isAssign;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}