Package com.hazelcast.gcp
Class GcpDiscoveryStrategyFactory
- java.lang.Object
-
- com.hazelcast.gcp.GcpDiscoveryStrategyFactory
-
- All Implemented Interfaces:
DiscoveryStrategyFactory
public class GcpDiscoveryStrategyFactory extends java.lang.Object implements DiscoveryStrategyFactory
Factory class which returnsGcpDiscoveryStrategy
to Discovery SPI.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.hazelcast.spi.discovery.DiscoveryStrategyFactory
DiscoveryStrategyFactory.DiscoveryStrategyLevel
-
-
Constructor Summary
Constructors Constructor Description GcpDiscoveryStrategyFactory()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DiscoveryStrategyFactory.DiscoveryStrategyLevel
discoveryStrategyLevel()
Level of the discovery strategy.java.util.Collection<PropertyDefinition>
getConfigurationProperties()
Returns a set of the expected configuration properties.java.lang.Class<? extends DiscoveryStrategy>
getDiscoveryStrategyType()
Returns the type of theDiscoveryStrategy
itself.boolean
isAutoDetectionApplicable()
Checks if Hazelcast is running on GCP.DiscoveryStrategy
newDiscoveryStrategy(DiscoveryNode discoveryNode, ILogger logger, java.util.Map<java.lang.String,java.lang.Comparable> properties)
Instantiates a new instance of theDiscoveryStrategy
with the given configuration properties.
-
-
-
Method Detail
-
getDiscoveryStrategyType
public java.lang.Class<? extends DiscoveryStrategy> getDiscoveryStrategyType()
Description copied from interface:DiscoveryStrategyFactory
Returns the type of theDiscoveryStrategy
itself.- Specified by:
getDiscoveryStrategyType
in interfaceDiscoveryStrategyFactory
- Returns:
- the type of the discovery strategy
-
newDiscoveryStrategy
public DiscoveryStrategy newDiscoveryStrategy(DiscoveryNode discoveryNode, ILogger logger, java.util.Map<java.lang.String,java.lang.Comparable> properties)
Description copied from interface:DiscoveryStrategyFactory
Instantiates a new instance of theDiscoveryStrategy
with the given configuration properties. The providedHazelcastInstance
can be used to register instances in a service registry whenever the discovery strategy is started.- Specified by:
newDiscoveryStrategy
in interfaceDiscoveryStrategyFactory
- Parameters:
discoveryNode
- the current localDiscoveryNode
, representing the local connection information if running on a Hazelcast member, otherwise on Hazelcast clients alwaysnull
logger
- the logger instanceproperties
- the properties parsed from the configuration- Returns:
- a new instance of the discovery strategy
-
getConfigurationProperties
public java.util.Collection<PropertyDefinition> getConfigurationProperties()
Description copied from interface:DiscoveryStrategyFactory
Returns a set of the expected configuration properties. These properties contain information about the value type of the property, if it is required and a possible validator to automatically test and convert values from the XML configuration.- Specified by:
getConfigurationProperties
in interfaceDiscoveryStrategyFactory
- Returns:
- a set of expected configuration properties
-
isAutoDetectionApplicable
public boolean isAutoDetectionApplicable()
Checks if Hazelcast is running on GCP.To check if Hazelcast is running on GCP, we first check whether the internal DNS is configured for "google.internal" in either "/etc/resolv.conf" or "/etc/hosts". Such an approach is not officially documented but seems like a good enough heuristic to detect a GCP Compute VM Instance. Since it's not the official method, we still need to make an API call to "metadata.google.internal" which will resolve to a local, non-routable address http://169.254.169.254/. Finally, we check if there is a service account attached for this instance because without a service account Hazelcast GCP discovery will not work.
- Specified by:
isAutoDetectionApplicable
in interfaceDiscoveryStrategyFactory
- Returns:
- true if running on GCP Instance which has a service account attached
- See Also:
- GCP Managing Instances
-
discoveryStrategyLevel
public DiscoveryStrategyFactory.DiscoveryStrategyLevel discoveryStrategyLevel()
Description copied from interface:DiscoveryStrategyFactory
Level of the discovery strategy.- Specified by:
discoveryStrategyLevel
in interfaceDiscoveryStrategyFactory
-
-