You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ji...@apache.org on 2019/06/28 18:10:15 UTC
[geode] branch develop updated: GEODE-6861: separate static config object from runtime info in the Cl… (#3754)
This is an automated email from the ASF dual-hosted git repository.
jinmeiliao pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 2c39f92 GEODE-6861: separate static config object from runtime info in the Cl… (#3754)
2c39f92 is described below
commit 2c39f92dc5fa129058144a9ec16606092dc3d51e
Author: Jinmei Liao <ji...@pivotal.io>
AuthorDate: Fri Jun 28 11:10:02 2019 -0700
GEODE-6861: separate static config object from runtime info in the Cl… (#3754)
Co-authored-by: Joris Melchior <jo...@gmail.com>
* use ConfigRealizer to retrieve the runtime information for configuration on each member
* list result would return a List of Response object which has a configuration object and a list runtime objects
* use existing object for runtime member info and move them to geode-management module.
---
.../geode/test/junit/rules/HttpResponseAssert.java | 2 +-
.../resources/ManagementClientCreateRegion.java | 7 +-
...ateRegionWithDiskstoreAndSecurityDUnitTest.java | 6 +-
.../rest/ClientClusterManagementSSLTest.java | 10 +-
.../ClientClusterManagementServiceDunitTest.java | 8 +-
...ClusterManagementLocatorReconnectDunitTest.java | 3 +-
.../rest/ClusterManagementServiceOnServerTest.java | 2 +-
.../rest/ListIndexManagementDUnitTest.java | 26 +--
.../rest/ListRegionManagementDunitTest.java | 42 ++--
.../rest/ManagementRequestLoggingDUnitTest.java | 2 +-
.../rest/MemberManagementServiceDunitTest.java | 30 ++-
.../internal/rest/RegionManagementDunitTest.java | 11 +-
.../internal/DisabledClusterConfigTest.java | 2 +-
.../integrationTest/resources/assembly_content.txt | 11 +-
.../internal/api/RegionAPIDUnitTest.java | 6 +-
.../RegionConfigMutatorIntegrationTest.java | 2 +-
.../management/internal/CacheElementOperation.java | 2 +-
.../api/GeodeClusterManagementServiceBuilder.java | 2 +-
.../api/LocatorClusterManagementService.java | 194 ++++++++++-------
.../internal/cli/commands/CreateIndexCommand.java | 13 +-
.../cli/commands/DescribeMemberCommand.java | 6 +-
...Function.java => CacheRealizationFunction.java} | 55 +++--
.../functions/GatewayReceiverCreateFunction.java | 3 +-
.../functions/GetMemberInformationFunction.java | 153 ++++++-------
.../cli/functions/RegionCreateFunction.java | 3 +-
.../mutators/ConfigurationManager.java | 5 +-
.../mutators/GatewayReceiverConfigManager.java | 2 +-
.../mutators/MemberConfigManager.java | 154 -------------
.../configuration/mutators/PdxManager.java | 2 +-
.../mutators/RegionConfigManager.java | 43 +---
.../realizers/ConfigurationRealizer.java | 17 +-
.../realizers/GatewayReceiverRealizer.java | 19 +-
.../realizers/MemberConfigRealizer.java | 81 +++++++
.../realizers/RegionConfigRealizer.java | 27 ++-
.../configuration/validators/MemberValidator.java | 34 ++-
.../sanctioned-geode-core-serializables.txt | 5 +-
.../sanctioned-geode-management-serializables.txt | 5 +-
.../cache/configuration/RegionConfigTest.java | 16 ++
.../internal/api/ClusterManagementResultTest.java | 37 +++-
.../api/LocatorClusterManagementServiceTest.java | 33 ++-
.../cli/commands/CreateIndexCommandTest.java | 7 +-
.../mutators/MemberConfigManagerTest.java | 240 ---------------------
.../mutators/RegionConfigManagerTest.java | 29 +--
.../validators/MemberValidatorTest.java | 18 +-
.../assertions/ClusterManagementResultAssert.java | 27 +--
.../cache/configuration/GatewayReceiverConfig.java | 3 +-
.../apache/geode/cache/configuration/PdxType.java | 2 +-
.../geode/cache/configuration/RegionConfig.java | 12 +-
.../management/api/ClusterManagementResult.java | 37 +++-
.../management/api/ClusterManagementService.java | 14 +-
.../apache/geode/management/api/RespondsWith.java | 46 +++-
.../api/{RespondsWith.java => Response.java} | 39 +++-
.../geode/management/api/RestfulEndpoint.java | 5 +-
.../management/configuration/MemberConfig.java | 3 +-
.../configuration/RuntimeMemberConfig.java | 184 ----------------
.../internal/ClientClusterManagementService.java | 12 +-
.../geode/management/runtime}/CacheServerInfo.java | 32 ++-
.../management/runtime}/MemberInformation.java | 20 +-
.../geode/management/runtime/RuntimeInfo.java | 10 +-
.../RuntimeRegionInfo.java} | 29 +--
.../configuration/CacheElementJsonMappingTest.java | 60 ++----
.../cache/configuration/CacheElementTest.java | 14 +-
.../ClientClusterManagementServiceDUnitTest.java | 45 ++--
.../management/client/ConfigurePDXDUnitTest.java | 11 +-
.../client/MemberManagementServiceDUnitTest.java | 50 +++--
.../rest/GatewayManagementIntegrationTest.java | 10 +-
...MemberManagementServiceRestIntegrationTest.java | 42 ++--
.../internal/rest/PdxManagementTest.java | 3 +-
.../rest/RegionManagementIntegrationTest.java | 13 --
.../controllers/GatewayManagementController.java | 7 +-
.../controllers/MemberManagementController.java | 17 +-
.../rest/controllers/PdxManagementController.java | 2 +-
.../controllers/RegionManagementController.java | 47 ++--
.../rest/security/RestSecurityConfiguration.java | 4 +-
74 files changed, 936 insertions(+), 1239 deletions(-)
diff --git a/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/test/junit/rules/HttpResponseAssert.java b/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/test/junit/rules/HttpResponseAssert.java
index 65fd4ae..2a28daa 100644
--- a/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/test/junit/rules/HttpResponseAssert.java
+++ b/geode-assembly/geode-assembly-test/src/main/java/org/apache/geode/test/junit/rules/HttpResponseAssert.java
@@ -78,7 +78,7 @@ public class HttpResponseAssert extends AbstractAssert<HttpResponseAssert, HttpR
}
@SuppressWarnings("unchecked")
- public <R extends CacheElement> ClusterManagementResult<R> getClusterManagementResult()
+ public <R extends CacheElement> ClusterManagementResult getClusterManagementResult()
throws Exception {
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(responseBody, ClusterManagementResult.class);
diff --git a/geode-assembly/src/acceptanceTest/resources/ManagementClientCreateRegion.java b/geode-assembly/src/acceptanceTest/resources/ManagementClientCreateRegion.java
index b83c6d2..c80065d 100644
--- a/geode-assembly/src/acceptanceTest/resources/ManagementClientCreateRegion.java
+++ b/geode-assembly/src/acceptanceTest/resources/ManagementClientCreateRegion.java
@@ -20,7 +20,7 @@ import org.apache.geode.cache.configuration.RegionType;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
import org.apache.geode.management.client.ClusterManagementServiceBuilder;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
+import org.apache.geode.management.runtime.RuntimeRegionInfo;
public class ManagementClientCreateRegion {
public static void main(String[] args) throws Exception {
@@ -47,14 +47,15 @@ public class ManagementClientCreateRegion {
config.setName(regionName);
config.setType(RegionType.REPLICATE);
- ClusterManagementResult<RegionConfig> result = cms.create(config);
+ ClusterManagementResult<?, ?> result = cms.create(config);
if (!result.isSuccessful()) {
throw new RuntimeException(
"Failure creating region: " + result.getStatusMessage());
}
- ClusterManagementResult<RuntimeRegionConfig> listResult = cms.list(new RegionConfig());
+ ClusterManagementResult<RegionConfig, RuntimeRegionInfo> listResult =
+ cms.list(new RegionConfig());
if (!listResult.isSuccessful()) {
throw new RuntimeException("failed " + listResult.getStatusMessage());
}
diff --git a/geode-assembly/src/distributedTest/java/org/apache/geode/management/client/CreateRegionWithDiskstoreAndSecurityDUnitTest.java b/geode-assembly/src/distributedTest/java/org/apache/geode/management/client/CreateRegionWithDiskstoreAndSecurityDUnitTest.java
index 0b46ad2..e76ceb4 100644
--- a/geode-assembly/src/distributedTest/java/org/apache/geode/management/client/CreateRegionWithDiskstoreAndSecurityDUnitTest.java
+++ b/geode-assembly/src/distributedTest/java/org/apache/geode/management/client/CreateRegionWithDiskstoreAndSecurityDUnitTest.java
@@ -84,7 +84,7 @@ public class CreateRegionWithDiskstoreAndSecurityDUnitTest {
ClusterManagementServiceBuilder.buildWithHostAddress()
.setHostAddress("localhost", locator.getHttpPort())
.setCredentials("user", "user").build();
- ClusterManagementResult<RegionConfig> result = client.create(regionConfig);
+ ClusterManagementResult<?, ?> result = client.create(regionConfig);
assertThat(result.isSuccessful()).isFalse();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.UNAUTHORIZED);
assertThat(result.getStatusMessage()).isEqualTo("user not authorized for DATA:MANAGE");
@@ -109,7 +109,7 @@ public class CreateRegionWithDiskstoreAndSecurityDUnitTest {
ClusterManagementServiceBuilder.buildWithHostAddress()
.setHostAddress("localhost", locator.getHttpPort())
.setCredentials("data", "data").build();
- ClusterManagementResult<RegionConfig> result = client.create(regionConfig);
+ ClusterManagementResult<?, ?> result = client.create(regionConfig);
assertThat(result.isSuccessful()).isFalse();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.UNAUTHORIZED);
assertThat(result.getStatusMessage()).isEqualTo("data not authorized for CLUSTER:WRITE:DISK");
@@ -136,7 +136,7 @@ public class CreateRegionWithDiskstoreAndSecurityDUnitTest {
ClusterManagementServiceBuilder.buildWithHostAddress()
.setHostAddress("localhost", locator.getHttpPort())
.setCredentials("data,cluster", "data,cluster").build();
- ClusterManagementResult<RegionConfig> result = client.create(regionConfig);
+ ClusterManagementResult<?, ?> result = client.create(regionConfig);
assertThat(result.isSuccessful()).isTrue();
gfsh.executeAndAssertThat("describe disk-store --name=DISKSTORE --member=server-1")
diff --git a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClientClusterManagementSSLTest.java b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClientClusterManagementSSLTest.java
index 6698d52..5d19614 100644
--- a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClientClusterManagementSSLTest.java
+++ b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClientClusterManagementSSLTest.java
@@ -105,7 +105,7 @@ public class ClientClusterManagementSSLTest {
.setHostnameVerifier(hostnameVerifier)
.setCredentials("dataManage", "dataManage").build();
- ClusterManagementResult<RegionConfig> result = cmsClient.create(region);
+ ClusterManagementResult<?, ?> result = cmsClient.create(region);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.OK);
assertThat(result.getMemberStatuses()).extracting(RealizationResult::getMemberName)
@@ -146,7 +146,7 @@ public class ClientClusterManagementSSLTest {
.setHostnameVerifier(hostnameVerifier)
.setCredentials("dataManage", "wrongPassword").build();
- ClusterManagementResult<RegionConfig> result = cmsClient.create(region);
+ ClusterManagementResult<?, ?> result = cmsClient.create(region);
assertThat(result.isSuccessful()).isFalse();
assertThat(result.getStatusCode())
.isEqualTo(ClusterManagementResult.StatusCode.UNAUTHENTICATED);
@@ -170,7 +170,7 @@ public class ClientClusterManagementSSLTest {
.setHostnameVerifier(hostnameVerifier)
.build();
- ClusterManagementResult<RegionConfig> result = cmsClient.create(region);
+ ClusterManagementResult<?, ?> result = cmsClient.create(region);
assertThat(result.isSuccessful()).isFalse();
assertThat(result.getStatusCode())
.isEqualTo(ClusterManagementResult.StatusCode.UNAUTHENTICATED);
@@ -193,7 +193,7 @@ public class ClientClusterManagementSSLTest {
.setHostnameVerifier(hostnameVerifier)
.setCredentials("dataManage", null).build();
- ClusterManagementResult<RegionConfig> result = cmsClient.create(region);
+ ClusterManagementResult<?, ?> result = cmsClient.create(region);
assertThat(result.isSuccessful()).isFalse();
assertThat(result.getStatusCode())
.isEqualTo(ClusterManagementResult.StatusCode.UNAUTHENTICATED);
@@ -216,7 +216,7 @@ public class ClientClusterManagementSSLTest {
.setHostnameVerifier(hostnameVerifier)
.setCredentials("dataRead", "dataRead").build();
- ClusterManagementResult<RegionConfig> result = cmsClient.create(region);
+ ClusterManagementResult<?, ?> result = cmsClient.create(region);
assertThat(result.isSuccessful()).isFalse();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.UNAUTHORIZED);
});
diff --git a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClientClusterManagementServiceDunitTest.java b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClientClusterManagementServiceDunitTest.java
index 2eb11fd..9461395 100644
--- a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClientClusterManagementServiceDunitTest.java
+++ b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClientClusterManagementServiceDunitTest.java
@@ -61,7 +61,7 @@ public class ClientClusterManagementServiceDunitTest {
region.setName("customer");
region.setType(RegionType.PARTITION);
- ClusterManagementResult<RegionConfig> result = cmsClient.create(region);
+ ClusterManagementResult<?, ?> result = cmsClient.create(region);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.OK);
@@ -79,7 +79,7 @@ public class ClientClusterManagementServiceDunitTest {
region.setName("orders");
region.setType(RegionType.PARTITION);
- ClusterManagementResult<RegionConfig> result = cmsClient.create(region);
+ ClusterManagementResult<?, ?> result = cmsClient.create(region);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.OK);
@@ -93,7 +93,7 @@ public class ClientClusterManagementServiceDunitTest {
RegionConfig region = new RegionConfig();
region.setName("__test");
- ClusterManagementResult<RegionConfig> result = cmsClient.create(region);
+ ClusterManagementResult<?, ?> result = cmsClient.create(region);
assertThat(result.isSuccessful()).isFalse();
assertThat(result.getStatusCode())
.isEqualTo(ClusterManagementResult.StatusCode.ILLEGAL_ARGUMENT);
@@ -106,7 +106,7 @@ public class ClientClusterManagementServiceDunitTest {
region.setType(RegionType.PARTITION);
region.setGroup(groupA);
- ClusterManagementResult<RegionConfig> result = cmsClient.create(region);
+ ClusterManagementResult<?, ?> result = cmsClient.create(region);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.OK);
diff --git a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClusterManagementLocatorReconnectDunitTest.java b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClusterManagementLocatorReconnectDunitTest.java
index 15669a1..308ba00 100644
--- a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClusterManagementLocatorReconnectDunitTest.java
+++ b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClusterManagementLocatorReconnectDunitTest.java
@@ -31,7 +31,6 @@ import org.apache.geode.cache.configuration.RegionConfig;
import org.apache.geode.cache.configuration.RegionType;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.RealizationResult;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
@@ -75,7 +74,7 @@ public class ClusterManagementLocatorReconnectDunitTest {
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(regionConfig);
- ClusterManagementResult<RuntimeRegionConfig> result =
+ ClusterManagementResult<?, ?> result =
restClient.doPostAndAssert("/regions", json, "test", "test")
.hasStatusCode(201)
.getClusterManagementResult();
diff --git a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClusterManagementServiceOnServerTest.java b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClusterManagementServiceOnServerTest.java
index 6890937..e4f3a7e 100644
--- a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClusterManagementServiceOnServerTest.java
+++ b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ClusterManagementServiceOnServerTest.java
@@ -125,7 +125,7 @@ public class ClusterManagementServiceOnServerTest implements Serializable {
buildWithCache().setCache(ClusterStartupRule.getCache())
.build();
assertThat(service).isNotNull();
- ClusterManagementResult<RegionConfig> clusterManagementResult =
+ ClusterManagementResult<?, ?> clusterManagementResult =
service.create(regionConfig);
assertThat(clusterManagementResult.isSuccessful()).isTrue();
});
diff --git a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ListIndexManagementDUnitTest.java b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ListIndexManagementDUnitTest.java
index 36f295c..2c1ce65 100644
--- a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ListIndexManagementDUnitTest.java
+++ b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ListIndexManagementDUnitTest.java
@@ -31,7 +31,7 @@ import org.apache.geode.cache.configuration.RegionType;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
import org.apache.geode.management.client.ClusterManagementServiceBuilder;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
+import org.apache.geode.management.runtime.RuntimeInfo;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
import org.apache.geode.test.junit.rules.GfshCommandRule;
@@ -80,17 +80,17 @@ public class ListIndexManagementDUnitTest {
@Test
public void listRegion() {
- List<RuntimeRegionConfig> result =
- cms.list(new RegionConfig()).getResult();
+ List<RegionConfig> result =
+ cms.list(new RegionConfig()).getConfigResult();
assertThat(result).hasSize(1);
}
@Test
public void getRegion() throws Exception {
regionConfig.setName("region1");
- List<RuntimeRegionConfig> regions = cms.get(regionConfig).getResult();
+ List<RegionConfig> regions = cms.get(regionConfig).getConfigResult();
assertThat(regions).hasSize(1);
- RuntimeRegionConfig region = regions.get(0);
+ RegionConfig region = regions.get(0);
List<RegionConfig.Index> indexes = region.getIndexes();
assertThat(indexes).hasSize(2);
}
@@ -106,8 +106,8 @@ public class ListIndexManagementDUnitTest {
public void listIndexForOneRegion() throws Exception {
RegionConfig.Index index = new RegionConfig.Index();
index.setRegionName("region1");
- ClusterManagementResult<RegionConfig.Index> list = cms.list(index);
- List<RegionConfig.Index> result = list.getResult();
+ ClusterManagementResult<RegionConfig.Index, RuntimeInfo> list = cms.list(index);
+ List<RegionConfig.Index> result = list.getConfigResult();
assertThat(result).hasSize(2);
}
@@ -116,8 +116,8 @@ public class ListIndexManagementDUnitTest {
RegionConfig.Index index = new RegionConfig.Index();
index.setRegionName("region1");
index.setName("index1");
- ClusterManagementResult<RegionConfig.Index> list = cms.get(index);
- List<RegionConfig.Index> result = list.getResult();
+ ClusterManagementResult<RegionConfig.Index, RuntimeInfo> list = cms.get(index);
+ List<RegionConfig.Index> result = list.getConfigResult();
assertThat(result).hasSize(1);
RegionConfig.Index runtimeIndex = result.get(0);
assertThat(runtimeIndex.getRegionName()).isEqualTo("region1");
@@ -147,8 +147,8 @@ public class ListIndexManagementDUnitTest {
RegionConfig.Index index = new RegionConfig.Index();
index.setRegionName("region1");
index.setName("index1");
- ClusterManagementResult<RegionConfig.Index> list = cms.list(index);
- List<RegionConfig.Index> result = list.getResult();
+ ClusterManagementResult<RegionConfig.Index, RuntimeInfo> list = cms.list(index);
+ List<RegionConfig.Index> result = list.getConfigResult();
assertThat(result).hasSize(1);
RegionConfig.Index runtimeIndex = result.get(0);
assertThat(runtimeIndex.getRegionName()).isEqualTo("region1");
@@ -171,8 +171,8 @@ public class ListIndexManagementDUnitTest {
RegionConfig.Index index = new RegionConfig.Index();
index.setRegionName("region1");
index.setName("index333");
- ClusterManagementResult<RegionConfig.Index> list = cms.list(index);
- List<RegionConfig.Index> result = list.getResult();
+ ClusterManagementResult<RegionConfig.Index, RuntimeInfo> list = cms.list(index);
+ List<RegionConfig.Index> result = list.getConfigResult();
assertThat(result).hasSize(0);
assertThat(list.isSuccessful()).isTrue();
}
diff --git a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ListRegionManagementDunitTest.java b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ListRegionManagementDunitTest.java
index 772f531..e5d7de9 100644
--- a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ListRegionManagementDunitTest.java
+++ b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ListRegionManagementDunitTest.java
@@ -30,9 +30,10 @@ import org.apache.geode.cache.Region;
import org.apache.geode.cache.configuration.CacheElement;
import org.apache.geode.cache.configuration.RegionConfig;
import org.apache.geode.cache.configuration.RegionType;
+import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
import org.apache.geode.management.client.ClusterManagementServiceBuilder;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
+import org.apache.geode.management.runtime.RuntimeRegionInfo;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
import org.apache.geode.test.junit.rules.GfshCommandRule;
@@ -110,15 +111,15 @@ public class ListRegionManagementDunitTest {
@Test
public void listAll() throws Exception {
// list all
- List<RuntimeRegionConfig> regions = client.list(filter).getResult();
+ List<RegionConfig> regions = client.list(filter).getConfigResult();
assertThat(regions).hasSize(5);
- RuntimeRegionConfig element = CacheElement.findElement(regions, "customers");
+ RegionConfig element = CacheElement.findElement(regions, "customers");
assertThat(element.getGroup()).isNull();
element = CacheElement.findElement(regions, "customers1");
assertThat(element.getGroup()).isEqualTo("group1");
- RuntimeRegionConfig region = CacheElement.findElement(regions, "customers2");
+ RegionConfig region = CacheElement.findElement(regions, "customers2");
assertThat(region.getGroup()).isIn("group1", "group2");
assertThat(region.getType()).isIn("PARTITION", "PARTITION_PROXY");
@@ -130,7 +131,7 @@ public class ListRegionManagementDunitTest {
public void listClusterLevel() throws Exception {
// list cluster level only
filter.setGroup("cluster");
- List<RuntimeRegionConfig> regions = client.list(filter).getResult();
+ List<RegionConfig> regions = client.list(filter).getConfigResult();
assertThat(regions).hasSize(1);
assertThat(regions.get(0).getId()).isEqualTo("customers");
assertThat(regions.get(0).getGroup()).isNull();
@@ -152,22 +153,25 @@ public class ListRegionManagementDunitTest {
});
filter.setName("customers");
- List<RuntimeRegionConfig> regions = client.list(filter).getResult();
+ ClusterManagementResult<RegionConfig, RuntimeRegionInfo> result = client.list(filter);
+ List<RegionConfig> regions = result.getConfigResult();
assertThat(regions).hasSize(1);
- RuntimeRegionConfig regionConfig = regions.get(0);
+ RegionConfig regionConfig = regions.get(0);
assertThat(regionConfig.getName()).isEqualTo("customers");
- assertThat(regionConfig).isInstanceOf(RuntimeRegionConfig.class);
- assertThat(regionConfig.getEntryCount()).isEqualTo(2);
+
+ List<RuntimeRegionInfo> runtimeRegionInfos = result.getRuntimeResult();
+ assertThat(runtimeRegionInfos).hasSize(1);
+ assertThat(runtimeRegionInfos.get(0).getEntryCount()).isEqualTo(2);
}
@Test
public void listGroup1() throws Exception {
// list group1
filter.setGroup("group1");
- List<RuntimeRegionConfig> regions = client.list(filter).getResult();
+ List<RegionConfig> regions = client.list(filter).getConfigResult();
assertThat(regions).hasSize(3);
// when filtering by group, the returned list should not have group info
- RuntimeRegionConfig region = CacheElement.findElement(regions, "customers1");
+ RegionConfig region = CacheElement.findElement(regions, "customers1");
assertThat(region.getGroup()).isEqualTo("group1");
region = CacheElement.findElement(regions, "customers2");
@@ -181,10 +185,10 @@ public class ListRegionManagementDunitTest {
public void listGroup2() throws Exception {
// list group1
filter.setGroup("group2");
- List<RuntimeRegionConfig> regions = client.list(filter).getResult();
+ List<RegionConfig> regions = client.list(filter).getConfigResult();
assertThat(regions).hasSize(2);
- RuntimeRegionConfig region = CacheElement.findElement(regions, "customers2");
+ RegionConfig region = CacheElement.findElement(regions, "customers2");
assertThat(region.getGroup()).isEqualTo("group2");
region = CacheElement.findElement(regions, "customers3");
@@ -195,14 +199,14 @@ public class ListRegionManagementDunitTest {
public void listNonExistentGroup() throws Exception {
// list non-existent group
filter.setGroup("group3");
- List<RuntimeRegionConfig> regions = client.list(filter).getResult();
+ List<RegionConfig> regions = client.list(filter).getConfigResult();
assertThat(regions).hasSize(0);
}
@Test
public void listRegionByName() throws Exception {
filter.setName("customers");
- List<RuntimeRegionConfig> regions = client.list(filter).getResult();
+ List<RegionConfig> regions = client.list(filter).getConfigResult();
assertThat(regions).hasSize(1);
assertThat(regions.get(0).getId()).isEqualTo("customers");
assertThat(regions.get(0).getGroup()).isNull();
@@ -211,7 +215,7 @@ public class ListRegionManagementDunitTest {
@Test
public void listRegionByName1() throws Exception {
filter.setName("customers1");
- List<RuntimeRegionConfig> regions = client.list(filter).getResult();
+ List<RegionConfig> regions = client.list(filter).getConfigResult();
assertThat(regions).hasSize(1);
assertThat(regions.get(0).getId()).isEqualTo("customers1");
assertThat(regions.get(0).getGroup()).isEqualTo("group1");
@@ -220,7 +224,7 @@ public class ListRegionManagementDunitTest {
@Test
public void listRegionByName2() throws Exception {
filter.setName("customers2");
- List<RuntimeRegionConfig> regions = client.list(filter).getResult();
+ List<RegionConfig> regions = client.list(filter).getConfigResult();
assertThat(regions).hasSize(2);
assertThat(
regions.stream().map(CacheElement::getGroup).collect(Collectors.toList()))
@@ -234,7 +238,7 @@ public class ListRegionManagementDunitTest {
@Test
public void listRegionByName3() throws Exception {
filter.setName("customers3");
- List<RuntimeRegionConfig> regions = client.list(filter).getResult();
+ List<RegionConfig> regions = client.list(filter).getConfigResult();
assertThat(regions).hasSize(1);
assertThat(regions.get(0).getId()).isEqualTo("customers3");
assertThat(regions.get(0).getGroups()).containsExactlyInAnyOrder("group1", "group2");
@@ -244,7 +248,7 @@ public class ListRegionManagementDunitTest {
public void listNonExistentRegion() throws Exception {
// list non-existent region
filter.setName("customer4");
- List<RuntimeRegionConfig> regions = client.list(filter).getResult();
+ List<RegionConfig> regions = client.list(filter).getConfigResult();
assertThat(regions).hasSize(0);
}
}
diff --git a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ManagementRequestLoggingDUnitTest.java b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ManagementRequestLoggingDUnitTest.java
index b30ecd6..cc609e4 100644
--- a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ManagementRequestLoggingDUnitTest.java
+++ b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/ManagementRequestLoggingDUnitTest.java
@@ -67,7 +67,7 @@ public class ManagementRequestLoggingDUnitTest {
regionConfig.setName("customers");
regionConfig.setType(RegionType.REPLICATE);
- ClusterManagementResult<RegionConfig> result = service.create(regionConfig);
+ ClusterManagementResult<?, ?> result = service.create(regionConfig);
assertThat(result.isSuccessful()).isTrue();
locator.invoke(() -> {
diff --git a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/MemberManagementServiceDunitTest.java b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/MemberManagementServiceDunitTest.java
index c1eace5..4eba148 100644
--- a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/MemberManagementServiceDunitTest.java
+++ b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/MemberManagementServiceDunitTest.java
@@ -21,12 +21,11 @@ import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
-import org.apache.geode.cache.configuration.CacheElement;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
import org.apache.geode.management.client.ClusterManagementServiceBuilder;
import org.apache.geode.management.configuration.MemberConfig;
-import org.apache.geode.management.configuration.RuntimeMemberConfig;
+import org.apache.geode.management.runtime.MemberInformation;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
import org.apache.geode.test.junit.rules.MemberStarterRule;
@@ -51,18 +50,17 @@ public class MemberManagementServiceDunitTest {
@Test
public void listAllMembers() {
MemberConfig config = new MemberConfig();
- ClusterManagementResult<RuntimeMemberConfig> result = cmsClient.list(config);
+ ClusterManagementResult<MemberConfig, MemberInformation> result = cmsClient.list(config);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.OK);
- assertThat(result.getResult().size()).isEqualTo(2);
+ assertThat(result.getRuntimeResult().size()).isEqualTo(2);
- RuntimeMemberConfig memberConfig =
- CacheElement.findElement(result.getResult(),
- "locator-0");
+ MemberInformation memberConfig = result.getRuntimeResult().stream()
+ .filter(r -> "locator-0".equals(r.getName())).findFirst().orElse(null);
assertThat(memberConfig.isCoordinator()).isTrue();
- assertThat(memberConfig.isLocator()).isTrue();
- assertThat(memberConfig.getPort()).isEqualTo(locator.getPort());
+ assertThat(memberConfig.isServer()).isFalse();
+ assertThat(memberConfig.getLocatorPort()).isEqualTo(locator.getPort());
}
@Test
@@ -70,25 +68,25 @@ public class MemberManagementServiceDunitTest {
MemberConfig config = new MemberConfig();
config.setId("locator-0");
- ClusterManagementResult<RuntimeMemberConfig> result = cmsClient.list(config);
+ ClusterManagementResult<MemberConfig, MemberInformation> result = cmsClient.list(config);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.OK);
- assertThat(result.getResult().size()).isEqualTo(1);
+ assertThat(result.getRuntimeResult().size()).isEqualTo(1);
- RuntimeMemberConfig memberConfig = result.getResult().get(0);
+ MemberInformation memberConfig = result.getRuntimeResult().get(0);
assertThat(memberConfig.isCoordinator()).isTrue();
- assertThat(memberConfig.isLocator()).isTrue();
- assertThat(memberConfig.getPort()).isEqualTo(locator.getPort());
+ assertThat(memberConfig.isServer()).isFalse();
+ assertThat(memberConfig.getLocatorPort()).isEqualTo(locator.getPort());
}
@Test
public void listNonExistentMember() {
MemberConfig config = new MemberConfig();
config.setId("locator");
- ClusterManagementResult<RuntimeMemberConfig> result = cmsClient.list(config);
+ ClusterManagementResult<MemberConfig, MemberInformation> result = cmsClient.list(config);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode())
.isEqualTo(ClusterManagementResult.StatusCode.OK);
- assertThat(result.getResult().size()).isEqualTo(0);
+ assertThat(result.getRuntimeResult().size()).isEqualTo(0);
}
}
diff --git a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/RegionManagementDunitTest.java b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/RegionManagementDunitTest.java
index f74fb21..aa47b99 100644
--- a/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/RegionManagementDunitTest.java
+++ b/geode-assembly/src/distributedTest/java/org/apache/geode/management/internal/rest/RegionManagementDunitTest.java
@@ -36,7 +36,6 @@ import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
import org.apache.geode.management.api.RealizationResult;
import org.apache.geode.management.client.ClusterManagementServiceBuilder;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
import org.apache.geode.test.dunit.IgnoredException;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
@@ -73,7 +72,7 @@ public class RegionManagementDunitTest {
regionConfig.setGroup("group1");
regionConfig.setType(RegionType.REPLICATE);
- ClusterManagementResult<RegionConfig> result = cms.create(regionConfig);
+ ClusterManagementResult<?, ?> result = cms.create(regionConfig);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getMemberStatuses()).extracting(RealizationResult::getMemberName)
@@ -98,10 +97,10 @@ public class RegionManagementDunitTest {
config.setRegionAttributes(type);
cms.create(config);
- List<RuntimeRegionConfig> result = cms.get(config).getResult();
+ List<RegionConfig> result = cms.get(config).getConfigResult();
assertThat(result).hasSize(1);
- RuntimeRegionConfig config1 = result.get(0);
+ RegionConfig config1 = result.get(0);
assertThat(config1.getType()).isEqualTo("PARTITION");
assertThat(config1.getRegionAttributes().getDataPolicy().name()).isEqualTo("PARTITION");
assertThat(config1.getRegionAttributes().getValueConstraint()).isEqualTo("java.lang.Integer");
@@ -121,7 +120,7 @@ public class RegionManagementDunitTest {
public void createsAPartitionedRegion() throws Exception {
String json = "{\"name\": \"orders\", \"type\": \"PARTITION\", \"group\": \"group1\"}";
- ClusterManagementResult<RuntimeRegionConfig> result =
+ ClusterManagementResult<?, ?> result =
restClient.doPostAndAssert("/regions", json)
.hasStatusCode(201)
.getClusterManagementResult();
@@ -148,7 +147,7 @@ public class RegionManagementDunitTest {
IgnoredException.addIgnoredException("Name of the region has to be specified");
String json = "{\"type\": \"REPLICATE\"}";
- ClusterManagementResult<RuntimeRegionConfig> result =
+ ClusterManagementResult<?, ?> result =
restClient.doPostAndAssert("/regions", json)
.hasStatusCode(400)
.getClusterManagementResult();
diff --git a/geode-assembly/src/integrationTest/java/org/apache/geode/management/internal/DisabledClusterConfigTest.java b/geode-assembly/src/integrationTest/java/org/apache/geode/management/internal/DisabledClusterConfigTest.java
index f2b830f..15b0d23 100644
--- a/geode-assembly/src/integrationTest/java/org/apache/geode/management/internal/DisabledClusterConfigTest.java
+++ b/geode-assembly/src/integrationTest/java/org/apache/geode/management/internal/DisabledClusterConfigTest.java
@@ -41,7 +41,7 @@ public class DisabledClusterConfigTest {
GeodeDevRestClient restClient =
new GeodeDevRestClient("/management/v2", "localhost", locator.getHttpPort(), false);
- ClusterManagementResult<?> result =
+ ClusterManagementResult result =
restClient.doPostAndAssert("/regions", "{\"name\":\"test\"}")
.hasStatusCode(500)
.getClusterManagementResult();
diff --git a/geode-assembly/src/integrationTest/resources/assembly_content.txt b/geode-assembly/src/integrationTest/resources/assembly_content.txt
index be4ab26..fddebbe 100644
--- a/geode-assembly/src/integrationTest/resources/assembly_content.txt
+++ b/geode-assembly/src/integrationTest/resources/assembly_content.txt
@@ -682,6 +682,7 @@ javadoc/org/apache/geode/management/api/ClusterManagementResult.html
javadoc/org/apache/geode/management/api/ClusterManagementService.html
javadoc/org/apache/geode/management/api/RealizationResult.html
javadoc/org/apache/geode/management/api/RespondsWith.html
+javadoc/org/apache/geode/management/api/Response.html
javadoc/org/apache/geode/management/api/RestfulEndpoint.html
javadoc/org/apache/geode/management/api/package-frame.html
javadoc/org/apache/geode/management/api/package-summary.html
@@ -716,9 +717,6 @@ javadoc/org/apache/geode/management/client/package-frame.html
javadoc/org/apache/geode/management/client/package-summary.html
javadoc/org/apache/geode/management/client/package-tree.html
javadoc/org/apache/geode/management/configuration/MemberConfig.html
-javadoc/org/apache/geode/management/configuration/RuntimeMemberConfig.CacheServerConfig.html
-javadoc/org/apache/geode/management/configuration/RuntimeMemberConfig.html
-javadoc/org/apache/geode/management/configuration/RuntimeRegionConfig.html
javadoc/org/apache/geode/management/configuration/package-frame.html
javadoc/org/apache/geode/management/configuration/package-summary.html
javadoc/org/apache/geode/management/configuration/package-tree.html
@@ -736,6 +734,13 @@ javadoc/org/apache/geode/management/membership/package-tree.html
javadoc/org/apache/geode/management/package-frame.html
javadoc/org/apache/geode/management/package-summary.html
javadoc/org/apache/geode/management/package-tree.html
+javadoc/org/apache/geode/management/runtime/CacheServerInfo.html
+javadoc/org/apache/geode/management/runtime/MemberInformation.html
+javadoc/org/apache/geode/management/runtime/RuntimeInfo.html
+javadoc/org/apache/geode/management/runtime/RuntimeRegionInfo.html
+javadoc/org/apache/geode/management/runtime/package-frame.html
+javadoc/org/apache/geode/management/runtime/package-summary.html
+javadoc/org/apache/geode/management/runtime/package-tree.html
javadoc/org/apache/geode/memcached/GemFireMemcachedServer.Protocol.html
javadoc/org/apache/geode/memcached/GemFireMemcachedServer.html
javadoc/org/apache/geode/memcached/package-frame.html
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/internal/api/RegionAPIDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/internal/api/RegionAPIDUnitTest.java
index 0777857..65ec4d2 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/internal/api/RegionAPIDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/internal/api/RegionAPIDUnitTest.java
@@ -64,7 +64,7 @@ public class RegionAPIDUnitTest {
RegionConfig config = new RegionConfig();
config.setName(regionName);
config.setType(RegionType.PARTITION);
- ClusterManagementResult<RegionConfig> result =
+ ClusterManagementResult<?, ?> result =
ClusterStartupRule.getLocator().getClusterManagementService()
.create(config);
assertThat(result.isSuccessful()).isTrue();
@@ -90,7 +90,7 @@ public class RegionAPIDUnitTest {
RegionConfig config = new RegionConfig();
config.setName(regionName);
config.setType(RegionType.REPLICATE);
- ClusterManagementResult<RegionConfig> result =
+ ClusterManagementResult<?, ?> result =
ClusterStartupRule.getLocator().getClusterManagementService()
.create(config);
assertThat(result.isSuccessful()).isTrue();
@@ -108,7 +108,7 @@ public class RegionAPIDUnitTest {
RegionConfig config = new RegionConfig();
config.setName(regionName);
config.setType(RegionType.PARTITION);
- ClusterManagementResult<RegionConfig> result =
+ ClusterManagementResult<?, ?> result =
ClusterStartupRule.getLocator().getClusterManagementService()
.create(config);
assertThat(result.isSuccessful()).isTrue();
diff --git a/geode-core/src/integrationTest/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigMutatorIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigMutatorIntegrationTest.java
index c3b84aa..30d4140 100644
--- a/geode-core/src/integrationTest/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigMutatorIntegrationTest.java
+++ b/geode-core/src/integrationTest/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigMutatorIntegrationTest.java
@@ -37,7 +37,7 @@ public class RegionConfigMutatorIntegrationTest {
@Before
public void before() throws Exception {
config = new RegionConfig();
- mutator = new RegionConfigManager(locator.getCache());
+ mutator = new RegionConfigManager();
}
@Test
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/CacheElementOperation.java b/geode-core/src/main/java/org/apache/geode/management/internal/CacheElementOperation.java
index e9b07ff..123bd18 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/CacheElementOperation.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/CacheElementOperation.java
@@ -16,5 +16,5 @@
package org.apache.geode.management.internal;
public enum CacheElementOperation {
- CREATE, DELETE, UPDATE, LIST
+ CREATE, DELETE, UPDATE, GET
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/api/GeodeClusterManagementServiceBuilder.java b/geode-core/src/main/java/org/apache/geode/management/internal/api/GeodeClusterManagementServiceBuilder.java
index 26206f8..37018f0 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/api/GeodeClusterManagementServiceBuilder.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/api/GeodeClusterManagementServiceBuilder.java
@@ -44,10 +44,10 @@ import org.apache.geode.management.api.ClusterManagementService;
import org.apache.geode.management.builder.ClusterManagementServiceBuilder;
import org.apache.geode.management.internal.PlainClusterManagementServiceBuilder;
import org.apache.geode.management.internal.SSLUtil;
-import org.apache.geode.management.internal.cli.domain.MemberInformation;
import org.apache.geode.management.internal.cli.functions.GetMemberInformationFunction;
import org.apache.geode.management.internal.configuration.messages.ClusterManagementServiceInfo;
import org.apache.geode.management.internal.configuration.messages.ClusterManagementServiceInfoRequest;
+import org.apache.geode.management.runtime.MemberInformation;
import org.apache.geode.security.AuthInitialize;
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/api/LocatorClusterManagementService.java b/geode-core/src/main/java/org/apache/geode/management/internal/api/LocatorClusterManagementService.java
index 119b980..28d73b1 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/api/LocatorClusterManagementService.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/api/LocatorClusterManagementService.java
@@ -49,12 +49,13 @@ import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
import org.apache.geode.management.api.RealizationResult;
import org.apache.geode.management.api.RespondsWith;
+import org.apache.geode.management.api.Response;
+import org.apache.geode.management.api.RestfulEndpoint;
import org.apache.geode.management.configuration.MemberConfig;
import org.apache.geode.management.internal.CacheElementOperation;
-import org.apache.geode.management.internal.cli.functions.UpdateCacheFunction;
+import org.apache.geode.management.internal.cli.functions.CacheRealizationFunction;
import org.apache.geode.management.internal.configuration.mutators.ConfigurationManager;
import org.apache.geode.management.internal.configuration.mutators.GatewayReceiverConfigManager;
-import org.apache.geode.management.internal.configuration.mutators.MemberConfigManager;
import org.apache.geode.management.internal.configuration.mutators.PdxManager;
import org.apache.geode.management.internal.configuration.mutators.RegionConfigManager;
import org.apache.geode.management.internal.configuration.validators.CacheElementValidator;
@@ -63,6 +64,7 @@ import org.apache.geode.management.internal.configuration.validators.GatewayRece
import org.apache.geode.management.internal.configuration.validators.MemberValidator;
import org.apache.geode.management.internal.configuration.validators.RegionConfigValidator;
import org.apache.geode.management.internal.exceptions.EntityNotFoundException;
+import org.apache.geode.management.runtime.RuntimeInfo;
public class LocatorClusterManagementService implements ClusterManagementService {
private static final Logger logger = LogService.getLogger();
@@ -76,8 +78,7 @@ public class LocatorClusterManagementService implements ClusterManagementService
ConfigurationPersistenceService persistenceService) {
this(persistenceService, new HashMap<>(), new HashMap<>(), null, null);
// initialize the list of managers
- managers.put(RegionConfig.class, new RegionConfigManager(cache));
- managers.put(MemberConfig.class, new MemberConfigManager(cache));
+ managers.put(RegionConfig.class, new RegionConfigManager());
managers.put(PdxType.class, new PdxManager());
managers.put(GatewayReceiverConfig.class, new GatewayReceiverConfigManager(cache));
@@ -100,13 +101,12 @@ public class LocatorClusterManagementService implements ClusterManagementService
}
@Override
- public <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<T> create(
- T config) {
+ public <T extends CacheElement> ClusterManagementResult<?, ?> create(T config) {
// validate that user used the correct config object type
ConfigurationManager configurationManager = getConfigurationManager(config);
if (persistenceService == null) {
- return new ClusterManagementResult<>(false,
+ return new ClusterManagementResult(false,
"Cluster configuration service needs to be enabled");
}
@@ -123,12 +123,12 @@ public class LocatorClusterManagementService implements ClusterManagementService
memberValidator.validateCreate(config, configurationManager);
// execute function on all members
- Set<DistributedMember> targetedMembers = memberValidator.findMembers(group);
+ Set<DistributedMember> targetedMembers = memberValidator.findServers(group);
- ClusterManagementResult<T> result = new ClusterManagementResult<>();
+ ClusterManagementResult result = new ClusterManagementResult();
List<RealizationResult> functionResults = executeAndGetFunctionResult(
- new UpdateCacheFunction(),
+ new CacheRealizationFunction(),
Arrays.asList(config, CacheElementOperation.CREATE),
targetedMembers);
@@ -157,20 +157,20 @@ public class LocatorClusterManagementService implements ClusterManagementService
});
// add the config object which includes the HATOS information of the element created
- if (result.isSuccessful()) {
- result.setResult(Collections.singletonList(config));
+ if (result.isSuccessful() && config instanceof RestfulEndpoint) {
+ result.setUri(((RestfulEndpoint) config).getUri());
}
return result;
}
@Override
- public <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<T> delete(
+ public <T extends CacheElement> ClusterManagementResult<?, ?> delete(
T config) {
// validate that user used the correct config object type
ConfigurationManager configurationManager = getConfigurationManager(config);
if (persistenceService == null) {
- return new ClusterManagementResult<>(false,
+ return new ClusterManagementResult(false,
"Cluster configuration service needs to be enabled");
}
@@ -189,12 +189,12 @@ public class LocatorClusterManagementService implements ClusterManagementService
}
// execute function on all members
- ClusterManagementResult<T> result = new ClusterManagementResult<>();
+ ClusterManagementResult result = new ClusterManagementResult();
List<RealizationResult> functionResults = executeAndGetFunctionResult(
- new UpdateCacheFunction(),
+ new CacheRealizationFunction(),
Arrays.asList(config, CacheElementOperation.DELETE),
- memberValidator.findMembers(groupsWithThisElement));
+ memberValidator.findServers(groupsWithThisElement));
functionResults.forEach(result::addMemberStatus);
// if any false result is added to the member list
@@ -231,81 +231,121 @@ public class LocatorClusterManagementService implements ClusterManagementService
}
@Override
- public <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<T> update(
+ public <T extends CacheElement> ClusterManagementResult<?, ?> update(
T config) {
throw new NotImplementedException("Not implemented");
}
@Override
- public <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<R> list(
+ public <T extends CacheElement & RespondsWith<R>, R extends RuntimeInfo> ClusterManagementResult<T, R> list(
T filter) {
- ConfigurationManager<T, R> manager = managers.get(filter.getClass());
-
- ClusterManagementResult<R> result = new ClusterManagementResult<>();
+ ConfigurationManager<T> manager = managers.get(filter.getClass());
- if (filter instanceof MemberConfig) {
- List<R> listResults = manager.list(filter, null);
- result.setResult(listResults);
- return result;
- }
+ ClusterManagementResult<T, R> result = new ClusterManagementResult<>();
if (persistenceService == null) {
return new ClusterManagementResult<>(false,
"Cluster configuration service needs to be enabled");
}
- List<R> resultList = new ArrayList<>();
- for (String group : persistenceService.getGroups()) {
- CacheConfig currentPersistedConfig = persistenceService.getCacheConfig(group, true);
- List<R> listInGroup = manager.list(filter, currentPersistedConfig);
- for (R element : listInGroup) {
- element.setGroup(group);
- resultList.add(element);
- }
- }
+ List<T> resultList = new ArrayList<>();
- // if empty result, return immediately
- if (resultList.size() == 0) {
- return result;
- }
+ if (filter instanceof MemberConfig) {
+ resultList.add(filter);
+ } else {
+ // gather elements on all the groups, consolidate the group information and then do the filter
+ // so that when we filter by a specific group, we still show that a particular element might
+ // also belong to another group.
+ for (String group : persistenceService.getGroups()) {
+ CacheConfig currentPersistedConfig = persistenceService.getCacheConfig(group, true);
+ List<T> listInGroup = manager.list(filter, currentPersistedConfig);
+ for (T element : listInGroup) {
+ element.setGroup(group);
+ resultList.add(element);
+ }
+ }
- // right now the list contains [{regionA, group1}, {regionA, group2}...], if the elements are
- // MultiGroupCacheElement, we need to consolidate the list into [{regionA, [group1, group2]}
+ // if empty result, return immediately
+ if (resultList.size() == 0) {
+ return result;
+ }
- List<R> consolidatedConfigList = new ArrayList<>();
- for (R element : resultList) {
- int index = consolidatedConfigList.indexOf(element);
- if (index >= 0) {
- R exist = consolidatedConfigList.get(index);
- exist.getGroups().add(element.getGroup());
- } else {
- consolidatedConfigList.add(element);
+ // right now the list contains [{regionA, group1}, {regionA, group2}...], if the elements are
+ // MultiGroupCacheElement, we need to consolidate the list into [{regionA, [group1, group2]}
+ List<T> consolidatedResultList = new ArrayList<>();
+ for (T element : resultList) {
+ int index = consolidatedResultList.indexOf(element);
+ if (index >= 0) {
+ T exist = consolidatedResultList.get(index);
+ exist.addGroup(element.getGroup());
+ } else {
+ consolidatedResultList.add(element);
+ }
}
+ if (StringUtils.isNotBlank(filter.getGroup())) {
+ consolidatedResultList = consolidatedResultList.stream()
+ .filter(e -> (e.getGroups().contains(filter.getConfigGroup())))
+ .collect(Collectors.toList());
+ }
+ resultList = consolidatedResultList;
}
- if (StringUtils.isNotBlank(filter.getGroup())) {
- consolidatedConfigList = consolidatedConfigList.stream()
- .filter(e -> (e.getGroups().contains(filter.getConfigGroup())))
- .collect(Collectors.toList());
- }
- // if "cluster" is the only group, clear it
- for (R element : consolidatedConfigList) {
+
+ // gather the runtime info for each configuration objects
+ List<Response<T, R>> responses = new ArrayList<>();
+ boolean hasRuntimeInfo = filter.hasRuntimeInfo();
+
+ for (T element : resultList) {
+ List<String> groups = element.getGroups();
+ Response<T, R> response = new Response<>(element);
+
+ // if "cluster" is the only group, clear it, so that the returning json does not show
+ // "cluster" as a group value
if (element.getGroups().size() == 1 && CacheElement.CLUSTER.equals(element.getGroup())) {
element.getGroups().clear();
}
- }
- resultList = consolidatedConfigList;
+ responses.add(response);
+ // do not gather runtime if this type of CacheElement is RespondWith<RuntimeInfo>
+ if (!hasRuntimeInfo) {
+ continue;
+ }
+ Set<DistributedMember> members;
- result.setResult(resultList);
+ if (filter instanceof MemberConfig) {
+ members =
+ memberValidator.findMembers(filter.getId(), filter.getGroups().toArray(new String[0]));
+ } else {
+ members = memberValidator.findServers(groups.toArray(new String[0]));
+ }
+
+ // no member belongs to these groups
+ if (members.size() == 0) {
+ continue;
+ }
+
+ // if this cacheElement's runtime info only contains global info (no per member info), we will
+ // only need to issue get function on any member instead of all of them.
+ if (element.isGlobalRuntime()) {
+ members = Collections.singleton(members.iterator().next());
+ }
+
+ List<R> runtimeInfos = executeAndGetFunctionResult(new CacheRealizationFunction(),
+ Arrays.asList(element, CacheElementOperation.GET),
+ members);
+ response.setRuntimeInfo(runtimeInfos);
+ }
+
+ result.setResult(responses);
return result;
}
@Override
- public <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<R> get(
+ public <T extends CacheElement & RespondsWith<R>, R extends RuntimeInfo> ClusterManagementResult<T, R> get(
T config) {
- ClusterManagementResult<R> list = list(config);
- List<R> result = list.getResult();
+ ClusterManagementResult<T, R> list = list(config);
+ List<Response<T, R>> result = list.getResult();
+
if (result.size() == 0) {
throw new EntityNotFoundException(
config.getClass().getSimpleName() + " with id = " + config.getId() + " not found.");
@@ -323,8 +363,20 @@ public class LocatorClusterManagementService implements ClusterManagementService
return true;
}
+ @SuppressWarnings("unchecked")
+ private <T extends CacheElement> ConfigurationManager<T> getConfigurationManager(
+ T config) {
+ ConfigurationManager configurationManager = managers.get(config.getClass());
+ if (configurationManager == null) {
+ throw new IllegalArgumentException(String.format("Configuration type %s is not supported",
+ config.getClass().getSimpleName()));
+ }
+
+ return configurationManager;
+ }
+
@VisibleForTesting
- List<RealizationResult> executeAndGetFunctionResult(Function function, Object args,
+ <R> List<R> executeAndGetFunctionResult(Function function, Object args,
Set<DistributedMember> targetMembers) {
if (targetMembers.size() == 0) {
return Collections.emptyList();
@@ -334,18 +386,6 @@ public class LocatorClusterManagementService implements ClusterManagementService
((AbstractExecution) execution).setIgnoreDepartedMembers(true);
ResultCollector rc = execution.execute(function);
- return (List<RealizationResult>) rc.getResult();
- }
-
- @SuppressWarnings("unchecked")
- private <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ConfigurationManager<T, R> getConfigurationManager(
- T config) {
- ConfigurationManager configurationManager = managers.get(config.getClass());
- if (configurationManager == null) {
- throw new IllegalArgumentException(String.format("Configuration type %s is not supported",
- config.getClass().getSimpleName()));
- }
-
- return configurationManager;
+ return (List<R>) rc.getResult();
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateIndexCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateIndexCommand.java
index 6f324aa..21dd603 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateIndexCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateIndexCommand.java
@@ -33,16 +33,17 @@ import org.apache.geode.cache.query.IndexType;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
import org.apache.geode.management.api.ClusterManagementService;
+import org.apache.geode.management.api.Response;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.ConverterHint;
import org.apache.geode.management.cli.GfshCommand;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
import org.apache.geode.management.internal.cli.functions.CreateIndexFunction;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.model.InfoResultModel;
import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.management.runtime.RuntimeRegionInfo;
import org.apache.geode.security.ResourcePermission;
public class CreateIndexCommand extends GfshCommand {
@@ -86,7 +87,7 @@ public class CreateIndexCommand extends GfshCommand {
// we will find the applicable members based on the what group this region is on
if (ccService != null && memberNameOrID == null) {
regionName = getValidRegionName(regionPath, cms);
- RuntimeRegionConfig config = getRuntimeRegionConfig(cms, regionName);
+ RegionConfig config = getRegionConfig(cms, regionName);
if (config == null) {
return ResultModel.createError("Region " + regionName + " does not exist.");
}
@@ -173,7 +174,7 @@ public class CreateIndexCommand extends GfshCommand {
String regionName = regionPath.trim().split(" ")[0];
// check to see if the region path is in the form of "--region=region.entrySet() z"
while (regionName.contains(".")) {
- RuntimeRegionConfig region = getRuntimeRegionConfig(cms, regionName);
+ RegionConfig region = getRegionConfig(cms, regionName);
if (region != null) {
break;
}
@@ -185,15 +186,15 @@ public class CreateIndexCommand extends GfshCommand {
return regionName;
}
- RuntimeRegionConfig getRuntimeRegionConfig(ClusterManagementService cms,
+ RegionConfig getRegionConfig(ClusterManagementService cms,
String regionName) {
RegionConfig regionConfig = new RegionConfig();
regionConfig.setName(regionName);
- List<RuntimeRegionConfig> list = cms.list(regionConfig).getResult();
+ List<Response<RegionConfig, RuntimeRegionInfo>> list = cms.list(regionConfig).getResult();
if (list.isEmpty()) {
return null;
} else {
- return list.get(0);
+ return list.get(0).getConfig();
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java
index 26aa3ac..5baaab4 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeMemberCommand.java
@@ -28,13 +28,13 @@ import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.ConverterHint;
import org.apache.geode.management.cli.GfshCommand;
-import org.apache.geode.management.internal.cli.domain.CacheServerInfo;
-import org.apache.geode.management.internal.cli.domain.MemberInformation;
import org.apache.geode.management.internal.cli.functions.GetMemberInformationFunction;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.result.model.DataResultModel;
import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.security.ResourceOperation;
+import org.apache.geode.management.runtime.CacheServerInfo;
+import org.apache.geode.management.runtime.MemberInformation;
import org.apache.geode.security.ResourcePermission;
public class DescribeMemberCommand extends GfshCommand {
@@ -84,7 +84,7 @@ public class DescribeMemberCommand extends GfshCommand {
memberInfo.addData("Locators", memberInformation.getLocators());
if (memberInformation.isServer()) {
- List<CacheServerInfo> csList = memberInformation.getCacheServeInfo();
+ List<CacheServerInfo> csList = memberInformation.getCacheServerInfo();
if (csList != null) {
int serverCount = 0;
for (CacheServerInfo cacheServerInfo : csList) {
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UpdateCacheFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CacheRealizationFunction.java
similarity index 70%
rename from geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UpdateCacheFunction.java
rename to geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CacheRealizationFunction.java
index 6e64ea6..4c3db4a 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/UpdateCacheFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CacheRealizationFunction.java
@@ -24,20 +24,22 @@ import java.util.Map;
import org.apache.logging.log4j.Logger;
import org.apache.geode.annotations.Immutable;
-import org.apache.geode.cache.Cache;
import org.apache.geode.cache.configuration.CacheElement;
import org.apache.geode.cache.configuration.GatewayReceiverConfig;
import org.apache.geode.cache.configuration.RegionConfig;
import org.apache.geode.cache.execute.FunctionContext;
+import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.execute.InternalFunction;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.management.api.RealizationResult;
+import org.apache.geode.management.configuration.MemberConfig;
import org.apache.geode.management.internal.CacheElementOperation;
import org.apache.geode.management.internal.configuration.realizers.ConfigurationRealizer;
import org.apache.geode.management.internal.configuration.realizers.GatewayReceiverRealizer;
+import org.apache.geode.management.internal.configuration.realizers.MemberConfigRealizer;
import org.apache.geode.management.internal.configuration.realizers.RegionConfigRealizer;
-public class UpdateCacheFunction implements InternalFunction<List> {
+public class CacheRealizationFunction implements InternalFunction<List> {
private static final Logger logger = LogService.getLogger();
@Immutable
private static final Map<Class, ConfigurationRealizer> realizers = new HashMap<>();
@@ -45,25 +47,50 @@ public class UpdateCacheFunction implements InternalFunction<List> {
static {
realizers.put(RegionConfig.class, new RegionConfigRealizer());
realizers.put(GatewayReceiverConfig.class, new GatewayReceiverRealizer());
+ realizers.put(MemberConfig.class, new MemberConfigRealizer());
}
@Override
public void execute(FunctionContext<List> context) {
- try {
- context.getResultSender().lastResult(executeFunction(context));
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- context.getResultSender().lastResult(new RealizationResult()
- .setSuccess(false)
- .setMemberName(context.getMemberName())
- .setMessage(e.getMessage()));
+ CacheElement cacheElement = (CacheElement) context.getArguments().get(0);
+ CacheElementOperation operation = (CacheElementOperation) context.getArguments().get(1);
+ InternalCache cache = (InternalCache) context.getCache();
+
+ if (operation == CacheElementOperation.GET) {
+ try {
+ context.getResultSender().lastResult(executeGet(cache, cacheElement));
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ context.getResultSender().lastResult(null);
+ }
+ } else {
+ try {
+ context.getResultSender()
+ .lastResult(executeUpdate(context, cache, cacheElement, operation));
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ context.getResultSender().lastResult(new RealizationResult()
+ .setSuccess(false)
+ .setMemberName(context.getMemberName())
+ .setMessage(e.getMessage()));
+ }
}
}
- public RealizationResult executeFunction(FunctionContext<List> context) {
- CacheElement cacheElement = (CacheElement) context.getArguments().get(0);
- CacheElementOperation operation = (CacheElementOperation) context.getArguments().get(1);
- Cache cache = context.getCache();
+ public Object executeGet(InternalCache cache,
+ CacheElement cacheElement) {
+ ConfigurationRealizer realizer = realizers.get(cacheElement.getClass());
+
+ if (realizer == null) {
+ return null;
+ }
+ return realizer.get(cacheElement, cache);
+ }
+
+ public RealizationResult executeUpdate(FunctionContext<List> context,
+ InternalCache cache,
+ CacheElement cacheElement,
+ CacheElementOperation operation) {
ConfigurationRealizer realizer = realizers.get(cacheElement.getClass());
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverCreateFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverCreateFunction.java
index dfce128..d50715f 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverCreateFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GatewayReceiverCreateFunction.java
@@ -23,6 +23,7 @@ import org.apache.geode.cache.configuration.GatewayReceiverConfig;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.execute.ResultSender;
import org.apache.geode.cache.wan.GatewayReceiver;
+import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.execute.InternalFunction;
import org.apache.geode.internal.logging.LogService;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
@@ -96,7 +97,7 @@ public class GatewayReceiverCreateFunction implements InternalFunction {
GatewayReceiver createGatewayReceiver(Cache cache,
GatewayReceiverConfig gatewayReceiverConfig) {
GatewayReceiverRealizer receiverRealizer = new GatewayReceiverRealizer();
- receiverRealizer.create(gatewayReceiverConfig, cache);
+ receiverRealizer.create(gatewayReceiverConfig, (InternalCache) cache);
return cache.getGatewayReceivers().iterator().next();
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberInformationFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberInformationFunction.java
index b96ae10..b0d41a5 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberInformationFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/GetMemberInformationFunction.java
@@ -14,6 +14,7 @@
*/
package org.apache.geode.management.internal.cli.functions;
+import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
@@ -24,7 +25,6 @@ import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.geode.cache.Cache;
-import org.apache.geode.cache.CacheClosedException;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.cache.server.CacheServer;
import org.apache.geode.distributed.DistributedMember;
@@ -42,8 +42,8 @@ import org.apache.geode.internal.cache.tier.sockets.ClientProxyMembershipID;
import org.apache.geode.internal.net.SSLConfigurationFactory;
import org.apache.geode.internal.security.SecurableCommunicationChannel;
import org.apache.geode.management.internal.cli.CliUtil;
-import org.apache.geode.management.internal.cli.domain.CacheServerInfo;
-import org.apache.geode.management.internal.cli.domain.MemberInformation;
+import org.apache.geode.management.runtime.CacheServerInfo;
+import org.apache.geode.management.runtime.MemberInformation;
/***
*
@@ -88,82 +88,89 @@ public class GetMemberInformationFunction implements InternalFunction {
CliUtil.getDistributedMemberByNameOrId(functionContext.getMemberName(),
(InternalCache) functionContext.getCache());
- MemberInformation memberInfo = new MemberInformation();
-
- memberInfo.setName(member.getName());
- memberInfo.setId(member.getId());
- memberInfo.setHost(member.getHost());
- memberInfo.setProcessId(member.getProcessId());
-
- SSLConfig sslConfig = SSLConfigurationFactory.getSSLConfigForComponent(config,
- SecurableCommunicationChannel.WEB);
- memberInfo.setWebSSL(sslConfig.isEnabled());
- memberInfo.setSecured(StringUtils.isNotBlank(config.getSecurityManager()));
- memberInfo.setGroups(config.getGroups());
- memberInfo.setLogFilePath(config.getLogFile().getCanonicalPath());
- memberInfo.setStatArchiveFilePath(config.getStatisticArchiveFile().getCanonicalPath());
- memberInfo.setWorkingDirPath(System.getProperty("user.dir"));
- memberInfo.setCacheXmlFilePath(config.getCacheXmlFile().getCanonicalPath());
- memberInfo.setLocators(config.getLocators());
- memberInfo.setServerBindAddress(config.getServerBindAddress());
- memberInfo.setOffHeapMemorySize(config.getOffHeapMemorySize());
- memberInfo.setHttpServicePort(config.getHttpServicePort());
- memberInfo.setHttpServiceBindAddress(config.getHttpServiceBindAddress());
-
- MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
- MemoryUsage memUsage = memoryMXBean.getHeapMemoryUsage();
- memberInfo.setHeapUsage(bytesToMeg(memUsage.getUsed()));
- memberInfo.setMaxHeapSize(bytesToMeg(memUsage.getMax()));
- memberInfo.setInitHeapSize(bytesToMeg(memUsage.getInit()));
- memberInfo.setHostedRegions(CliUtil.getAllRegionNames(cache));
-
- List<CacheServer> csList = cache.getCacheServers();
-
- // A member is a server only if it has a cacheserver
- if (csList != null && !csList.isEmpty()) {
- memberInfo.setServer(true);
- Iterator<CacheServer> iters = csList.iterator();
- while (iters.hasNext()) {
- CacheServer cs = iters.next();
-
- CacheServerInfo cacheServerInfo = new CacheServerInfo(cs);
- memberInfo.addCacheServerInfo(cacheServerInfo);
- }
- Map<ClientProxyMembershipID, CacheClientStatus> allConnectedClients =
- InternalClientMembership.getStatusForAllClientsIgnoreSubscriptionStatus();
- Iterator<ClientProxyMembershipID> it = allConnectedClients.keySet().iterator();
- int numConnections = 0;
-
- while (it.hasNext()) {
- CacheClientStatus status = allConnectedClients.get(it.next());
- numConnections = numConnections + status.getNumberOfConnections();
- }
- memberInfo.setClientCount(numConnections);
-
- ServerLauncher.ServerState state = ServerLauncher.getServerState();
- if (state != null) {
- memberInfo.setStatus(state.getStatus().getDescription());
- }
- } else {
- memberInfo.setServer(false);
- InternalLocator locator = InternalLocator.getLocator();
- if (locator != null) {
- memberInfo.setLocatorPort(locator.getPort());
- }
-
- LocatorLauncher.LocatorState state = LocatorLauncher.getLocatorState();
- if (state != null) {
- memberInfo.setStatus(state.getStatus().getDescription());
- }
- }
+ MemberInformation memberInfo = getMemberInformation(cache, config, member);
functionContext.getResultSender().lastResult(memberInfo);
- } catch (CacheClosedException e) {
- functionContext.getResultSender().sendException(e);
} catch (Exception e) {
functionContext.getResultSender().sendException(e);
}
}
+ public MemberInformation getMemberInformation(Cache cache, DistributionConfig config,
+ DistributedMember member) throws IOException {
+ MemberInformation memberInfo = new MemberInformation();
+
+ memberInfo.setName(member.getName());
+ memberInfo.setId(member.getId());
+ memberInfo.setHost(member.getHost());
+ memberInfo.setProcessId(member.getProcessId());
+
+ SSLConfig sslConfig = SSLConfigurationFactory.getSSLConfigForComponent(config,
+ SecurableCommunicationChannel.WEB);
+ memberInfo.setWebSSL(sslConfig.isEnabled());
+ memberInfo.setSecured(StringUtils.isNotBlank(config.getSecurityManager()));
+ memberInfo.setGroups(config.getGroups());
+ memberInfo.setLogFilePath(config.getLogFile().getCanonicalPath());
+ memberInfo.setStatArchiveFilePath(config.getStatisticArchiveFile().getCanonicalPath());
+ memberInfo.setWorkingDirPath(System.getProperty("user.dir"));
+ memberInfo.setCacheXmlFilePath(config.getCacheXmlFile().getCanonicalPath());
+ memberInfo.setLocators(config.getLocators());
+ memberInfo.setServerBindAddress(config.getServerBindAddress());
+ memberInfo.setOffHeapMemorySize(config.getOffHeapMemorySize());
+ memberInfo.setHttpServicePort(config.getHttpServicePort());
+ memberInfo.setHttpServiceBindAddress(config.getHttpServiceBindAddress());
+
+ MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
+ MemoryUsage memUsage = memoryMXBean.getHeapMemoryUsage();
+ memberInfo.setHeapUsage(bytesToMeg(memUsage.getUsed()));
+ memberInfo.setMaxHeapSize(bytesToMeg(memUsage.getMax()));
+ memberInfo.setInitHeapSize(bytesToMeg(memUsage.getInit()));
+ memberInfo.setHostedRegions(CliUtil.getAllRegionNames(cache));
+
+ List<CacheServer> csList = cache.getCacheServers();
+
+ // A member is a server only if it has a cacheserver
+ if (csList != null && !csList.isEmpty()) {
+ memberInfo.setServer(true);
+ Iterator<CacheServer> iters = csList.iterator();
+ while (iters.hasNext()) {
+ CacheServer cs = iters.next();
+ CacheServerInfo cacheServerInfo = new CacheServerInfo();
+ cacheServerInfo.setBindAddress(cs.getBindAddress());
+ cacheServerInfo.setPort(cs.getPort());
+ cacheServerInfo.setRunning(cs.isRunning());
+ cacheServerInfo.setMaxConnections(cs.getMaxConnections());
+ cacheServerInfo.setMaxThreads(cs.getMaxThreads());
+ memberInfo.addCacheServerInfo(cacheServerInfo);
+ }
+ Map<ClientProxyMembershipID, CacheClientStatus> allConnectedClients =
+ InternalClientMembership.getStatusForAllClientsIgnoreSubscriptionStatus();
+ Iterator<ClientProxyMembershipID> it = allConnectedClients.keySet().iterator();
+ int numConnections = 0;
+
+ while (it.hasNext()) {
+ CacheClientStatus status = allConnectedClients.get(it.next());
+ numConnections = numConnections + status.getNumberOfConnections();
+ }
+ memberInfo.setClientCount(numConnections);
+
+ ServerLauncher.ServerState state = ServerLauncher.getServerState();
+ if (state != null) {
+ memberInfo.setStatus(state.getStatus().getDescription());
+ }
+ } else {
+ memberInfo.setServer(false);
+ InternalLocator locator = InternalLocator.getLocator();
+ if (locator != null) {
+ memberInfo.setLocatorPort(locator.getPort());
+ }
+
+ LocatorLauncher.LocatorState state = LocatorLauncher.getLocatorState();
+ if (state != null) {
+ memberInfo.setStatus(state.getStatus().getDescription());
+ }
+ }
+ return memberInfo;
+ }
private long bytesToMeg(long bytes) {
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
index 543f2a3..28dbf15 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
@@ -79,7 +79,8 @@ public class RegionCreateFunction implements InternalFunction {
try {
RegionPath regionPath = new RegionPath(regionCreateArgs.getRegionPath());
- realizer.create(regionCreateArgs.getConfig(), regionCreateArgs.getRegionPath(), cache);
+ realizer.create(regionCreateArgs.getConfig(), regionCreateArgs.getRegionPath(),
+ (InternalCache) cache);
XmlEntity xmlEntity = new XmlEntity(CacheXml.REGION, "name", regionPath.getRootRegionName());
resultSender.lastResult(new CliFunctionResult(memberNameOrId, xmlEntity.getXmlDefinition(),
CliStrings.format(CliStrings.CREATE_REGION__MSG__REGION_0_CREATED_ON_1,
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/ConfigurationManager.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/ConfigurationManager.java
index 85be925..cb5ccb3 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/ConfigurationManager.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/ConfigurationManager.java
@@ -22,7 +22,6 @@ import java.util.List;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.configuration.CacheConfig;
import org.apache.geode.cache.configuration.CacheElement;
-import org.apache.geode.management.api.RespondsWith;
/**
* Defines the behavior to mutate a configuration change into a pre-existing cache config from a
@@ -31,7 +30,7 @@ import org.apache.geode.management.api.RespondsWith;
* type {@link CacheElement}, which represents the configuration change.
*/
@Experimental
-public interface ConfigurationManager<T extends CacheElement & RespondsWith<R>, R extends CacheElement> {
+public interface ConfigurationManager<T extends CacheElement> {
/**
* specify how to add the config to the existing cache config. Note at this point, the config
* should have passed all the validations already.
@@ -42,7 +41,7 @@ public interface ConfigurationManager<T extends CacheElement & RespondsWith<R>,
void delete(T config, CacheConfig existing);
- List<R> list(T filterConfig, CacheConfig existing);
+ List<T> list(T filterConfig, CacheConfig existing);
T get(String id, CacheConfig existing);
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/GatewayReceiverConfigManager.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/GatewayReceiverConfigManager.java
index 68b3013..96e4865 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/GatewayReceiverConfigManager.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/GatewayReceiverConfigManager.java
@@ -23,7 +23,7 @@ import org.apache.geode.cache.configuration.GatewayReceiverConfig;
import org.apache.geode.internal.cache.InternalCache;
public class GatewayReceiverConfigManager
- implements ConfigurationManager<GatewayReceiverConfig, GatewayReceiverConfig> {
+ implements ConfigurationManager<GatewayReceiverConfig> {
private final InternalCache cache;
public GatewayReceiverConfigManager(InternalCache cache) {
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/MemberConfigManager.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/MemberConfigManager.java
deleted file mode 100644
index 364fd70..0000000
--- a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/MemberConfigManager.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * 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.management.internal.configuration.mutators;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.apache.commons.lang3.NotImplementedException;
-
-import org.apache.geode.annotations.VisibleForTesting;
-import org.apache.geode.cache.configuration.CacheConfig;
-import org.apache.geode.cache.execute.Execution;
-import org.apache.geode.cache.execute.FunctionService;
-import org.apache.geode.cache.execute.ResultCollector;
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.distributed.internal.membership.MembershipManager;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.management.configuration.MemberConfig;
-import org.apache.geode.management.configuration.RuntimeMemberConfig;
-import org.apache.geode.management.internal.cli.domain.CacheServerInfo;
-import org.apache.geode.management.internal.cli.domain.MemberInformation;
-import org.apache.geode.management.internal.cli.functions.GetMemberInformationFunction;
-
-public class MemberConfigManager
- implements ConfigurationManager<MemberConfig, RuntimeMemberConfig> {
-
- private InternalCache cache;
-
- public MemberConfigManager(InternalCache cache) {
- this.cache = cache;
- }
-
- @Override
- public void add(MemberConfig config, CacheConfig existing) {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public void update(MemberConfig config, CacheConfig existing) {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public void delete(MemberConfig config, CacheConfig existing) {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public List<RuntimeMemberConfig> list(MemberConfig filter, CacheConfig existing) {
- Set<DistributedMember> distributedMembers = getDistributedMembers(filter);
- if (distributedMembers.size() == 0) {
- return Collections.emptyList();
- }
-
- ArrayList<MemberInformation> memberInformation = getMemberInformation(distributedMembers);
-
- return generateMemberConfigs(memberInformation);
- }
-
- @Override
- public MemberConfig get(String id, CacheConfig existing) {
- throw new NotImplementedException("Not implemented");
- }
-
- @VisibleForTesting
- Set<DistributedMember> getDistributedMembers(MemberConfig filter) {
- Set<InternalDistributedMember> distributionManagerIds =
- cache.getDistributionManager().getDistributionManagerIds();
- if (filter.getId() != null) {
- distributionManagerIds = distributionManagerIds.stream().filter(
- internalDistributedMember -> (filter.getId().equals(internalDistributedMember.getName())))
- .collect(Collectors.toSet());
- }
-
- return distributionManagerIds.stream()
- .map(DistributedMember.class::cast).collect(Collectors.toSet());
- }
-
- private ArrayList<MemberInformation> getMemberInformation(
- Set<DistributedMember> distributedMembers) {
- Execution execution = FunctionService.onMembers(distributedMembers);
- ResultCollector<?, ?> resultCollector = execution.execute(new GetMemberInformationFunction());
- return (ArrayList<MemberInformation>) resultCollector.getResult();
- }
-
- @VisibleForTesting
- List<RuntimeMemberConfig> generateMemberConfigs(ArrayList<MemberInformation> memberInformation) {
- final String coordinatorId = getCoordinatorId();
- return memberInformation.stream().map(
- memberInfo -> generateMemberConfig(coordinatorId, memberInfo)).collect(Collectors.toList());
- }
-
- @VisibleForTesting
- RuntimeMemberConfig generateMemberConfig(String coordinatorId, MemberInformation memberInfo) {
- RuntimeMemberConfig member = new RuntimeMemberConfig();
- member.setId(memberInfo.getName());
- member.setHost(memberInfo.getHost());
- member.setPid(memberInfo.getProcessId());
- member.setStatus(memberInfo.getStatus());
- member.setInitialHeap(memberInfo.getInitHeapSize());
- member.setMaxHeap(memberInfo.getMaxHeapSize());
- member.setCoordinator(memberInfo.getId().equals(coordinatorId));
- member.setUsedHeap(memberInfo.getHeapUsage());
- member.setLogFile(memberInfo.getLogFilePath());
- member.setWorkingDirectory(memberInfo.getWorkingDirPath());
-
- if (memberInfo.isServer()) {
- for (CacheServerInfo info : memberInfo.getCacheServeInfo()) {
- RuntimeMemberConfig.CacheServerConfig cacheServerConfig =
- new RuntimeMemberConfig.CacheServerConfig();
- cacheServerConfig.setPort(info.getPort());
- cacheServerConfig.setMaxConnections(info.getMaxConnections());
- cacheServerConfig.setMaxThreads(info.getMaxThreads());
- member.addCacheServer(cacheServerConfig);
- }
- member.setLocator(false);
- member.setGroups(Arrays.asList(memberInfo.getGroups().split(",")));
- member.setClientConnections(memberInfo.getClientCount());
- } else {
- member.setPort(memberInfo.getLocatorPort());
- member.setLocator(true);
- }
- return member;
- }
-
- @VisibleForTesting
- String getCoordinatorId() {
- return Optional.ofNullable(cache.getDistributionManager())
- .map(DistributionManager::getMembershipManager)
- .map(MembershipManager::getCoordinator)
- .map(DistributedMember::getId)
- .orElse(null);
- }
-}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/PdxManager.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/PdxManager.java
index 6b25fcb..2601fba 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/PdxManager.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/PdxManager.java
@@ -21,7 +21,7 @@ import java.util.List;
import org.apache.geode.cache.configuration.CacheConfig;
import org.apache.geode.cache.configuration.PdxType;
-public class PdxManager implements ConfigurationManager<PdxType, PdxType> {
+public class PdxManager implements ConfigurationManager<PdxType> {
@Override
public void add(PdxType config, CacheConfig existing) {
existing.setPdx(config);
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigManager.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigManager.java
index fcec7a2..c268981 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigManager.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigManager.java
@@ -17,36 +17,19 @@
package org.apache.geode.management.internal.configuration.mutators;
-import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang3.NotImplementedException;
import org.apache.commons.lang3.StringUtils;
-import org.apache.geode.annotations.VisibleForTesting;
import org.apache.geode.cache.configuration.CacheConfig;
import org.apache.geode.cache.configuration.CacheElement;
import org.apache.geode.cache.configuration.RegionConfig;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.management.DistributedRegionMXBean;
-import org.apache.geode.management.ManagementService;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
-public class RegionConfigManager
- implements ConfigurationManager<RegionConfig, RuntimeRegionConfig> {
- private InternalCache cache;
+public class RegionConfigManager implements ConfigurationManager<RegionConfig> {
- @VisibleForTesting
- RegionConfigManager() {}
-
- public RegionConfigManager(InternalCache cache) {
- this.cache = cache;
- }
-
- ManagementService getManagementService() {
- return ManagementService.getExistingManagementService(cache);
- }
+ public RegionConfigManager() {}
@Override
public void add(RegionConfig configElement, CacheConfig existingConfig) {
@@ -64,29 +47,17 @@ public class RegionConfigManager
}
@Override
- public List<RuntimeRegionConfig> list(RegionConfig filter, CacheConfig existing) {
- List<RegionConfig> staticRegionConfigs;
+ public List<RegionConfig> list(RegionConfig filter, CacheConfig existing) {
+ List<RegionConfig> regionConfigs;
if (StringUtils.isBlank(filter.getName())) {
- staticRegionConfigs = existing.getRegions();
+ regionConfigs = existing.getRegions();
} else {
- staticRegionConfigs =
+ regionConfigs =
existing.getRegions().stream().filter(r -> filter.getName().equals(r.getName())).collect(
Collectors.toList());
}
- List<RuntimeRegionConfig> results = new ArrayList<>();
- for (RegionConfig config : staticRegionConfigs) {
- DistributedRegionMXBean distributedRegionMXBean =
- getManagementService().getDistributedRegionMXBean("/" + config.getName());
- long entryCount = 0;
- if (distributedRegionMXBean != null) {
- entryCount = distributedRegionMXBean.getSystemRegionEntryCount();
- }
- RuntimeRegionConfig runtimeConfig = new RuntimeRegionConfig(config);
- runtimeConfig.setEntryCount(entryCount);
- results.add(runtimeConfig);
- }
- return results;
+ return regionConfigs;
}
@Override
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/ConfigurationRealizer.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/ConfigurationRealizer.java
index 0ca7399..8cac09d 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/ConfigurationRealizer.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/ConfigurationRealizer.java
@@ -17,9 +17,10 @@
package org.apache.geode.management.internal.configuration.realizers;
import org.apache.geode.annotations.Experimental;
-import org.apache.geode.cache.Cache;
import org.apache.geode.cache.configuration.CacheElement;
+import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.management.api.RealizationResult;
+import org.apache.geode.management.api.RespondsWith;
/**
* Defines the behavior to realize a configuration change in the cache on a server. Created with an
@@ -27,12 +28,16 @@ import org.apache.geode.management.api.RealizationResult;
* configuration change.
*/
@Experimental
-public interface ConfigurationRealizer<T extends CacheElement> {
- RealizationResult create(T config, Cache cache);
+public interface ConfigurationRealizer<T extends CacheElement & RespondsWith<R>, R> {
+ RealizationResult create(T config, InternalCache cache);
- boolean exists(T config, Cache cache);
+ default boolean exists(T config, InternalCache cache) {
+ return get(config, cache) != null;
+ }
- RealizationResult update(T config, Cache cache);
+ R get(T config, InternalCache cache);
- RealizationResult delete(T config, Cache cache);
+ RealizationResult update(T config, InternalCache cache);
+
+ RealizationResult delete(T config, InternalCache cache);
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/GatewayReceiverRealizer.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/GatewayReceiverRealizer.java
index 797ceb2..929c481 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/GatewayReceiverRealizer.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/GatewayReceiverRealizer.java
@@ -21,16 +21,18 @@ import java.util.List;
import org.apache.commons.lang3.NotImplementedException;
-import org.apache.geode.cache.Cache;
import org.apache.geode.cache.configuration.DeclarableType;
import org.apache.geode.cache.configuration.GatewayReceiverConfig;
import org.apache.geode.cache.wan.GatewayReceiverFactory;
+import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.management.api.RealizationResult;
+import org.apache.geode.management.runtime.RuntimeInfo;
-public class GatewayReceiverRealizer implements ConfigurationRealizer<GatewayReceiverConfig> {
+public class GatewayReceiverRealizer
+ implements ConfigurationRealizer<GatewayReceiverConfig, RuntimeInfo> {
@Override
- public RealizationResult create(GatewayReceiverConfig config, Cache cache) {
+ public RealizationResult create(GatewayReceiverConfig config, InternalCache cache) {
GatewayReceiverFactory gatewayReceiverFactory = cache.createGatewayReceiverFactory();
String startPort = config.getStartPort();
@@ -82,17 +84,22 @@ public class GatewayReceiverRealizer implements ConfigurationRealizer<GatewayRec
}
@Override
- public boolean exists(GatewayReceiverConfig config, Cache cache) {
+ public boolean exists(GatewayReceiverConfig config, InternalCache cache) {
return cache.getGatewayReceivers() != null && cache.getGatewayReceivers().size() > 0;
}
@Override
- public RealizationResult update(GatewayReceiverConfig config, Cache cache) {
+ public RuntimeInfo get(GatewayReceiverConfig config, InternalCache cache) {
+ return null;
+ }
+
+ @Override
+ public RealizationResult update(GatewayReceiverConfig config, InternalCache cache) {
throw new NotImplementedException("Not implemented");
}
@Override
- public RealizationResult delete(GatewayReceiverConfig config, Cache cache) {
+ public RealizationResult delete(GatewayReceiverConfig config, InternalCache cache) {
throw new NotImplementedException("Not implemented");
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/MemberConfigRealizer.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/MemberConfigRealizer.java
new file mode 100644
index 0000000..2abfdc9
--- /dev/null
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/MemberConfigRealizer.java
@@ -0,0 +1,81 @@
+/*
+ * 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.management.internal.configuration.realizers;
+
+import java.io.IOException;
+import java.util.Optional;
+
+import org.apache.logging.log4j.Logger;
+
+import org.apache.geode.annotations.VisibleForTesting;
+import org.apache.geode.distributed.DistributedMember;
+import org.apache.geode.distributed.internal.DistributionManager;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
+import org.apache.geode.distributed.internal.membership.MembershipManager;
+import org.apache.geode.internal.cache.InternalCache;
+import org.apache.geode.internal.logging.LogService;
+import org.apache.geode.management.api.RealizationResult;
+import org.apache.geode.management.configuration.MemberConfig;
+import org.apache.geode.management.internal.cli.functions.GetMemberInformationFunction;
+import org.apache.geode.management.runtime.MemberInformation;
+
+public class MemberConfigRealizer
+ implements ConfigurationRealizer<MemberConfig, MemberInformation> {
+ private static final Logger logger = LogService.getLogger();
+
+ @Override
+ public RealizationResult create(MemberConfig config, InternalCache cache) {
+ throw new IllegalStateException("Not supported");
+ }
+
+ @Override
+ public MemberInformation get(MemberConfig config, InternalCache cache) {
+ GetMemberInformationFunction getMemberInfoFunction = new GetMemberInformationFunction();
+ InternalDistributedSystem system = (InternalDistributedSystem) cache.getDistributedSystem();
+ DistributedMember member = system.getDistributedMember();
+
+ try {
+ MemberInformation memberInformation =
+ getMemberInfoFunction.getMemberInformation(cache, system.getConfig(), member);
+ if (member.getId().equals(getCoordinatorId((cache)))) {
+ memberInformation.setCoordinator(true);
+ }
+ return memberInformation;
+ } catch (IOException e) {
+ logger.error("unable to get the member information. ", e);
+ return null;
+ }
+ }
+
+ @Override
+ public RealizationResult update(MemberConfig config, InternalCache cache) {
+ throw new IllegalStateException("Not supported");
+ }
+
+ @Override
+ public RealizationResult delete(MemberConfig config, InternalCache cache) {
+ throw new IllegalStateException("Not supported");
+ }
+
+ @VisibleForTesting
+ String getCoordinatorId(InternalCache cache) {
+ return Optional.ofNullable(cache.getDistributionManager())
+ .map(DistributionManager::getMembershipManager)
+ .map(MembershipManager::getCoordinator)
+ .map(DistributedMember::getId)
+ .orElse(null);
+ }
+}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/RegionConfigRealizer.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/RegionConfigRealizer.java
index 7b38b44..e113718 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/RegionConfigRealizer.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/realizers/RegionConfigRealizer.java
@@ -35,14 +35,17 @@ import org.apache.geode.cache.configuration.DeclarableType;
import org.apache.geode.cache.configuration.RegionAttributesType;
import org.apache.geode.cache.configuration.RegionConfig;
import org.apache.geode.internal.cache.EvictionAttributesImpl;
+import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.PartitionAttributesImpl;
import org.apache.geode.management.api.RealizationResult;
import org.apache.geode.management.internal.cli.CliUtil;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
import org.apache.geode.management.internal.cli.util.RegionPath;
import org.apache.geode.management.internal.configuration.domain.DeclarableTypeInstantiator;
+import org.apache.geode.management.runtime.RuntimeRegionInfo;
-public class RegionConfigRealizer implements ConfigurationRealizer<RegionConfig> {
+public class RegionConfigRealizer
+ implements ConfigurationRealizer<RegionConfig, RuntimeRegionInfo> {
public RegionConfigRealizer() {}
/**
@@ -51,7 +54,7 @@ public class RegionConfigRealizer implements ConfigurationRealizer<RegionConfig>
* @param regionConfig the name in the regionConfig can not contain sub-regions.
*/
@Override
- public RealizationResult create(RegionConfig regionConfig, Cache cache) {
+ public RealizationResult create(RegionConfig regionConfig, InternalCache cache) {
RegionFactory factory = getRegionFactory(cache, regionConfig.getRegionAttributes());
factory.create(regionConfig.getName());
return new RealizationResult().setMessage("Region successfully created.");
@@ -65,7 +68,8 @@ public class RegionConfigRealizer implements ConfigurationRealizer<RegionConfig>
* @param regionConfig the name in regionConfig is ignored.
* @param regionPath this is the full path of the region
*/
- public RealizationResult create(RegionConfig regionConfig, String regionPath, Cache cache) {
+ public RealizationResult create(RegionConfig regionConfig, String regionPath,
+ InternalCache cache) {
RegionFactory factory = getRegionFactory(cache, regionConfig.getRegionAttributes());
RegionPath regionPathData = new RegionPath(regionPath);
String regionName = regionPathData.getName();
@@ -290,18 +294,27 @@ public class RegionConfigRealizer implements ConfigurationRealizer<RegionConfig>
return partitionAttributes;
}
+
@Override
- public boolean exists(RegionConfig config, Cache cache) {
- return cache.getRegion("/" + config.getName()) != null;
+ public RuntimeRegionInfo get(RegionConfig config, InternalCache cache) {
+ Region<Object, Object> region = cache.getRegion("/" + config.getName());
+ if (region == null) {
+ return null;
+ }
+
+ RuntimeRegionInfo info = new RuntimeRegionInfo();
+ info.setEntryCount(region.size());
+ return info;
}
+
@Override
- public RealizationResult update(RegionConfig config, Cache cache) {
+ public RealizationResult update(RegionConfig config, InternalCache cache) {
throw new NotImplementedException("Not implemented");
}
@Override
- public RealizationResult delete(RegionConfig config, Cache cache) {
+ public RealizationResult delete(RegionConfig config, InternalCache cache) {
Region region = cache.getRegion(config.getName());
if (region == null) {
// Since we are trying to delete this region, we can return early
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/validators/MemberValidator.java b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/validators/MemberValidator.java
index b3e250f..c9097b1 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/configuration/validators/MemberValidator.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/configuration/validators/MemberValidator.java
@@ -22,6 +22,8 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
+import org.apache.commons.lang3.StringUtils;
+
import org.apache.geode.cache.configuration.CacheConfig;
import org.apache.geode.cache.configuration.CacheElement;
import org.apache.geode.distributed.ConfigurationPersistenceService;
@@ -51,8 +53,8 @@ public class MemberValidator {
}
Set<DistributedMember> membersOfExistingGroups =
- findMembers(existingElementsAndTheirGroups.keySet().toArray(new String[0]));
- Set<DistributedMember> membersOfNewGroup = findMembers(config.getConfigGroup());
+ findServers(existingElementsAndTheirGroups.keySet().toArray(new String[0]));
+ Set<DistributedMember> membersOfNewGroup = findServers(config.getConfigGroup());
Set<DistributedMember> intersection = new HashSet<>(membersOfExistingGroups);
intersection.retainAll(membersOfNewGroup);
if (intersection.size() > 0) {
@@ -94,22 +96,35 @@ public class MemberValidator {
/**
* @param groups should not be null contains no element
*/
- public Set<DistributedMember> findMembers(String... groups) {
+ public Set<DistributedMember> findServers(String... groups) {
+ return findMembers(false, groups);
+ }
+
+ public Set<DistributedMember> findMembers(String id, String... groups) {
+ if (StringUtils.isNotBlank(id)) {
+ return getAllServersAndLocators().stream().filter(m -> m.getName().equals(id))
+ .collect(Collectors.toSet());
+ }
+
+ return findMembers(true, groups);
+ }
+
+ public Set<DistributedMember> findMembers(boolean includeLocators, String... groups) {
if (groups == null || groups.length == 0) {
- throw new IllegalArgumentException("groups cannot be empty");
+ groups = new String[] {CacheElement.CLUSTER};
}
- Set<DistributedMember> allMembers = getAllServers();
+ Set<DistributedMember> all = includeLocators ? getAllServersAndLocators() : getAllServers();
// if groups contains "cluster" group, return all members
if (Arrays.asList(groups).contains(CacheElement.CLUSTER)) {
- return allMembers;
+ return all;
}
Set<DistributedMember> matchingMembers = new HashSet<>();
for (String group : groups) {
matchingMembers.addAll(
- allMembers.stream().filter(m -> m.getGroups() != null && m.getGroups().contains(group))
+ all.stream().filter(m -> m.getGroups() != null && m.getGroups().contains(group))
.collect(Collectors.toSet()));
}
return matchingMembers;
@@ -119,4 +134,9 @@ public class MemberValidator {
return cache.getDistributionManager().getNormalDistributionManagerIds()
.stream().map(DistributedMember.class::cast).collect(Collectors.toSet());
}
+
+ Set<DistributedMember> getAllServersAndLocators() {
+ return cache.getDistributionManager().getDistributionManagerIds()
+ .stream().map(DistributedMember.class::cast).collect(Collectors.toSet());
+ }
}
diff --git a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
index 5c9a60d..82474b1 100644
--- a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
+++ b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
@@ -424,7 +424,6 @@ org/apache/geode/management/internal/cli/CliUtil$DeflaterInflaterData,true,11048
org/apache/geode/management/internal/cli/commands/CreateJndiBindingCommand$DATASOURCE_TYPE,false,type:java/lang/String
org/apache/geode/management/internal/cli/commands/ImportClusterConfigurationCommand$Action,false
org/apache/geode/management/internal/cli/domain/AsyncEventQueueDetails,true,1,batchSize:int,diskStoreName:java/lang/String,id:java/lang/String,listener:java/lang/String,listenerProperties:java/util/Properties,maxQueueMemory:int,persistent:boolean
-org/apache/geode/management/internal/cli/domain/CacheServerInfo,true,1,bindAddress:java/lang/String,isRunning:boolean,maxConnections:int,maxThreads:int,port:int
org/apache/geode/management/internal/cli/domain/DataCommandRequest,false,command:java/lang/String,key:java/lang/String,keyClass:java/lang/String,loadOnCacheMiss:boolean,principal:java/lang/Object,putIfAbsent:boolean,query:java/lang/String,recursive:boolean,regionName:java/lang/String,removeAllKeys:java/lang/String,value:java/lang/String,valueClass:java/lang/String
org/apache/geode/management/internal/cli/domain/DataCommandResult,true,2601227194108110936,command:java/lang/String,error:java/lang/Throwable,errorString:java/lang/String,getResult:java/lang/Object,hasResultForAggregation:boolean,infoString:java/lang/String,inputKey:java/lang/Object,inputQuery:java/lang/Object,inputValue:java/lang/Object,keyClass:java/lang/String,limit:int,locateEntryLocations:java/util/List,locateEntryResult:org/apache/geode/management/internal/cli/domain/DataCommandRes [...]
org/apache/geode/management/internal/cli/domain/DataCommandResult$KeyInfo,false,host:java/lang/String,locations:java/util/ArrayList,memberId:java/lang/String,memberName:java/lang/String,pid:int
@@ -440,7 +439,6 @@ org/apache/geode/management/internal/cli/domain/FixedPartitionAttributesInfo,tru
org/apache/geode/management/internal/cli/domain/IndexDetails,true,-2198907141534201288,fromClause:java/lang/String,indexName:java/lang/String,indexStatisticsDetails:org/apache/geode/management/internal/cli/domain/IndexDetails$IndexStatisticsDetails,indexType:org/apache/geode/cache/query/IndexType,indexedExpression:java/lang/String,isValid:boolean,memberId:java/lang/String,memberName:java/lang/String,projectionAttributes:java/lang/String,regionName:java/lang/String,regionPath:java/lang/String
org/apache/geode/management/internal/cli/domain/IndexDetails$IndexStatisticsDetails,false,numberOfKeys:java/lang/Long,numberOfUpdates:java/lang/Long,numberOfValues:java/lang/Long,totalUpdateTime:java/lang/Long,totalUses:java/lang/Long
org/apache/geode/management/internal/cli/domain/MemberConfigurationInfo,false,cacheAttributes:java/util/Map,cacheServerAttributes:java/util/List,gfePropsRuntime:java/util/Map,gfePropsSetFromFile:java/util/Map,gfePropsSetUsingApi:java/util/Map,gfePropsSetWithDefaults:java/util/Map,jvmInputArguments:java/util/List,pdxAttributes:java/util/Map,systemProperties:java/util/Properties
-org/apache/geode/management/internal/cli/domain/MemberInformation,true,1,cacheServerList:java/util/List,cacheXmlFilePath:java/lang/String,clientCount:int,cpuUsage:double,groups:java/lang/String,heapUsage:long,host:java/lang/String,hostedRegions:java/util/Set,httpServiceBindAddress:java/lang/String,httpServicePort:int,id:java/lang/String,initHeapSize:long,isSecured:boolean,isServer:boolean,locatorPort:int,locators:java/lang/String,logFilePath:java/lang/String,maxHeapSize:long,name:java/la [...]
org/apache/geode/management/internal/cli/domain/PartitionAttributesInfo,true,1,colocatedWith:java/lang/String,fpaInfoList:java/util/List,localMaxMemory:int,nonDefaultAttributes:java/util/Map,partitionResolverName:java/lang/String,recoveryDelay:long,redundantCopies:int,startupRecoveryDelay:long,totalNumBuckets:int
org/apache/geode/management/internal/cli/domain/RegionAttributesInfo,true,336184564012988487,asyncEventQueueIDs:java/util/Set,cacheListenerClassNames:java/util/List,cacheLoaderClassName:java/lang/String,cacheWriterClassName:java/lang/String,cloningEnabled:boolean,compressorClassName:java/lang/String,concurrencyChecksEnabled:boolean,concurrencyLevel:int,customExpiryIdleTimeoutClass:java/lang/String,customExpiryTTLClass:java/lang/String,dataPolicy:org/apache/geode/cache/DataPolicy,diskStor [...]
org/apache/geode/management/internal/cli/domain/RegionDescription,true,6461449275798378332,cndEvictionAttributes:java/util/Map,cndPartitionAttributes:java/util/Map,cndRegionAttributes:java/util/Map,dataPolicy:org/apache/geode/cache/DataPolicy,isAccessor:boolean,isLocal:boolean,isPartition:boolean,isPersistent:boolean,isReplicate:boolean,name:java/lang/String,regionDescPerMemberMap:java/util/Map,scope:org/apache/geode/cache/Scope
@@ -449,6 +447,7 @@ org/apache/geode/management/internal/cli/domain/RegionInformation,true,1,dataPol
org/apache/geode/management/internal/cli/domain/StackTracesPerMember,true,1,memberNameOrId:java/lang/String,stackTraces:byte[]
org/apache/geode/management/internal/cli/functions/AlterRuntimeConfigFunction,true,1
org/apache/geode/management/internal/cli/functions/AsyncEventQueueFunctionArgs,true,-6524494645663740872,asyncEventQueueId:java/lang/String,batchSize:int,batchTimeInterval:int,diskStoreName:java/lang/String,diskSynchronous:boolean,dispatcherThreads:int,enableBatchConflation:boolean,forwardExpirationDestroy:boolean,gatewayEventFilters:java/lang/String[],gatewaySubstitutionFilter:java/lang/String,isParallel:boolean,listenerClassName:java/lang/String,listenerProperties:java/util/Properties, [...]
+org/apache/geode/management/internal/cli/functions/CacheRealizationFunction,false
org/apache/geode/management/internal/cli/functions/ChangeLogLevelFunction,true,1
org/apache/geode/management/internal/cli/functions/CliFunctionResult$StatusState,false
org/apache/geode/management/internal/cli/functions/CloseDurableClientFunction,true,1
@@ -514,7 +513,7 @@ org/apache/geode/management/internal/cli/functions/ShutDownFunction,true,1
org/apache/geode/management/internal/cli/functions/SizeExportLogsFunction,true,1
org/apache/geode/management/internal/cli/functions/UndeployFunction,true,1
org/apache/geode/management/internal/cli/functions/UnregisterFunction,true,1
-org/apache/geode/management/internal/cli/functions/UpdateCacheFunction,false
+org/apache/geode/management/internal/cli/functions/CacheRealizationFunction,false
org/apache/geode/management/internal/cli/functions/UserFunctionExecution,true,1
org/apache/geode/management/internal/cli/result/CommandResultException,true,1,result:org/apache/geode/management/cli/Result
org/apache/geode/management/internal/cli/result/TableBuilder$Align,false
diff --git a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-management-serializables.txt b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-management-serializables.txt
index 658e281..8b06577 100644
--- a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-management-serializables.txt
+++ b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-management-serializables.txt
@@ -34,6 +34,7 @@ org/apache/geode/cache/configuration/RegionType,false
org/apache/geode/management/api/ClusterManagementResult$StatusCode,false
org/apache/geode/management/api/RealizationResult,false,memberName:java/lang/String,message:java/lang/String,success:boolean
org/apache/geode/management/configuration/MemberConfig,false,id:java/lang/String
-org/apache/geode/management/configuration/RuntimeMemberConfig,false,cacheServers:java/util/List,clientConnections:int,host:java/lang/String,initialHeap:long,isCoordinator:boolean,isLocator:boolean,logFile:java/lang/String,maxHeap:long,pid:int,port:java/lang/Integer,status:java/lang/String,usedHeap:long,workingDirectory:java/lang/String
-org/apache/geode/management/configuration/RuntimeRegionConfig,false,entryCount:long
org/apache/geode/management/internal/cli/domain/ClassName,true,1,className:java/lang/String,initProperties:java/util/Properties
+org/apache/geode/management/runtime/CacheServerInfo,true,1,bindAddress:java/lang/String,isRunning:boolean,maxConnections:int,maxThreads:int,port:int
+org/apache/geode/management/runtime/MemberInformation,true,1,cacheServerList:java/util/List,cacheXmlFilePath:java/lang/String,clientCount:int,cpuUsage:double,groups:java/lang/String,heapUsage:long,host:java/lang/String,hostedRegions:java/util/Set,httpServiceBindAddress:java/lang/String,httpServicePort:int,id:java/lang/String,initHeapSize:long,isCoordinator:boolean,isSecured:boolean,isServer:boolean,locatorPort:int,locators:java/lang/String,logFilePath:java/lang/String,maxHeapSize:long,na [...]
+org/apache/geode/management/runtime/RuntimeRegionInfo,false,entryCount:long: new class
\ No newline at end of file
diff --git a/geode-core/src/test/java/org/apache/geode/cache/configuration/RegionConfigTest.java b/geode-core/src/test/java/org/apache/geode/cache/configuration/RegionConfigTest.java
index 8fa29f0..af964be 100644
--- a/geode-core/src/test/java/org/apache/geode/cache/configuration/RegionConfigTest.java
+++ b/geode-core/src/test/java/org/apache/geode/cache/configuration/RegionConfigTest.java
@@ -32,6 +32,8 @@ import org.apache.geode.internal.config.JAXBService;
import org.apache.geode.management.api.RestfulEndpoint;
import org.apache.geode.management.internal.CacheElementOperation;
import org.apache.geode.management.internal.configuration.validators.RegionConfigValidator;
+import org.apache.geode.management.runtime.RuntimeInfo;
+import org.apache.geode.management.runtime.RuntimeRegionInfo;
import org.apache.geode.util.internal.GeodeJsonMapper;
public class RegionConfigTest {
@@ -268,4 +270,18 @@ public class RegionConfigTest {
assertThat(regionConfig.getUri())
.isEqualTo(RestfulEndpoint.URI_CONTEXT + "/v2/regions/regionA");
}
+
+ @Test
+ public void getRuntimeClass() throws Exception {
+ RegionConfig config = new RegionConfig();
+ assertThat(config.getRuntimeClass()).isEqualTo(RuntimeRegionInfo.class);
+ assertThat(config.hasRuntimeInfo()).isTrue();
+ }
+
+ @Test
+ public void getIndexRuntimeClass() throws Exception {
+ RegionConfig.Index index = new RegionConfig.Index();
+ assertThat(index.getRuntimeClass()).isEqualTo(RuntimeInfo.class);
+ assertThat(index.hasRuntimeInfo()).isFalse();
+ }
}
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/api/ClusterManagementResultTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/api/ClusterManagementResultTest.java
index d063255..eab83b3 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/api/ClusterManagementResultTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/api/ClusterManagementResultTest.java
@@ -21,14 +21,20 @@ import static org.apache.geode.management.api.ClusterManagementResult.StatusCode
import static org.apache.geode.management.api.ClusterManagementResult.StatusCode.OK;
import static org.assertj.core.api.Assertions.assertThat;
+import java.util.Collections;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Before;
import org.junit.Test;
+import org.apache.geode.cache.configuration.RegionConfig;
import org.apache.geode.management.api.ClusterManagementResult;
+import org.apache.geode.management.api.Response;
+import org.apache.geode.management.runtime.RuntimeRegionInfo;
import org.apache.geode.util.internal.GeodeJsonMapper;
public class ClusterManagementResultTest {
- private ClusterManagementResult<?> result;
+ private ClusterManagementResult result;
@Before
public void setup() {
@@ -109,8 +115,35 @@ public class ClusterManagementResultTest {
@Test
public void deserialize() throws Exception {
String json = "{\"statusCode\":\"OK\"}";
- ClusterManagementResult<?> result =
+ ClusterManagementResult result =
GeodeJsonMapper.getMapper().readValue(json, ClusterManagementResult.class);
assertThat(result.getResult()).isNotNull().isEmpty();
}
+
+ @Test
+ public void serializeResult() throws Exception {
+ ObjectMapper mapper = GeodeJsonMapper.getMapper();
+ ClusterManagementResult<RegionConfig, RuntimeRegionInfo> result =
+ new ClusterManagementResult<>();
+ Response<RegionConfig, RuntimeRegionInfo> response = new Response<>();
+ RegionConfig region = new RegionConfig();
+ region.setName("region");
+ region.setType("REPLICATE");
+ region.setGroup("group1");
+ response.setConfig(region);
+
+ RuntimeRegionInfo info = new RuntimeRegionInfo();
+ info.setEntryCount(3);
+ response.setRuntimeInfo(Collections.singletonList(info));
+ result.setResult(Collections.singletonList(response));
+
+ String json = mapper.writeValueAsString(result);
+ System.out.println(json);
+ ClusterManagementResult<RegionConfig, RuntimeRegionInfo> result1 =
+ mapper.readValue(json, ClusterManagementResult.class);
+ assertThat(result1.getConfigResult()).hasSize(1)
+ .extracting(RegionConfig::getName).containsExactly("region");
+ assertThat(result1.getRuntimeResult()).hasSize(1)
+ .extracting(RuntimeRegionInfo::getEntryCount).containsExactly(3L);
+ }
}
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/api/LocatorClusterManagementServiceTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/api/LocatorClusterManagementServiceTest.java
index eb15c1c..078a686 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/api/LocatorClusterManagementServiceTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/api/LocatorClusterManagementServiceTest.java
@@ -53,7 +53,6 @@ import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.RealizationResult;
import org.apache.geode.management.configuration.MemberConfig;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
import org.apache.geode.management.internal.CacheElementOperation;
import org.apache.geode.management.internal.configuration.mutators.ConfigurationManager;
import org.apache.geode.management.internal.configuration.mutators.GatewayReceiverConfigManager;
@@ -70,12 +69,12 @@ public class LocatorClusterManagementServiceTest {
private InternalCache cache;
private InternalConfigurationPersistenceService persistenceService;
private RegionConfig regionConfig;
- private ClusterManagementResult<RegionConfig> result;
+ private ClusterManagementResult<?, ?> result;
private Map<Class, ConfigurationValidator> validators = new HashMap<>();
private Map<Class, ConfigurationManager> managers = new HashMap<>();
private ConfigurationValidator<RegionConfig> regionValidator;
private CacheElementValidator cacheElementValidator;
- private ConfigurationManager<RegionConfig, RuntimeRegionConfig> regionManager;
+ private ConfigurationManager<RegionConfig> regionManager;
private MemberValidator memberValidator;
@Before
@@ -116,7 +115,7 @@ public class LocatorClusterManagementServiceTest {
@Test
public void create_validatorIsCalledCorrectly() throws Exception {
- doReturn(Collections.emptySet()).when(memberValidator).findMembers(anyString());
+ doReturn(Collections.emptySet()).when(memberValidator).findServers(anyString());
doNothing().when(persistenceService).updateCacheConfig(any(), any());
service.create(regionConfig);
verify(cacheElementValidator).validate(CacheElementOperation.CREATE, regionConfig);
@@ -126,7 +125,7 @@ public class LocatorClusterManagementServiceTest {
@Test
public void delete_validatorIsCalledCorrectly() throws Exception {
- doReturn(Collections.emptySet()).when(memberValidator).findMembers(anyString());
+ doReturn(Collections.emptySet()).when(memberValidator).findServers(anyString());
doReturn(new String[] {"cluster"}).when(memberValidator).findGroupsWithThisElement(
regionConfig.getId(),
regionManager);
@@ -135,7 +134,7 @@ public class LocatorClusterManagementServiceTest {
verify(cacheElementValidator).validate(CacheElementOperation.DELETE, regionConfig);
verify(regionValidator).validate(CacheElementOperation.DELETE, regionConfig);
verify(memberValidator).findGroupsWithThisElement(regionConfig.getId(), regionManager);
- verify(memberValidator).findMembers("cluster");
+ verify(memberValidator).findServers("cluster");
}
@Test
@@ -147,7 +146,7 @@ public class LocatorClusterManagementServiceTest {
doReturn(functionResults).when(service).executeAndGetFunctionResult(any(), any(), any());
doReturn(Collections.singleton(mock(DistributedMember.class))).when(memberValidator)
- .findMembers(any());
+ .findServers();
when(persistenceService.getCacheConfig("cluster", true)).thenReturn(new CacheConfig());
regionConfig.setName("test");
@@ -165,7 +164,7 @@ public class LocatorClusterManagementServiceTest {
doReturn(functionResults).when(service).executeAndGetFunctionResult(any(), any(), any());
doReturn(Collections.singleton(mock(DistributedMember.class))).when(memberValidator)
- .findMembers(any());
+ .findServers();
CacheConfig cacheConfig = new CacheConfig();
when(persistenceService.getCacheConfig("cluster", true)).thenReturn(cacheConfig);
@@ -202,10 +201,10 @@ public class LocatorClusterManagementServiceTest {
@Test
public void list_aRegionInClusterAndGroup1() throws Exception {
doReturn(Sets.newHashSet("cluster", "group1")).when(persistenceService).getGroups();
- RuntimeRegionConfig region1 = new RuntimeRegionConfig();
+ RegionConfig region1 = new RegionConfig();
region1.setName("region1");
region1.setType("REPLICATE");
- RuntimeRegionConfig region2 = new RuntimeRegionConfig();
+ RegionConfig region2 = new RegionConfig();
region2.setName("region1");
region2.setType("REPLICATE");
@@ -215,10 +214,10 @@ public class LocatorClusterManagementServiceTest {
// this is to make sure when 'cluster" is in one of the group, it will show
// the cluster and the other group name
- List<RuntimeRegionConfig> results =
- service.list(new RegionConfig()).getResult();
+ List<RegionConfig> results =
+ service.list(new RegionConfig()).getConfigResult();
assertThat(results).hasSize(1);
- RuntimeRegionConfig result = results.get(0);
+ RegionConfig result = results.get(0);
assertThat(result.getName()).isEqualTo("region1");
assertThat(result.getGroups()).containsExactlyInAnyOrder("cluster", "group1");
}
@@ -254,7 +253,7 @@ public class LocatorClusterManagementServiceTest {
doReturn(new String[] {"cluster"}).when(memberValidator).findGroupsWithThisElement(any(),
any());
doReturn(Collections.singleton(mock(DistributedMember.class))).when(memberValidator)
- .findMembers(any());
+ .findServers();
CacheConfig config = new CacheConfig();
RegionConfig regionConfig = new RegionConfig();
@@ -280,7 +279,7 @@ public class LocatorClusterManagementServiceTest {
doReturn(new String[] {"cluster"}).when(memberValidator).findGroupsWithThisElement(any(),
any());
doReturn(Collections.singleton(mock(DistributedMember.class))).when(memberValidator)
- .findMembers(any());
+ .findServers();
CacheConfig config = new CacheConfig();
RegionConfig regionConfig = new RegionConfig();
@@ -303,12 +302,12 @@ public class LocatorClusterManagementServiceTest {
doReturn(new String[] {"cluster"}).when(memberValidator).findGroupsWithThisElement(any(),
any());
// no members found in any group
- doReturn(Collections.emptySet()).when(memberValidator).findMembers(any());
+ doReturn(Collections.emptySet()).when(memberValidator).findServers();
doReturn(null).when(persistenceService).getConfiguration(any());
Region mockRegion = mock(Region.class);
doReturn(mockRegion).when(persistenceService).getConfigurationRegion();
- ClusterManagementResult<RegionConfig> result = service.delete(regionConfig);
+ ClusterManagementResult<?, ?> result = service.delete(regionConfig);
verify(regionManager).delete(eq(regionConfig), any());
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getMemberStatuses()).hasSize(0);
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateIndexCommandTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateIndexCommandTest.java
index 991b108..58d6e72 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateIndexCommandTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateIndexCommandTest.java
@@ -39,7 +39,6 @@ import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
import org.apache.geode.management.internal.cli.result.CommandResult;
import org.apache.geode.test.junit.rules.GfshParserRule;
@@ -149,7 +148,7 @@ public class CreateIndexCommandTest {
@Test
public void getValidRegionName() {
// the existing configuration has a region named /regionA.B
- doReturn(mock(RuntimeRegionConfig.class)).when(command).getRuntimeRegionConfig(cms,
+ doReturn(mock(RegionConfig.class)).when(command).getRegionConfig(cms,
"/regionA.B");
when(cms.list(any())).thenReturn(new ClusterManagementResult<>());
@@ -167,10 +166,10 @@ public class CreateIndexCommandTest {
@Test
public void groupIgnored() throws Exception {
doReturn(ccService).when(command).getConfigurationPersistenceService();
- RuntimeRegionConfig config = mock(RuntimeRegionConfig.class);
+ RegionConfig config = mock(RegionConfig.class);
List<String> realGroups = Arrays.asList("group2", "group1");
when(config.getGroups()).thenReturn(realGroups);
- doReturn(config).when(command).getRuntimeRegionConfig(any(), any());
+ doReturn(config).when(command).getRegionConfig(any(), any());
doReturn(Collections.singleton(mock(DistributedMember.class))).when(command).findMembers(any(),
any());
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/mutators/MemberConfigManagerTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/mutators/MemberConfigManagerTest.java
deleted file mode 100644
index f068cb6..0000000
--- a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/mutators/MemberConfigManagerTest.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * 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.management.internal.configuration.mutators;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.internal.DistributionManager;
-import org.apache.geode.distributed.internal.membership.InternalDistributedMember;
-import org.apache.geode.distributed.internal.membership.MembershipManager;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.management.configuration.MemberConfig;
-import org.apache.geode.management.configuration.RuntimeMemberConfig;
-import org.apache.geode.management.internal.cli.domain.CacheServerInfo;
-import org.apache.geode.management.internal.cli.domain.MemberInformation;
-
-public class MemberConfigManagerTest {
- private MemberConfigManager memberConfigManager;
- private DistributionManager distributionManager;
- private MembershipManager membershipManager;
- private DistributedMember coordinator;
- private CacheServerInfo cacheServerInfo;
- private MemberConfig filter;
- private InternalDistributedMember internalDistributedMemberMatch;
- private InternalDistributedMember internalDistributedMember;
-
- @Before
- public void setUp() throws Exception {
- InternalCache cache = mock(InternalCache.class);
- memberConfigManager = new MemberConfigManager(cache);
- distributionManager = mock(DistributionManager.class);
- membershipManager = mock(MembershipManager.class);
- coordinator = mock(DistributedMember.class);
- cacheServerInfo = mock(CacheServerInfo.class);
- filter = new MemberConfig();
- internalDistributedMember = mock(InternalDistributedMember.class);
- internalDistributedMemberMatch = mock(InternalDistributedMember.class);
-
- when(internalDistributedMember.getName()).thenReturn("no-match");
- when(cache.getDistributionManager()).thenReturn(distributionManager);
- }
-
- @Test
- public void getDistributedMembersNoFilter() {
- Set<InternalDistributedMember> internalDistributedMembers = new HashSet<>();
- internalDistributedMembers.add(internalDistributedMember);
- internalDistributedMembers.add(internalDistributedMember);
- when(distributionManager.getDistributionManagerIds()).thenReturn(internalDistributedMembers);
-
- assertThat(memberConfigManager.getDistributedMembers(filter).size())
- .isEqualTo(internalDistributedMembers.size());
- }
-
- @Test
- public void getDistributedMembersReturnsNothing() {
- filter.setId("some-id-no-one-else-has");
- Set<InternalDistributedMember> internalDistributedMembers = new HashSet<>();
-
- internalDistributedMembers.add(internalDistributedMember);
- internalDistributedMembers.add(internalDistributedMember);
- when(distributionManager.getDistributionManagerIds()).thenReturn(internalDistributedMembers);
-
- assertThat(memberConfigManager.getDistributedMembers(filter).size())
- .isEqualTo(0);
- }
-
- @Test
- public void getDistributedMembersReturnsSomeMatches() {
- String sharedId = "shared-id";
- filter.setId(sharedId);
- Set<InternalDistributedMember> internalDistributedMembers = new HashSet<>();
- when(internalDistributedMemberMatch.getName()).thenReturn(sharedId);
- internalDistributedMembers.add(internalDistributedMemberMatch);
- internalDistributedMembers.add(internalDistributedMember);
- when(distributionManager.getDistributionManagerIds()).thenReturn(internalDistributedMembers);
-
- assertThat(memberConfigManager.getDistributedMembers(filter).size())
- .isEqualTo(1);
- }
-
- @Test
- public void generatesMemberConfigs() {
- ArrayList<MemberInformation> emptyArrayList = new ArrayList<>();
- assertThat(memberConfigManager.generateMemberConfigs(emptyArrayList)).isNotNull();
-
- ArrayList<MemberInformation> smallArrayList = new ArrayList<>();
- MemberInformation someMemberInfo = new MemberInformation();
- someMemberInfo.setGroups("hello");
- someMemberInfo.setId("world");
- smallArrayList.add(someMemberInfo);
- MemberInformation someOtherMemberInfo = new MemberInformation();
- someOtherMemberInfo.setId("hello");
- someOtherMemberInfo.setGroups("world");
- smallArrayList.add(someOtherMemberInfo);
- assertThat(memberConfigManager.generateMemberConfigs(smallArrayList).size())
- .isEqualTo(smallArrayList.size());
- }
-
- @Test
- public void generateMemberConfig() {
- MemberInformation memberInformation = new MemberInformation();
- memberInformation.setId("some-id");
- String someName = "some-name";
- memberInformation.setName(someName);
- String someHost = "some-host";
- memberInformation.setHost(someHost);
- int somePid = 7;
- memberInformation.setProcessId(somePid);
- String someStatus = "some-status";
- memberInformation.setStatus(someStatus);
- long someInitHeapSize = 234L;
- memberInformation.setInitHeapSize(someInitHeapSize);
- long someMaxHeapSize = 523L;
- memberInformation.setMaxHeapSize(someMaxHeapSize);
- long someHeapUsage = 123L;
- memberInformation.setHeapUsage(someHeapUsage);
- String somePath = "somePath";
- memberInformation.setLogFilePath(somePath);
- memberInformation.setWorkingDirPath(somePath);
-
- RuntimeMemberConfig memberConfig =
- memberConfigManager.generateMemberConfig("coordinatorId", memberInformation);
- assertThat(memberConfig.getId()).isEqualTo(someName);
- assertThat(memberConfig.getHost()).isEqualTo(someHost);
- assertThat(memberConfig.getPid()).isEqualTo(somePid);
- assertThat(memberConfig.getStatus()).isEqualTo(someStatus);
- assertThat(memberConfig.getInitialHeap()).isEqualTo(someInitHeapSize);
- assertThat(memberConfig.getMaxHeap()).isEqualTo(someMaxHeapSize);
- assertThat(memberConfig.getUsedHeap()).isEqualTo(someHeapUsage);
- assertThat(memberConfig.getLogFile()).isEqualTo(somePath);
- assertThat(memberConfig.getWorkingDirectory()).isEqualTo(somePath);
- assertThat(memberConfig.isCoordinator()).isFalse();
- }
-
- @Test
- public void generateServerMemberConfig() {
- int somePort = 5000;
- when(cacheServerInfo.getPort()).thenReturn(somePort);
- int someConnectionNumber = 10;
- when(cacheServerInfo.getMaxConnections()).thenReturn(someConnectionNumber);
- int someThreadNumber = 5;
- when(cacheServerInfo.getMaxThreads()).thenReturn(someThreadNumber);
-
- MemberInformation memberInformation = new MemberInformation();
- memberInformation.addCacheServerInfo(cacheServerInfo);
- memberInformation.setServer(true);
- String someGroup1 = "something1";
- String someGroup2 = "something2";
- memberInformation.setGroups(someGroup1 + "," + someGroup2);
- String memberId = "memberId";
- memberInformation.setId(memberId);
-
- String coordinatorId = "coordinatorId";
- RuntimeMemberConfig memberConfig =
- memberConfigManager.generateMemberConfig(coordinatorId, memberInformation);
-
- assertThat(memberConfig.isLocator()).isFalse();
- assertThat(memberConfig.isCoordinator()).isFalse();
- RuntimeMemberConfig.CacheServerConfig cacheServerConfig = memberConfig.getCacheServers().get(0);
- assertThat(cacheServerConfig).isNotNull();
- assertThat(cacheServerConfig.getPort()).isEqualTo(somePort);
- assertThat(cacheServerConfig.getMaxConnections()).isEqualTo(someConnectionNumber);
- assertThat(cacheServerConfig.getMaxThreads()).isEqualTo(someThreadNumber);
- assertThat(memberConfig.getGroups()).contains(someGroup1, someGroup2);
- }
-
- @Test
- public void generateLocatorMemberConfig() {
- MemberInformation memberInformation = new MemberInformation();
- int someLocatorPort = 180;
- memberInformation.setLocatorPort(someLocatorPort);
- String memberId = "memberId";
- memberInformation.setId(memberId);
-
- String coordinatorId = "coordinatorId";
- RuntimeMemberConfig memberConfig =
- memberConfigManager.generateMemberConfig(coordinatorId, memberInformation);
- assertThat(memberConfig.getPort()).isEqualTo(someLocatorPort);
- assertThat(memberConfig.isLocator()).isTrue();
- assertThat(memberConfig.isCoordinator()).isFalse();
- }
-
-
- @Test
- public void generateCoordinatorMemberConfig() {
- MemberInformation memberInformation = new MemberInformation();
- String coordinatorId = "coordinatorId";
- memberInformation.setId(coordinatorId);
-
- RuntimeMemberConfig memberConfig =
- memberConfigManager.generateMemberConfig(coordinatorId, memberInformation);
- assertThat(memberConfig.isCoordinator()).isTrue();
- }
-
- @Test
- public void getsCoordinatorId() {
- when(distributionManager.getMembershipManager()).thenReturn(membershipManager);
- when(membershipManager.getCoordinator()).thenReturn(coordinator);
- String coordinatorId = "some-id";
- when(coordinator.getId()).thenReturn(coordinatorId);
-
- assertThat(memberConfigManager.getCoordinatorId()).isEqualTo(coordinatorId);
- }
-
- @Test
- public void getCoordinatorIdReturnsNullWhenMembershipManagerIsNull() {
- when(distributionManager.getMembershipManager()).thenReturn(null);
-
- assertThat(memberConfigManager.getCoordinatorId()).isNull();
- }
-
- @Test
- public void getCoordinatorIdReturnsNullWhenCoordinatorIsNull() {
- when(distributionManager.getMembershipManager()).thenReturn(membershipManager);
- when(membershipManager.getCoordinator()).thenReturn(null);
-
- assertThat(memberConfigManager.getCoordinatorId()).isNull();
- }
-}
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigManagerTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigManagerTest.java
index 36d0f22..11a733b 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigManagerTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/mutators/RegionConfigManagerTest.java
@@ -15,25 +15,14 @@
package org.apache.geode.management.internal.configuration.mutators;
-import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import java.util.ArrayList;
-import java.util.List;
import org.junit.Before;
import org.junit.Test;
-import org.apache.geode.cache.configuration.CacheConfig;
import org.apache.geode.cache.configuration.RegionConfig;
import org.apache.geode.cache.configuration.RegionType;
-import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.management.ManagementService;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
public class RegionConfigManagerTest {
@@ -42,8 +31,7 @@ public class RegionConfigManagerTest {
@Before
public void before() throws Exception {
- InternalCache cache = mock(InternalCache.class);
- manager = spy(new RegionConfigManager(cache));
+ manager = spy(new RegionConfigManager());
config1 = new RegionConfig();
config1.setName("test");
config2 = new RegionConfig();
@@ -51,21 +39,6 @@ public class RegionConfigManagerTest {
}
@Test
- public void entryCountIsZeroEvenIfMbeanIsNotAvailable() throws Exception {
- CacheConfig existing = mock(CacheConfig.class);
- List<RegionConfig> staticRegionConfigs = new ArrayList<>();
- config1.setName("region1");
- staticRegionConfigs.add(config1);
- when(existing.getRegions()).thenReturn(staticRegionConfigs);
-
-
- ManagementService managementService = mock(ManagementService.class);
- doReturn(managementService).when(manager).getManagementService();
- List<RuntimeRegionConfig> result = manager.list(new RegionConfig(), existing);
- assertThat(result.get(0).getEntryCount()).isEqualTo(0);
- }
-
- @Test
public void compatibleWithItself() throws Exception {
config1.setType(RegionType.REPLICATE);
manager.checkCompatibility(config1, "group", config1);
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/validators/MemberValidatorTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/validators/MemberValidatorTest.java
index c38bb15..9d35e0c 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/configuration/validators/MemberValidatorTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/configuration/validators/MemberValidatorTest.java
@@ -89,18 +89,20 @@ public class MemberValidatorTest {
@Test
public void findMembers() throws Exception {
- assertThatThrownBy(() -> validator.findMembers(null))
- .isInstanceOf(IllegalArgumentException.class);
- assertThatThrownBy(() -> validator.findMembers(new String[] {}))
- .isInstanceOf(IllegalArgumentException.class);
+ assertThat(validator.findServers(null))
+ .flatExtracting(DistributedMember::getName)
+ .containsExactlyInAnyOrder("member1", "member2", "member3", "member4", "member5");
+ assertThat(validator.findServers(new String[] {}))
+ .flatExtracting(DistributedMember::getName)
+ .containsExactlyInAnyOrder("member1", "member2", "member3", "member4", "member5");
- assertThat(validator.findMembers("group1")).flatExtracting(DistributedMember::getName)
+ assertThat(validator.findServers("group1")).flatExtracting(DistributedMember::getName)
.containsExactlyInAnyOrder("member2", "member4");
- assertThat(validator.findMembers("group1", "group2")).flatExtracting(DistributedMember::getName)
+ assertThat(validator.findServers("group1", "group2")).flatExtracting(DistributedMember::getName)
.containsExactlyInAnyOrder("member2", "member3", "member4");
- assertThat(validator.findMembers("group1", "group3")).flatExtracting(DistributedMember::getName)
+ assertThat(validator.findServers("group1", "group3")).flatExtracting(DistributedMember::getName)
.containsExactlyInAnyOrder("member2", "member4", "member5");
- assertThat(validator.findMembers("cluster", "group3"))
+ assertThat(validator.findServers("cluster", "group3"))
.flatExtracting(DistributedMember::getName)
.containsExactlyInAnyOrder("member1", "member2", "member3", "member4", "member5");
}
diff --git a/geode-junit/src/main/java/org/apache/geode/test/junit/assertions/ClusterManagementResultAssert.java b/geode-junit/src/main/java/org/apache/geode/test/junit/assertions/ClusterManagementResultAssert.java
index 6084ea7..045eff9 100644
--- a/geode-junit/src/main/java/org/apache/geode/test/junit/assertions/ClusterManagementResultAssert.java
+++ b/geode-junit/src/main/java/org/apache/geode/test/junit/assertions/ClusterManagementResultAssert.java
@@ -25,31 +25,34 @@ import org.assertj.core.api.ListAssert;
import org.apache.geode.cache.configuration.CacheElement;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.RealizationResult;
+import org.apache.geode.management.api.RespondsWith;
+import org.apache.geode.management.api.Response;
+import org.apache.geode.management.runtime.RuntimeInfo;
-public class ClusterManagementResultAssert<R extends CacheElement>
- extends AbstractAssert<ClusterManagementResultAssert<R>, ClusterManagementResult<R>> {
+public class ClusterManagementResultAssert<T extends CacheElement & RespondsWith<R>, R extends RuntimeInfo>
+ extends AbstractAssert<ClusterManagementResultAssert<T, R>, ClusterManagementResult<T, R>> {
public ClusterManagementResultAssert(
- ClusterManagementResult<R> clusterManagementResult, Class<?> selfType) {
+ ClusterManagementResult<T, R> clusterManagementResult, Class<?> selfType) {
super(clusterManagementResult, selfType);
}
- public ClusterManagementResultAssert<R> isSuccessful() {
+ public ClusterManagementResultAssert<T, R> isSuccessful() {
assertThat(actual.isSuccessful()).isTrue();
return this;
}
- public ClusterManagementResultAssert<R> failed() {
+ public ClusterManagementResultAssert<T, R> failed() {
assertThat(actual.isSuccessful()).isFalse();
return this;
}
- public ClusterManagementResultAssert<R> hasStatusCode(
+ public ClusterManagementResultAssert<T, R> hasStatusCode(
ClusterManagementResult.StatusCode... codes) {
assertThat(actual.getStatusCode()).isIn(codes);
return this;
}
- public ClusterManagementResultAssert<R> containsStatusMessage(String statusMessage) {
+ public ClusterManagementResultAssert<T, R> containsStatusMessage(String statusMessage) {
assertThat(actual.getStatusMessage()).contains(statusMessage);
return this;
}
@@ -62,20 +65,20 @@ public class ClusterManagementResultAssert<R extends CacheElement>
return actual.getMemberStatuses();
}
- public ListAssert<R> hasListResult() {
+ public ListAssert<Response<T, R>> hasListResult() {
return assertThat(actual.getResult());
}
- public R getResult(int index) {
+ public Response<T, R> getResult(int index) {
return getActual().getResult().get(index);
}
- public static <R extends CacheElement> ClusterManagementResultAssert<R> assertManagementResult(
- ClusterManagementResult<R> result) {
+ public static <T extends CacheElement & RespondsWith<R>, R extends RuntimeInfo> ClusterManagementResultAssert<T, R> assertManagementResult(
+ ClusterManagementResult<T, R> result) {
return new ClusterManagementResultAssert<>(result, ClusterManagementResultAssert.class);
}
- public ClusterManagementResult<R> getActual() {
+ public ClusterManagementResult<T, R> getActual() {
return actual;
}
}
diff --git a/geode-management/src/main/java/org/apache/geode/cache/configuration/GatewayReceiverConfig.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/GatewayReceiverConfig.java
index 2abfe06..d53a8f2 100644
--- a/geode-management/src/main/java/org/apache/geode/cache/configuration/GatewayReceiverConfig.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/GatewayReceiverConfig.java
@@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.apache.geode.management.api.RespondsWith;
import org.apache.geode.management.api.RestfulEndpoint;
+import org.apache.geode.management.runtime.RuntimeInfo;
/**
* <p>
@@ -62,7 +63,7 @@ import org.apache.geode.management.api.RestfulEndpoint;
@XmlType(name = "", propOrder = {"gatewayTransportFilters"})
@JsonIgnoreProperties(value = {"uri"}, allowGetters = true)
public class GatewayReceiverConfig extends CacheElement
- implements RestfulEndpoint, RespondsWith<GatewayReceiverConfig> {
+ implements RestfulEndpoint, RespondsWith<RuntimeInfo> {
@XmlElement(name = "gateway-transport-filter",
namespace = "http://geode.apache.org/schema/cache")
diff --git a/geode-management/src/main/java/org/apache/geode/cache/configuration/PdxType.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/PdxType.java
index 6a7415e..3d931cd 100644
--- a/geode-management/src/main/java/org/apache/geode/cache/configuration/PdxType.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/PdxType.java
@@ -78,7 +78,7 @@ import org.apache.geode.management.api.RestfulEndpoint;
propOrder = {"pdxSerializer"})
@Experimental
@JsonIgnoreProperties(value = {"uri"}, allowGetters = true)
-public class PdxType extends CacheElement implements RestfulEndpoint, RespondsWith<PdxType> {
+public class PdxType extends CacheElement implements RestfulEndpoint, RespondsWith<Void> {
@XmlElement(name = "pdx-serializer", namespace = "http://geode.apache.org/schema/cache")
protected DeclarableType pdxSerializer;
@XmlAttribute(name = "read-serialized")
diff --git a/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionConfig.java b/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionConfig.java
index bc371d8..66679b5 100644
--- a/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionConfig.java
+++ b/geode-management/src/main/java/org/apache/geode/cache/configuration/RegionConfig.java
@@ -39,7 +39,8 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.management.api.RespondsWith;
import org.apache.geode.management.api.RestfulEndpoint;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
+import org.apache.geode.management.runtime.RuntimeInfo;
+import org.apache.geode.management.runtime.RuntimeRegionInfo;
/**
@@ -161,7 +162,7 @@ import org.apache.geode.management.configuration.RuntimeRegionConfig;
@Experimental
@JsonIgnoreProperties(value = {"uri"}, allowGetters = true)
public class RegionConfig extends CacheElement implements RestfulEndpoint,
- RespondsWith<RuntimeRegionConfig> {
+ RespondsWith<RuntimeRegionInfo> {
public static final String REGION_CONFIG_ENDPOINT = "/regions";
@@ -206,6 +207,11 @@ public class RegionConfig extends CacheElement implements RestfulEndpoint,
}
@Override
+ public boolean isGlobalRuntime() {
+ return true;
+ }
+
+ @Override
@JsonIgnore
public String getEndpoint() {
return REGION_CONFIG_ENDPOINT;
@@ -538,7 +544,7 @@ public class RegionConfig extends CacheElement implements RestfulEndpoint,
@XmlAccessorType(XmlAccessType.FIELD)
@JsonIgnoreProperties(value = {"uri"}, allowGetters = true)
public static class Index extends CacheElement
- implements RestfulEndpoint, RespondsWith<Index> {
+ implements RestfulEndpoint, RespondsWith<RuntimeInfo> {
@XmlAttribute(name = "name", required = true)
protected String name;
@XmlAttribute(name = "expression")
diff --git a/geode-management/src/main/java/org/apache/geode/management/api/ClusterManagementResult.java b/geode-management/src/main/java/org/apache/geode/management/api/ClusterManagementResult.java
index 63e67b8..ab19d13 100644
--- a/geode-management/src/main/java/org/apache/geode/management/api/ClusterManagementResult.java
+++ b/geode-management/src/main/java/org/apache/geode/management/api/ClusterManagementResult.java
@@ -16,6 +16,7 @@ package org.apache.geode.management.api;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
@@ -23,9 +24,10 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.configuration.CacheElement;
+import org.apache.geode.management.runtime.RuntimeInfo;
@Experimental
-public class ClusterManagementResult<R extends CacheElement> {
+public class ClusterManagementResult<T extends CacheElement & RespondsWith<R>, R extends RuntimeInfo> {
// this error code should include a one-to-one mapping to the http status code returned
// by the controller
public enum StatusCode {
@@ -58,11 +60,7 @@ public class ClusterManagementResult<R extends CacheElement> {
// we will always have statusCode when the object is created
private StatusCode statusCode = StatusCode.OK;
private String statusMessage;
-
- // Override the mapper setting so that we always show result
- @JsonInclude
- @JsonProperty
- private List<R> result = new ArrayList<>();
+ private String uri;
public ClusterManagementResult() {}
@@ -108,6 +106,14 @@ public class ClusterManagementResult<R extends CacheElement> {
return statusMessage;
}
+ public String getUri() {
+ return uri;
+ }
+
+ public void setUri(String uri) {
+ this.uri = uri;
+ }
+
@JsonIgnore
public boolean isSuccessful() {
return statusCode == StatusCode.OK;
@@ -117,11 +123,26 @@ public class ClusterManagementResult<R extends CacheElement> {
return statusCode;
}
- public List<R> getResult() {
+ // Override the mapper setting so that we always show result
+ @JsonInclude
+ @JsonProperty
+ private List<Response<T, R>> result = new ArrayList<>();
+
+ public List<Response<T, R>> getResult() {
return result;
}
- public void setResult(List<R> result) {
+ @JsonIgnore
+ public List<T> getConfigResult() {
+ return result.stream().map(Response::getConfig).collect(Collectors.toList());
+ }
+
+ @JsonIgnore
+ public List<R> getRuntimeResult() {
+ return result.stream().flatMap(r -> r.getRuntimeInfo().stream()).collect(Collectors.toList());
+ }
+
+ public void setResult(List<Response<T, R>> result) {
this.result = result;
}
}
diff --git a/geode-management/src/main/java/org/apache/geode/management/api/ClusterManagementService.java b/geode-management/src/main/java/org/apache/geode/management/api/ClusterManagementService.java
index 5286123..e4dade8 100644
--- a/geode-management/src/main/java/org/apache/geode/management/api/ClusterManagementService.java
+++ b/geode-management/src/main/java/org/apache/geode/management/api/ClusterManagementService.java
@@ -17,6 +17,7 @@ package org.apache.geode.management.api;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.configuration.CacheElement;
+import org.apache.geode.management.runtime.RuntimeInfo;
/**
* this is responsible for applying and persisting cache configuration changes on locators and/or
@@ -35,8 +36,7 @@ public interface ClusterManagementService {
* cluster, as well as the group this config belongs to
* @see CacheElement
*/
- <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<T> create(
- T config);
+ <T extends CacheElement> ClusterManagementResult<?, ?> create(T config);
/**
* This method will delete the element on all the applicable members in the cluster and update the
@@ -47,8 +47,7 @@ public interface ClusterManagementService {
* @throws IllegalArgumentException, NoMemberException, EntityExistsException
* @see CacheElement
*/
- <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<T> delete(
- T config);
+ <T extends CacheElement> ClusterManagementResult<?, ?> delete(T config);
/**
* This method will update the element on all the applicable members in the cluster and persist
@@ -59,13 +58,12 @@ public interface ClusterManagementService {
* @throws IllegalArgumentException, NoMemberException, EntityExistsException
* @see CacheElement
*/
- <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<T> update(
- T config);
+ <T extends CacheElement> ClusterManagementResult<?, ?> update(T config);
- <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<R> list(
+ <T extends CacheElement & RespondsWith<R>, R extends RuntimeInfo> ClusterManagementResult<T, R> list(
T config);
- <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<R> get(
+ <T extends CacheElement & RespondsWith<R>, R extends RuntimeInfo> ClusterManagementResult<T, R> get(
T config);
/**
diff --git a/geode-management/src/main/java/org/apache/geode/management/api/RespondsWith.java b/geode-management/src/main/java/org/apache/geode/management/api/RespondsWith.java
index a7417d3..b10b279 100644
--- a/geode-management/src/main/java/org/apache/geode/management/api/RespondsWith.java
+++ b/geode-management/src/main/java/org/apache/geode/management/api/RespondsWith.java
@@ -15,18 +15,52 @@
package org.apache.geode.management.api;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+
+import javax.xml.bind.annotation.XmlTransient;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
import org.apache.geode.annotations.Experimental;
-import org.apache.geode.cache.configuration.CacheElement;
+import org.apache.geode.management.runtime.RuntimeInfo;
/**
* provides additional information about a restful service request beyond the minimum required in
* {#link RestfulEndpoint}, namely the return type to expect when `list` or other operations are
* performed
*/
-
-// "type parameter is never used" warning is suppressed, because actually it is used to create
-// the linkage between request and response type in the signature of ClusterManagementService.list
-@SuppressWarnings("unused")
@Experimental
-public interface RespondsWith<R extends CacheElement> {
+public interface RespondsWith<R> {
+ @XmlTransient
+ @JsonIgnore
+ default Class<R> getRuntimeClass() {
+ Type[] genericInterfaces = getClass().getGenericInterfaces();
+
+ ParameterizedType type =
+ Arrays.stream(genericInterfaces).filter(ParameterizedType.class::isInstance)
+ .map(ParameterizedType.class::cast)
+ .findFirst().orElse(null);
+
+ if (type == null) {
+ return null;
+ }
+ return (Class<R>) type.getActualTypeArguments()[0];
+ };
+
+ default boolean hasRuntimeInfo() {
+ return !RuntimeInfo.class.equals(getRuntimeClass());
+ }
+
+ @XmlTransient
+ @JsonIgnore
+ /**
+ * this is to indicate when we need to go gather runtime information for this configuration,
+ * should we go to all members in the group, or just any member in the group
+ */
+ default boolean isGlobalRuntime() {
+ return false;
+ }
+
}
diff --git a/geode-management/src/main/java/org/apache/geode/management/api/RespondsWith.java b/geode-management/src/main/java/org/apache/geode/management/api/Response.java
similarity index 58%
copy from geode-management/src/main/java/org/apache/geode/management/api/RespondsWith.java
copy to geode-management/src/main/java/org/apache/geode/management/api/Response.java
index a7417d3..64c12ea 100644
--- a/geode-management/src/main/java/org/apache/geode/management/api/RespondsWith.java
+++ b/geode-management/src/main/java/org/apache/geode/management/api/Response.java
@@ -15,18 +15,35 @@
package org.apache.geode.management.api;
-import org.apache.geode.annotations.Experimental;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.geode.cache.configuration.CacheElement;
+import org.apache.geode.management.runtime.RuntimeInfo;
-/**
- * provides additional information about a restful service request beyond the minimum required in
- * {#link RestfulEndpoint}, namely the return type to expect when `list` or other operations are
- * performed
- */
+public class Response<T extends CacheElement & RespondsWith<R>, R extends RuntimeInfo> {
+ private T config;
+ private List<R> runtimeInfo = new ArrayList<>();
+
+ public Response() {}
+
+ public Response(T config) {
+ this.config = config;
+ }
+
+ public T getConfig() {
+ return config;
+ }
+
+ public void setConfig(T config) {
+ this.config = config;
+ }
+
+ public List<R> getRuntimeInfo() {
+ return runtimeInfo;
+ }
-// "type parameter is never used" warning is suppressed, because actually it is used to create
-// the linkage between request and response type in the signature of ClusterManagementService.list
-@SuppressWarnings("unused")
-@Experimental
-public interface RespondsWith<R extends CacheElement> {
+ public void setRuntimeInfo(List<R> runtimeInfo) {
+ this.runtimeInfo = runtimeInfo;
+ }
}
diff --git a/geode-management/src/main/java/org/apache/geode/management/api/RestfulEndpoint.java b/geode-management/src/main/java/org/apache/geode/management/api/RestfulEndpoint.java
index 7365806..956dbd2 100644
--- a/geode-management/src/main/java/org/apache/geode/management/api/RestfulEndpoint.java
+++ b/geode-management/src/main/java/org/apache/geode/management/api/RestfulEndpoint.java
@@ -31,7 +31,7 @@ import org.apache.geode.lang.Identifiable;
*/
@Experimental
public interface RestfulEndpoint extends Identifiable<String> {
- String URI_CONTEXT = "/geode-management";
+ String URI_CONTEXT = "/management";
String URI_VERSION = "/v2";
/**
@@ -69,6 +69,9 @@ public interface RestfulEndpoint extends Identifiable<String> {
@XmlTransient
default String getUri() {
+ if (getIdentityEndPoint() == null) {
+ return null;
+ }
return URI_CONTEXT + URI_VERSION + getIdentityEndPoint();
}
}
diff --git a/geode-management/src/main/java/org/apache/geode/management/configuration/MemberConfig.java b/geode-management/src/main/java/org/apache/geode/management/configuration/MemberConfig.java
index 8647a8b..28019a3 100644
--- a/geode-management/src/main/java/org/apache/geode/management/configuration/MemberConfig.java
+++ b/geode-management/src/main/java/org/apache/geode/management/configuration/MemberConfig.java
@@ -21,11 +21,12 @@ import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.configuration.CacheElement;
import org.apache.geode.management.api.RespondsWith;
import org.apache.geode.management.api.RestfulEndpoint;
+import org.apache.geode.management.runtime.MemberInformation;
@Experimental
@JsonIgnoreProperties(value = {"uri"}, allowGetters = true)
public class MemberConfig extends CacheElement implements RestfulEndpoint,
- RespondsWith<RuntimeMemberConfig> {
+ RespondsWith<MemberInformation> {
public static final String MEMBER_CONFIG_ENDPOINT = "/members";
diff --git a/geode-management/src/main/java/org/apache/geode/management/configuration/RuntimeMemberConfig.java b/geode-management/src/main/java/org/apache/geode/management/configuration/RuntimeMemberConfig.java
deleted file mode 100644
index 2806065..0000000
--- a/geode-management/src/main/java/org/apache/geode/management/configuration/RuntimeMemberConfig.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * 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.management.configuration;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-
-import org.apache.geode.annotations.Experimental;
-
-@Experimental
-public class RuntimeMemberConfig extends MemberConfig {
- private boolean isLocator;
- private boolean isCoordinator;
- private String host;
- private String status;
- private int pid;
- // Only relevant for locators - will be suppressed if null
- private Integer port;
- // Only relevant for servers - will be suppressed if empty
- private List<CacheServerConfig> cacheServers = new ArrayList<>();
- private long maxHeap;
- private long initialHeap;
- private long usedHeap;
- private String logFile;
- private String workingDirectory;
- private int clientConnections;
-
- public static class CacheServerConfig {
- private int port;
- private int maxConnections;
- private int maxThreads;
-
- public CacheServerConfig() {}
-
- public int getPort() {
- return port;
- }
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public int getMaxConnections() {
- return maxConnections;
- }
-
- public void setMaxConnections(int maxConnections) {
- this.maxConnections = maxConnections;
- }
-
- public int getMaxThreads() {
- return maxThreads;
- }
-
- public void setMaxThreads(int maxThreads) {
- this.maxThreads = maxThreads;
- }
- }
-
- public boolean isLocator() {
- return isLocator;
- }
-
- public void setLocator(boolean locator) {
- isLocator = locator;
- }
-
- public boolean isCoordinator() {
- return isCoordinator;
- }
-
- public void setCoordinator(boolean coordinator) {
- isCoordinator = coordinator;
- }
-
- public String getHost() {
- return host;
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-
- public String getStatus() {
- return status;
- }
-
- public void setStatus(String status) {
- this.status = status;
- }
-
- public int getPid() {
- return pid;
- }
-
- public void setPid(int pid) {
- this.pid = pid;
- }
-
- @JsonInclude(value = JsonInclude.Include.NON_NULL)
- public Integer getPort() {
- return port;
- }
-
- public void setPort(Integer port) {
- this.port = port;
- }
-
- @JsonInclude(value = JsonInclude.Include.NON_EMPTY)
- public List<CacheServerConfig> getCacheServers() {
- return cacheServers;
- }
-
- public void addCacheServer(CacheServerConfig cacheServer) {
- cacheServers.add(cacheServer);
- }
-
- public void setGroups(List<String> groups) {
- this.groups = groups;
- }
-
- public long getMaxHeap() {
- return maxHeap;
- }
-
- public void setMaxHeap(long maxHeap) {
- this.maxHeap = maxHeap;
- }
-
- public long getInitialHeap() {
- return initialHeap;
- }
-
- public void setInitialHeap(long initialHeap) {
- this.initialHeap = initialHeap;
- }
-
- public long getUsedHeap() {
- return usedHeap;
- }
-
- public void setUsedHeap(long usedHeap) {
- this.usedHeap = usedHeap;
- }
-
- public String getLogFile() {
- return logFile;
- }
-
- public void setLogFile(String logFile) {
- this.logFile = logFile;
- }
-
- public String getWorkingDirectory() {
- return workingDirectory;
- }
-
- public void setWorkingDirectory(String workingDirectory) {
- this.workingDirectory = workingDirectory;
- }
-
- public int getClientConnections() {
- return clientConnections;
- }
-
- public void setClientConnections(int clientConnections) {
- this.clientConnections = clientConnections;
- }
-}
diff --git a/geode-management/src/main/java/org/apache/geode/management/internal/ClientClusterManagementService.java b/geode-management/src/main/java/org/apache/geode/management/internal/ClientClusterManagementService.java
index 051d106..713f7c3 100644
--- a/geode-management/src/main/java/org/apache/geode/management/internal/ClientClusterManagementService.java
+++ b/geode-management/src/main/java/org/apache/geode/management/internal/ClientClusterManagementService.java
@@ -25,6 +25,7 @@ import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
import org.apache.geode.management.api.RespondsWith;
import org.apache.geode.management.api.RestfulEndpoint;
+import org.apache.geode.management.runtime.RuntimeInfo;
/**
* Implementation of {@link ClusterManagementService} interface which represents the cluster
@@ -54,8 +55,7 @@ public class ClientClusterManagementService implements ClusterManagementService
@Override
@SuppressWarnings("unchecked")
- public <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<T> create(
- T config) {
+ public <T extends CacheElement> ClusterManagementResult<?, ?> create(T config) {
String endPoint = getEndpoint(config);
// the response status code info is represented by the ClusterManagementResult.errorCode already
return restTemplate
@@ -65,7 +65,7 @@ public class ClientClusterManagementService implements ClusterManagementService
@Override
@SuppressWarnings("unchecked")
- public <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<T> delete(
+ public <T extends CacheElement> ClusterManagementResult<?, ?> delete(
T config) {
String uri = getIdentityEndPoint(config);
return restTemplate
@@ -78,14 +78,14 @@ public class ClientClusterManagementService implements ClusterManagementService
}
@Override
- public <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<T> update(
+ public <T extends CacheElement> ClusterManagementResult<?, ?> update(
T config) {
throw new NotImplementedException("Not Implemented");
}
@Override
@SuppressWarnings("unchecked")
- public <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<R> list(
+ public <T extends CacheElement & RespondsWith<R>, R extends RuntimeInfo> ClusterManagementResult<T, R> list(
T config) {
String endPoint = getEndpoint(config);
return restTemplate
@@ -96,7 +96,7 @@ public class ClientClusterManagementService implements ClusterManagementService
@Override
@SuppressWarnings("unchecked")
- public <T extends CacheElement & RespondsWith<R>, R extends CacheElement> ClusterManagementResult<R> get(
+ public <T extends CacheElement & RespondsWith<R>, R extends RuntimeInfo> ClusterManagementResult<T, R> get(
T config) {
return restTemplate
.getForEntity(getIdentityEndPoint(config), ClusterManagementResult.class)
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/CacheServerInfo.java b/geode-management/src/main/java/org/apache/geode/management/runtime/CacheServerInfo.java
similarity index 78%
rename from geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/CacheServerInfo.java
rename to geode-management/src/main/java/org/apache/geode/management/runtime/CacheServerInfo.java
index 9088811..e30ea72 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/CacheServerInfo.java
+++ b/geode-management/src/main/java/org/apache/geode/management/runtime/CacheServerInfo.java
@@ -12,12 +12,10 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.management.internal.cli.domain;
+package org.apache.geode.management.runtime;
import java.io.Serializable;
-import org.apache.geode.cache.server.CacheServer;
-
public class CacheServerInfo implements Serializable {
private static final long serialVersionUID = 1L;
@@ -28,14 +26,6 @@ public class CacheServerInfo implements Serializable {
private int maxConnections;
private int maxThreads;
- public CacheServerInfo(CacheServer cacheServer) {
- bindAddress = cacheServer.getBindAddress();
- port = cacheServer.getPort();
- isRunning = cacheServer.isRunning();
- maxConnections = cacheServer.getMaxConnections();
- maxThreads = cacheServer.getMaxThreads();
- }
-
public String getBindAddress() {
return bindAddress;
}
@@ -56,6 +46,26 @@ public class CacheServerInfo implements Serializable {
return isRunning;
}
+ public void setBindAddress(String bindAddress) {
+ this.bindAddress = bindAddress;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public void setRunning(boolean running) {
+ isRunning = running;
+ }
+
+ public void setMaxConnections(int maxConnections) {
+ this.maxConnections = maxConnections;
+ }
+
+ public void setMaxThreads(int maxThreads) {
+ this.maxThreads = maxThreads;
+ }
+
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Bind Address :");
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/MemberInformation.java b/geode-management/src/main/java/org/apache/geode/management/runtime/MemberInformation.java
similarity index 91%
rename from geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/MemberInformation.java
rename to geode-management/src/main/java/org/apache/geode/management/runtime/MemberInformation.java
index 7b35008..1e343dc 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/domain/MemberInformation.java
+++ b/geode-management/src/main/java/org/apache/geode/management/runtime/MemberInformation.java
@@ -12,20 +12,23 @@
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
-package org.apache.geode.management.internal.cli.domain;
+package org.apache.geode.management.runtime;
-import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+
+import org.apache.geode.lang.Identifiable;
/***
* Data class to hold the information of the member Used in describe member command
*
*/
-public class MemberInformation implements Serializable {
+@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "class")
+public class MemberInformation implements Identifiable<String>, RuntimeInfo {
private static final long serialVersionUID = 1L;
private String name;
private String id;
@@ -53,6 +56,7 @@ public class MemberInformation implements Serializable {
private String offHeapMemorySize;
private boolean webSSL;
private boolean isSecured;
+ private boolean isCoordinator;
public boolean isSecured() {
return isSecured;
@@ -222,7 +226,7 @@ public class MemberInformation implements Serializable {
this.isServer = isServer;
}
- public List<CacheServerInfo> getCacheServeInfo() {
+ public List<CacheServerInfo> getCacheServerInfo() {
return cacheServerList;
}
@@ -263,4 +267,12 @@ public class MemberInformation implements Serializable {
public void setWebSSL(boolean webSSL) {
this.webSSL = webSSL;
}
+
+ public boolean isCoordinator() {
+ return isCoordinator;
+ }
+
+ public void setCoordinator(boolean coordinator) {
+ isCoordinator = coordinator;
+ }
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/CacheElementOperation.java b/geode-management/src/main/java/org/apache/geode/management/runtime/RuntimeInfo.java
similarity index 76%
copy from geode-core/src/main/java/org/apache/geode/management/internal/CacheElementOperation.java
copy to geode-management/src/main/java/org/apache/geode/management/runtime/RuntimeInfo.java
index e9b07ff..3142aaf 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/CacheElementOperation.java
+++ b/geode-management/src/main/java/org/apache/geode/management/runtime/RuntimeInfo.java
@@ -13,8 +13,12 @@
* the License.
*/
-package org.apache.geode.management.internal;
+package org.apache.geode.management.runtime;
-public enum CacheElementOperation {
- CREATE, DELETE, UPDATE, LIST
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+
+@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "class")
+public interface RuntimeInfo extends Serializable {
}
diff --git a/geode-management/src/main/java/org/apache/geode/management/configuration/RuntimeRegionConfig.java b/geode-management/src/main/java/org/apache/geode/management/runtime/RuntimeRegionInfo.java
similarity index 57%
rename from geode-management/src/main/java/org/apache/geode/management/configuration/RuntimeRegionConfig.java
rename to geode-management/src/main/java/org/apache/geode/management/runtime/RuntimeRegionInfo.java
index a76bfc0..463e6fe 100644
--- a/geode-management/src/main/java/org/apache/geode/management/configuration/RuntimeRegionConfig.java
+++ b/geode-management/src/main/java/org/apache/geode/management/runtime/RuntimeRegionInfo.java
@@ -13,28 +13,18 @@
* the License.
*/
-package org.apache.geode.management.configuration;
+package org.apache.geode.management.runtime;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang3.StringUtils;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
import org.apache.geode.annotations.Experimental;
-import org.apache.geode.cache.configuration.RegionConfig;
@Experimental
-public class RuntimeRegionConfig extends RegionConfig {
+@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "class")
+public class RuntimeRegionInfo implements RuntimeInfo {
private long entryCount;
- public RuntimeRegionConfig() {}
-
- public RuntimeRegionConfig(RegionConfig config) {
- super(config);
- }
-
public long getEntryCount() {
return entryCount;
}
@@ -42,15 +32,4 @@ public class RuntimeRegionConfig extends RegionConfig {
public void setEntryCount(long entrySize) {
this.entryCount = entrySize;
}
-
- public List<Index> getIndexes(String indexId) {
- Stream<Index> stream = getIndexes().stream();
- if (StringUtils.isNotBlank(indexId)) {
- stream = stream.filter(i -> i.getId().equals(indexId));
- }
- return stream.map(index -> {
- index.setRegionName(getName());
- return index;
- }).collect(Collectors.toList());
- }
}
diff --git a/geode-management/src/test/java/org/apache/geode/cache/configuration/CacheElementJsonMappingTest.java b/geode-management/src/test/java/org/apache/geode/cache/configuration/CacheElementJsonMappingTest.java
index 0f1b2fd..1ed0fad 100644
--- a/geode-management/src/test/java/org/apache/geode/cache/configuration/CacheElementJsonMappingTest.java
+++ b/geode-management/src/test/java/org/apache/geode/cache/configuration/CacheElementJsonMappingTest.java
@@ -17,33 +17,34 @@ package org.apache.geode.cache.configuration;
import static org.assertj.core.api.Assertions.assertThat;
-import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.BeforeClass;
import org.junit.Test;
-import org.apache.geode.management.api.ClusterManagementResult;
-import org.apache.geode.management.configuration.MemberConfig;
-import org.apache.geode.management.configuration.RuntimeMemberConfig;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
+import org.apache.geode.management.runtime.MemberInformation;
+import org.apache.geode.management.runtime.RuntimeRegionInfo;
import org.apache.geode.util.internal.GeodeJsonMapper;
public class CacheElementJsonMappingTest {
private static ObjectMapper mapper = GeodeJsonMapper.getMapper();
- private static RuntimeMemberConfig member;
- private static RuntimeRegionConfig region;
+ private static MemberInformation member;
+ private static RegionConfig region;
+ private static RuntimeRegionInfo runtimeRegionInfo;
@BeforeClass
public static void beforeClass() {
- member = new RuntimeMemberConfig();
+ member = new MemberInformation();
member.setId("server");
- member.setPid(123);
+ member.setProcessId(123);
- region = new RuntimeRegionConfig();
+ region = new RegionConfig();
region.setName("test");
+
+ runtimeRegionInfo = new RuntimeRegionInfo();
+ runtimeRegionInfo.setEntryCount(100);
}
@Test
@@ -74,31 +75,11 @@ public class CacheElementJsonMappingTest {
System.out.println(json);
assertThat(json).contains("class").contains("\"id\":\"server\"");
- MemberConfig config = mapper.readValue(json, MemberConfig.class);
+ MemberInformation config = mapper.readValue(json, MemberInformation.class);
assertThat(config.getId()).isEqualTo(member.getId());
}
@Test
- public void serializeResult() throws Exception {
- ClusterManagementResult<CacheElement> result = new ClusterManagementResult<>();
- List<CacheElement> elements = new ArrayList<>();
- elements.add(region);
- elements.add(member);
- result.setResult(elements);
-
- String json = mapper.writeValueAsString(result);
- System.out.println(json);
-
- ClusterManagementResult<?> result1 =
- mapper.readValue(json, ClusterManagementResult.class);
- assertThat(result1.getResult()).hasSize(2);
- assertThat(result1.getResult().get(0))
- .isInstanceOf(RegionConfig.class);
- assertThat(result1.getResult().get(1))
- .isInstanceOf(MemberConfig.class);
- }
-
- @Test
public void deserializeWithoutTypeInfo() throws Exception {
String json = "{'name':'test'}";
RegionConfig config = mapper.readValue(json, RegionConfig.class);
@@ -124,7 +105,7 @@ public class CacheElementJsonMappingTest {
@Test
public void groups() throws Exception {
String json = "{'name':'test','groups':['group1','group2']}";
- RuntimeRegionConfig regionConfig = mapper.readValue(json, RuntimeRegionConfig.class);
+ RegionConfig regionConfig = mapper.readValue(json, RegionConfig.class);
assertThat(regionConfig.getGroups()).containsExactlyInAnyOrder("group1", "group2");
}
@@ -141,7 +122,7 @@ public class CacheElementJsonMappingTest {
@Test
public void serializeMultipleGroup() throws Exception {
- RuntimeRegionConfig config = new RuntimeRegionConfig();
+ RegionConfig config = new RegionConfig();
config.setName("test");
config.getGroups().add("group1");
config.getGroups().add("group2");
@@ -162,15 +143,14 @@ public class CacheElementJsonMappingTest {
index.setRegionName("region1");
index.setExpression("id");
config.getIndexes().add(index);
- RuntimeRegionConfig runtimeConfig = new RuntimeRegionConfig(config);
- String json = mapper.writeValueAsString(runtimeConfig);
+ String json = mapper.writeValueAsString(config);
System.out.println(json);
- runtimeConfig = mapper.readValue(json, RuntimeRegionConfig.class);
- assertThat(runtimeConfig.getGroups()).containsExactly("group1");
- List<RegionConfig.Index> runtimeIndexes = runtimeConfig.getIndexes(null);
- assertThat(runtimeIndexes).hasSize(1);
- assertThat(runtimeIndexes.get(0).getRegionName()).isEqualTo("region1");
+ RegionConfig config1 = mapper.readValue(json, RegionConfig.class);
+ assertThat(config1.getGroups()).containsExactly("group1");
+ List<RegionConfig.Index> indexes = config1.getIndexes();
+ assertThat(indexes).hasSize(1);
+ assertThat(indexes.get(0).getRegionName()).isEqualTo("region1");
}
@Test
diff --git a/geode-management/src/test/java/org/apache/geode/cache/configuration/CacheElementTest.java b/geode-management/src/test/java/org/apache/geode/cache/configuration/CacheElementTest.java
index 6df10c6..73b0b55 100644
--- a/geode-management/src/test/java/org/apache/geode/cache/configuration/CacheElementTest.java
+++ b/geode-management/src/test/java/org/apache/geode/cache/configuration/CacheElementTest.java
@@ -22,13 +22,12 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
import org.apache.geode.util.internal.GeodeJsonMapper;
public class CacheElementTest {
private CacheElement element;
- private RuntimeRegionConfig runtime;
+ private RegionConfig runtime;
private static ObjectMapper mapper;
private String json;
@@ -41,7 +40,7 @@ public class CacheElementTest {
@Before
public void before() throws Exception {
element = new RegionConfig();
- runtime = new RuntimeRegionConfig();
+ runtime = new RegionConfig();
}
@Test
@@ -83,15 +82,6 @@ public class CacheElementTest {
}
@Test
- public void copy() throws Exception {
- RegionConfig config = new RegionConfig();
- config.setName("test");
- runtime = new RuntimeRegionConfig(config);
- assertThat(runtime.getGroup()).isNull();
- assertThat(runtime.getGroups()).hasSize(0);
- }
-
- @Test
public void setGroup() throws Exception {
element.setGroup("group1");
assertThat(element.getGroup()).isEqualTo("group1");
diff --git a/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/ClientClusterManagementServiceDUnitTest.java b/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/ClientClusterManagementServiceDUnitTest.java
index d7262d2..f6ba47f 100644
--- a/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/ClientClusterManagementServiceDUnitTest.java
+++ b/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/ClientClusterManagementServiceDUnitTest.java
@@ -38,9 +38,9 @@ import org.apache.geode.cache.configuration.RegionType;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
import org.apache.geode.management.api.RealizationResult;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
import org.apache.geode.management.internal.rest.LocatorWebContext;
import org.apache.geode.management.internal.rest.PlainLocatorContextLoader;
+import org.apache.geode.management.runtime.RuntimeRegionInfo;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
@RunWith(SpringRunner.class)
@@ -72,16 +72,16 @@ public class ClientClusterManagementServiceDUnitTest {
@After
public void deleteAllRegions() {
- List<RuntimeRegionConfig> regions = client.list(new RegionConfig())
- .getResult();
+ List<RegionConfig> regions = client.list(new RegionConfig())
+ .getConfigResult();
regions.forEach(r -> {
r.setGroup(null);
client.delete(r);
});
- List<RuntimeRegionConfig> moreRegions = client.list(new RegionConfig())
- .getResult();
+ List<RegionConfig> moreRegions = client.list(new RegionConfig())
+ .getConfigResult();
assertThat(moreRegions).isEmpty();
}
@@ -92,14 +92,15 @@ public class ClientClusterManagementServiceDUnitTest {
region.setName("customer");
region.setType(RegionType.REPLICATE);
- ClusterManagementResult<RegionConfig> createResult = client.create(region);
+ ClusterManagementResult<?, ?> createResult = client.create(region);
assertManagementResult(createResult).hasStatusCode(ClusterManagementResult.StatusCode.OK);
- ClusterManagementResult<RegionConfig> deleteResult = client.delete(region);
+ ClusterManagementResult<?, ?> deleteResult = client.delete(region);
assertManagementResult(deleteResult)
.hasStatusCode(ClusterManagementResult.StatusCode.OK);
- ClusterManagementResult<RuntimeRegionConfig> listResult = client.list(new RegionConfig());
+ ClusterManagementResult<RegionConfig, RuntimeRegionInfo> listResult =
+ client.list(new RegionConfig());
assertManagementResult(listResult)
.hasStatusCode(ClusterManagementResult.StatusCode.OK)
.hasListResult()
@@ -114,15 +115,16 @@ public class ClientClusterManagementServiceDUnitTest {
region.setGroup("group1");
region.setType(RegionType.REPLICATE);
- ClusterManagementResult<RegionConfig> createResult = client.create(region);
+ ClusterManagementResult<?, ?> createResult = client.create(region);
assertManagementResult(createResult).hasStatusCode(ClusterManagementResult.StatusCode.OK);
region.setGroup(null);
- ClusterManagementResult<RegionConfig> deleteResult = client.delete(region);
+ ClusterManagementResult<?, ?> deleteResult = client.delete(region);
assertManagementResult(deleteResult)
.hasStatusCode(ClusterManagementResult.StatusCode.OK);
- ClusterManagementResult<RuntimeRegionConfig> listResult = client.list(new RegionConfig());
+ ClusterManagementResult<RegionConfig, RuntimeRegionInfo> listResult =
+ client.list(new RegionConfig());
assertManagementResult(listResult)
.hasStatusCode(ClusterManagementResult.StatusCode.OK)
.hasListResult()
@@ -137,7 +139,7 @@ public class ClientClusterManagementServiceDUnitTest {
region.setGroup("group1");
region.setType(RegionType.REPLICATE);
- ClusterManagementResult<RegionConfig> result = client.create(region);
+ ClusterManagementResult<?, ?> result = client.create(region);
assertManagementResult(result).isSuccessful().hasMemberStatus()
.extracting(RealizationResult::getMemberName)
.containsExactlyInAnyOrder("server-1",
@@ -158,7 +160,7 @@ public class ClientClusterManagementServiceDUnitTest {
region.setGroup("group1");
region.setType(RegionType.REPLICATE);
- ClusterManagementResult<RegionConfig> result = client.create(region);
+ ClusterManagementResult<?, ?> result = client.create(region);
assertManagementResult(result).isSuccessful().hasMemberStatus()
.extracting(RealizationResult::getMemberName)
.containsExactlyInAnyOrder("server-1",
@@ -170,12 +172,12 @@ public class ClientClusterManagementServiceDUnitTest {
ClusterManagementResult.StatusCode.ENTITY_EXISTS);
region.setGroup(null);
- ClusterManagementResult<RegionConfig> deleteResult = client.delete(region);
+ ClusterManagementResult<?, ?> deleteResult = client.delete(region);
assertManagementResult(deleteResult).isSuccessful();
- List<RuntimeRegionConfig> listResult = client.list(new RegionConfig())
- .getResult();
+ List<RuntimeRegionInfo> listResult = client.list(new RegionConfig())
+ .getRuntimeResult();
assertThat(listResult).hasSize(0);
}
@@ -189,7 +191,7 @@ public class ClientClusterManagementServiceDUnitTest {
region.setGroup("group1");
region.setType(RegionType.REPLICATE);
- ClusterManagementResult<RegionConfig> result = client.create(region);
+ ClusterManagementResult<?, ?> result = client.create(region);
assertManagementResult(result).isSuccessful().hasMemberStatus()
.extracting(RealizationResult::getMemberName)
.containsExactlyInAnyOrder("server-1",
@@ -206,7 +208,7 @@ public class ClientClusterManagementServiceDUnitTest {
RegionConfig region = new RegionConfig();
region.setName("unknown");
- ClusterManagementResult<RegionConfig> result = client.delete(region);
+ ClusterManagementResult<?, ?> result = client.delete(region);
assertManagementResult(result).failed()
.hasStatusCode(ClusterManagementResult.StatusCode.ENTITY_NOT_FOUND);
}
@@ -219,7 +221,7 @@ public class ClientClusterManagementServiceDUnitTest {
region.setGroup("group1");
region.setType(RegionType.REPLICATE);
- ClusterManagementResult<RegionConfig> result = client.create(region);
+ ClusterManagementResult<?, ?> result = client.create(region);
assertManagementResult(result).isSuccessful().hasMemberStatus()
.extracting(RealizationResult::getMemberName)
.containsExactlyInAnyOrder("server-1",
@@ -239,11 +241,12 @@ public class ClientClusterManagementServiceDUnitTest {
assertManagementResult(result)
.hasStatusCode(ClusterManagementResult.StatusCode.OK);
- ClusterManagementResult<RuntimeRegionConfig> listResult = client.list(new RegionConfig());
+ ClusterManagementResult<RegionConfig, RuntimeRegionInfo> listResult =
+ client.list(new RegionConfig());
assertManagementResult(listResult)
.hasStatusCode(ClusterManagementResult.StatusCode.OK)
.hasListResult()
- .extracting(RegionConfig::getId)
+ .extracting(r -> r.getConfig().getId())
.containsExactly("region1");
}
diff --git a/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/ConfigurePDXDUnitTest.java b/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/ConfigurePDXDUnitTest.java
index c81b1cd..3b591d4 100644
--- a/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/ConfigurePDXDUnitTest.java
+++ b/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/ConfigurePDXDUnitTest.java
@@ -18,8 +18,6 @@ package org.apache.geode.management.client;
import static org.assertj.core.api.Assertions.assertThat;
-import java.util.List;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
@@ -79,7 +77,7 @@ public class ConfigurePDXDUnitTest {
@Test
public void configurePdx() {
PdxType pdxType = new PdxType();
- ClusterManagementResult<PdxType> result = client.create(pdxType);
+ ClusterManagementResult<?, ?> result = client.create(pdxType);
// needed to pass StressNewTest since we haven't yet implemented delete(PdxType)
if (result.getStatusCode() == ClusterManagementResult.StatusCode.ENTITY_EXISTS)
@@ -87,12 +85,7 @@ public class ConfigurePDXDUnitTest {
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.OK);
-
- List<PdxType> list = result.getResult();
- assertThat(list.size()).isEqualTo(1);
- PdxType pdxResult = list.get(0);
- assertThat(pdxResult.getGroup()).isNull();
- assertThat(pdxResult.getUri()).isEqualTo("/geode-management/v2/configurations/pdx");
+ assertThat(result.getUri()).isEqualTo("/management/v2/configurations/pdx");
RealizationResult status = result.getMemberStatuses().get(0);
assertThat(status.getMemberName()).isEqualTo("server-1");
diff --git a/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/MemberManagementServiceDUnitTest.java b/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/MemberManagementServiceDUnitTest.java
index ad2cc34..40e3e4e 100644
--- a/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/MemberManagementServiceDUnitTest.java
+++ b/geode-web-management/src/distributedTest/java/org/apache/geode/management/client/MemberManagementServiceDUnitTest.java
@@ -39,9 +39,9 @@ import org.springframework.web.context.WebApplicationContext;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
import org.apache.geode.management.configuration.MemberConfig;
-import org.apache.geode.management.configuration.RuntimeMemberConfig;
import org.apache.geode.management.internal.rest.LocatorLauncherContextLoader;
import org.apache.geode.management.internal.rest.LocatorWebContext;
+import org.apache.geode.management.runtime.MemberInformation;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
@RunWith(SpringRunner.class)
@@ -72,28 +72,31 @@ public class MemberManagementServiceDUnitTest {
@WithMockUser
public void listAllMembers() {
MemberConfig memberConfig = new MemberConfig();
- ClusterManagementResult<RuntimeMemberConfig> result = client.list(memberConfig);
+ ClusterManagementResult<MemberConfig, MemberInformation> result = client.list(memberConfig);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.OK);
- List<RuntimeMemberConfig> members = result.getResult();
+ List<MemberInformation> members = result.getRuntimeResult();
assertThat(members.size()).isEqualTo(2);
- assertThat(members.stream().map(MemberConfig::getId).collect(Collectors.toList()))
+ assertThat(members.stream().map(MemberInformation::getName).collect(Collectors.toList()))
.containsExactlyInAnyOrder("locator-0", "server-1");
- for (RuntimeMemberConfig oneMember : members) {
- if (oneMember.isLocator()) {
- assertThat(oneMember.getPort())
+ for (MemberInformation oneMember : members) {
+ if (!oneMember.isServer()) {
+ assertThat(oneMember.isCoordinator()).isTrue();
+ assertThat(oneMember.getLocatorPort())
.as("port for locator member should not be null").isNotNull().isGreaterThan(0);
- assertThat(oneMember.getCacheServers().size())
+ assertThat(oneMember.getCacheServerInfo().size())
.as("locators should not have cache servers").isEqualTo(0);
} else {
- assertThat(oneMember.getPort()).as("port for server member should be null").isNull();
- assertThat(oneMember.getCacheServers().size())
+ assertThat(oneMember.isCoordinator()).isFalse();
+ assertThat(oneMember.getLocatorPort()).as("port for server member should be 0")
+ .isEqualTo(0);
+ assertThat(oneMember.getCacheServerInfo().size())
.as("server should have one cache server").isEqualTo(1);
- assertThat(oneMember.getCacheServers().get(0).getPort()).isGreaterThan(0);
- assertThat(oneMember.getCacheServers().get(0).getMaxConnections()).isGreaterThan(0);
- assertThat(oneMember.getCacheServers().get(0).getMaxThreads()).isEqualTo(0);
+ assertThat(oneMember.getCacheServerInfo().get(0).getPort()).isGreaterThan(0);
+ assertThat(oneMember.getCacheServerInfo().get(0).getMaxConnections()).isGreaterThan(0);
+ assertThat(oneMember.getCacheServerInfo().get(0).getMaxThreads()).isEqualTo(0);
}
}
}
@@ -103,12 +106,12 @@ public class MemberManagementServiceDUnitTest {
public void getOneMember() {
MemberConfig config = new MemberConfig();
config.setId("server-1");
- ClusterManagementResult<RuntimeMemberConfig> result = client.list(config);
+ ClusterManagementResult<MemberConfig, MemberInformation> result = client.list(config);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.OK);
- List<RuntimeMemberConfig> memberConfig = result.getResult();
+ List<MemberInformation> memberConfig = result.getRuntimeResult();
assertThat(memberConfig.size()).isEqualTo(1);
}
@@ -117,16 +120,16 @@ public class MemberManagementServiceDUnitTest {
public void getMemberStatus() {
MemberConfig config = new MemberConfig();
config.setId("locator-0");
- ClusterManagementResult<RuntimeMemberConfig> result = client.list(config);
+ ClusterManagementResult<MemberConfig, MemberInformation> result = client.list(config);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode()).isEqualTo(ClusterManagementResult.StatusCode.OK);
- List<RuntimeMemberConfig> members = result.getResult();
+ List<MemberInformation> members = result.getRuntimeResult();
assertThat(members.size()).isEqualTo(1);
- RuntimeMemberConfig memberConfig = members.get(0);
- assertThat(memberConfig.getInitialHeap()).isGreaterThan(0);
- assertThat(memberConfig.getMaxHeap()).isGreaterThan(0);
+ MemberInformation memberConfig = members.get(0);
+ assertThat(memberConfig.getInitHeapSize()).isGreaterThan(0);
+ assertThat(memberConfig.getMaxHeapSize()).isGreaterThan(0);
assertThat(memberConfig.getStatus()).isEqualTo("online");
}
@@ -136,11 +139,12 @@ public class MemberManagementServiceDUnitTest {
MemberConfig config = new MemberConfig();
// look for a member with a non-existent id
config.setId("server");
- ClusterManagementResult<RuntimeMemberConfig> result = client.list(config);
+ ClusterManagementResult<MemberConfig, MemberInformation> result = client.list(config);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getStatusCode())
.isEqualTo(ClusterManagementResult.StatusCode.OK);
- assertThat(result.getResult().size()).isEqualTo(0);
+ assertThat(result.getResult().size()).isEqualTo(1);
+ assertThat(result.getRuntimeResult().size()).isEqualTo(0);
}
@Test
@@ -158,6 +162,6 @@ public class MemberManagementServiceDUnitTest {
.andExpect(status().isNotFound())
.andExpect(jsonPath("$.statusCode", is("ENTITY_NOT_FOUND")))
.andExpect(jsonPath("$.statusMessage",
- is("MemberConfig with id = server not found.")));
+ is("Member with id = server not found.")));
}
}
diff --git a/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/GatewayManagementIntegrationTest.java b/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/GatewayManagementIntegrationTest.java
index 28086b7..c932a56 100644
--- a/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/GatewayManagementIntegrationTest.java
+++ b/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/GatewayManagementIntegrationTest.java
@@ -34,7 +34,9 @@ import org.apache.geode.cache.configuration.GatewayReceiverConfig;
import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
+import org.apache.geode.management.api.Response;
import org.apache.geode.management.client.ClusterManagementServiceBuilder;
+import org.apache.geode.management.runtime.RuntimeInfo;
import org.apache.geode.test.junit.rules.LocatorStarterRule;
@RunWith(SpringRunner.class)
@@ -63,7 +65,7 @@ public class GatewayManagementIntegrationTest {
@Test
public void listEmptyGatewayReceivers() {
- ClusterManagementResult<GatewayReceiverConfig> result = client.list(receiver);
+ ClusterManagementResult<GatewayReceiverConfig, RuntimeInfo> result = client.list(receiver);
assertThat(result.isSuccessful()).isTrue();
assertThat(result.getResult().size()).isEqualTo(0);
}
@@ -85,11 +87,11 @@ public class GatewayManagementIntegrationTest {
return cacheConfig;
});
- ClusterManagementResult<GatewayReceiverConfig> results = client.list(receiver);
+ ClusterManagementResult<GatewayReceiverConfig, RuntimeInfo> results = client.list(receiver);
assertThat(results.isSuccessful()).isTrue();
- List<GatewayReceiverConfig> receivers = results.getResult();
+ List<Response<GatewayReceiverConfig, RuntimeInfo>> receivers = results.getResult();
assertThat(receivers.size()).isEqualTo(1);
- GatewayReceiverConfig result = receivers.get(0);
+ GatewayReceiverConfig result = receivers.get(0).getConfig();
assertThat(result.getBindAddress()).isEqualTo("localhost");
assertThat(result.isManualStart()).isFalse();
assertThat(result.getStartPort()).isEqualTo("5000");
diff --git a/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/MemberManagementServiceRestIntegrationTest.java b/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/MemberManagementServiceRestIntegrationTest.java
index 0ad6bb4..0043007 100644
--- a/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/MemberManagementServiceRestIntegrationTest.java
+++ b/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/MemberManagementServiceRestIntegrationTest.java
@@ -73,14 +73,14 @@ public class MemberManagementServiceRestIntegrationTest {
.andExpect(status().isOk())
.andExpect(jsonPath("$.memberStatuses").doesNotExist())
.andExpect(jsonPath("$.statusCode", is("OK")))
- .andExpect(jsonPath("$.result[*].id", contains("locator-0")))
- .andExpect(jsonPath("$.result[0].port", greaterThan(0)))
- .andExpect(jsonPath("$.result[0].locator", is(true)))
- .andExpect(jsonPath("$.result[0].status", is("online")))
- .andExpect(jsonPath("$.result[0].cacheServers").doesNotExist())
- .andExpect(jsonPath("$.result[0].logFile", endsWith("locator-0.log")))
- .andExpect(jsonPath("$.result[0].workingDirectory", notNullValue()))
- .andExpect(jsonPath("$.result[0].usedHeap", greaterThan(0)));
+ .andExpect(jsonPath("$.result[0].runtimeInfo[*].name", contains("locator-0")))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].locatorPort", greaterThan(0)))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].server", is(false)))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].status", is("online")))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].cacheServerInfo").doesNotExist())
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].logFilePath", endsWith("locator-0.log")))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].workingDirPath", notNullValue()))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].heapUsage", greaterThan(0)));
}
@Test
@@ -91,17 +91,18 @@ public class MemberManagementServiceRestIntegrationTest {
.andExpect(status().isOk())
.andExpect(jsonPath("$.memberStatuses").doesNotExist())
.andExpect(jsonPath("$.statusCode", is("OK")))
- .andExpect(jsonPath("$.result[*].id", contains("server-1")))
- .andExpect(jsonPath("$.result[0].port").doesNotExist())
- .andExpect(jsonPath("$.result[0].locator", is(false)))
- .andExpect(jsonPath("$.result[0].cacheServers[0].port", greaterThan(0)))
- .andExpect(jsonPath("$.result[0].cacheServers[0].maxConnections", equalTo(800)))
- .andExpect(jsonPath("$.result[0].cacheServers[0].maxThreads", equalTo(0)))
- .andExpect(jsonPath("$.result[0].groups", containsInAnyOrder("group-1", "group-2")))
- .andExpect(jsonPath("$.result[0].logFile", endsWith("server-1.log")))
- .andExpect(jsonPath("$.result[0].workingDirectory", endsWith("vm1")))
- .andExpect(jsonPath("$.result[0].clientConnections", equalTo(0)))
- .andExpect(jsonPath("$.result[0].usedHeap", greaterThan(0)));
+ .andExpect(jsonPath("$.result[0].runtimeInfo[*].name", contains("server-1")))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].locatorPort", is(0)))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].server", is(true)))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].cacheServerInfo[0].port", greaterThan(0)))
+ .andExpect(
+ jsonPath("$.result[0].runtimeInfo[0].cacheServerInfo[0].maxConnections", equalTo(800)))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].cacheServerInfo[0].maxThreads", equalTo(0)))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].groups", equalTo("group-1,group-2")))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].logFilePath", endsWith("server-1.log")))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].workingDirPath", endsWith("vm1")))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].clientCount", equalTo(0)))
+ .andExpect(jsonPath("$.result[0].runtimeInfo[0].heapUsage", greaterThan(0)));
}
@Test
@@ -111,6 +112,7 @@ public class MemberManagementServiceRestIntegrationTest {
.andExpect(status().isOk())
.andExpect(jsonPath("$.memberStatuses").doesNotExist())
.andExpect(jsonPath("$.statusCode", is("OK")))
- .andExpect(jsonPath("$.result[*].id", containsInAnyOrder("locator-0", "server-1")));
+ .andExpect(jsonPath("$.result[0].runtimeInfo[*].name",
+ containsInAnyOrder("locator-0", "server-1")));
}
}
diff --git a/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/PdxManagementTest.java b/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/PdxManagementTest.java
index 57d746d..feab637 100644
--- a/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/PdxManagementTest.java
+++ b/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/PdxManagementTest.java
@@ -65,8 +65,7 @@ public class PdxManagementTest {
.andExpect(
jsonPath("$.statusMessage", containsString("Successfully updated config for cluster")))
.andExpect(jsonPath("$.statusCode", is("OK")))
- .andExpect(jsonPath("$.result[0].readSerialized", is(true)))
- .andExpect(jsonPath("$.result[0].uri", is("/geode-management/v2/configurations/pdx")));
+ .andExpect(jsonPath("$.uri", is("/management/v2/configurations/pdx")));
}
@Test
diff --git a/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/RegionManagementIntegrationTest.java b/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/RegionManagementIntegrationTest.java
index 4d21c79..82d885d 100644
--- a/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/RegionManagementIntegrationTest.java
+++ b/geode-web-management/src/integrationTest/java/org/apache/geode/management/internal/rest/RegionManagementIntegrationTest.java
@@ -34,7 +34,6 @@ import org.apache.geode.cache.configuration.RegionType;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.api.ClusterManagementService;
import org.apache.geode.management.client.ClusterManagementServiceBuilder;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
@RunWith(SpringRunner.class)
@ContextConfiguration(locations = {"classpath*:WEB-INF/management-servlet.xml"},
@@ -96,18 +95,6 @@ public class RegionManagementIntegrationTest {
}
@Test
- public void invalidConfigObject() throws Exception {
- RuntimeRegionConfig regionConfig = new RuntimeRegionConfig();
- regionConfig.setName("customers");
- regionConfig.setGroup("group1");
-
- assertManagementResult(client.create(regionConfig))
- .failed()
- .hasStatusCode(ClusterManagementResult.StatusCode.ILLEGAL_ARGUMENT)
- .containsStatusMessage("Configuration type RuntimeRegionConfig is not supported");
- }
-
- @Test
@WithMockUser
public void ping() throws Exception {
context.perform(get("/v2/ping"))
diff --git a/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/GatewayManagementController.java b/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/GatewayManagementController.java
index aaf43b0..d16efe5 100644
--- a/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/GatewayManagementController.java
+++ b/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/GatewayManagementController.java
@@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.apache.geode.cache.configuration.GatewayReceiverConfig;
import org.apache.geode.management.api.ClusterManagementResult;
+import org.apache.geode.management.runtime.RuntimeInfo;
@Controller("gatewayManagement")
@RequestMapping(MANAGEMENT_API_VERSION)
@@ -39,7 +40,7 @@ public class GatewayManagementController extends AbstractManagementController {
@PreAuthorize("@securityService.authorize('CLUSTER', 'READ')")
@RequestMapping(method = RequestMethod.GET, value = GATEWAY_RECEIVERS_ENDPOINTS)
@ResponseBody
- public ClusterManagementResult<GatewayReceiverConfig> listGatewayReceivers(
+ public ClusterManagementResult<GatewayReceiverConfig, RuntimeInfo> listGatewayReceivers(
@RequestParam(required = false) String group) {
GatewayReceiverConfig filter = new GatewayReceiverConfig();
if (StringUtils.isNotBlank(group)) {
@@ -50,9 +51,9 @@ public class GatewayManagementController extends AbstractManagementController {
@PreAuthorize("@securityService.authorize('CLUSTER', 'MANAGE')")
@RequestMapping(method = RequestMethod.POST, value = GATEWAY_RECEIVERS_ENDPOINTS)
- public ResponseEntity<ClusterManagementResult<GatewayReceiverConfig>> createGatewayReceiver(
+ public ResponseEntity<ClusterManagementResult> createGatewayReceiver(
@RequestBody GatewayReceiverConfig gatewayReceiverConfig) {
- ClusterManagementResult<GatewayReceiverConfig> result =
+ ClusterManagementResult result =
clusterManagementService.create(gatewayReceiverConfig);
return new ResponseEntity<>(result,
result.isSuccessful() ? HttpStatus.CREATED : HttpStatus.INTERNAL_SERVER_ERROR);
diff --git a/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/MemberManagementController.java b/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/MemberManagementController.java
index a182849..f68f727 100644
--- a/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/MemberManagementController.java
+++ b/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/MemberManagementController.java
@@ -30,18 +30,24 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.apache.geode.management.api.ClusterManagementResult;
import org.apache.geode.management.configuration.MemberConfig;
-import org.apache.geode.management.configuration.RuntimeMemberConfig;
+import org.apache.geode.management.internal.exceptions.EntityNotFoundException;
+import org.apache.geode.management.runtime.MemberInformation;
@Controller("members")
@RequestMapping(MANAGEMENT_API_VERSION)
public class MemberManagementController extends AbstractManagementController {
@PreAuthorize("@securityService.authorize('CLUSTER', 'READ')")
@RequestMapping(method = RequestMethod.GET, value = MEMBER_CONFIG_ENDPOINT + "/{id}")
- public ResponseEntity<ClusterManagementResult<RuntimeMemberConfig>> getMember(
+ public ResponseEntity<ClusterManagementResult<MemberConfig, MemberInformation>> getMember(
@PathVariable(name = "id") String id) {
MemberConfig config = new MemberConfig();
config.setId(id);
- ClusterManagementResult<RuntimeMemberConfig> result = clusterManagementService.get(config);
+ ClusterManagementResult<MemberConfig, MemberInformation> result =
+ clusterManagementService.list(config);
+ if (result.getRuntimeResult().size() == 0) {
+ throw new EntityNotFoundException(
+ "Member with id = " + config.getId() + " not found.");
+ }
return new ResponseEntity<>(result,
result.isSuccessful() ? HttpStatus.OK : HttpStatus.INTERNAL_SERVER_ERROR);
@@ -49,13 +55,14 @@ public class MemberManagementController extends AbstractManagementController {
@PreAuthorize("@securityService.authorize('CLUSTER', 'READ')")
@RequestMapping(method = RequestMethod.GET, value = MEMBER_CONFIG_ENDPOINT)
- public ResponseEntity<ClusterManagementResult<RuntimeMemberConfig>> listMembers(
+ public ResponseEntity<ClusterManagementResult<MemberConfig, MemberInformation>> listMembers(
@RequestParam(required = false) String id, @RequestParam(required = false) String group) {
MemberConfig filter = new MemberConfig();
if (StringUtils.isNotBlank(id)) {
filter.setId(id);
}
- ClusterManagementResult<RuntimeMemberConfig> result = clusterManagementService.list(filter);
+ ClusterManagementResult<MemberConfig, MemberInformation> result =
+ clusterManagementService.list(filter);
return new ResponseEntity<>(result,
result.isSuccessful() ? HttpStatus.OK : HttpStatus.INTERNAL_SERVER_ERROR);
diff --git a/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/PdxManagementController.java b/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/PdxManagementController.java
index 79e7a89..22de967 100644
--- a/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/PdxManagementController.java
+++ b/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/PdxManagementController.java
@@ -45,7 +45,7 @@ public class PdxManagementController extends AbstractManagementController {
@RequestMapping(method = RequestMethod.POST, value = PDX_ENDPOINT)
public ResponseEntity<ClusterManagementResult> configurePdx(
@RequestBody PdxType pdxType) {
- ClusterManagementResult<PdxType> result = clusterManagementService.create(pdxType);
+ ClusterManagementResult result = clusterManagementService.create(pdxType);
return new ResponseEntity<>(result,
result.isSuccessful() ? HttpStatus.CREATED : HttpStatus.INTERNAL_SERVER_ERROR);
}
diff --git a/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/RegionManagementController.java b/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/RegionManagementController.java
index 5d4c520..4c18a86 100644
--- a/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/RegionManagementController.java
+++ b/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/controllers/RegionManagementController.java
@@ -18,7 +18,10 @@ package org.apache.geode.management.internal.rest.controllers;
import static org.apache.geode.cache.configuration.RegionConfig.REGION_CONFIG_ENDPOINT;
import static org.apache.geode.management.internal.rest.controllers.AbstractManagementController.MANAGEMENT_API_VERSION;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
@@ -37,8 +40,10 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.apache.geode.cache.configuration.RegionConfig;
import org.apache.geode.management.api.ClusterManagementResult;
-import org.apache.geode.management.configuration.RuntimeRegionConfig;
+import org.apache.geode.management.api.Response;
import org.apache.geode.management.internal.exceptions.EntityNotFoundException;
+import org.apache.geode.management.runtime.RuntimeInfo;
+import org.apache.geode.management.runtime.RuntimeRegionInfo;
import org.apache.geode.security.ResourcePermission.Operation;
import org.apache.geode.security.ResourcePermission.Resource;
@@ -54,9 +59,9 @@ public class RegionManagementController extends AbstractManagementController {
@ApiResponse(code = 500, message = "GemFire throws an error or exception.")})
@PreAuthorize("@securityService.authorize('DATA', 'MANAGE')")
@RequestMapping(method = RequestMethod.POST, value = REGION_CONFIG_ENDPOINT)
- public ResponseEntity<ClusterManagementResult<RegionConfig>> createRegion(
+ public ResponseEntity<ClusterManagementResult> createRegion(
@RequestBody RegionConfig regionConfig) {
- ClusterManagementResult<RegionConfig> result =
+ ClusterManagementResult result =
clusterManagementService.create(regionConfig);
return new ResponseEntity<>(result,
result.isSuccessful() ? HttpStatus.CREATED : HttpStatus.INTERNAL_SERVER_ERROR);
@@ -65,7 +70,7 @@ public class RegionManagementController extends AbstractManagementController {
@PreAuthorize("@securityService.authorize('CLUSTER', 'READ')")
@RequestMapping(method = RequestMethod.GET, value = REGION_CONFIG_ENDPOINT)
@ResponseBody
- public ClusterManagementResult<RuntimeRegionConfig> listRegion(
+ public ClusterManagementResult<RegionConfig, RuntimeRegionInfo> listRegion(
@RequestParam(required = false) String id,
@RequestParam(required = false) String group) {
RegionConfig filter = new RegionConfig();
@@ -80,7 +85,7 @@ public class RegionManagementController extends AbstractManagementController {
@RequestMapping(method = RequestMethod.GET, value = REGION_CONFIG_ENDPOINT + "/{id}")
@ResponseBody
- public ClusterManagementResult<RuntimeRegionConfig> getRegion(
+ public ClusterManagementResult<RegionConfig, RuntimeRegionInfo> getRegion(
@PathVariable(name = "id") String id) {
securityService.authorize(Resource.CLUSTER, Operation.READ, id);
RegionConfig config = new RegionConfig();
@@ -91,7 +96,7 @@ public class RegionManagementController extends AbstractManagementController {
@PreAuthorize("@securityService.authorize('DATA', 'MANAGE')")
@RequestMapping(method = RequestMethod.DELETE, value = REGION_CONFIG_ENDPOINT + "/{id}")
@ResponseBody
- public ClusterManagementResult<RegionConfig> deleteRegion(
+ public ClusterManagementResult deleteRegion(
@PathVariable(name = "id") String id,
@RequestParam(required = false) String group) {
RegionConfig config = new RegionConfig();
@@ -106,18 +111,30 @@ public class RegionManagementController extends AbstractManagementController {
value = REGION_CONFIG_ENDPOINT + "/{regionName}/indexes")
@ResponseBody
@PreAuthorize("@securityService.authorize('CLUSTER', 'READ', 'QUERY')")
- public ClusterManagementResult<RegionConfig.Index> listIndex(
+ public ClusterManagementResult<RegionConfig.Index, RuntimeInfo> listIndex(
@PathVariable String regionName,
@RequestParam(required = false) String id) {
- ClusterManagementResult<RuntimeRegionConfig> result0 = getRegion(regionName);
- RuntimeRegionConfig runtimeRegion = result0.getResult().get(0);
+ ClusterManagementResult<RegionConfig, RuntimeRegionInfo> result0 = getRegion(regionName);
+ RegionConfig regionConfig = result0.getResult().get(0).getConfig();
// only send the index information back
- List<RegionConfig.Index> runtimeIndexes = runtimeRegion.getIndexes(id);
- ClusterManagementResult<RegionConfig.Index> result = new ClusterManagementResult<>();
- result.setResult(runtimeIndexes);
+ List<RegionConfig.Index> indexList = regionConfig.getIndexes().stream().map(e -> {
+ if (StringUtils.isNotBlank(id) && !e.getId().equals(id)) {
+ return null;
+ }
+ e.setRegionName(regionName);
+ return e;
+ }).filter(Objects::nonNull).collect(Collectors.toList());
+
+ List<Response<RegionConfig.Index, RuntimeInfo>> responses = new ArrayList<>();
+ for (RegionConfig.Index index : indexList) {
+ responses.add(new Response<>(index));
+ }
+ ClusterManagementResult<RegionConfig.Index, RuntimeInfo> result =
+ new ClusterManagementResult<>();
+ result.setResult(responses);
return result;
}
@@ -125,11 +142,11 @@ public class RegionManagementController extends AbstractManagementController {
value = REGION_CONFIG_ENDPOINT + "/{regionName}/indexes/{id}")
@ResponseBody
@PreAuthorize("@securityService.authorize('CLUSTER', 'READ', 'QUERY')")
- public ClusterManagementResult<RegionConfig.Index> getIndex(
+ public ClusterManagementResult<RegionConfig.Index, RuntimeInfo> getIndex(
@PathVariable String regionName,
@PathVariable String id) {
- ClusterManagementResult<RegionConfig.Index> result = listIndex(regionName, id);
- List<RegionConfig.Index> indexList = result.getResult();
+ ClusterManagementResult<RegionConfig.Index, RuntimeInfo> result = listIndex(regionName, id);
+ List<Response<RegionConfig.Index, RuntimeInfo>> indexList = result.getResult();
if (indexList.size() == 0) {
throw new EntityNotFoundException("Index " + id + " not found.");
diff --git a/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/security/RestSecurityConfiguration.java b/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/security/RestSecurityConfiguration.java
index 935240d..ddcc1c8 100644
--- a/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/security/RestSecurityConfiguration.java
+++ b/geode-web-management/src/main/java/org/apache/geode/management/internal/rest/security/RestSecurityConfiguration.java
@@ -81,8 +81,8 @@ public class RestSecurityConfiguration extends WebSecurityConfigurerAdapter {
response.addHeader("WWW-Authenticate", "Basic realm=\"GEODE\"");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
- ClusterManagementResult<?> result =
- new ClusterManagementResult<>(ClusterManagementResult.StatusCode.UNAUTHENTICATED,
+ ClusterManagementResult result =
+ new ClusterManagementResult(ClusterManagementResult.StatusCode.UNAUTHENTICATED,
authException.getMessage());
objectMapper.writeValue(response.getWriter(), result);
}