'Induces quorum loss for a given stateful service partition.
Induces quorum loss for a given stateful service partition.  This API
is useful for a temporary quorum loss situation on your service.
Call the GetQuorumLossProgress API with the same OperationId to return
information on the operation started with this API.
This can only be called on stateful persisted
(HasPersistedState==true) services.  Do not use this API on stateless
services or stateful in-memory only services.
:param service_id: The identity of the service. This is typically the
full name of the service without the \'fabric:\' URI scheme.
:type service_id: str
:param partition_id: The identity of the partition.
:type partition_id: str
:param operation_id: A GUID that identifies a call of this API.  This
is passed into the corresponding GetProgress API
:type operation_id: str
:param quorum_loss_mode: This enum is passed to the StartQuorumLoss
API to indicate what type of quorum loss to induce.
- Invalid - Reserved.  Do not pass into API.
- QuorumReplicas - Partial Quorum loss mode : Minimum number of
replicas for a partition will be down that will cause a quorum loss.
- AllReplicas- Full Quorum loss mode : All replicas for a partition
will be down that will cause a quorum loss.
. Possible values include: \'Invalid\', \'QuorumReplicas\', \'AllReplicas\'
:type quorum_loss_mode: str
:param quorum_loss_duration: The amount of time for which the
partition will be kept in quorum loss.  This must be specified in
seconds.
:type quorum_loss_duration: int
: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 start_quorum_loss(self, service_id, partition_id, operation_id, quorum_loss_mode, quorum_loss_duration, timeout=60, custom_headers=None, raw=False, **operation_config):

    api_version = '3.0'
    url = '/Faults/Services/{serviceId}/$/GetPartitions/{partitionId}/$/StartQuorumLoss'
    path_format_arguments = {'serviceId': self._serialize.url('service_id', service_id, 'str', skip_quote=True), 'partitionId': self._serialize.url('partition_id', partition_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')
    query_parameters['OperationId'] = self._serialize.query('operation_id', operation_id, 'str')
    query_parameters['QuorumLossMode'] = self._serialize.query('quorum_loss_mode', quorum_loss_mode, 'str')
    query_parameters['QuorumLossDuration'] = self._serialize.query('quorum_loss_duration', quorum_loss_duration, 'int')
    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 [202]):
        raise models.FabricErrorException(self._deserialize, response)
    if raw:
        client_raw_response = ClientRawResponse(None, response)
        return client_raw_response
