Package com.hazelcast.azure
Class AzureDiscoveryStrategyFactory
- java.lang.Object
-
- com.hazelcast.azure.AzureDiscoveryStrategyFactory
-
- All Implemented Interfaces:
DiscoveryStrategyFactory
public class AzureDiscoveryStrategyFactory extends java.lang.Object implements DiscoveryStrategyFactory
Factory class which returnsAzureDiscoveryStrategy
to Discovery SPI
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.hazelcast.spi.discovery.DiscoveryStrategyFactory
DiscoveryStrategyFactory.DiscoveryStrategyLevel
-
-
Constructor Summary
Constructors Constructor Description AzureDiscoveryStrategyFactory()
-
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 Azure.DiscoveryStrategy
newDiscoveryStrategy(DiscoveryNode node, 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 node, 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:
node
- 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 Azure.To check if Hazelcast is running on Azure, we first check whether "internal.cloudapp.net" is present in the file "/etc/resolv.conf". Such an approach is not officially documented but seems like a good enough heuristic to detect an Azure Compute VM Instance. Since it's not the official method, we still need to make an API call to a local, non-routable address http://169.254.169.254/metadata/instance.
- Specified by:
isAutoDetectionApplicable
in interfaceDiscoveryStrategyFactory
- Returns:
- true if running on Azure Instance
- See Also:
- Azure Instance Metadata API
-
discoveryStrategyLevel
public DiscoveryStrategyFactory.DiscoveryStrategyLevel discoveryStrategyLevel()
Description copied from interface:DiscoveryStrategyFactory
Level of the discovery strategy.- Specified by:
discoveryStrategyLevel
in interfaceDiscoveryStrategyFactory
-
-