blob: 0825c8d38689cacd2b728f165b4f3f7f2a83f93a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for additional information regarding
* copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package org.apache.geode.admin;
import static org.apache.geode.distributed.ConfigurationProperties.BIND_ADDRESS;
import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
import static org.apache.geode.distributed.ConfigurationProperties.LOG_DISK_SPACE_LIMIT;
import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE;
import static org.apache.geode.distributed.ConfigurationProperties.LOG_FILE_SIZE_LIMIT;
import static org.apache.geode.distributed.ConfigurationProperties.LOG_LEVEL;
import static org.apache.geode.distributed.ConfigurationProperties.MCAST_ADDRESS;
import static org.apache.geode.distributed.ConfigurationProperties.MCAST_PORT;
import static org.apache.geode.distributed.ConfigurationProperties.MEMBERSHIP_PORT_RANGE;
import static org.apache.geode.distributed.ConfigurationProperties.NAME;
import static org.apache.geode.distributed.ConfigurationProperties.TCP_PORT;
import static org.apache.geode.internal.net.InetAddressUtils.toHostString;
import java.util.Properties;
import org.apache.geode.annotations.internal.MakeImmutable;
import org.apache.geode.distributed.internal.DistributionConfig;
/**
* Configuration for defining a GemFire distributed system to administrate. This configuration
* includes information about the discovery mechanism used to find members of the distributed system
* and information about {@linkplain ManagedEntity managed entities} such as
* {@linkplain DistributionLocator distribution locators} and {@linkplain CacheVm GemFire cache vms}
* that can be {@linkplain AdminDistributedSystem#start started}.
*
* <P>
*
* Detailed descriptions of many of these configuration attributes can be found in the
* {@link org.apache.geode.distributed.DistributedSystem DistributedSystem} class. Note that the
* default values of these configuration attributes can be specified using Java system properties.
*
* <P>
*
* A <code>DistributedSystemConfig</code> can be modified using a number of mutator methods until
* the <code>AdminDistributedSystem</code> that it configures
* {@linkplain AdminDistributedSystem#connect connects} to the distributed system. After that,
* attempts to modify most attributes in the <code>DistributedSystemConfig</code> will result in an
* {@link IllegalStateException} being thrown. If you wish to use the same
* <code>DistributedSystemConfig</code> to configure multiple <code>AdminDistributedSystem</code>s,
* a copy of the <code>DistributedSystemConfig</code> object can be made by invoking the
* {@link #clone} method.
*
* @since GemFire 3.5
* @deprecated as of 7.0 use the <code><a href=
* "{@docRoot}/org/apache/geode/management/package-summary.html">management</a></code>
* package instead
*/
public interface DistributedSystemConfig extends Cloneable {
/**
* The name of an XML file that specifies the configuration for the {@linkplain ManagedEntity
* managed entities} administered by the <code>DistributedSystem</code>. The XML file must conform
* to a <a href="doc-files/ds5_0.dtd">dtd</a>.
*/
String ENTITY_CONFIG_XML_FILE_NAME = "entity-config-xml-file";
/**
* The default value of the "entity-config-xml-file" property ("distributed-system.xml").
*/
String DEFAULT_ENTITY_CONFIG_XML_FILE = "distributed-system.xml";
/** The name of the "system-id" property */
String SYSTEM_ID_NAME = "system-id";
/** The default value of the "system-id" property ("") */
String DEFAULT_SYSTEM_ID = "Default System";
/** The name of the "name" property. See {@link #getSystemName()}. */
String NAME_NAME = NAME;
/** The default value of the "name" property (""). See {@link #getSystemName()}. */
String DEFAULT_NAME = "";
/** The name of the "mcastPort" property */
String MCAST_PORT_NAME = MCAST_PORT;
/** The default value of the "mcastPort" property (10334) */
int DEFAULT_MCAST_PORT = DistributionConfig.DEFAULT_MCAST_PORT;
/** The minimum mcastPort (0) */
int MIN_MCAST_PORT = DistributionConfig.MIN_MCAST_PORT;
/** The maximum mcastPort (65535) */
int MAX_MCAST_PORT = DistributionConfig.MAX_MCAST_PORT;
/** The name of the "mcastAddress" property */
String MCAST_ADDRESS_NAME = MCAST_ADDRESS;
/** The default value of the "mcastAddress" property (239.192.81.1). */
String DEFAULT_MCAST_ADDRESS = toHostString(DistributionConfig.DEFAULT_MCAST_ADDRESS);
/**
* The name of the "membership-port-range" property
*
* @since GemFire 6.5
*/
String MEMBERSHIP_PORT_RANGE_NAME = MEMBERSHIP_PORT_RANGE;
/**
* The default membership-port-range.
* <p>
* Actual value is <code>[41000,61000]</code>.
*
* @since GemFire 6.5
*/
@MakeImmutable
int[] DEFAULT_MEMBERSHIP_PORT_RANGE = DistributionConfig.DEFAULT_MEMBERSHIP_PORT_RANGE;
/**
* settings for tcp-port
*
* @since GemFire 6.5
*/
String TCP_PORT_NAME = TCP_PORT;
/**
* The default value of the "tcpPort" property.
* <p>
* Actual value is <code>0</code>.
*
* @since GemFire 6.5
*/
int DEFAULT_TCP_PORT = DistributionConfig.DEFAULT_TCP_PORT;
/**
* The default AckWaitThreshold.
* <p>
* Actual value of this constant is <code>15</code> seconds.
*/
int DEFAULT_ACK_WAIT_THRESHOLD = DistributionConfig.DEFAULT_ACK_WAIT_THRESHOLD;
/**
* The minimum AckWaitThreshold.
* <p>
* Actual value of this constant is <code>1</code> second.
*/
int MIN_ACK_WAIT_THRESHOLD = DistributionConfig.MIN_ACK_WAIT_THRESHOLD;
/**
* The maximum AckWaitThreshold.
* <p>
* Actual value of this constant is <code>MAX_INT</code> seconds.
*/
int MAX_ACK_WAIT_THRESHOLD = DistributionConfig.MIN_ACK_WAIT_THRESHOLD;
/**
* The default ackSevereAlertThreshold.
* <p>
* Actual value of this constant is <code>0</code> seconds, which turns off forced disconnects
* based on ack wait periods.
*/
int DEFAULT_ACK_SEVERE_ALERT_THRESHOLD = DistributionConfig.DEFAULT_ACK_SEVERE_ALERT_THRESHOLD;
/**
* The minimum ackSevereAlertThreshold.
* <p>
* Actual value of this constant is <code>0</code> second, which turns off forced disconnects
* based on ack wait periods.
*/
int MIN_ACK_SEVERE_ALERT_THRESHOLD = DistributionConfig.MIN_ACK_SEVERE_ALERT_THRESHOLD;
/**
* The maximum ackSevereAlertThreshold.
* <p>
* Actual value of this constant is <code>MAX_INT</code> seconds.
*/
int MAX_ACK_SEVERE_ALERT_THRESHOLD = DistributionConfig.MAX_ACK_SEVERE_ALERT_THRESHOLD;
/** The name of the "locators" property (comma-delimited host[port] list) */
String LOCATORS_NAME = LOCATORS;
/** The default value of the "locators" property ("") */
String DEFAULT_LOCATORS = DistributionConfig.DEFAULT_LOCATORS;
/** The name of the "bindAddress" property */
String BIND_ADDRESS_NAME = BIND_ADDRESS;
/** The default value of the "bindAddress" property */
String DEFAULT_BIND_ADDRESS = DistributionConfig.DEFAULT_BIND_ADDRESS;
/** The name of the remote-command property */
String REMOTE_COMMAND_NAME = "remote-command";
/** The default value of the remote-command property */
String DEFAULT_REMOTE_COMMAND = "rsh -n {HOST} {CMD}";
/** The default disable-tcp value (<code>false</code>) */
boolean DEFAULT_DISABLE_TCP = DistributionConfig.DEFAULT_DISABLE_TCP;
/** The default disable-jmx value (<code>false</code>) */
boolean DEFAULT_DISABLE_JMX = DistributionConfig.DEFAULT_DISABLE_JMX;
/** The default enable-network-partition-detection setting (<code>false</code>) */
boolean DEFAULT_ENABLE_NETWORK_PARTITION_DETECTION =
DistributionConfig.DEFAULT_ENABLE_NETWORK_PARTITION_DETECTION;
/** The default disable-auto-reconnect setting (<code>false</code>) */
boolean DEFAULT_DISABLE_AUTO_RECONNECT = DistributionConfig.DEFAULT_DISABLE_AUTO_RECONNECT;
/** The default failure-detection timeout period for member heart-beat responses */
int DEFAULT_MEMBER_TIMEOUT = DistributionConfig.DEFAULT_MEMBER_TIMEOUT;
/** The name of the "logFile" property */
String LOG_FILE_NAME = LOG_FILE;
/**
* The default log-file value ("" which directs logging to standard output)
*/
String DEFAULT_LOG_FILE = "";
/** The name of the "logLevel" property */
String LOG_LEVEL_NAME = LOG_LEVEL;
/** The default log level ("config") */
String DEFAULT_LOG_LEVEL = "config";
/** The name of the "LogDiskSpaceLimit" property */
String LOG_DISK_SPACE_LIMIT_NAME = LOG_DISK_SPACE_LIMIT;
/** The default log disk space limit in megabytes (0) */
int DEFAULT_LOG_DISK_SPACE_LIMIT = DistributionConfig.DEFAULT_LOG_DISK_SPACE_LIMIT;
/** The minimum log disk space limit in megabytes (0) */
int MIN_LOG_DISK_SPACE_LIMIT = DistributionConfig.MIN_LOG_DISK_SPACE_LIMIT;
/** The minimum log disk space limit in megabytes (1000000) */
int MAX_LOG_DISK_SPACE_LIMIT = DistributionConfig.MAX_LOG_DISK_SPACE_LIMIT;
/** The name of the "LogFileSizeLimit" property */
String LOG_FILE_SIZE_LIMIT_NAME = LOG_FILE_SIZE_LIMIT;
/** The default log file size limit in megabytes (0) */
int DEFAULT_LOG_FILE_SIZE_LIMIT = DistributionConfig.DEFAULT_LOG_FILE_SIZE_LIMIT;
/** The minimum log file size limit in megabytes (0) */
int MIN_LOG_FILE_SIZE_LIMIT = DistributionConfig.MIN_LOG_FILE_SIZE_LIMIT;
/** The minimum log file size limit in megabytes (1000000) */
int MAX_LOG_FILE_SIZE_LIMIT = DistributionConfig.MAX_LOG_FILE_SIZE_LIMIT;
/**
* The name of the "refreshInterval" property which will apply to SystemMember, SystemMemberCache
* and StatisticResource refresh. This interval (in seconds) is used for auto-polling and updating
* AdminDistributedSystem constituents including SystemMember, CacheServer, SystemMemberCache and
* StatisticResource. This interval is read-only and retains the value set when the config is
* created. Note that the resource MBeans actually refresh and hit the DS only if there is an RMI
* client connected
*/
String REFRESH_INTERVAL_NAME = "refresh-interval";
/**
* The default "refreshInterval" in seconds which will apply to REFRESH_INTERVAL_NAME property.
* The default value is 15 secs
*/
int DEFAULT_REFRESH_INTERVAL = 15;
////////////////////// Instance Methods //////////////////////
/**
* Returns the name of the XML file that specifies the configuration of the
* {@linkplain org.apache.geode.admin.ManagedEntity managed entities} administered by the
* <code>DistributedSystem</code>. The XML file must conform to a
* <a href="doc-files/ds5_0.dtd">dtd</a>.
*
* @since GemFire 4.0
*/
String getEntityConfigXMLFile();
/**
* Sets the name of the XML file that specifies the configuration of managed entities administered
* by the <code>DistributedSystem</code>.
*/
void setEntityConfigXMLFile(String xmlFile);
/** Returns the string identity for the system */
String getSystemId();
/** Sets the string identity for the system */
void setSystemId(String systemId);
/** Returns the optional non-unique name for the system */
String getSystemName();
/** Sets the optional non-unique name for the system */
void setSystemName(final String name);
/** Returns the multicast address for the system */
String getMcastAddress();
/** Sets the multicast address for the system */
void setMcastAddress(String mcastAddress);
/** Returns the multicast port for the system */
int getMcastPort();
/** Sets the multicast port for the system */
void setMcastPort(int mcastPort);
/** Returns the ack-wait-threshold for the system */
int getAckWaitThreshold();
/** Sets the ack-wait-threshold for the system */
void setAckWaitThreshold(int seconds);
/** Returns the ack-severe-alert-threshold for the system */
int getAckSevereAlertThreshold();
/** Sets the ack-severe-alert-threshold for the system */
void setAckSevereAlertThreshold(int seconds);
/** Returns a comma-delimited list of locators for the system */
String getLocators();
/** Sets the comma-delimited list of locators for the system */
void setLocators(String locators);
/**
* Returns the membership-port-range property of the Distributed System. This range is given as
* two numbers separated by a minus sign.
*
* @since GemFire 6.5
*/
String getMembershipPortRange();
/**
* Sets the membership-port-range property of the Distributed System. This range is given as two
* numbers separated by a minus sign.
*
* @since GemFire 6.5
*/
void setMembershipPortRange(String membershipPortRange);
/**
* Sets the primary communication port number for the Distributed System.
*
* @since GemFire 6.5
*/
void setTcpPort(int port);
/**
* Returns the primary communication port number for the Distributed System.
*
* @since GemFire 6.5
*/
int getTcpPort();
/**
* Sets the disable-tcp property for the system. When tcp is disabled, the cache uses udp for
* unicast messaging. This must be consistent across all members of the distributed system. The
* default is to enable tcp.
*/
void setDisableTcp(boolean flag);
/**
* Returns the disable-tcp property for the system. When tcp is disabled, the cache uses udp for
* unicast messaging. This must be consistent across all members of the distributed system. The
* default is to enable tcp.
*/
boolean getDisableTcp();
/**
* Sets the disable-jmx property for the system. When JMX is disabled, Geode will not create
* MBeans.
*/
void setDisableJmx(boolean flag);
/**
* Returns the disable-jmx property for the process. When JMX is disabled, Geode will not create
* MBeans.
*/
boolean getDisableJmx();
/**
* Turns on network partition detection
*/
void setEnableNetworkPartitionDetection(boolean newValue);
/**
* Returns true if network partition detection is enabled.
*/
boolean getEnableNetworkPartitionDetection();
/**
* Disables auto reconnect after being forced out of the distributed system
*/
void setDisableAutoReconnect(boolean newValue);
/**
* Returns true if auto reconnect is disabled
*/
boolean getDisableAutoReconnect();
/**
* Returns the member-timeout millisecond value used in failure-detection protocols
*/
int getMemberTimeout();
/**
* Set the millisecond value of the member-timeout used in failure-detection protocols. This
* timeout determines how long a member has to respond to a heartbeat request. The member is given
* three chances before being kicked out of the distributed system with a SystemConnectException.
*/
void setMemberTimeout(int value);
/**
* Returns the IP address to which the distributed system's server sockets are bound.
*
* @since GemFire 4.0
*/
String getBindAddress();
/**
* Sets the IP address to which the distributed system's server sockets are bound.
*
* @since GemFire 4.0
*/
void setBindAddress(String bindAddress);
/**
* Returns the IP address to which client/server server sockets are bound
*/
String getServerBindAddress();
/**
* Sets the IP address to which a server cache will bind when listening for client cache
* connections.
*/
void setServerBindAddress(String bindAddress);
/** Returns the remote command setting to use for remote administration */
String getRemoteCommand();
/**
* Sets the remote command setting to use for remote administration. This attribute may be
* modified after this <code>DistributedSystemConfig</code> has been used to create an
* <codE>AdminDistributedSystem</code>.
*/
void setRemoteCommand(String command);
/** Returns the value of the "ssl-enabled" property. */
boolean isSSLEnabled();
/** Sets the value of the "ssl-enabled" property. */
void setSSLEnabled(boolean enabled);
/** Returns the value of the "ssl-protocols" property. */
String getSSLProtocols();
/** Sets the value of the "ssl-protocols" property. */
void setSSLProtocols(String protocols);
/** Returns the value of the "ssl-ciphers" property. */
String getSSLCiphers();
/** Sets the value of the "ssl-ciphers" property. */
void setSSLCiphers(String ciphers);
/** Returns the value of the "ssl-require-authentication" property. */
boolean isSSLAuthenticationRequired();
/** Sets the value of the "ssl-require-authentication" property. */
void setSSLAuthenticationRequired(boolean authRequired);
/** Returns the provider-specific properties for SSL. */
Properties getSSLProperties();
/** Sets the provider-specific properties for SSL. */
void setSSLProperties(Properties sslProperties);
/** Adds an SSL property */
void addSSLProperty(String key, String value);
/** Removes an SSL property */
void removeSSLProperty(String key);
/**
* Returns the name of the log file to which informational messages are written.
*
* @see org.apache.geode.LogWriter
*/
String getLogFile();
/**
* Sets the name of the log file to which informational messages are written.
*
* @see org.apache.geode.LogWriter
*/
void setLogFile(String logFile);
/**
* Returns the level at which informational messages are logged.
*/
String getLogLevel();
/**
* Sets the level at which information messages are logged.
*/
void setLogLevel(String logLevel);
/**
* Returns the log disk space limit in megabytes
*/
int getLogDiskSpaceLimit();
/**
* Sets the log disk space limit in megabytes
*/
void setLogDiskSpaceLimit(int limit);
/**
* Returns the log file size limit in megabytes
*/
int getLogFileSizeLimit();
/**
* Sets the log file size limit in megabytes
*/
void setLogFileSizeLimit(int limit);
/**
* Returns the refreshInterval in seconds used for auto-polling and updating
* AdminDistributedSystem constituents including SystemMember, CacheServer, SystemMemberCache and
* StatisticResource
*
* @since GemFire 6.0
*/
int getRefreshInterval();
/**
* Sets the refreshInterval in seconds
*
* @since GemFire 6.0
*/
void setRefreshInterval(int timeInSecs);
/**
* Returns an array of configurations for statically known <code>CacheServers</code>.
*
* @deprecated as of 5.7 use {@link #getCacheVmConfigs} instead.
*/
@Deprecated
CacheServerConfig[] getCacheServerConfigs();
/**
* Creates the configuration for a CacheServer
*
* @deprecated as of 5.7 use {@link #createCacheVmConfig} instead.
*/
@Deprecated
CacheServerConfig createCacheServerConfig();
/**
* Removes the configuration for a CacheServer
*
* @deprecated as of 5.7 use {@link #removeCacheVmConfig} instead.
*/
@Deprecated
void removeCacheServerConfig(CacheServerConfig managerConfig);
/**
* Returns an array of configurations for statically known {@link CacheVm}s.
*
* @since GemFire 5.7
*/
CacheVmConfig[] getCacheVmConfigs();
/**
* Creates the configuration for a {@link CacheVm}.
*
* @since GemFire 5.7
*/
CacheVmConfig createCacheVmConfig();
/**
* Removes the configuration for a {@link CacheVm}
*
* @since GemFire 5.7
*/
void removeCacheVmConfig(CacheVmConfig existing);
/**
* Returns configuration information about {@link DistributionLocator}s that are managed by an
* <code>AdminDistributedSystem</code>.
*/
DistributionLocatorConfig[] getDistributionLocatorConfigs();
/**
* Creates a new <code>DistributionLocatorConfig</code> for a distribution locator that is managed
* in this distributed system. The default locator config is set to not use multicast
*/
DistributionLocatorConfig createDistributionLocatorConfig();
/**
* Removes a <code>DistributionLocatorConfig</code> from the distributed system.
*/
void removeDistributionLocatorConfig(DistributionLocatorConfig config);
/** Registers listener for notification of changes in this config. */
void addListener(ConfigListener listener);
/** Removes previously registered listener of this config. */
void removeListener(ConfigListener listener);
/**
* Validates that this distributed system configuration is correct and consistent.
*
* @throws IllegalStateException If this config is not valid
* @throws AdminXmlException If the {@linkplain #getEntityConfigXMLFile entity config XML file} is
* not valid
*/
void validate();
/**
* Returns a copy of this <code>DistributedSystemConfig</code> object whose configuration can be
* modified. Note that this {@link DistributedSystemConfig.ConfigListener ConfigListener}s that
* are registered on this config object are not cloned.
*
* @since GemFire 4.0
*/
Object clone() throws CloneNotSupportedException;
////////////////////// Inner Classes //////////////////////
/**
* A listener whose callback methods are invoked when this config changes.
*/
interface ConfigListener extends java.util.EventListener {
/** Invoked when this configurated is changed. */
void configChanged(DistributedSystemConfig config);
}
}