'Starts Chaos in the cluster.
If Chaos is not already running in the cluster, it starts Chaos with
the passed in Chaos parameters.
If Chaos is already running when this call is made, the call fails
with the error code FABRIC_E_CHAOS_ALREADY_RUNNING.
Please refer to the article [Induce controlled Chaos in Service Fabric
clusters](https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-controlled-chaos)
for more details.
:param chaos_parameters: Describes all the parameters to configure a
Chaos run.
:type chaos_parameters: :class:`ChaosParameters
<azure.servicefabric.models.ChaosParameters>`
: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_chaos(self, chaos_parameters, timeout=60, custom_headers=None, raw=False, **operation_config):

    api_version = '3.0'
    url = '/Tools/Chaos/$/Start'
    query_parameters = {}
    query_parameters['api-version'] = self._serialize.query('api_version', api_version, 'str')
    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)
    body_content = self._serialize.body(chaos_parameters, 'ChaosParameters')
    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]):
        raise models.FabricErrorException(self._deserialize, response)
    if raw:
        client_raw_response = ClientRawResponse(None, response)
        return client_raw_response
