code: @Override
      public DescribeClusterSubnetGroupsResult describeClusterSubnetGroups(DescribeClusterSubnetGroupsRequest request) {
          request = beforeClientExecution(request);
          return executeDescribeClusterSubnetGroups(request);
      }
docs: <p>
  Returns one or more cluster subnet group objects, which contain metadata about your cluster subnet groups. By
  default, this operation returns information about all cluster subnet groups that are defined in you AWS account.
  </p>
  <p>
  If you specify both tag keys and tag values in the same request, Amazon Redshift returns all subnet groups that
  match any combination of the specified keys and values. For example, if you have <code>owner</code> and
  <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all subnet
  groups that have any combination of those values are returned.
  </p>
  <p>
  If both tag keys and values are omitted from the request, subnet groups are returned regardless of whether they
  have tag keys or values associated with them.
  </p>
  
  @param describeClusterSubnetGroupsRequest
  @return Result of the DescribeClusterSubnetGroups operation returned by the service.
  @throws ClusterSubnetGroupNotFoundException
  The cluster subnet group name does not refer to an existing cluster subnet group.
  @throws InvalidTagException
  The tag is invalid.
  @sample AmazonRedshift.DescribeClusterSubnetGroups
  @see <a href="http://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeClusterSubnetGroups"
  target="_top">AWS API Documentation</a>