ClusterManagementService (Apache Geode 1.13.0)
Date: 2020-09-07

org.apache.geode.management.api

## Interface ClusterManagementService

- All Superinterfaces:
    AutoCloseable

      @Experimental
      public interface ClusterManagementService
      extends AutoCloseable

  Implementations of this interface are responsible for applying and persisting cache configuration changes.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` release any resources controlled by this service
    `<T extends AbstractConfiguration<?>> ClusterManagementRealizationResult` | `create(T config)` This method will create the element on all the applicable members in the cluster and persist the configuration in the cluster configuration if persistence is enabled.
    `<T extends AbstractConfiguration<?>> ClusterManagementRealizationResult` | `delete(T config)` This method will delete the element on all the applicable members in the cluster and update the configuration in the cluster configuration if persistence is enabled.
    `<A extends ClusterManagementOperation<V>,V extends OperationResult> ClusterManagementOperationResult<A,V>` | `get(A opType, String opId)` Returns the status of the identified operation.
    `<T extends AbstractConfiguration<R>,R extends RuntimeInfo> ClusterManagementGetResult<T,R>` | `get(T config)` This method will get a single instance of the element type in the cluster configuration, along with additional runtime information from cluster members
    `<A extends ClusterManagementOperation<V>,V extends OperationResult> CompletableFuture<ClusterManagementOperationResult<A,V>>` | `getFuture(A opType, String opId)` Returns a `CompletableFuture` that provides a synchronous way to get the result of a completed operation.
    `boolean` | `isConnected()` Test to see if this instance of ClusterManagementService retrieved from the client side is properly connected to the locator or not
    `<A extends ClusterManagementOperation<V>,V extends OperationResult> ClusterManagementListOperationsResult<A,V>` | `list(A opType)` This method will list the status of all asynchronous cluster management operations in progress or recently completed.
    `<T extends AbstractConfiguration<R>,R extends RuntimeInfo> ClusterManagementListResult<T,R>` | `list(T filter)` This method will list instances of the element type in the cluster configuration, along with additional runtime information from cluster members
    `<A extends ClusterManagementOperation<V>,V extends OperationResult> ClusterManagementOperationResult<A,V>` | `start(A op)` This method will launch a cluster management operation asynchronously.
    `<T extends AbstractConfiguration<?>> ClusterManagementRealizationResult` | `update(T config)` This method will update the element on all the applicable members in the cluster and persist the updated configuration in the cluster configuration if persistence is enabled.

- - ### Method Detail

    - #### create

          <T extends AbstractConfiguration<?>> ClusterManagementRealizationResult create(T config)

      This method will create the element on all the applicable members in the cluster and persist the configuration in the cluster configuration if persistence is enabled.
      Parameters:
        `config` - this holds the configuration attributes of the element to be created on the cluster, as well as the group this config belongs to
      Returns:
        a `ClusterManagementRealizationResult` indicating the success of the creation
      Throws:
        `ClusterManagementRealizationException` - if unsuccessful

    - #### delete

          <T extends AbstractConfiguration<?>> ClusterManagementRealizationResult delete(T config)

      This method will delete the element on all the applicable members in the cluster and update the configuration in the cluster configuration if persistence is enabled.
      Parameters:
        `config` - this holds the name or id of the element to be deleted on the cluster
      Returns:
        a `ClusterManagementRealizationResult` indicating the success of the deletion
      Throws:
        `ClusterManagementRealizationException` - if unsuccessful

    - #### update

          <T extends AbstractConfiguration<?>> ClusterManagementRealizationResult update(T config)

      This method will update the element on all the applicable members in the cluster and persist the updated configuration in the cluster configuration if persistence is enabled.
      Parameters:
        `config` - this holds the configuration attributes of the element to be updated on the cluster, as well as the group this config belongs to
      Returns:
        a `ClusterManagementRealizationResult` indicating the success of the update
      Throws:
        `ClusterManagementRealizationException` - if unsuccessful

    - #### list

          <T extends AbstractConfiguration<R>,R extends RuntimeInfo> ClusterManagementListResult<T,R> list(T filter)

      This method will list instances of the element type in the cluster configuration, along with additional runtime information from cluster members
      Parameters:
        `filter` - the filterable attributes are used to identify the elements to list. Any non-filterable attributes will be ignored.
      Returns:
        a `ClusterManagementListResult` holding a list of matching instances in `ClusterManagementListResult.getResult()`
      Throws:
        `ClusterManagementException` - if unsuccessful

    - #### get

          <T extends AbstractConfiguration<R>,R extends RuntimeInfo> ClusterManagementGetResult<T,R> get(T config)

      This method will get a single instance of the element type in the cluster configuration, along with additional runtime information from cluster members
      Parameters:
        `config` - this holds the name or id of the element to be retrieved
      Returns:
        a `ClusterManagementGetResult`
      Throws:
        `ClusterManagementException` - if unsuccessful or, no matching element is found, or multiple matches are found

    - #### start

          <A extends ClusterManagementOperation<V>,V extends OperationResult> ClusterManagementOperationResult<A,V> start(A op)

      This method will launch a cluster management operation asynchronously.
      Type Parameters:
        `A` - the operation type (a subclass of `ClusterManagementOperation`
        `V` - the return type of the operation
      Parameters:
        `op` - the operation plus any parameters.
      Returns:
        a `ClusterManagementOperationResult` holding a `CompletableFuture` (if the operation was launched successfully) or an error code otherwise.
      Throws:
        `ClusterManagementException` - if unsuccessful

    - #### get

          <A extends ClusterManagementOperation<V>,V extends OperationResult> ClusterManagementOperationResult<A,V> get(A opType,
                                                                                                                        String opId)

      Returns the status of the identified operation.
      Type Parameters:
        `A` - the operation type (a subclass of `ClusterManagementOperation`
        `V` - the return type of the operation
      Parameters:
        `opType` - the type of the operation to get
        `opId` - the operationId of a previously started operation
      Returns:
        the status of the identified operation

    - #### getFuture

          <A extends ClusterManagementOperation<V>,V extends OperationResult> CompletableFuture<ClusterManagementOperationResult<A,V>> getFuture(A opType,
                                                                                                                                                 String opId)

      Returns a `CompletableFuture` that provides a synchronous way to get the result of a completed operation.
      Type Parameters:
        `A` - the operation type (a subclass of `ClusterManagementOperation`
        `V` - the return type of the operation
      Parameters:
        `opType` - the type of the operation to get
        `opId` - the operationId of a previously started operation
      Returns:
        the status of the identified operation

    - #### list

          <A extends ClusterManagementOperation<V>,V extends OperationResult> ClusterManagementListOperationsResult<A,V> list(A opType)

      This method will list the status of all asynchronous cluster management operations in progress or recently completed.
      Type Parameters:
        `A` - the operation type (a subclass of `ClusterManagementOperation`
        `V` - the return type of the operation
      Parameters:
        `opType` - the operation type to list
      Returns:
        a list of `ClusterManagementOperationResult`
      Throws:
        `ClusterManagementException` - if unsuccessful

    - #### isConnected

          boolean isConnected()

      Test to see if this instance of ClusterManagementService retrieved from the client side is properly connected to the locator or not
      Returns:
        true if connected

    - #### close

          void close()

      release any resources controlled by this service
      Specified by:
        `close` in interface `AutoCloseable`