blob: b7f0693e9ea7b8c32335011018211c5c12357938 [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.internal.admin;
import org.apache.geode.admin.AdminException;
import org.apache.geode.admin.GemFireHealth;
import org.apache.geode.admin.GemFireHealthConfig;
import org.apache.geode.admin.GemFireMemberStatus;
import org.apache.geode.admin.RegionSubRegionSnapshot;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionAttributes;
import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
import org.apache.geode.internal.Config;
/**
* Represents one java vm connected to a GemFire distributed system
*
*/
public interface GemFireVM {
/**
* Constant for lightweight cache inspection. Entry values will be returned as Strings.
*/
int LIGHTWEIGHT_CACHE_VALUE = 100;
/**
* Constant for logical cache inspection. Entry values will be returned as a tree of
* {@link EntryValueNode}s, with each node containing its logical elements.
*/
int LOGICAL_CACHE_VALUE = 200;
/**
* Constant for physical cache inspection. Entry values will be returned as a tree of
* {@link EntryValueNode}s, with each node containing its declared fields.
*/
int PHYSICAL_CACHE_VALUE = 300;
/**
* Returns the host the vm is running on.
*/
java.net.InetAddress getHost();
/**
* Returns the name of the remote system connection.
*/
String getName();
/**
* Returns the directory in which the member runs
*
* @since GemFire 4.0
*/
java.io.File getWorkingDirectory();
/**
* Returns the product directory (the value of GEODE_HOME env variable)
*/
java.io.File getGeodeHomeDir();
/**
* Returns the time the system was started
*/
java.util.Date getBirthDate();
/**
* Returns a String describing the vm's gemfire version info
*
* @since GemFire 3.5
*/
String getVersionInfo();
/**
* Returns all statistic resources except those involving SharedClass
*/
StatResource[] getStats(String statisticsTypeName);
/**
* Returns all statistic resources
*/
StatResource[] getAllStats();
/**
* Returns a snapshot of the distributed lock services
*/
DLockInfo[] getDistributedLockInfo();
/**
* Adds a {@link StatListener} for the given resource and attribute. Changes in value will be
* streamed back from the vm.
*/
void addStatListener(StatListener observer, StatResource observedResource, Stat observedStat);
/**
* Removes {@link StatListener}
*/
void removeStatListener(StatListener observer);
/**
* Adds a {@link HealthListener} with the given configuration to the vm. If a health listener has
* already been added it will be removed and a new one added.
*
* @param cfg determines how and when the health will be checked.
* @since GemFire 3.5
*/
void addHealthListener(HealthListener observer, GemFireHealthConfig cfg);
/**
* Removes an added health listener.
*
* @since GemFire 3.5
*/
void removeHealthListener();
/**
* Resets the current health status to "good".
*
* @since GemFire 3.5
*/
void resetHealthStatus();
/**
* Returns detailed information explaining the current health status. Each array element is a
* different cause for the current status. An empty array will be returned if the current status
* is "good".
*
* @param healthCode The current health status
*
* @since GemFire 3.5
*/
String[] getHealthDiagnosis(GemFireHealth.Health healthCode);
/**
* Returns the runtime {@link Config} from the vm
*/
Config getConfig();
/**
* Returns the runtime {@link org.apache.geode.admin.GemFireMemberStatus} from the vm The idea is
* this snapshot is similar to stats that represent the current state of a running VM. However,
* this is a bit higher level than a stat
*
* @since GemFire 5.7
*/
GemFireMemberStatus getSnapshot();
/**
* Returns the runtime {@link org.apache.geode.admin.RegionSubRegionSnapshot} from the vm The idea
* is this snapshot is quickly salvageable to present a cache's region's info
*
* @since GemFire 5.7
*/
RegionSubRegionSnapshot getRegionSnapshot();
/**
* Sets the runtime configurable parameters in the gemfire vm's {@link Config}
*/
void setConfig(Config cfg);
/**
* Returns the locally running agent through which we access the remote vm
*/
GfManagerAgent getManagerAgent();
/**
* Returns the the main log and the tail of the currently active child log, or just the tail of
* the main log if child logging is disabled.
*/
String[] getSystemLogs();
/**
* Sets the additional classpath settings to be used in the remote vm when processing admin
* messages from the console. It can be changed in between messages.
*/
void setInspectionClasspath(String classpath);
/**
* Returns classpath info set by {@link GemFireVM#setInspectionClasspath}
*/
String getInspectionClasspath();
/**
* Returns the root cache region or null if the root region hasn't been created.
*/
Region[] getRootRegions();
/**
* Return the existing region (or subregion) with the specified path that already exists or is
* already mapped into the cache. Whether or not the path starts with a forward slash it is
* interpreted as a full path starting at a root. Does not cause a shared region to be mapped into
* the cache.
*
* @param c the cache to get the region from
* @param path the path to the region
* @return the Region or null if not found
* @throws IllegalArgumentException if path is null, the empty string, or "/"
* @since GemFire 3.5
*/
Region getRegion(CacheInfo c, String path);
/**
* Creates a new root VM region with the given name and attributes in this remote VM. Information
* about the region is returned.
*
* @throws AdminException If an error occurs while creating the region
*
* @since GemFire 4.0
*/
Region createVMRootRegion(CacheInfo c, String name, RegionAttributes attrs) throws AdminException;
/**
* Creates a new root VM region with the given name and attributes in this remote VM. Information
* about the region is returned.
*
* @throws AdminException If an error occurs while creating the region
*
* @since GemFire 4.0
*/
Region createSubregion(CacheInfo c, String parentPath, String name, RegionAttributes attrs)
throws AdminException;
/**
* Sets the cache inspection mode to {@link #LIGHTWEIGHT_CACHE_VALUE},
* {@link #LOGICAL_CACHE_VALUE}, or {@link #PHYSICAL_CACHE_VALUE}.
*
* @throws IllegalArgumentException if the type is not one of the appropriate constants
*/
void setCacheInspectionMode(int mode);
/**
* Returns one of these constants {@link #LIGHTWEIGHT_CACHE_VALUE}, {@link #LOGICAL_CACHE_VALUE},
* or {@link #PHYSICAL_CACHE_VALUE}.
*/
int getCacheInspectionMode();
/**
* Causes a snapshot of the given region to be taken. Results are streamed back to any
* SnapshotListeners registered with this <code>GemFireVM</code>'s parent {@link GfManagerAgent}.
*
* @param regionName the region to snapshot
*/
void takeRegionSnapshot(String regionName, int snapshotId);
/**
* The distribution ID if this VM. Its used to identify this VM by members if this VM's
* distributed system.
*/
InternalDistributedMember getId();
/**
* Returns information on this vm's cache. If the vm does not have a cache then <code>null</code>
* is returned.
*/
CacheInfo getCacheInfo();
/**
* Sets the lockTimeout configuration value for the given cache and then returns the current info
* for that cache.
*/
CacheInfo setCacheLockTimeout(CacheInfo c, int v) throws AdminException;
/**
* Sets the lockLease configuration value for the given cache and then returns the current info
* for that cache.
*/
CacheInfo setCacheLockLease(CacheInfo c, int v) throws AdminException;
/**
* Sets the searchTimeout configuration value for the given cache and then returns the current
* info for that cache.
*/
CacheInfo setCacheSearchTimeout(CacheInfo c, int v) throws AdminException;
/**
* Adds a cache server a cache in this VM
*
* @since GemFire 4.0
*/
AdminBridgeServer addCacheServer(CacheInfo cache) throws AdminException;
/**
* Returns information about a cache server that runs in this VM
*
* @param id The unique {@link AdminBridgeServer#getId id} of the cache server
*/
AdminBridgeServer getBridgeInfo(CacheInfo cache, int id) throws AdminException;
/**
* Starts a cache server in this VM
*
* @since GemFire 4.0
*/
AdminBridgeServer startBridgeServer(CacheInfo cache, AdminBridgeServer bridge)
throws AdminException;
/**
* Stops a cache server in this VM
*
* @since GemFire 4.0
*/
AdminBridgeServer stopBridgeServer(CacheInfo cache, AdminBridgeServer bridge)
throws AdminException;
/**
* This method should be used to set the Alerts Manager for the member agent. Stat Alerts
* Aggregator would use this method to set stat Alerts Manager with the available alert
* definitions and the refresh interval set for each member joining the distributed system.
*
* @param alertDefs Stat Alert Definitions to set for the Alerts Manager
* @param refreshInterval refresh interval to be used by the Alerts Manager
* @param setRemotely whether to be set on remote VM
*
* @since GemFire 5.7
*/
void setAlertsManager(StatAlertDefinition[] alertDefs, long refreshInterval, boolean setRemotely);
/**
* This method would be used to set refresh interval for the GemFireVM. This method would mostly
* be called on each member after initial set up whenever the refresh interval is changed.
*
* @param refreshInterval refresh interval to set (in milliseconds)
*
* @since GemFire 5.7
*/
void setRefreshInterval(long refreshInterval);
/**
* This method would be used to set Sta Alert Definitions for the GemFireVM. This method would
* mostly be called on each member after initial set up whenever one or more Stat Alert
* Definitions get added/updated/removed.
*
* @param alertDefs an array of StaAlertDefinition objects
* @param actionCode one of UpdateAlertDefinitionRequest.ADD_ALERT_DEFINITION,
* UpdateAlertDefinitionRequestUPDATE_ALERT_DEFINITION,
* UpdateAlertDefinitionRequest.REMOVE_ALERT_DEFINITION
*
* @since GemFire 5.7
*/
void updateAlertDefinitions(StatAlertDefinition[] alertDefs, int actionCode);
}