Class DataRoutingServiceYmlImpl
java.lang.Object
com.illumon.iris.db.v2.routing.impl.yaml.DataRoutingServiceYmlImpl
- All Implemented Interfaces:
DataRoutingService,DataRoutingService.NonListening,StorageLookup,EndpointResolver,ClaimsProvider,SafeCloseable,NamedImplementation,AutoCloseable
- Direct Known Subclasses:
DataRoutingServiceYmlImpl.ResolvingImpl
public abstract class DataRoutingServiceYmlImpl
extends Object
implements DataRoutingService.NonListening
Reads data routing instructions from a YAML file.
This class parses and manages configuration, but does not know how to resolve client or server endpoints.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAn implementation that can resolve dynamic endpoints, via the DynamicResolverMixin.Nested classes/interfaces inherited from interface com.illumon.iris.db.v2.routing.DataRoutingService
DataRoutingService.DeferredEndpoint, DataRoutingService.Delegating, DataRoutingService.Endpoint, DataRoutingService.EndpointConfig, DataRoutingService.NonListening, DataRoutingService.NotReadyException, DataRoutingService.NullPropertyProvider, DataRoutingService.PropertyProvider -
Field Summary
Fields inherited from interface com.illumon.iris.db.v2.routing.DataRoutingService
DEFAULT_LOCAL_TABLE_DATA_SERVICE, DEFAULT_QUERY_SERVER_TABLE_DATA_SERVICE, DEFAULT_SELECTION_TAG, HOST_TAG, MERGE_QUERY_TDS_TAG, NULL_PROPERTY_PROVIDER, PORT_TAG, QUERY_QUERY_TDS_TAG, SERVICE_REGISTRY_NONE, SERVICE_REGISTRY_SERVICE, TABLE_DATA_PORT_TAG, TABLE_DATA_SERVICE_CONFIG_PROP, TABLE_DATA_SERVICE_CONFIG_PROPS_WITH_LEGACY, TAILER_PORT_TAG, VALIDATE_QUERY_TDS_TAG -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDataRoutingServiceYmlImpl(String sourceIdentifier) Protected constructor.protectedDataRoutingServiceYmlImpl(String sourceIdentifier, String originalInput, Collection<DataImportServiceConfig> disConfigs) This is useful for testing. -
Method Summary
Modifier and TypeMethodDescriptionabout()Information about a DataRoutingService instance.This gets the input YAML, saved so it can be sent via grpc.voidclose()static FiltercreateFilter(CollectedClaims collectedClaims, Object ymlFilterSpecObj, String context) Factory method for creating aFilterfrom yml input.static FiltercreateIfNotClaimedFilter(CollectedClaims collectedClaims, Object ymlFilterSpecObj, String context) Factory method for creating aIfNotClaimedFilterfrom yml input.getAllDataImportServiceConfigs(boolean excludeCoreConfigs) Get all DIS configs, optionally excluding core configs (those defined in the main routing yml file) For consumption by administrative tools.Collection<? extends DataImportServiceConfig.EndpointConfig>Get all known DataImportServer destination configs.Collection<? extends LogAggregatorConfig>Return all log aggregator configurations.Get the current claims for this owner (DataRoutingService).Get DIS parameters for this named DIS instance.Collection<? extends DataImportServiceConfig.EndpointConfig>getDataImportServiceDestinationConfigs(TableIdentifier tableIdentifier) Get DIS destination configs for a table key.Get a name for the implementing class.getLogAggregatorConfig(String name) Get configuration for the named log aggregator service instance.getLogAggregatorDestinationConfig(TableIdentifier tableIdentifier) Get the single LAS destination configuration for the given table key.getStorage(String name) Get the StorageConfig associated with the given name.Information needed to configure a table data service server.Collection<? extends TableDataServiceConfig>Get all known table data service configurations.static ClaimSetparseClaims(Object ymlFilterSpecObj, String context) Parse the claims section.voidOpen and read a file and delegate to the string parser.voidparseFile(String filename, Collection<DataImportServiceConfig> disConfigs) Open and read a file and delegate to the string parser.voidparseString(String ymlString, Collection<DataImportServiceConfig> disConfigs) Parse the yaml data in the given string.voidregisterClaims(DataImportServiceConfig disConfig) Notify this DataRoutingService that a claim has been made by a DIS.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.illumon.iris.db.v2.routing.DataRoutingService
authenticate, authenticate, authenticate, getAllDataImportServiceConfigs, getAllDataImportServiceDeferredDestinations, getAllDataImportServiceDestinations, getDataImportServiceConfigWithStorage, getDataImportServiceDeferredDestinations, getDataImportServiceDestinations, getLocalInstance, getLogAggregatorDeferredDestination, getLogAggregatorDestinationMethods inherited from interface com.illumon.iris.db.v2.routing.DataRoutingService.NonListening
listen, removeListener, supportsChangeNotificationMethods inherited from interface com.illumon.iris.db.v2.routing.endpoint.EndpointResolver
resolveLogAggregatorEndpoint, resolveTableDataEndpoint, resolveTailerEndpoint
-
Constructor Details
-
DataRoutingServiceYmlImpl
Protected constructor. Subclasses must ensure parse() is called to complete construction.- Parameters:
sourceIdentifier- identifier for this instance
-
DataRoutingServiceYmlImpl
protected DataRoutingServiceYmlImpl(@NotNull String sourceIdentifier, @NotNull String originalInput, @NotNull Collection<DataImportServiceConfig> disConfigs) This is useful for testing. It's only called from a factory method.- Parameters:
sourceIdentifier- identifier for this instanceoriginalInput- the input data to parse, and will be returned from asYamlStringdisConfigs- the DataImportServiceConfig instances to add in
-
-
Method Details
-
registerClaims
Notify this DataRoutingService that a claim has been made by a DIS. This information will be made globally available in a parsing step, either now or later.- Specified by:
registerClaimsin interfaceClaimsProvider- Parameters:
disConfig- the configuration of the DIS making the claims
-
createFilter
@NotNull public static Filter createFilter(@NotNull CollectedClaims collectedClaims, @Nullable Object ymlFilterSpecObj, @NotNull String context) Factory method for creating aFilterfrom yml input.- Parameters:
collectedClaims- the collected claims of the full routing service, for claimed/unclaimed filtersymlFilterSpecObj- the raw yml chunk.context- string for context in the possible exception- Returns:
- a valid
Filterbased on the yml spec.
-
createIfNotClaimedFilter
@NotNull public static Filter createIfNotClaimedFilter(@NotNull CollectedClaims collectedClaims, @Nullable Object ymlFilterSpecObj, @NotNull String context) Factory method for creating aIfNotClaimedFilterfrom yml input. Only the DIS filter supports Claims.- Parameters:
collectedClaims- the collected claims of the full routing service, for claimed/unclaimed filtersymlFilterSpecObj- the raw yml chunk.context- string for context in the possible exception- Returns:
- a valid
Filterbased on the yml spec.
-
parseClaims
Parse the claims section.- Parameters:
ymlFilterSpecObj- the raw yml chunk.context- string for context in the possible exception- Returns:
- parsed summary of claims made
-
getCollectedClaims
Description copied from interface:ClaimsProviderGet the current claims for this owner (DataRoutingService).- Specified by:
getCollectedClaimsin interfaceClaimsProvider- Returns:
- the current CollectedClaims
-
about
Description copied from interface:DataRoutingServiceInformation about a DataRoutingService instance. Useful for debugging.- Specified by:
aboutin interfaceDataRoutingService- Returns:
- a string containing information about the instance
-
getDataImportServiceConfig
Description copied from interface:DataRoutingServiceGet DIS parameters for this named DIS instance. For consumption by a DIS instance or TableDataService consumer.- Specified by:
getDataImportServiceConfigin interfaceDataRoutingService- Parameters:
name- DIS configuration name- Returns:
- the configuration for the named DIS, or null if it does not exist.
-
getDataImportServiceDestinationConfigs
@NotNull public Collection<? extends DataImportServiceConfig.EndpointConfig> getDataImportServiceDestinationConfigs(@NotNull TableIdentifier tableIdentifier) Description copied from interface:DataRoutingServiceGet DIS destination configs for a table key. For consumption by a Tailer.- Specified by:
getDataImportServiceDestinationConfigsin interfaceDataRoutingService- Parameters:
tableIdentifier- the identifier of the data to be logged- Returns:
- a possibly empty collection of DIS destinations that should receive data for the given table.
-
getAllDataImportServiceConfigs
@NotNull public Map<String,DataImportServiceConfig> getAllDataImportServiceConfigs(boolean excludeCoreConfigs) Description copied from interface:DataRoutingServiceGet all DIS configs, optionally excluding core configs (those defined in the main routing yml file) For consumption by administrative tools.- Specified by:
getAllDataImportServiceConfigsin interfaceDataRoutingService- Parameters:
excludeCoreConfigs- if true, exclude core configs- Returns:
- a possibly empty collection of all/non-core DIS configs
-
getAllDataImportServiceDestinationConfigs
@NotNull public Collection<? extends DataImportServiceConfig.EndpointConfig> getAllDataImportServiceDestinationConfigs()Description copied from interface:DataRoutingServiceGet all known DataImportServer destination configs. This includes destination configs with disabled tailer ports. For consumption by a Tailer.- Specified by:
getAllDataImportServiceDestinationConfigsin interfaceDataRoutingService- Returns:
- a possibly null collection of all known DIS destinations.
-
getLogAggregatorConfig
Description copied from interface:DataRoutingServiceGet configuration for the named log aggregator service instance.- Specified by:
getLogAggregatorConfigin interfaceDataRoutingService- Parameters:
name- the LAS configuration name- Returns:
- the configuration for the named log aggregator, no null if it does not exist
-
getLogAggregatorDestinationConfig
@Nullable public LogAggregatorConfig.EndpointConfig getLogAggregatorDestinationConfig(@NotNull TableIdentifier tableIdentifier) Description copied from interface:DataRoutingServiceGet the single LAS destination configuration for the given table key.- Specified by:
getLogAggregatorDestinationConfigin interfaceDataRoutingService- Parameters:
tableIdentifier- the identifier of the data to be logged- Returns:
- the LogAggregatorEndpoint for the given tableIdentifier, or null if none match the key.
-
getAllLogAggregatorServiceConfigs
Description copied from interface:DataRoutingServiceReturn all log aggregator configurations.- Specified by:
getAllLogAggregatorServiceConfigsin interfaceDataRoutingService- Returns:
- a collection of all configured log aggregators.
-
getTableDataServiceConfig
Description copied from interface:DataRoutingServiceInformation needed to configure a table data service server. For use by a TableDataService provider (LocalTableDataServer,TableDataCacheProxy).- Specified by:
getTableDataServiceConfigin interfaceDataRoutingService- Parameters:
name- configuration name- Returns:
- the named TableDataServiceConfig, or null if not found.
-
getTableDataServiceConfigs
Description copied from interface:DataRoutingServiceGet all known table data service configurations. The data includes name description and tags.- Specified by:
getTableDataServiceConfigsin interfaceDataRoutingService- Returns:
- all known TableDataServiceConfigs
-
asYamlString
This gets the input YAML, saved so it can be sent via grpc.- Specified by:
asYamlStringin interfaceDataRoutingService- Returns:
- YAML representation of the configuration
-
getStorage
Description copied from interface:StorageLookupGet the StorageConfig associated with the given name.- Specified by:
getStoragein interfaceStorageLookup- Parameters:
name- The name of the storage to look up. May be null, in which case null will always be returned.- Returns:
- The storage config, or null if not found
-
getImplementationName
Description copied from interface:NamedImplementationGet a name for the implementing class. Useful for abstract classes that implement
LogOutputAppendableor overridetoString.The default implementation is correct, but not suitable for high-frequency usage.
- Specified by:
getImplementationNamein interfaceNamedImplementation- Returns:
- A name for the implementing class
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceSafeCloseable
-
parseFile
Open and read a file and delegate to the string parser.- Parameters:
filename- the filename to read. Resources on the classpath will be searched.- Throws:
IOException- if the file can't be found or processed.
-
parseFile
public void parseFile(@NotNull String filename, @NotNull Collection<DataImportServiceConfig> disConfigs) throws IOException Open and read a file and delegate to the string parser.- Parameters:
filename- the filename to read. Resources on the classpath will be searched.disConfigs- the DataImportServiceConfig instances to add in- Throws:
IOException- if the file can't be found or processed.
-
parseString
Parse the yaml data in the given string.- Parameters:
ymlString- the string to parsedisConfigs- the DataImportServiceConfig instances to add in
-
toString
-