Package org.apache.storm.scheduler.resource

# Class RasNode

java.lang.Object
org.apache.storm.scheduler.resource.RasNode

All Implemented Interfaces:
  `Comparable<RasNode>`

public class RasNode extends Object implements Comparable<RasNode>
Represents a single node in the cluster.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RasNode(String nodeId, SupervisorDetails sup, Cluster cluster, Map<String,WorkerSlot> workerIdToWorker, Map<String,Map<String,Collection<ExecutorDetails>>> assignmentMap)`
  Create a new node.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `assign(WorkerSlot target, TopologyDetails td, Collection<ExecutorDetails> executors)`
  Assigns a worker to a node.
  `void`
  `assignSingleExecutor(WorkerSlot ws, ExecutorDetails exec, TopologyDetails td)`
  Assign a single executor to a slot, even if other things are in the slot.
  `int`
  `compareTo(RasNode o)`
  `boolean`
  `couldEverFit(ExecutorDetails exec, TopologyDetails td)`
  Is there any possibility that exec could ever fit on this node.
  `boolean`
  `equals(Object other)`
  `void`
  `free(WorkerSlot ws)`
  Frees a single slot in this node.
  `void`
  `freeAllSlots()`
  Free all slots on this node.
  `void`
  `freeSingleExecutor(ExecutorDetails exec, TopologyDetails topo)`
  frees a single executor.
  `double`
  `getAvailableCpuResources()`
  Gets the available cpu resources for this node.
  `double`
  `getAvailableMemoryResources()`
  Gets the available memory resources for this node.
  `Collection<WorkerSlot>`
  `getFreeSlots()`
  `Collection<String>`
  `getFreeSlotsId()`
  Get the IDs of all free slots on this node.
  `String`
  `getHostname()`
  `String`
  `getId()`
  `Collection<String>`
  `getRunningTopologies()`
  Get a collection of the topology ids currently running on this node.
  `Collection<WorkerSlot>`
  `getSlotsAvailableToScheduleOn()`
  `NormalizedResourceOffer`
  `getTotalAvailableResources()`
  Gets all available resources for this node.
  `double`
  `getTotalCpuResources()`
  Gets the total cpu resources for this node.
  `double`
  `getTotalMemoryResources()`
  Gets the total memory resources for this node.
  `NormalizedResourceOffer`
  `getTotalResources()`
  Gets total resources for this node.
  `Collection<WorkerSlot>`
  `getUsedSlots()`
  `Collection<WorkerSlot>`
  `getUsedSlots(String topId)`
  Get slots used by the given topology.
  `int`
  `hashCode()`
  `boolean`
  `isAlive()`
  `boolean`
  `isTotallyFree()`
  `String`
  `toString()`
  `int`
  `totalSlots()`
  `int`
  `totalSlotsFree()`
  `int`
  `totalSlotsUsed()`
  `int`
  `totalSlotsUsed(String topId)`
  `boolean`
  `wouldFit(WorkerSlot ws, ExecutorDetails exec, TopologyDetails td)`
  Would scheduling exec in ws fit with the current resource constraints.

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### RasNode

    public RasNode(String nodeId, SupervisorDetails sup, Cluster cluster, Map<String,WorkerSlot> workerIdToWorker, Map<String,Map<String,Collection<ExecutorDetails>>> assignmentMap)
    Create a new node.
    Parameters:
      `nodeId` - the id of the node.
      `sup` - the supervisor this is for.
      `cluster` - the cluster this is a part of.
      `workerIdToWorker` - the mapping of slots already assigned to this node.
      `assignmentMap` - the mapping of executors already assigned to this node.

- ## Method Details

  - ### getId

    public String getId()

  - ### getHostname

    public String getHostname()

  - ### getFreeSlotsId

    public Collection<String> getFreeSlotsId()
    Get the IDs of all free slots on this node.
    Returns:
      the ids of the free slots.

  - ### getSlotsAvailableToScheduleOn

    public Collection<WorkerSlot> getSlotsAvailableToScheduleOn()

  - ### getFreeSlots

    public Collection<WorkerSlot> getFreeSlots()

  - ### getUsedSlots

    public Collection<WorkerSlot> getUsedSlots()

  - ### getUsedSlots

    public Collection<WorkerSlot> getUsedSlots(String topId)
    Get slots used by the given topology.
    Parameters:
      `topId` - the id of the topology to get.
    Returns:
      the slots currently assigned to that topology on this node.

  - ### isAlive

    public boolean isAlive()

  - ### getRunningTopologies

    public Collection<String> getRunningTopologies()
    Get a collection of the topology ids currently running on this node.

  - ### isTotallyFree

    public boolean isTotallyFree()

  - ### totalSlotsFree

    public int totalSlotsFree()

  - ### totalSlotsUsed

    public int totalSlotsUsed()

  - ### totalSlotsUsed

    public int totalSlotsUsed(String topId)

  - ### totalSlots

    public int totalSlots()

  - ### freeAllSlots

    public void freeAllSlots()
    Free all slots on this node. This will update the Cluster too.

  - ### freeSingleExecutor

    public void freeSingleExecutor(ExecutorDetails exec, TopologyDetails topo)
    frees a single executor.
    Parameters:
      `exec` - is the executor to free
      `topo` - the topology the executor is a part of

  - ### free

    public void free(WorkerSlot ws)
    Frees a single slot in this node.
    Parameters:
      `ws` - the slot to free

  - ### assign

    public void assign(WorkerSlot target, TopologyDetails td, Collection<ExecutorDetails> executors)
    Assigns a worker to a node.
    Parameters:
      `target` - the worker slot to assign the executors
      `td` - the topology the executors are from
      `executors` - executors to assign to the specified worker slot

  - ### assignSingleExecutor

    public void assignSingleExecutor(WorkerSlot ws, ExecutorDetails exec, TopologyDetails td)
    Assign a single executor to a slot, even if other things are in the slot.
    Parameters:
      `ws` - the slot to assign it to.
      `exec` - the executor to assign.
      `td` - the topology for the executor.

  - ### wouldFit

    public boolean wouldFit(WorkerSlot ws, ExecutorDetails exec, TopologyDetails td)
    Would scheduling exec in ws fit with the current resource constraints.
    Parameters:
      `ws` - the slot to possibly put exec in
      `exec` - the executor to possibly place in ws
      `td` - the topology exec is a part of
    Returns:
      true if it would fit else false

  - ### couldEverFit

    public boolean couldEverFit(ExecutorDetails exec, TopologyDetails td)
    Is there any possibility that exec could ever fit on this node.
    Parameters:
      `exec` - the executor to schedule
      `td` - the topology the executor is a part of
    Returns:
      true if there is the possibility it might fit, no guarantee that it will, or false if there is no way it would ever fit.

  - ### equals

    public boolean equals(Object other)
    Overrides:
      `equals` in class `Object`

  - ### hashCode

    public int hashCode()
    Overrides:
      `hashCode` in class `Object`

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### getAvailableMemoryResources

    public double getAvailableMemoryResources()
    Gets the available memory resources for this node.
    Returns:
      the available memory for this node

  - ### getTotalResources

    public NormalizedResourceOffer getTotalResources()
    Gets total resources for this node.

  - ### getTotalAvailableResources

    public NormalizedResourceOffer getTotalAvailableResources()
    Gets all available resources for this node.
    Returns:
      All of the available resources.

  - ### getTotalMemoryResources

    public double getTotalMemoryResources()
    Gets the total memory resources for this node.
    Returns:
      the total memory for this node

  - ### getAvailableCpuResources

    public double getAvailableCpuResources()
    Gets the available cpu resources for this node.
    Returns:
      the available cpu for this node

  - ### getTotalCpuResources

    public double getTotalCpuResources()
    Gets the total cpu resources for this node.
    Returns:
      the total cpu for this node

  - ### compareTo

    public int compareTo(RasNode o)
    Specified by:
      `compareTo` in interface `Comparable<RasNode>`