'Deletes an existing Service Fabric application.
Deletes an existing Service Fabric application. An application must be
created before it can be deleted. Deleting an application will delete
all services that are part of that application. By default Service
Fabric will try to close service replicas in a graceful manner and
then delete the service. However if service is having issues closing
the replica gracefully, the delete operation may take a long time or
get stuck. Use the optional ForceRemove flag to skip the graceful
close sequence and forcefully delete the application and all of the
its services.
:param application_id: The identity of the application. This is
typically the full name of the application without the \'fabric:\' URI
scheme.
:type application_id: str
:param force_remove: Remove a Service Fabric application or service
forcefully without going through the graceful shutdown sequence.
This parameter can be used to forcefully delete an application or
service for which delete is timing out due to issues in the service
code that prevents graceful close of replicas.
:type force_remove: bool
:param timeout: The server timeout for performing the operation in
seconds. This specifies the time duration that the client is willing
to wait for the requested operation to complete. The default value
for this parameter is 60 seconds.
:type timeout: long
: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: None
:rtype: :class:`ClientRawResponse<msrest.pipeline.ClientRawResponse>`
if raw=true
:raises:
:class:`FabricErrorException<azure.servicefabric.models.FabricErrorException>`'

def delete_application(self, application_id, force_remove=None, timeout=60, custom_headers=None, raw=False, **operation_config):

    api_version = '3.0'
    url = '/Applications/{applicationId}/$/Delete'
    path_format_arguments = {'applicationId': self._serialize.url('application_id', application_id, 'str', skip_quote=True)}
    url = self._client.format_url(url, **path_format_arguments)
    query_parameters = {}
    query_parameters['api-version'] = self._serialize.query('api_version', api_version, 'str')
    if (force_remove is not None):
        query_parameters['ForceRemove'] = self._serialize.query('force_remove', force_remove, 'bool')
    if (timeout is not None):
        query_parameters['timeout'] = self._serialize.query('timeout', timeout, 'long', maximum=4294967295, minimum=1)
    header_parameters = {}
    header_parameters['Content-Type'] = 'application/json;    charset=utf-8'
    if custom_headers:
        header_parameters.update(custom_headers)
    request = self._client.post(url, query_parameters)
    response = self._client.send(request, header_parameters, **operation_config)
    if (response.status_code not in [200]):
        raise models.FabricErrorException(self._deserialize, response)
    if raw:
        client_raw_response = ClientRawResponse(None, response)
        return client_raw_response
