'Updates an existing CDN endpoint with the specified endpoint name under
the specified subscription, resource group and profile. Only tags and
Origin HostHeader can be updated after creating an endpoint. To update
origins, use the Update Origin operation. To update custom domains, use
the Update Custom Domain operation.
:param resource_group_name: Name of the Resource group within the
Azure subscription.
:type resource_group_name: str
:param profile_name: Name of the CDN profile which is unique within
the resource group.
:type profile_name: str
:param endpoint_name: Name of the endpoint under the profile which is
unique globally.
:type endpoint_name: str
:param endpoint_update_properties: Endpoint update properties
:type endpoint_update_properties: :class:`EndpointUpdateParameters
<azure.mgmt.cdn.models.EndpointUpdateParameters>`
:param dict custom_headers: headers that will be added to the request
:param bool raw: returns the direct response alongside the
deserialized response
:rtype:
:class:`AzureOperationPoller<msrestazure.azure_operation.AzureOperationPoller>`
instance that returns :class:`Endpoint
<azure.mgmt.cdn.models.Endpoint>`
:rtype: :class:`ClientRawResponse<msrest.pipeline.ClientRawResponse>`
if raw=true
:raises:
:class:`ErrorResponseException<azure.mgmt.cdn.models.ErrorResponseException>`'

def update(self, resource_group_name, profile_name, endpoint_name, endpoint_update_properties, custom_headers=None, raw=False, **operation_config):

    url = '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}'
    path_format_arguments = {'resourceGroupName': self._serialize.url('resource_group_name', resource_group_name, 'str', max_length=90, min_length=1, pattern='^[-\\w\\._\\(\\)]+$'), 'profileName': self._serialize.url('profile_name', profile_name, 'str'), 'endpointName': self._serialize.url('endpoint_name', endpoint_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(endpoint_update_properties, 'EndpointUpdateParameters')
    def long_running_send():
        request = self._client.patch(url, query_parameters)
        return self._client.send(request, header_parameters, body_content, **operation_config)
    def get_long_running_status(status_link, headers=None):
        request = self._client.get(status_link)
        if headers:
            request.headers.update(headers)
        return self._client.send(request, header_parameters, **operation_config)
    def get_long_running_output(response):
        if (response.status_code not in [200, 202]):
            raise models.ErrorResponseException(self._deserialize, response)
        deserialized = None
        if (response.status_code == 200):
            deserialized = self._deserialize('Endpoint', response)
        if (response.status_code == 202):
            deserialized = self._deserialize('Endpoint', response)
        if raw:
            client_raw_response = ClientRawResponse(deserialized, response)
            return client_raw_response
        return deserialized
    if raw:
        response = long_running_send()
        return get_long_running_output(response)
    long_running_operation_timeout = operation_config.get('long_running_operation_timeout', self.config.long_running_operation_timeout)
    return AzureOperationPoller(long_running_send, get_long_running_output, get_long_running_status, long_running_operation_timeout)
