Class SelectableService<T>
- java.lang.Object
-
- com.netflix.spinnaker.kork.web.selector.v2.SelectableService<T>
-
- Type Parameters:
T- the type of service to be selected
public class SelectableService<T> extends java.lang.ObjectProvides support for sharding a service based onSelectableService.Parameter. Example of a service definition:bakery: baseUrl: http://bakery.com altBakeryApiEnabled: false timeoutMs: 3000 baseUrls: - baseUrl: http://alt-bakery.us-west-x.com priority: 1 config: altBakeryApiEnabled: true maxItemsCached: 10 parameters: - name: region values: - us-west-1 - us-west-2 - baseUrl: http://alt-bakery.other.com priority: 2 config: altBakeryApiEnabled: true parameters: - name: artifactType values: - RPM - name: baseOS values: - centOS - name: user values: - regx:^[a-f].+@netflix.comUsage:val config = mapOf("timeoutMs", 3000) val selectableBakery: SelectableService<BakeryService> = SelectableService( baseUrls: properties.baseUrls, defaultService: bakery, defaultConfig: config, getServiceByUrlFx: { url -> getService(url)} ) // select by artifact type val authenticatedUser = "alice@netflix.com" val params = listOf(Parameter("artifactType", listOf("RPM")), Parameter("user", listOf(authenticatedUser))) val bakery = selectableBakery.byParameters(params) val result = bakery.getService().createBake(request) // configuration {@link BaseUrl#config} attributes for each service definition are accessible like this if (bakery.config["altBakeryApiEnabled"]) { // Do interesting things } assert bakery.baseUrl == "http://alt-bakery.other.com" assert bakery.config == mapOf("timeoutMs" to 3000, "altBakeryApiEnabled" to true)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSelectableService.BaseUrlstatic classSelectableService.Parameterstatic classSelectableService.SelectedService<T>Represents a selected service
-
Constructor Summary
Constructors Constructor Description SelectableService(java.util.List<SelectableService.BaseUrl> baseUrls, T defaultService, java.util.Map<java.lang.String,java.lang.Object> defaultConfig, java.util.function.Function<java.lang.String,T> getServiceByUrlFx)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description SelectableService.SelectedService<T>byParameters(java.util.List<SelectableService.Parameter> inputParameters)Selects a service based on inputSelectableService.Parameteras criteriaSelectableService.SelectedService<T>getDefaultService()java.util.Map<SelectableService.BaseUrl,T>getServices()
-
-
-
Constructor Detail
-
SelectableService
public SelectableService(java.util.List<SelectableService.BaseUrl> baseUrls, T defaultService, java.util.Map<java.lang.String,java.lang.Object> defaultConfig, java.util.function.Function<java.lang.String,T> getServiceByUrlFx)
-
-
Method Detail
-
byParameters
public SelectableService.SelectedService<T> byParameters(java.util.List<SelectableService.Parameter> inputParameters)
Selects a service based on inputSelectableService.Parameteras criteria- Parameters:
inputParameters- parameters to use to select a service- Returns:
- new
SelectableService.SelectedServicecontaining the selecting parameter.
-
getDefaultService
public SelectableService.SelectedService<T> getDefaultService()
-
getServices
public java.util.Map<SelectableService.BaseUrl,T> getServices()
-
-