org.apache.storm.scheduler.resource.normalization

## Class NormalizedResourceOffer

- java.lang.Object
- - org.apache.storm.scheduler.resource.normalization.NormalizedResourceOffer

- All Implemented Interfaces:
    NormalizedResourcesWithMemory

      public class NormalizedResourceOffer
      extends Object
      implements NormalizedResourcesWithMemory

  An offer of resources with normalized resource names.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `NormalizedResourceOffer()` Create an offer with all resources set to 0.
    `NormalizedResourceOffer(Map<String,? extends Number> resources)` Create a new normalized resource offer.
    `NormalizedResourceOffer(NormalizedResourceOffer other)` Copy Constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(NormalizedResourcesWithMemory other)`
    `boolean` | `areAnyOverZero()` Return true if any of the resources are > 0.
    `double` | `calculateAveragePercentageUsedBy(NormalizedResourceOffer used)` Calculate the average percentage used.
    `double` | `calculateMinPercentageUsedBy(NormalizedResourceOffer used)` Calculate the min percentage used of the resource.
    `void` | `clear()` Set all resources to 0.
    `boolean` | `couldFit(double minWorkerCpu, NormalizedResourceRequest requestedResources)` Is there any possibility that a resource request could ever fit on this.
    `boolean` | `couldHoldIgnoringSharedMemory(NormalizedResourcesWithMemory other)` Check if resources might be able to fit.
    `boolean` | `couldHoldIgnoringSharedMemoryAndCpu(NormalizedResourcesWithMemory other)`
    `NormalizedResources` | `getNormalizedResources()`
    `double` | `getTotalCpu()`
    `double` | `getTotalMemoryMb()`
    `boolean` | `remove(NormalizedResourcesWithMemory other, ResourceMetrics resourceMetrics)` Remove the resources in other from this.
    `boolean` | `remove(WorkerResources other, ResourceMetrics resourceMetrics)` Remove the resources in other from this.
    `Map<String,Double>` | `toNormalizedMap()` Return these resources as a normalized map.
    `String` | `toString()`
    `void` | `updateForRareResourceAffinity(NormalizedResourceRequest requestedResources)` If a node or rack has a kind of resource not in a request, make that resource negative so when sorting that node or rack will be less likely to be selected.

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

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

- - ### Constructor Detail

    - #### NormalizedResourceOffer

          public NormalizedResourceOffer(Map<String,? extends Number> resources)

      Create a new normalized resource offer.

      Parameters:
        `resources` - the resources to be normalized.

    - #### NormalizedResourceOffer

          public NormalizedResourceOffer()

      Create an offer with all resources set to 0.

    - #### NormalizedResourceOffer

          public NormalizedResourceOffer(NormalizedResourceOffer other)

      Copy Constructor.

      Parameters:
        `other` - what to copy.

  - ### Method Detail

    - #### getTotalMemoryMb

          public double getTotalMemoryMb()

      Specified by:
        `getTotalMemoryMb` in interface `NormalizedResourcesWithMemory`

    - #### toNormalizedMap

          public Map<String,Double> toNormalizedMap()

      Return these resources as a normalized map.

      Returns:
        the normalized map.

    - #### add

          public void add(NormalizedResourcesWithMemory other)

    - #### remove

          public boolean remove(NormalizedResourcesWithMemory other,
                                ResourceMetrics resourceMetrics)

      Remove the resources in other from this.

      Parameters:
        `other` - the resources to be removed.
        `resourceMetrics` - The resource related metrics
      Returns:
        true if one or more resources in other were larger than available resources in this, else false.

    - #### remove

          public boolean remove(WorkerResources other,
                                ResourceMetrics resourceMetrics)

      Remove the resources in other from this.

      Parameters:
        `other` - the resources to be removed.
        `resourceMetrics` - The resource related metrics
      Returns:
        true if one or more resources in other were larger than available resources in this, else false.

    - #### calculateAveragePercentageUsedBy

          public double calculateAveragePercentageUsedBy(NormalizedResourceOffer used)

      Calculate the average percentage used.

      See Also:
        `NormalizedResources.calculateAveragePercentageUsedBy(org.apache.storm.scheduler.resource.normalization.NormalizedResources, double, double)`

    - #### calculateMinPercentageUsedBy

          public double calculateMinPercentageUsedBy(NormalizedResourceOffer used)

      Calculate the min percentage used of the resource.

      See Also:
        `NormalizedResources.calculateMinPercentageUsedBy(org.apache.storm.scheduler.resource.normalization.NormalizedResources, double, double)`

    - #### couldHoldIgnoringSharedMemory

          public boolean couldHoldIgnoringSharedMemory(NormalizedResourcesWithMemory other)

      Check if resources might be able to fit.

      See Also:
        `NormalizedResources.couldHoldIgnoringSharedMemory(org.apache.storm.scheduler.resource.normalization.NormalizedResources, double, double)`

    - #### couldHoldIgnoringSharedMemoryAndCpu

          public boolean couldHoldIgnoringSharedMemoryAndCpu(NormalizedResourcesWithMemory other)

    - #### getTotalCpu

          public double getTotalCpu()

    - #### getNormalizedResources

          public NormalizedResources getNormalizedResources()

      Specified by:
        `getNormalizedResources` in interface `NormalizedResourcesWithMemory`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### updateForRareResourceAffinity

          public void updateForRareResourceAffinity(NormalizedResourceRequest requestedResources)

      If a node or rack has a kind of resource not in a request, make that resource negative so when sorting that node or rack will be less likely to be selected.

      Parameters:
        `requestedResources` - the requested resources.

    - #### clear

          public void clear()

      Description copied from interface: `NormalizedResourcesWithMemory`

      Set all resources to 0.

      Specified by:
        `clear` in interface `NormalizedResourcesWithMemory`

    - #### areAnyOverZero

          public boolean areAnyOverZero()

      Description copied from interface: `NormalizedResourcesWithMemory`

      Return true if any of the resources are > 0.

      Specified by:
        `areAnyOverZero` in interface `NormalizedResourcesWithMemory`

    - #### couldFit

          public boolean couldFit(double minWorkerCpu,
                                  NormalizedResourceRequest requestedResources)

      Is there any possibility that a resource request could ever fit on this.

      Parameters:
        `minWorkerCpu` - the configured minimum worker CPU
        `requestedResources` - the requested resources
      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.

Copyright © 2019 The Apache Software Foundation. All rights reserved.