All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.geode.management.internal.web.controllers.WanCommandsController Maven / Gradle / Ivy

Go to download

Apache Geode provides a database-like consistency model, reliable transaction processing and a shared-nothing architecture to maintain very low latency performance with high concurrency processing

There is a newer version: 1.15.1
Show newest version
/*
 * 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.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;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 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.web.controllers.AbstractCommandsController
 * @see org.springframework.stereotype.Controller
 * @see org.springframework.web.bind.annotation.RequestMapping
 * @see org.springframework.web.bind.annotation.RequestMethod
 * @see org.springframework.web.bind.annotation.RequestParam
 * @see org.springframework.web.bind.annotation.ResponseBody
 * @since GemFire 8.0
 */
@Controller("wanController")
@RequestMapping(AbstractCommandsController.REST_API_VERSION)
@SuppressWarnings("unused")
public class WanCommandsController extends AbstractCommandsController {

  @RequestMapping(method = RequestMethod.GET, value = "/gateways")
  @ResponseBody
  public String listGateways(
      @RequestParam(value = CliStrings.LIST_GATEWAY__GROUP, required = false) final String[] groups,
      @RequestParam(value = CliStrings.LIST_GATEWAY__MEMBER,
          required = false) final String[] members) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.LIST_GATEWAY);

    if (hasValue(groups)) {
      command.addOption(CliStrings.LIST_GATEWAY__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.LIST_GATEWAY__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }

    return processCommand(command.toString());
  }

  @RequestMapping(method = RequestMethod.POST, value = "/gateways/receivers")
  @ResponseBody
  public String createGatewayReceiver(
      @RequestParam(value = CliStrings.CREATE_GATEWAYRECEIVER__GROUP,
          required = false) final String[] groups,
      @RequestParam(value = CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART,
          required = false) final Boolean manualStart,
      @RequestParam(value = CliStrings.CREATE_GATEWAYRECEIVER__MEMBER,
          required = false) final String[] members,
      @RequestParam(value = CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT,
          required = false) final Integer startPort,
      @RequestParam(value = CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT,
          required = false) final Integer endPort,
      @RequestParam(value = CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS,
          required = false) final String bindAddress,
      @RequestParam(value = CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS,
          required = false) final Integer maximumTimeBetweenPings,
      @RequestParam(value = CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE,
          required = false) final Integer socketBufferSize,
      @RequestParam(value = CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER,
          required = false) final String[] gatewayTransportFilters) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.CREATE_GATEWAYRECEIVER);

    if (hasValue(groups)) {
      command.addOption(CliStrings.CREATE_GATEWAYRECEIVER__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(manualStart)) {
      command.addOption(CliStrings.CREATE_GATEWAYRECEIVER__MANUALSTART,
          String.valueOf(manualStart));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.CREATE_GATEWAYRECEIVER__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(startPort)) {
      command.addOption(CliStrings.CREATE_GATEWAYRECEIVER__STARTPORT, String.valueOf(startPort));
    }

    if (hasValue(endPort)) {
      command.addOption(CliStrings.CREATE_GATEWAYRECEIVER__ENDPORT, String.valueOf(endPort));
    }

    if (hasValue(bindAddress)) {
      command.addOption(CliStrings.CREATE_GATEWAYRECEIVER__BINDADDRESS, bindAddress);
    }

    if (hasValue(maximumTimeBetweenPings)) {
      command.addOption(CliStrings.CREATE_GATEWAYRECEIVER__MAXTIMEBETWEENPINGS,
          String.valueOf(maximumTimeBetweenPings));
    }

    if (hasValue(socketBufferSize)) {
      command.addOption(CliStrings.CREATE_GATEWAYRECEIVER__SOCKETBUFFERSIZE,
          String.valueOf(socketBufferSize));
    }

    if (hasValue(gatewayTransportFilters)) {
      command.addOption(CliStrings.CREATE_GATEWAYRECEIVER__GATEWAYTRANSPORTFILTER,
          StringUtils.concat(gatewayTransportFilters, StringUtils.COMMA_DELIMITER));
    }

    return processCommand(command.toString());
  }

  @RequestMapping(method = RequestMethod.POST, value = "/gateways/senders")
  @ResponseBody
  public String createGatewaySender(
      @RequestParam(CliStrings.CREATE_GATEWAYSENDER__ID) final String gatewaySenderId,
      @RequestParam(CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID) final Integer remoteDistributedSystemId,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__GROUP,
          required = false) final String[] groups,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__MEMBER,
          required = false) final String[] members,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__PARALLEL,
          required = false) final Boolean parallel,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__MANUALSTART,
          required = false) final Boolean manualStart,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE,
          required = false) final Integer socketBufferSize,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT,
          required = false) final Integer socketReadTimeout,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION,
          required = false) final Boolean enableBatchConflation,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE,
          required = false) final Integer batchSize,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL,
          required = false) final Integer batchTimeInterval,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE,
          required = false) final Boolean enablePersistence,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__DISKSTORENAME,
          required = false) final String diskStoreName,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS,
          required = false) final Boolean diskSynchronous,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY,
          required = false) final Integer maxQueueMemory,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD,
          required = false) final Integer alertThreshold,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS,
          required = false) final Integer dispatcherThreads,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY,
          required = false) final String orderPolicy,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER,
          required = false) final String[] gatewayEventFilters,
      @RequestParam(value = CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER,
          required = false) final String[] gatewayTransportFilters) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.CREATE_GATEWAYSENDER);

    command.addOption(CliStrings.CREATE_GATEWAYSENDER__ID, gatewaySenderId);
    command.addOption(CliStrings.CREATE_GATEWAYSENDER__REMOTEDISTRIBUTEDSYSTEMID,
        String.valueOf(remoteDistributedSystemId));

    if (hasValue(groups)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(parallel)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__PARALLEL, String.valueOf(parallel));
    }

    if (hasValue(manualStart)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__MANUALSTART, String.valueOf(manualStart));
    }

    if (hasValue(socketBufferSize)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__SOCKETBUFFERSIZE,
          String.valueOf(socketBufferSize));
    }

    if (hasValue(socketReadTimeout)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__SOCKETREADTIMEOUT,
          String.valueOf(socketReadTimeout));
    }

    if (hasValue(enableBatchConflation)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__ENABLEBATCHCONFLATION,
          String.valueOf(enableBatchConflation));
    }

    if (hasValue(batchSize)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__BATCHSIZE, String.valueOf(batchSize));
    }

    if (hasValue(batchTimeInterval)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__BATCHTIMEINTERVAL,
          String.valueOf(batchTimeInterval));
    }

    if (hasValue(enablePersistence)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__ENABLEPERSISTENCE,
          String.valueOf(enablePersistence));
    }

    if (hasValue(diskStoreName)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__DISKSTORENAME, diskStoreName);
    }

    if (hasValue(diskSynchronous)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__DISKSYNCHRONOUS,
          String.valueOf(diskSynchronous));
    }

    if (hasValue(maxQueueMemory)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__MAXQUEUEMEMORY,
          String.valueOf(maxQueueMemory));
    }

    if (hasValue(alertThreshold)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__ALERTTHRESHOLD,
          String.valueOf(alertThreshold));
    }

    if (hasValue(dispatcherThreads)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__DISPATCHERTHREADS,
          String.valueOf(dispatcherThreads));
    }

    if (hasValue(orderPolicy)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__ORDERPOLICY, orderPolicy);
    }

    if (hasValue(gatewayEventFilters)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__GATEWAYEVENTFILTER,
          StringUtils.concat(gatewayEventFilters, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(gatewayTransportFilters)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__GATEWAYTRANSPORTFILTER,
          StringUtils.concat(gatewayTransportFilters, StringUtils.COMMA_DELIMITER));
    }

    return processCommand(command.toString());
  }


  @RequestMapping(method = RequestMethod.DELETE, value = "/gateways/senders/{id}")
  @ResponseBody
  public String destroyGatewaySender(@PathVariable("id") final String gatewaySenderId,
      @RequestParam(value = CliStrings.DESTROY_GATEWAYSENDER__GROUP,
          required = false) final String[] groups,
      @RequestParam(value = CliStrings.DESTROY_GATEWAYSENDER__MEMBER,
          required = false) final String[] members) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.DESTROY_GATEWAYSENDER);
    command.addOption(CliStrings.CREATE_GATEWAYSENDER__ID, gatewaySenderId);

    if (hasValue(groups)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.CREATE_GATEWAYSENDER__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }
    return processCommand(command.toString());
  }


  @RequestMapping(method = RequestMethod.POST, value = "/gateways/senders/{id}",
      params = "op=load-balance")
  @ResponseBody
  public String loadBalanceGatewaySender(@PathVariable("id") final String gatewaySenderId) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.LOAD_BALANCE_GATEWAYSENDER);

    command.addOption(CliStrings.LOAD_BALANCE_GATEWAYSENDER__ID, decode(gatewaySenderId));

    return processCommand(command.toString());
  }

  // TODO determine whether Async functionality is required
  @RequestMapping(method = RequestMethod.POST, value = "/gateways/senders/{id}",
      params = "op=pause")
  @ResponseBody
  public String pauseGatewaySender(@PathVariable("id") final String gatewaySenderId,
      @RequestParam(value = CliStrings.PAUSE_GATEWAYSENDER__GROUP,
          required = false) final String[] groups,
      @RequestParam(value = CliStrings.PAUSE_GATEWAYSENDER__MEMBER,
          required = false) final String[] members) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.PAUSE_GATEWAYSENDER);

    command.addOption(CliStrings.PAUSE_GATEWAYSENDER__ID, decode(gatewaySenderId));

    if (hasValue(groups)) {
      command.addOption(CliStrings.PAUSE_GATEWAYSENDER__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.PAUSE_GATEWAYSENDER__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }

    return processCommand(command.toString());
  }

  // TODO determine whether Async functionality is required
  @RequestMapping(method = RequestMethod.POST, value = "/gateways/senders/{id}",
      params = "op=resume")
  @ResponseBody
  public String resumeGatewaySender(@PathVariable("id") final String gatewaySenderId,
      @RequestParam(value = CliStrings.RESUME_GATEWAYSENDER__GROUP,
          required = false) final String[] groups,
      @RequestParam(value = CliStrings.RESUME_GATEWAYSENDER__MEMBER,
          required = false) final String[] members) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.RESUME_GATEWAYSENDER);

    command.addOption(CliStrings.RESUME_GATEWAYSENDER__ID, decode(gatewaySenderId));

    if (hasValue(groups)) {
      command.addOption(CliStrings.RESUME_GATEWAYSENDER__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.RESUME_GATEWAYSENDER__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }

    return processCommand(command.toString());
  }

  // TODO determine whether Async functionality is required
  @RequestMapping(method = RequestMethod.POST, value = "/gateways/receivers", params = "op=start")
  @ResponseBody
  public String startGatewayReceiver(
      @RequestParam(value = CliStrings.START_GATEWAYRECEIVER__GROUP,
          required = false) final String[] groups,
      @RequestParam(value = CliStrings.START_GATEWAYRECEIVER__MEMBER,
          required = false) final String[] members) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.START_GATEWAYRECEIVER);

    if (hasValue(groups)) {
      command.addOption(CliStrings.START_GATEWAYRECEIVER__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.START_GATEWAYRECEIVER__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }

    return processCommand(command.toString());
  }

  // TODO determine whether Async functionality is required
  @RequestMapping(method = RequestMethod.POST, value = "/gateways/senders", params = "op=start")
  @ResponseBody
  public String startGatewaySender(
      @RequestParam(CliStrings.START_GATEWAYSENDER__ID) final String gatewaySenderId,
      @RequestParam(value = CliStrings.START_GATEWAYSENDER__GROUP,
          required = false) final String[] groups,
      @RequestParam(value = CliStrings.START_GATEWAYSENDER__MEMBER,
          required = false) final String[] members) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.START_GATEWAYSENDER);

    command.addOption(CliStrings.START_GATEWAYSENDER__ID, gatewaySenderId);

    if (hasValue(groups)) {
      command.addOption(CliStrings.START_GATEWAYSENDER__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.START_GATEWAYSENDER__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }

    return processCommand(command.toString());
  }

  @RequestMapping(method = RequestMethod.GET, value = "/gateways/receivers")
  @ResponseBody
  public String statusGatewayReceivers(
      @RequestParam(value = CliStrings.STATUS_GATEWAYRECEIVER__GROUP,
          required = false) final String[] groups,
      @RequestParam(value = CliStrings.STATUS_GATEWAYRECEIVER__MEMBER,
          required = false) final String[] members) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.STATUS_GATEWAYRECEIVER);

    if (hasValue(groups)) {
      command.addOption(CliStrings.STATUS_GATEWAYRECEIVER__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.STATUS_GATEWAYRECEIVER__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }

    return processCommand(command.toString());
  }

  @RequestMapping(method = RequestMethod.GET, value = "/gateways/senders/{id}")
  @ResponseBody
  public String statusGatewaySenders(@PathVariable("id") final String gatewaySenderId,
      @RequestParam(value = CliStrings.STATUS_GATEWAYSENDER__GROUP,
          required = false) final String[] groups,
      @RequestParam(value = CliStrings.STATUS_GATEWAYSENDER__MEMBER,
          required = false) final String[] members) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.STATUS_GATEWAYSENDER);

    command.addOption(CliStrings.STATUS_GATEWAYSENDER__ID, decode(gatewaySenderId));

    if (hasValue(groups)) {
      command.addOption(CliStrings.STATUS_GATEWAYSENDER__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.STATUS_GATEWAYSENDER__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }

    return processCommand(command.toString());
  }

  @RequestMapping(method = RequestMethod.POST, value = "/gateways/receivers", params = "op=stop")
  @ResponseBody
  public String stopGatewayReceiver(
      @RequestParam(value = CliStrings.STOP_GATEWAYRECEIVER__GROUP,
          required = false) final String[] groups,
      @RequestParam(value = CliStrings.STOP_GATEWAYRECEIVER__MEMBER,
          required = false) final String[] members) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.STOP_GATEWAYRECEIVER);

    if (hasValue(groups)) {
      command.addOption(CliStrings.STOP_GATEWAYRECEIVER__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.STOP_GATEWAYRECEIVER__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }

    return processCommand(command.toString());
  }

  @RequestMapping(method = RequestMethod.POST, value = "/gateways/senders/{id}", params = "op=stop")
  @ResponseBody
  public String stopGatewaySender(@PathVariable("id") final String gatewaySenderId,
      @RequestParam(value = CliStrings.STOP_GATEWAYRECEIVER__GROUP,
          required = false) final String[] groups,
      @RequestParam(value = CliStrings.STOP_GATEWAYRECEIVER__MEMBER,
          required = false) final String[] members) {
    CommandStringBuilder command = new CommandStringBuilder(CliStrings.STOP_GATEWAYSENDER);

    command.addOption(CliStrings.STOP_GATEWAYSENDER__ID, decode(gatewaySenderId));

    if (hasValue(groups)) {
      command.addOption(CliStrings.STOP_GATEWAYSENDER__GROUP,
          StringUtils.concat(groups, StringUtils.COMMA_DELIMITER));
    }

    if (hasValue(members)) {
      command.addOption(CliStrings.STOP_GATEWAYSENDER__MEMBER,
          StringUtils.concat(members, StringUtils.COMMA_DELIMITER));
    }

    return processCommand(command.toString());
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy