Class TimeseriesResourceStorageDao

  • All Implemented Interfaces:
    ResourceStorageDao

    public class TimeseriesResourceStorageDao
    extends java.lang.Object
    implements ResourceStorageDao
    Resource Storage Dao implementation for Timeseries Integration Layer that leverages the Search API for walking the resource tree. In Timeseries Integration Layer, samples are associated with metrics, which are in turn associated with resources. Here we split the resource id into two parts: bucket: last element of the resource id resource path: all the elements before the bucket Relating this to .rrd file on disk, the bucket would be the filename, and the resource path would be its folder.
    • Constructor Detail

      • TimeseriesResourceStorageDao

        public TimeseriesResourceStorageDao()
    • Method Detail

      • exists

        public boolean exists​(ResourcePath path,
                              int depth)
        Description copied from interface: ResourceStorageDao
        Verifies if a path contains one or more metrics at the given depth.

        For example, assume we are working with file-system paths, and we have the following file on disk /a/b/c/some.metric. The function should behave as follows:

        • exists('/a/b/c', 0) -> true
        • exists('/a/b', 1) -> true
        • exists('/a/b', 2) -> false
        Specified by:
        exists in interface ResourceStorageDao
        Parameters:
        path - resource path used as the root of the check
        depth - a non-negative integer
        Returns:
        true if one or more metrics exist, false otherwise
      • existsWithin

        public boolean existsWithin​(ResourcePath path,
                                    int depth)
        Description copied from interface: ResourceStorageDao
        Verifies if a path contains one or more metrics within the given depth.

        For example, assume we are working with file-system paths, and we have the following file on disk /a/b/c/some.metric. The function should behave as follows:

        • exists('/a/b/c', 0) -> true
        • exists('/a/b', 1) -> true
        • exists('/a/b', 2) -> true
        • exists('/a', 1) -> false
        Specified by:
        existsWithin in interface ResourceStorageDao
        Parameters:
        path - resource path used as the root of the check
        depth - a non-negative integer
        Returns:
        true if one or more metrics exist, false otherwise
      • children

        public java.util.Set<ResourcePath> children​(ResourcePath path,
                                                    int depth)
        Description copied from interface: ResourceStorageDao
        Retrieves the set of child paths one level bellow the given path which contain one or more metrics at the given depth.

        For example, assume we are working with file-system paths, and we have the following file on disk /a/b/c/some.metric. The function should behave as follows:

        • children('/a/b', 1) -> {'/a/b/c'}
        • children('/a/b', 2) -> {}
        • children('/a', 2) -> {'b'}
        Specified by:
        children in interface ResourceStorageDao
        Parameters:
        path - resource path used as the root of the check
        depth - a positive integer
        Returns:
        the set of child paths containing metrics
      • getStringAttributes

        public java.util.Map<java.lang.String,​java.lang.String> getStringAttributes​(ResourcePath path)
        Description copied from interface: ResourceStorageDao
        Returns the value for the given (resource-level) attribute, or null if it does not exist.
        Specified by:
        getStringAttributes in interface ResourceStorageDao
      • updateMetricToResourceMappings

        public void updateMetricToResourceMappings​(ResourcePath path,
                                                   java.util.Map<java.lang.String,​java.lang.String> metricsNameToResourceNames)
        Description copied from interface: ResourceStorageDao
        Maps the given metric names to the their associated resources names. The resource names are relative to the given path. When persisting to .rrd of .jrb files with storeByGroup enabled, this is used to map the data sources names (metrics) to associated .rrd files (resource names). Other strategies that can infer this information at runtime may chose to ignore calls to this method.
        Specified by:
        updateMetricToResourceMappings in interface ResourceStorageDao
        Parameters:
        path - parent resource path
        metricsNameToResourceNames - metric to resource mappings
      • toChildResourcePath

        protected static ResourcePath toChildResourcePath​(ResourcePath parent,
                                                          java.lang.String resourceId)