'Get the Service Fabric cluster manifest.
Get the Service Fabric cluster manifest. The cluster manifest contains
properties of the cluster that include different node types on the
cluster,
security configurations, fault and upgrade domain topologies etc.
These properties are specified as part of the ClusterConfig.JSON file
while deploying a stand alone cluster. However, most of the
information in the cluster manifest
is generated internally by service fabric during cluster deployment in
other deployment scenarios (for e.g when using azuer portal).
The contents of the cluster manifest are for informational purposes
only and users are not expected to take a dependency on the format of
the file contents or its interpretation.
: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: :class:`ClusterManifest
<azure.servicefabric.models.ClusterManifest>`
:rtype: :class:`ClientRawResponse<msrest.pipeline.ClientRawResponse>`
if raw=true
:raises:
:class:`FabricErrorException<azure.servicefabric.models.FabricErrorException>`'

def get_cluster_manifest(self, timeout=60, custom_headers=None, raw=False, **operation_config):

    api_version = '3.0'
    url = '/$/GetClusterManifest'
    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)
    request = self._client.get(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)
    deserialized = None
    if (response.status_code == 200):
        deserialized = self._deserialize('ClusterManifest', response)
    if raw:
        client_raw_response = ClientRawResponse(deserialized, response)
        return client_raw_response
    return deserialized
