http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewaySenderCommand.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewaySenderCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewaySenderCommand.java new file mode 100644 index 0000000..5b20f1e --- /dev/null +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/StopGatewaySenderCommand.java @@ -0,0 +1,113 @@ +/* + * 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.cli.commands; + +import java.util.Set; + +import javax.management.ObjectName; + +import org.springframework.shell.core.annotation.CliCommand; +import org.springframework.shell.core.annotation.CliOption; + +import org.apache.geode.distributed.DistributedMember; +import org.apache.geode.internal.cache.InternalCache; +import org.apache.geode.management.GatewaySenderMXBean; +import org.apache.geode.management.ManagementService; +import org.apache.geode.management.cli.CliMetaData; +import org.apache.geode.management.cli.ConverterHint; +import org.apache.geode.management.cli.Result; +import org.apache.geode.management.internal.SystemManagementService; +import org.apache.geode.management.internal.cli.CliUtil; +import org.apache.geode.management.internal.cli.LogWrapper; +import org.apache.geode.management.internal.cli.i18n.CliStrings; +import org.apache.geode.management.internal.cli.result.ResultBuilder; +import org.apache.geode.management.internal.cli.result.TabularResultData; +import org.apache.geode.management.internal.security.ResourceOperation; +import org.apache.geode.security.ResourcePermission; + +public class StopGatewaySenderCommand implements GfshCommand { + + @CliCommand(value = CliStrings.STOP_GATEWAYSENDER, help = CliStrings.STOP_GATEWAYSENDER__HELP) + @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) + @ResourceOperation(resource = ResourcePermission.Resource.CLUSTER, + operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.GATEWAY) + public Result stopGatewaySender(@CliOption(key = CliStrings.STOP_GATEWAYSENDER__ID, + mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID, + help = CliStrings.STOP_GATEWAYSENDER__ID__HELP) String senderId, + + @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, + optionContext = ConverterHint.MEMBERGROUP, + help = CliStrings.STOP_GATEWAYSENDER__GROUP__HELP) String[] onGroup, + + @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, + optionContext = ConverterHint.MEMBERIDNAME, + help = CliStrings.STOP_GATEWAYSENDER__MEMBER__HELP) String[] onMember) { + + Result result; + if (senderId != null) { + senderId = senderId.trim(); + } + + try { + InternalCache cache = getCache(); + SystemManagementService service = + (SystemManagementService) ManagementService.getExistingManagementService(cache); + + GatewaySenderMXBean bean; + + TabularResultData resultData = ResultBuilder.createTabularResultData(); + + Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember); + + if (dsMembers.isEmpty()) { + return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); + } + + for (DistributedMember member : dsMembers) { + if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) { + bean = service.getLocalGatewaySenderMXBean(senderId); + } else { + ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId); + bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class); + } + if (bean != null) { + if (bean.isRunning()) { + bean.stop(); + GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(), + CliStrings.GATEWAY_OK, CliStrings.format( + CliStrings.GATEWAY_SENDER_0_IS_STOPPED_ON_MEMBER_1, senderId, member.getId())); + + } else { + GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(), + CliStrings.GATEWAY_ERROR, + CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_RUNNING_ON_MEMBER_1, senderId, + member.getId())); + } + } else { + GatewayCommandsUtils.accumulateStartResult(resultData, member.getId(), + CliStrings.GATEWAY_ERROR, + CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, senderId, + member.getId())); + } + } + result = ResultBuilder.buildResult(resultData); + } catch (Exception e) { + LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e)); + result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage()); + } + return result; + } +}
http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java deleted file mode 100644 index c6fb709..0000000 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/WanCommands.java +++ /dev/null @@ -1,1137 +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.cli.commands; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicReference; - -import javax.management.ObjectName; - -import org.springframework.shell.core.annotation.CliCommand; -import org.springframework.shell.core.annotation.CliOption; - -import org.apache.geode.cache.execute.ResultCollector; -import org.apache.geode.distributed.DistributedMember; -import org.apache.geode.internal.cache.InternalCache; -import org.apache.geode.management.DistributedSystemMXBean; -import org.apache.geode.management.GatewayReceiverMXBean; -import org.apache.geode.management.GatewaySenderMXBean; -import org.apache.geode.management.ManagementService; -import org.apache.geode.management.cli.CliMetaData; -import org.apache.geode.management.cli.ConverterHint; -import org.apache.geode.management.cli.Result; -import org.apache.geode.management.internal.MBeanJMXAdapter; -import org.apache.geode.management.internal.SystemManagementService; -import org.apache.geode.management.internal.cli.CliUtil; -import org.apache.geode.management.internal.cli.LogWrapper; -import org.apache.geode.management.internal.cli.functions.CliFunctionResult; -import org.apache.geode.management.internal.cli.functions.GatewayReceiverCreateFunction; -import org.apache.geode.management.internal.cli.functions.GatewayReceiverFunctionArgs; -import org.apache.geode.management.internal.cli.functions.GatewaySenderCreateFunction; -import org.apache.geode.management.internal.cli.functions.GatewaySenderDestroyFunction; -import org.apache.geode.management.internal.cli.functions.GatewaySenderDestroyFunctionArgs; -import org.apache.geode.management.internal.cli.functions.GatewaySenderFunctionArgs; -import org.apache.geode.management.internal.cli.i18n.CliStrings; -import org.apache.geode.management.internal.cli.result.CommandResultException; -import org.apache.geode.management.internal.cli.result.CompositeResultData; -import org.apache.geode.management.internal.cli.result.ResultBuilder; -import org.apache.geode.management.internal.cli.result.TabularResultData; -import org.apache.geode.management.internal.configuration.domain.XmlEntity; -import org.apache.geode.management.internal.security.ResourceOperation; -import org.apache.geode.security.ResourcePermission.Operation; -import org.apache.geode.security.ResourcePermission.Resource; -import org.apache.geode.security.ResourcePermission.Target; - -public class WanCommands implements GfshCommand { - - @CliCommand(value = CliStrings.CREATE_GATEWAYSENDER, help = CliStrings.CREATE_GATEWAYSENDER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE, - target = Target.GATEWAY) - public Result createGatewaySender(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.CREATE_GATEWAYSENDER__GROUP__HELP) String[] onGroups, - - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.CREATE_GATEWAYSENDER__MEMBER__HELP) String[] onMember, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ID, mandatory = true, - help = CliStrings.CREATE_GATEWAYSENDER__ID__HELP) String id, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID, mandatory = true, - help = CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID__HELP) Integer remoteDistributedSystemId, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__PARALLEL, - help = CliStrings.CREATE_GATEWAYSENDER__PARALLEL__HELP) Boolean parallel, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__MANUALSTART, - help = CliStrings.CREATE_GATEWAYSENDER__MANUALSTART__HELP) Boolean manualStart, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE, - help = CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE__HELP) Integer socketBufferSize, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT, - help = CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT__HELP) Integer socketReadTimeout, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION, - help = CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION__HELP) Boolean enableBatchConflation, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE, - help = CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE__HELP) Integer batchSize, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL, - help = CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL__HELP) Integer batchTimeInterval, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE, - help = CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE__HELP) Boolean enablePersistence, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__DISKSTORENAME, - help = CliStrings.CREATE_GATEWAYSENDER__DISKSTORENAME__HELP) String diskStoreName, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS, - help = CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS__HELP) Boolean diskSynchronous, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY, - help = CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY__HELP) Integer maxQueueMemory, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD, - help = CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD__HELP) Integer alertThreshold, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS, - help = CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS__HELP) Integer dispatcherThreads, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY, - help = CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY__HELP) String orderPolicy, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER, - help = CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER__HELP) String[] gatewayEventFilters, - - @CliOption(key = CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER, - help = CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER__HELP) String[] gatewayTransportFilter) { - - Result result; - - AtomicReference<XmlEntity> xmlEntity = new AtomicReference<>(); - try { - GatewaySenderFunctionArgs gatewaySenderFunctionArgs = new GatewaySenderFunctionArgs(id, - remoteDistributedSystemId, parallel, manualStart, socketBufferSize, socketReadTimeout, - enableBatchConflation, batchSize, batchTimeInterval, enablePersistence, diskStoreName, - diskSynchronous, maxQueueMemory, alertThreshold, dispatcherThreads, orderPolicy, - gatewayEventFilters, gatewayTransportFilter); - - Set<DistributedMember> membersToCreateGatewaySenderOn = - CliUtil.findMembers(onGroups, onMember); - - if (membersToCreateGatewaySenderOn.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - ResultCollector<?, ?> resultCollector = - CliUtil.executeFunction(GatewaySenderCreateFunction.INSTANCE, gatewaySenderFunctionArgs, - membersToCreateGatewaySenderOn); - @SuppressWarnings("unchecked") - List<CliFunctionResult> gatewaySenderCreateResults = - (List<CliFunctionResult>) resultCollector.getResult(); - - TabularResultData tabularResultData = ResultBuilder.createTabularResultData(); - final String errorPrefix = "ERROR: "; - for (CliFunctionResult gatewaySenderCreateResult : gatewaySenderCreateResults) { - boolean success = gatewaySenderCreateResult.isSuccessful(); - tabularResultData.accumulate("Member", gatewaySenderCreateResult.getMemberIdOrName()); - tabularResultData.accumulate("Status", - (success ? "" : errorPrefix) + gatewaySenderCreateResult.getMessage()); - - if (success && xmlEntity.get() == null) { - xmlEntity.set(gatewaySenderCreateResult.getXmlEntity()); - } - } - result = ResultBuilder.buildResult(tabularResultData); - } catch (IllegalArgumentException e) { - LogWrapper.getInstance().info(e.getMessage()); - result = ResultBuilder.createUserErrorResult(e.getMessage()); - } - - if (xmlEntity.get() != null) { - persistClusterConfiguration(result, - () -> getSharedConfiguration().addXmlEntity(xmlEntity.get(), onGroups)); - } - return result; - } - - @CliCommand(value = CliStrings.START_GATEWAYSENDER, help = CliStrings.START_GATEWAYSENDER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE, - target = Target.GATEWAY) - public Result startGatewaySender(@CliOption(key = CliStrings.START_GATEWAYSENDER__ID, - mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID, - help = CliStrings.START_GATEWAYSENDER__ID__HELP) String senderId, - - @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.START_GATEWAYSENDER__GROUP__HELP) String[] onGroup, - - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.START_GATEWAYSENDER__MEMBER__HELP) String[] onMember) { - - Result result; - final String id = senderId.trim(); - - try { - final InternalCache cache = getCache(); - final SystemManagementService service = - (SystemManagementService) ManagementService.getExistingManagementService(cache); - - TabularResultData resultData = ResultBuilder.createTabularResultData(); - - Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember); - - if (dsMembers.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - ExecutorService execService = Executors.newCachedThreadPool(new ThreadFactory() { - AtomicInteger threadNum = new AtomicInteger(); - - public Thread newThread(final Runnable r) { - Thread result = - new Thread(r, "Start Sender Command Thread " + threadNum.incrementAndGet()); - result.setDaemon(true); - return result; - } - }); - - List<Callable<List>> callables = new ArrayList<>(); - - for (final DistributedMember member : dsMembers) { - - callables.add(() -> { - - GatewaySenderMXBean bean; - ArrayList<String> statusList = new ArrayList<>(); - if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) { - bean = service.getLocalGatewaySenderMXBean(id); - } else { - ObjectName objectName = service.getGatewaySenderMBeanName(member, id); - bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class); - } - if (bean != null) { - if (bean.isRunning()) { - statusList.add(member.getId()); - statusList.add(CliStrings.GATEWAY_ERROR); - statusList.add(CliStrings.format( - CliStrings.GATEWAY_SENDER_0_IS_ALREADY_STARTED_ON_MEMBER_1, id, member.getId())); - } else { - bean.start(); - statusList.add(member.getId()); - statusList.add(CliStrings.GATEWAY_OK); - statusList.add(CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_STARTED_ON_MEMBER_1, - id, member.getId())); - } - } else { - statusList.add(member.getId()); - statusList.add(CliStrings.GATEWAY_ERROR); - statusList.add(CliStrings.format( - CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, id, member.getId())); - } - return statusList; - - }); - } - - Iterator<DistributedMember> memberIterator = dsMembers.iterator(); - List<Future<List>> futures = null; - - try { - futures = execService.invokeAll(callables); - } catch (InterruptedException ite) { - accumulateStartResult(resultData, null, CliStrings.GATEWAY_ERROR, CliStrings.format( - CliStrings.GATEWAY_SENDER_0_COULD_NOT_BE_INVOKED_DUE_TO_1, id, ite.getMessage())); - } - - for (Future<List> future : futures) { - DistributedMember member = memberIterator.next(); - List<String> memberStatus; - try { - memberStatus = future.get(); - accumulateStartResult(resultData, memberStatus.get(0), memberStatus.get(1), - memberStatus.get(2)); - } catch (InterruptedException | ExecutionException ite) { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_COULD_NOT_BE_STARTED_ON_MEMBER_DUE_TO_1, - id, ite.getMessage())); - } - } - execService.shutdown(); - result = ResultBuilder.buildResult(resultData); - } catch (Exception e) { - LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e)); - result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage()); - } - - return result; - } - - @CliCommand(value = CliStrings.PAUSE_GATEWAYSENDER, help = CliStrings.PAUSE_GATEWAYSENDER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE, - target = Target.GATEWAY) - public Result pauseGatewaySender(@CliOption(key = CliStrings.PAUSE_GATEWAYSENDER__ID, - mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID, - help = CliStrings.PAUSE_GATEWAYSENDER__ID__HELP) String senderId, - - @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.PAUSE_GATEWAYSENDER__GROUP__HELP) String[] onGroup, - - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.PAUSE_GATEWAYSENDER__MEMBER__HELP) String[] onMember) { - - Result result; - if (senderId != null) { - senderId = senderId.trim(); - } - - try { - InternalCache cache = getCache(); - SystemManagementService service = - (SystemManagementService) ManagementService.getExistingManagementService(cache); - - GatewaySenderMXBean bean; - - TabularResultData resultData = ResultBuilder.createTabularResultData(); - - Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember); - - if (dsMembers.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - for (DistributedMember member : dsMembers) { - if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) { - bean = service.getLocalGatewaySenderMXBean(senderId); - } else { - ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId); - bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class); - } - if (bean != null) { - if (bean.isRunning()) { - if (bean.isPaused()) { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_ALREADY_PAUSED_ON_MEMBER_1, - senderId, member.getId())); - } else { - bean.pause(); - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_PAUSED_ON_MEMBER_1, senderId, - member.getId())); - } - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_RUNNING_ON_MEMBER_1, senderId, - member.getId())); - } - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, senderId, - member.getId())); - } - } - result = ResultBuilder.buildResult(resultData); - } catch (Exception e) { - LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e)); - result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage()); - } - return result; - } - - @CliCommand(value = CliStrings.RESUME_GATEWAYSENDER, help = CliStrings.RESUME_GATEWAYSENDER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE, - target = Target.GATEWAY) - public Result resumeGatewaySender(@CliOption(key = CliStrings.RESUME_GATEWAYSENDER__ID, - mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID, - help = CliStrings.RESUME_GATEWAYSENDER__ID__HELP) String senderId, - - @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.RESUME_GATEWAYSENDER__GROUP__HELP) String[] onGroup, - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.RESUME_GATEWAYSENDER__MEMBER__HELP) String[] onMember) { - - Result result; - if (senderId != null) { - senderId = senderId.trim(); - } - - try { - InternalCache cache = getCache(); - SystemManagementService service = - (SystemManagementService) ManagementService.getExistingManagementService(cache); - - GatewaySenderMXBean bean; - - TabularResultData resultData = ResultBuilder.createTabularResultData(); - - Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember); - - if (dsMembers.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - for (DistributedMember member : dsMembers) { - if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) { - bean = service.getLocalGatewaySenderMXBean(senderId); - } else { - ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId); - bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class); - } - if (bean != null) { - if (bean.isRunning()) { - if (bean.isPaused()) { - bean.resume(); - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_RESUMED_ON_MEMBER_1, senderId, - member.getId())); - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_PAUSED_ON_MEMBER_1, senderId, - member.getId())); - } - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_RUNNING_ON_MEMBER_1, senderId, - member.getId())); - } - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, senderId, - member.getId())); - } - } - result = ResultBuilder.buildResult(resultData); - } catch (Exception e) { - LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e)); - result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage()); - } - return result; - } - - @CliCommand(value = CliStrings.STOP_GATEWAYSENDER, help = CliStrings.STOP_GATEWAYSENDER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE, - target = Target.GATEWAY) - public Result stopGatewaySender(@CliOption(key = CliStrings.STOP_GATEWAYSENDER__ID, - mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID, - help = CliStrings.STOP_GATEWAYSENDER__ID__HELP) String senderId, - - @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.STOP_GATEWAYSENDER__GROUP__HELP) String[] onGroup, - - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.STOP_GATEWAYSENDER__MEMBER__HELP) String[] onMember) { - - Result result; - if (senderId != null) - senderId = senderId.trim(); - - try { - InternalCache cache = getCache(); - SystemManagementService service = - (SystemManagementService) ManagementService.getExistingManagementService(cache); - - GatewaySenderMXBean bean; - - TabularResultData resultData = ResultBuilder.createTabularResultData(); - - Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember); - - if (dsMembers.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - for (DistributedMember member : dsMembers) { - if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) { - bean = service.getLocalGatewaySenderMXBean(senderId); - } else { - ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId); - bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class); - } - if (bean != null) { - if (bean.isRunning()) { - bean.stop(); - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_STOPPED_ON_MEMBER_1, senderId, - member.getId())); - - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_RUNNING_ON_MEMBER_1, senderId, - member.getId())); - } - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, senderId, - member.getId())); - } - } - result = ResultBuilder.buildResult(resultData); - } catch (Exception e) { - LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e)); - result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage()); - } - return result; - } - - @CliCommand(value = CliStrings.CREATE_GATEWAYRECEIVER, - help = CliStrings.CREATE_GATEWAYRECEIVER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE, - target = Target.GATEWAY) - public Result createGatewayReceiver(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.CREATE_GATEWAYRECEIVER__GROUP__HELP) String[] onGroups, - - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.CREATE_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember, - - @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART, - help = CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART__HELP) Boolean manualStart, - - @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT, - help = CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT__HELP) Integer startPort, - - @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT, - help = CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT__HELP) Integer endPort, - - @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS, - help = CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS__HELP) String bindAddress, - - @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS, - help = CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS__HELP) Integer maximumTimeBetweenPings, - - @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE, - help = CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE__HELP) Integer socketBufferSize, - - @CliOption(key = CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER, - help = CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER__HELP) String[] gatewayTransportFilters) { - - Result result; - - AtomicReference<XmlEntity> xmlEntity = new AtomicReference<>(); - try { - GatewayReceiverFunctionArgs gatewayReceiverFunctionArgs = - new GatewayReceiverFunctionArgs(manualStart, startPort, endPort, bindAddress, - socketBufferSize, maximumTimeBetweenPings, gatewayTransportFilters); - - Set<DistributedMember> membersToCreateGatewayReceiverOn = - CliUtil.findMembers(onGroups, onMember); - - if (membersToCreateGatewayReceiverOn.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - ResultCollector<?, ?> resultCollector = - CliUtil.executeFunction(GatewayReceiverCreateFunction.INSTANCE, - gatewayReceiverFunctionArgs, membersToCreateGatewayReceiverOn); - @SuppressWarnings("unchecked") - List<CliFunctionResult> gatewayReceiverCreateResults = - (List<CliFunctionResult>) resultCollector.getResult(); - - TabularResultData tabularResultData = ResultBuilder.createTabularResultData(); - final String errorPrefix = "ERROR: "; - - for (CliFunctionResult gatewayReceiverCreateResult : gatewayReceiverCreateResults) { - boolean success = gatewayReceiverCreateResult.isSuccessful(); - tabularResultData.accumulate("Member", gatewayReceiverCreateResult.getMemberIdOrName()); - tabularResultData.accumulate("Status", - (success ? "" : errorPrefix) + gatewayReceiverCreateResult.getMessage()); - - if (success && xmlEntity.get() == null) { - xmlEntity.set(gatewayReceiverCreateResult.getXmlEntity()); - } - } - result = ResultBuilder.buildResult(tabularResultData); - } catch (IllegalArgumentException e) { - LogWrapper.getInstance().info(e.getMessage()); - result = ResultBuilder.createUserErrorResult(e.getMessage()); - } - - if (xmlEntity.get() != null) { - persistClusterConfiguration(result, - () -> getSharedConfiguration().addXmlEntity(xmlEntity.get(), onGroups)); - } - - return result; - } - - @CliCommand(value = CliStrings.LOAD_BALANCE_GATEWAYSENDER, - help = CliStrings.LOAD_BALANCE_GATEWAYSENDER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE, - target = Target.GATEWAY) - public Result loadBalanceGatewaySender(@CliOption(key = CliStrings.LOAD_BALANCE_GATEWAYSENDER__ID, - mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID, - help = CliStrings.LOAD_BALANCE_GATEWAYSENDER__ID__HELP) String senderId) { - - Result result; - if (senderId != null) { - senderId = senderId.trim(); - } - - try { - InternalCache cache = getCache(); - SystemManagementService service = - (SystemManagementService) ManagementService.getExistingManagementService(cache); - TabularResultData resultData = ResultBuilder.createTabularResultData(); - Set<DistributedMember> dsMembers = CliUtil.getAllNormalMembers(cache); - - if (dsMembers.isEmpty()) { - result = ResultBuilder.createInfoResult(CliStrings.GATEWAY_MSG_MEMBERS_NOT_FOUND); - } else { - boolean gatewaySenderExists = false; - for (DistributedMember member : dsMembers) { - GatewaySenderMXBean bean; - if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) { - bean = service.getLocalGatewaySenderMXBean(senderId); - } else { - ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId); - bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class); - } - if (bean != null) { - gatewaySenderExists = true; - bean.rebalance(); - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_REBALANCED_ON_MEMBER_1, senderId, - member.getId())); - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_SENDER_0_IS_NOT_AVAILABLE_ON_MEMBER_1, - senderId, member.getId())); - } - } - if (gatewaySenderExists) { - result = ResultBuilder.buildResult(resultData); - } else { - result = ResultBuilder.createInfoResult(CliStrings.format( - CliStrings.GATEWAY_SENDER_0_IS_NOT_FOUND_ON_ANY_MEMBER, new Object[] {senderId})); - } - } - } catch (Exception e) { - LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e)); - result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage()); - } - - return result; - } - - @CliCommand(value = CliStrings.START_GATEWAYRECEIVER, - help = CliStrings.START_GATEWAYRECEIVER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE, - target = Target.GATEWAY) - public Result startGatewayReceiver(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.START_GATEWAYRECEIVER__GROUP__HELP) String[] onGroup, - - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.START_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember) { - Result result; - - try { - InternalCache cache = getCache(); - SystemManagementService service = - (SystemManagementService) ManagementService.getExistingManagementService(cache); - - GatewayReceiverMXBean receiverBean; - - TabularResultData resultData = ResultBuilder.createTabularResultData(); - - Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember); - - if (dsMembers.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - for (DistributedMember member : dsMembers) { - ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member); - - if (gatewayReceiverObjectName != null) { - receiverBean = - service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class); - if (receiverBean != null) { - if (receiverBean.isRunning()) { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_ALREADY_STARTED_ON_MEMBER_0, - new Object[] {member.getId()})); - } else { - receiverBean.start(); - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK, - CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_STARTED_ON_MEMBER_0, - new Object[] {member.getId()})); - } - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0, - new Object[] {member.getId()})); - } - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0, - new Object[] {member.getId()})); - } - } - result = ResultBuilder.buildResult(resultData); - } catch (CommandResultException crex) { - result = handleCommandResultException(crex); - } catch (Exception e) { - LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e)); - result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage()); - } - return result; - } - - @CliCommand(value = CliStrings.STOP_GATEWAYRECEIVER, help = CliStrings.STOP_GATEWAYRECEIVER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE, - target = Target.GATEWAY) - public Result stopGatewayReceiver( - - @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.STOP_GATEWAYRECEIVER__GROUP__HELP) String[] onGroup, - - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.STOP_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember) { - - Result result; - - try { - InternalCache cache = getCache(); - SystemManagementService service = - (SystemManagementService) ManagementService.getExistingManagementService(cache); - - GatewayReceiverMXBean receiverBean; - - TabularResultData resultData = ResultBuilder.createTabularResultData(); - - Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember); - - if (dsMembers.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - for (DistributedMember member : dsMembers) { - ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member); - - if (gatewayReceiverObjectName != null) { - receiverBean = - service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class); - if (receiverBean != null) { - if (receiverBean.isRunning()) { - receiverBean.stop(); - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_OK, - CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_STOPPED_ON_MEMBER_0, - new Object[] {member.getId()})); - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_RUNNING_ON_MEMBER_0, - new Object[] {member.getId()})); - } - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0, - new Object[] {member.getId()})); - } - } else { - accumulateStartResult(resultData, member.getId(), CliStrings.GATEWAY_ERROR, - CliStrings.format(CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_ON_MEMBER_0, - new Object[] {member.getId()})); - } - } - result = ResultBuilder.buildResult(resultData); - } catch (CommandResultException crex) { - result = handleCommandResultException(crex); - } catch (Exception e) { - LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e)); - result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage()); - } - return result; - } - - @CliCommand(value = CliStrings.LIST_GATEWAY, help = CliStrings.LIST_GATEWAY__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ) - public Result listGateway( - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.LIST_GATEWAY__MEMBER__HELP) String[] onMember, - @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.LIST_GATEWAY__GROUP__HELP) String[] onGroup) { - - Result result; - InternalCache cache = getCache(); - try { - SystemManagementService service = - (SystemManagementService) ManagementService.getExistingManagementService(cache); - - Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember); - - if (dsMembers.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - Map<String, Map<String, GatewaySenderMXBean>> gatewaySenderBeans = new TreeMap<>(); - Map<String, GatewayReceiverMXBean> gatewayReceiverBeans = new TreeMap<>(); - - DistributedSystemMXBean dsMXBean = service.getDistributedSystemMXBean(); - for (DistributedMember member : dsMembers) { - String memberName = member.getName(); - String memberNameOrId = - (memberName != null && !memberName.isEmpty()) ? memberName : member.getId(); - ObjectName gatewaySenderObjectNames[] = - dsMXBean.listGatewaySenderObjectNames(memberNameOrId); - // gateway senders : a member can have multiple gateway sendersdefined - // on it - if (gatewaySenderObjectNames != null) { - for (ObjectName name : gatewaySenderObjectNames) { - GatewaySenderMXBean senderBean = service.getMBeanProxy(name, GatewaySenderMXBean.class); - if (senderBean != null) { - if (gatewaySenderBeans.containsKey(senderBean.getSenderId())) { - Map<String, GatewaySenderMXBean> memberToBeanMap = - gatewaySenderBeans.get(senderBean.getSenderId()); - memberToBeanMap.put(member.getId(), senderBean); - } else { - Map<String, GatewaySenderMXBean> memberToBeanMap = new TreeMap<>(); - memberToBeanMap.put(member.getId(), senderBean); - gatewaySenderBeans.put(senderBean.getSenderId(), memberToBeanMap); - } - } - } - } - // gateway receivers : a member can have only one gateway receiver - ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member); - if (gatewayReceiverObjectName != null) { - GatewayReceiverMXBean receiverBean; - receiverBean = - service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class); - if (receiverBean != null) { - gatewayReceiverBeans.put(member.getId(), receiverBean); - } - } - } - if (gatewaySenderBeans.isEmpty() && gatewayReceiverBeans.isEmpty()) { - return ResultBuilder - .createUserErrorResult(CliStrings.GATEWAYS_ARE_NOT_AVAILABLE_IN_CLUSTER); - } - CompositeResultData crd = ResultBuilder.createCompositeResultData(); - crd.setHeader(CliStrings.HEADER_GATEWAYS); - accumulateListGatewayResult(crd, gatewaySenderBeans, gatewayReceiverBeans); - result = ResultBuilder.buildResult(crd); - } catch (Exception e) { - LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e)); - result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage()); - } - return result; - } - - @CliCommand(value = CliStrings.STATUS_GATEWAYSENDER, help = CliStrings.STATUS_GATEWAYSENDER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ) - public Result statusGatewaySender(@CliOption(key = CliStrings.STATUS_GATEWAYSENDER__ID, - mandatory = true, optionContext = ConverterHint.GATEWAY_SENDER_ID, - help = CliStrings.STATUS_GATEWAYSENDER__ID__HELP) String senderId, - - @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.STATUS_GATEWAYSENDER__GROUP__HELP) String[] onGroup, - - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.STATUS_GATEWAYSENDER__MEMBER__HELP) String[] onMember) { - - Result result; - if (senderId != null) - senderId = senderId.trim(); - try { - InternalCache cache = getCache(); - SystemManagementService service = - (SystemManagementService) ManagementService.getExistingManagementService(cache); - - GatewaySenderMXBean bean; - - CompositeResultData crd = ResultBuilder.createCompositeResultData(); - TabularResultData availableSenderData = - crd.addSection(CliStrings.SECTION_GATEWAY_SENDER_AVAILABLE) - .addTable(CliStrings.TABLE_GATEWAY_SENDER); - - TabularResultData notAvailableSenderData = - crd.addSection(CliStrings.SECTION_GATEWAY_SENDER_NOT_AVAILABLE) - .addTable(CliStrings.TABLE_GATEWAY_SENDER); - - Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember); - - if (dsMembers.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - for (DistributedMember member : dsMembers) { - if (cache.getDistributedSystem().getDistributedMember().getId().equals(member.getId())) { - bean = service.getLocalGatewaySenderMXBean(senderId); - } else { - ObjectName objectName = service.getGatewaySenderMBeanName(member, senderId); - bean = service.getMBeanProxy(objectName, GatewaySenderMXBean.class); - } - if (bean != null) { - buildSenderStatus(member.getId(), bean, availableSenderData); - } else { - buildSenderStatus(member.getId(), bean, notAvailableSenderData); - } - } - result = ResultBuilder.buildResult(crd); - } catch (Exception e) { - LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e)); - result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage()); - } - return result; - } - - @CliCommand(value = CliStrings.STATUS_GATEWAYRECEIVER, - help = CliStrings.STATUS_GATEWAYRECEIVER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ) - public Result statusGatewayReceiver(@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.STATUS_GATEWAYRECEIVER__GROUP__HELP) String[] onGroup, - - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.STATUS_GATEWAYRECEIVER__MEMBER__HELP) String[] onMember) { - - Result result; - - try { - InternalCache cache = getCache(); - SystemManagementService service = - (SystemManagementService) ManagementService.getExistingManagementService(cache); - - CompositeResultData crd = ResultBuilder.createCompositeResultData(); - TabularResultData availableReceiverData = - crd.addSection(CliStrings.SECTION_GATEWAY_RECEIVER_AVAILABLE) - .addTable(CliStrings.TABLE_GATEWAY_RECEIVER); - - TabularResultData notAvailableReceiverData = - crd.addSection(CliStrings.SECTION_GATEWAY_RECEIVER_NOT_AVAILABLE) - .addTable(CliStrings.TABLE_GATEWAY_RECEIVER); - - Set<DistributedMember> dsMembers = CliUtil.findMembers(onGroup, onMember); - - if (dsMembers.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - for (DistributedMember member : dsMembers) { - ObjectName gatewayReceiverObjectName = MBeanJMXAdapter.getGatewayReceiverMBeanName(member); - if (gatewayReceiverObjectName != null) { - GatewayReceiverMXBean receiverBean = - service.getMBeanProxy(gatewayReceiverObjectName, GatewayReceiverMXBean.class); - if (receiverBean != null) { - buildReceiverStatus(member.getId(), receiverBean, availableReceiverData); - continue; - } - } - buildReceiverStatus(member.getId(), null, notAvailableReceiverData); - } - result = ResultBuilder.buildResult(crd); - } catch (Exception e) { - LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(e)); - result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + e.getMessage()); - } - return result; - } - - @CliCommand(value = CliStrings.DESTROY_GATEWAYSENDER, - help = CliStrings.DESTROY_GATEWAYSENDER__HELP) - @CliMetaData(relatedTopic = CliStrings.TOPIC_GEODE_WAN) - @ResourceOperation(resource = Resource.CLUSTER, operation = Operation.MANAGE, - target = Target.GATEWAY) - public Result destroyGatewaySender( - @CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS}, - optionContext = ConverterHint.MEMBERGROUP, - help = CliStrings.DESTROY_GATEWAYSENDER__GROUP__HELP) String[] onGroups, - @CliOption(key = {CliStrings.MEMBER, CliStrings.MEMBERS}, - optionContext = ConverterHint.MEMBERIDNAME, - help = CliStrings.DESTROY_GATEWAYSENDER__MEMBER__HELP) String[] onMember, - @CliOption(key = CliStrings.DESTROY_GATEWAYSENDER__ID, mandatory = true, - optionContext = ConverterHint.GATEWAY_SENDER_ID, - help = CliStrings.DESTROY_GATEWAYSENDER__ID__HELP) String id) { - Result result; - try { - GatewaySenderDestroyFunctionArgs gatewaySenderDestroyFunctionArgs = - new GatewaySenderDestroyFunctionArgs(id); - - Set<DistributedMember> membersToDestroyGatewaySenderOn = - CliUtil.findMembers(onGroups, onMember); - - if (membersToDestroyGatewaySenderOn.isEmpty()) { - return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE); - } - - ResultCollector<?, ?> resultCollector = - CliUtil.executeFunction(GatewaySenderDestroyFunction.INSTANCE, - gatewaySenderDestroyFunctionArgs, membersToDestroyGatewaySenderOn); - @SuppressWarnings("unchecked") - List<CliFunctionResult> gatewaySenderDestroyResults = - (List<CliFunctionResult>) resultCollector.getResult(); - - TabularResultData tabularResultData = ResultBuilder.createTabularResultData(); - final String errorPrefix = "ERROR: "; - for (CliFunctionResult gatewaySenderDestroyResult : gatewaySenderDestroyResults) { - boolean success = gatewaySenderDestroyResult.isSuccessful(); - tabularResultData.accumulate("Member", gatewaySenderDestroyResult.getMemberIdOrName()); - tabularResultData.accumulate("Status", - (success ? "" : errorPrefix) + gatewaySenderDestroyResult.getMessage()); - } - result = ResultBuilder.buildResult(tabularResultData); - } catch (IllegalArgumentException e) { - LogWrapper.getInstance().info(e.getMessage()); - result = ResultBuilder.createUserErrorResult(e.getMessage()); - } - return result; - } - - private TabularResultData buildReceiverStatus(String memberId, GatewayReceiverMXBean bean, - TabularResultData resultData) { - resultData.accumulate(CliStrings.RESULT_HOST_MEMBER, memberId); - if (bean != null) { - resultData.accumulate(CliStrings.RESULT_PORT, bean.getPort()); - resultData.accumulate(CliStrings.RESULT_STATUS, - bean.isRunning() ? CliStrings.GATEWAY_RUNNING : CliStrings.GATEWAY_NOT_RUNNING); - } else { - resultData.accumulate(CliStrings.GATEWAY_ERROR, - CliStrings.GATEWAY_RECEIVER_IS_NOT_AVAILABLE_OR_STOPPED); - } - return resultData; - } - - private TabularResultData buildSenderStatus(String memberId, GatewaySenderMXBean bean, - TabularResultData resultData) { - resultData.accumulate(CliStrings.RESULT_HOST_MEMBER, memberId); - if (bean != null) { - resultData.accumulate(CliStrings.RESULT_TYPE, - bean.isParallel() ? CliStrings.SENDER_PARALLEL : CliStrings.SENDER_SERIAL); - if (!bean.isParallel()) { - resultData.accumulate(CliStrings.RESULT_POLICY, - bean.isPrimary() ? CliStrings.SENDER_PRIMARY : CliStrings.SENDER_SECONADRY); - } - if (bean.isRunning()) { - if (bean.isPaused()) { - resultData.accumulate(CliStrings.RESULT_STATUS, CliStrings.SENDER_PAUSED); - } else { - resultData.accumulate(CliStrings.RESULT_STATUS, CliStrings.GATEWAY_RUNNING); - } - } else { - resultData.accumulate(CliStrings.RESULT_STATUS, CliStrings.GATEWAY_NOT_RUNNING); - } - } else { - resultData.accumulate(CliStrings.GATEWAY_ERROR, CliStrings.GATEWAY_SENDER_IS_NOT_AVAILABLE); - } - - return resultData; - } - - private void accumulateListGatewayResult(CompositeResultData crd, - Map<String, Map<String, GatewaySenderMXBean>> gatewaySenderBeans, - Map<String, GatewayReceiverMXBean> gatewayReceiverBeans) { - - if (!gatewaySenderBeans.isEmpty()) { - TabularResultData gatewaySenderData = crd.addSection(CliStrings.SECTION_GATEWAY_SENDER) - .addTable(CliStrings.TABLE_GATEWAY_SENDER).setHeader(CliStrings.HEADER_GATEWAY_SENDER); - for (Map.Entry<String, Map<String, GatewaySenderMXBean>> entry : gatewaySenderBeans - .entrySet()) { - for (Map.Entry<String, GatewaySenderMXBean> memberToBean : entry.getValue().entrySet()) { - gatewaySenderData.accumulate(CliStrings.RESULT_GATEWAY_SENDER_ID, entry.getKey()); - gatewaySenderData.accumulate(CliStrings.RESULT_HOST_MEMBER, memberToBean.getKey()); - gatewaySenderData.accumulate(CliStrings.RESULT_REMOTE_CLUSTER, - memberToBean.getValue().getRemoteDSId()); - gatewaySenderData.accumulate(CliStrings.RESULT_TYPE, memberToBean.getValue().isParallel() - ? CliStrings.SENDER_PARALLEL : CliStrings.SENDER_SERIAL); - gatewaySenderData.accumulate(CliStrings.RESULT_STATUS, memberToBean.getValue().isRunning() - ? CliStrings.GATEWAY_RUNNING : CliStrings.GATEWAY_NOT_RUNNING); - gatewaySenderData.accumulate(CliStrings.RESULT_QUEUED_EVENTS, - memberToBean.getValue().getEventQueueSize()); - gatewaySenderData.accumulate(CliStrings.RESULT_RECEIVER, - memberToBean.getValue().getGatewayReceiver()); - } - } - } - - if (!gatewayReceiverBeans.isEmpty()) { - TabularResultData gatewayReceiverData = crd.addSection(CliStrings.SECTION_GATEWAY_RECEIVER) - .addTable(CliStrings.TABLE_GATEWAY_RECEIVER) - .setHeader(CliStrings.HEADER_GATEWAY_RECEIVER); - for (Map.Entry<String, GatewayReceiverMXBean> entry : gatewayReceiverBeans.entrySet()) { - gatewayReceiverData.accumulate(CliStrings.RESULT_HOST_MEMBER, entry.getKey()); - gatewayReceiverData.accumulate(CliStrings.RESULT_PORT, entry.getValue().getPort()); - gatewayReceiverData.accumulate(CliStrings.RESULT_SENDERS_COUNT, - entry.getValue().getClientConnectionCount()); - gatewayReceiverData.accumulate(CliStrings.RESULT_SENDER_CONNECTED, - entry.getValue().getConnectedGatewaySenders()); - } - } - } - - private void accumulateStartResult(TabularResultData resultData, String member, String Status, - String message) { - if (member != null) { - resultData.accumulate("Member", member); - } - resultData.accumulate("Result", Status); - resultData.accumulate("Message", message); - } - - - private Result handleCommandResultException(CommandResultException crex) { - Result result; - if (crex.getResult() != null) { - result = crex.getResult(); - } else { - LogWrapper.getInstance().warning(CliStrings.GATEWAY_ERROR + CliUtil.stackTraceAsString(crex)); - result = ResultBuilder.createGemFireErrorResult(CliStrings.GATEWAY_ERROR + crex.getMessage()); - } - return result; - } -} http://git-wip-us.apache.org/repos/asf/geode/blob/e1befef4/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/WanCommandsController.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/WanCommandsController.java b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/WanCommandsController.java index 6a01c3e..36b4d2e 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/WanCommandsController.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/web/controllers/WanCommandsController.java @@ -15,9 +15,6 @@ package org.apache.geode.management.internal.web.controllers; -import org.apache.geode.internal.lang.StringUtils; -import org.apache.geode.management.internal.cli.i18n.CliStrings; -import org.apache.geode.management.internal.cli.util.CommandStringBuilder; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,11 +22,28 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import org.apache.geode.internal.lang.StringUtils; +import org.apache.geode.management.internal.cli.i18n.CliStrings; +import org.apache.geode.management.internal.cli.util.CommandStringBuilder; + /** * The WanCommandsController class implements the GemFire Management REST API web service endpoints * for the Gfsh WAN Commands. - * - * @see org.apache.geode.management.internal.cli.commands.WanCommands + * + * @see org.apache.geode.management.internal.cli.commands.CreateGatewayReceiverCommand + * @see org.apache.geode.management.internal.cli.commands.CreateGatewaySenderCommand + * @see org.apache.geode.management.internal.cli.commands.DestroyGatewaySenderCommand + * @see org.apache.geode.management.internal.cli.commands.GatewayCommandsUtils + * @see org.apache.geode.management.internal.cli.commands.ListGatewayCommand + * @see org.apache.geode.management.internal.cli.commands.LoadBalanceGatewaySenderCommand + * @see org.apache.geode.management.internal.cli.commands.PauseGatewaySenderCommand + * @see org.apache.geode.management.internal.cli.commands.ResumeGatewaySenderCommand + * @see org.apache.geode.management.internal.cli.commands.StartGatewayReceiverCommand + * @see org.apache.geode.management.internal.cli.commands.StartGatewaySenderCommand + * @see org.apache.geode.management.internal.cli.commands.StatusGatewayReceiverCommand + * @see org.apache.geode.management.internal.cli.commands.StatusGatewaySenderCommand + * @see org.apache.geode.management.internal.cli.commands.StopGatewayReceiverCommand + * @see org.apache.geode.management.internal.cli.commands.StopGatewaySenderCommand * @see org.apache.geode.management.internal.web.controllers.AbstractCommandsController * @see org.springframework.stereotype.Controller * @see org.springframework.web.bind.annotation.RequestMapping
