package com.breakersoft.plow.dispatcher.domain; import java.util.Set; import com.breakersoft.plow.NodeE; import com.breakersoft.plow.dispatcher.DispatchConfig; import com.breakersoft.plow.thrift.SlotMode; public class DispatchNode extends NodeE implements DispatchResource { private int cores; private int memory; private Set<String> tags; private boolean locked; private SlotMode slotMode; private int slotCores; private int slotRam; public DispatchNode() { } public int getIdleCores() { return cores; } public void setCores(int cores) { this.cores = cores; } public int getIdleRam() { return memory; } public void setMemory(int memory) { this.memory = memory; } public Set<String> getTags() { return tags; } public void setTags(Set<String> tags) { this.tags = tags; } public void decrement(int cores, int memory) { this.cores = this.cores - cores; this.memory = this.memory - memory; } /** * Return true if the node has cores and memory available and * dispatchable is set to true. * * @return */ public boolean isDispatchable() { if (cores == 0 || memory <= DispatchConfig.MIN_RAM_FOR_DISPATCH) { return false; } if (locked) { return false; } return true; } public String toString() { return String.format("Node: %s [%s] cores:%d mem:%d", getName(), getNodeId(), cores, memory); } @Override public void allocate(int cores, int ram) { this.cores = this.cores - cores; this.memory = this.memory - ram; } public boolean isLocked() { return locked; } public void setLocked(boolean locked) { this.locked = locked; } public SlotMode getSlotMode() { return slotMode; } public void setSlotMode(SlotMode slotMode) { this.slotMode = slotMode; } public int getSlotCores() { return slotCores; } public void setSlotCores(int slotCores) { this.slotCores = slotCores; } public int getSlotRam() { return slotRam; } public void setSlotRam(int slotRam) { this.slotRam = slotRam; } }