'Checks whether or not the given Search service name is available for
use. Search service names must be globally unique since they are part
of the service URI (https://<name>.search.windows.net).
:param name: The Search service name to validate. Search service names
must only contain lowercase letters, digits or dashes, cannot use dash
as the first two or last one characters, cannot contain consecutive
dashes, and must be between 2 and 60 characters in length.
:type name: str
:param search_management_request_options: Additional parameters for
the operation
:type search_management_request_options:
:class:`SearchManagementRequestOptions
<azure.mgmt.search.models.SearchManagementRequestOptions>`
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
:param operation_config: :ref:`Operation configuration
overrides<msrest:optionsforoperations>`.
:rtype: :class:`CheckNameAvailabilityOutput
<azure.mgmt.search.models.CheckNameAvailabilityOutput>`
:rtype: :class:`ClientRawResponse<msrest.pipeline.ClientRawResponse>`
if raw=true
:raises: :class:`CloudError<msrestazure.azure_exceptions.CloudError>`'

def check_name_availability(self, name, search_management_request_options=None, custom_headers=None, raw=False, **operation_config):

    client_request_id = None
    if (search_management_request_options is not None):
        client_request_id = search_management_request_options.client_request_id
    check_name_availability_input = models.CheckNameAvailabilityInput(name=name)
    url = '/subscriptions/{subscriptionId}/providers/Microsoft.Search/checkNameAvailability'
    path_format_arguments = {'subscriptionId': self._serialize.url('self.config.subscription_id', self.config.subscription_id, 'str')}
    url = self._client.format_url(url, **path_format_arguments)
    query_parameters = {}
    query_parameters['api-version'] = self._serialize.query('self.api_version', self.api_version, 'str')
    header_parameters = {}
    header_parameters['Content-Type'] = 'application/json;    charset=utf-8'
    if self.config.generate_client_request_id:
        header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
    if custom_headers:
        header_parameters.update(custom_headers)
    if (self.config.accept_language is not None):
        header_parameters['accept-language'] = self._serialize.header('self.config.accept_language', self.config.accept_language, 'str')
    if (client_request_id is not None):
        header_parameters['x-ms-client-request-id'] = self._serialize.header('client_request_id', client_request_id, 'str')
    body_content = self._serialize.body(check_name_availability_input, 'CheckNameAvailabilityInput')
    request = self._client.post(url, query_parameters)
    response = self._client.send(request, header_parameters, body_content, **operation_config)
    if (response.status_code not in [200]):
        exp = CloudError(response)
        exp.request_id = response.headers.get('x-ms-request-id')
        raise exp
    deserialized = None
    if (response.status_code == 200):
        deserialized = self._deserialize('CheckNameAvailabilityOutput', response)
    if raw:
        client_raw_response = ClientRawResponse(deserialized, response)
        return client_raw_response
    return deserialized
