'Creates or updates the specified compute policy. During update, the
compute policy with the specified name will be replaced with this new
compute policy. An account supports, at most, 50 policies.
:param resource_group_name: The name of the Azure resource group that
contains the Data Lake Analytics account.
:type resource_group_name: str
:param account_name: The name of the Data Lake Analytics account to
add or replace the compute policy.
:type account_name: str
:param compute_policy_name: The name of the compute policy to create
or update.
:type compute_policy_name: str
:param parameters: Parameters supplied to create or update the compute
policy. The max degree of parallelism per job property, min priority
per job property, or both must be present.
:type parameters: :class:`ComputePolicyCreateOrUpdateParameters
<azure.mgmt.datalake.analytics.account.models.ComputePolicyCreateOrUpdateParameters>`
: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:`ComputePolicy
<azure.mgmt.datalake.analytics.account.models.ComputePolicy>`
:rtype: :class:`ClientRawResponse<msrest.pipeline.ClientRawResponse>`
if raw=true
:raises: :class:`CloudError<msrestazure.azure_exceptions.CloudError>`'

def create_or_update(self, resource_group_name, account_name, compute_policy_name, parameters, custom_headers=None, raw=False, **operation_config):

    url = '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataLakeAnalytics/accounts/{accountName}/computePolicies/{computePolicyName}'
    path_format_arguments = {'resourceGroupName': self._serialize.url('resource_group_name', resource_group_name, 'str'), 'accountName': self._serialize.url('account_name', account_name, 'str'), 'computePolicyName': self._serialize.url('compute_policy_name', compute_policy_name, 'str'), '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')
    body_content = self._serialize.body(parameters, 'ComputePolicyCreateOrUpdateParameters')
    request = self._client.put(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('ComputePolicy', response)
    if raw:
        client_raw_response = ClientRawResponse(deserialized, response)
        return client_raw_response
    return deserialized
