'Updates the password or expiration time of a user account on the
specified compute node.
This operation replaces of all the updateable properties of the
account. For example, if the expiryTime element is not specified, the
current value is replaced with the default value, not left unmodified.
You can update a user account on a node only when it is in the idle or
running state.
:param pool_id: The ID of the pool that contains the compute node.
:type pool_id: str
:param node_id: The ID of the machine on which you want to update a
user account.
:type node_id: str
:param user_name: The name of the user account to update.
:type user_name: str
:param node_update_user_parameter: The parameters for the request.
:type node_update_user_parameter: :class:`NodeUpdateUserParameter
<azure.batch.models.NodeUpdateUserParameter>`
:param compute_node_update_user_options: Additional parameters for the
operation
:type compute_node_update_user_options:
:class:`ComputeNodeUpdateUserOptions
<azure.batch.models.ComputeNodeUpdateUserOptions>`
: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:`BatchErrorException<azure.batch.models.BatchErrorException>`'

def update_user(self, pool_id, node_id, user_name, node_update_user_parameter, compute_node_update_user_options=None, custom_headers=None, raw=False, **operation_config):

    timeout = None
    if (compute_node_update_user_options is not None):
        timeout = compute_node_update_user_options.timeout
    client_request_id = None
    if (compute_node_update_user_options is not None):
        client_request_id = compute_node_update_user_options.client_request_id
    return_client_request_id = None
    if (compute_node_update_user_options is not None):
        return_client_request_id = compute_node_update_user_options.return_client_request_id
    ocp_date = None
    if (compute_node_update_user_options is not None):
        ocp_date = compute_node_update_user_options.ocp_date
    url = '/pools/{poolId}/nodes/{nodeId}/users/{userName}'
    path_format_arguments = {'poolId': self._serialize.url('pool_id', pool_id, 'str'), 'nodeId': self._serialize.url('node_id', node_id, 'str'), 'userName': self._serialize.url('user_name', user_name, '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')
    if (timeout is not None):
        query_parameters['timeout'] = self._serialize.query('timeout', timeout, 'int')
    header_parameters = {}
    header_parameters['Content-Type'] = 'application/json;    odata=minimalmetadata;    charset=utf-8'
    if self.config.generate_client_request_id:
        header_parameters['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')
    if (client_request_id is not None):
        header_parameters['client-request-id'] = self._serialize.header('client_request_id', client_request_id, 'str')
    if (return_client_request_id is not None):
        header_parameters['return-client-request-id'] = self._serialize.header('return_client_request_id', return_client_request_id, 'bool')
    if (ocp_date is not None):
        header_parameters['ocp-date'] = self._serialize.header('ocp_date', ocp_date, 'rfc-1123')
    body_content = self._serialize.body(node_update_user_parameter, 'NodeUpdateUserParameter')
    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]):
        raise models.BatchErrorException(self._deserialize, response)
    if raw:
        client_raw_response = ClientRawResponse(None, response)
        client_raw_response.add_headers({'client-request-id': 'str', 'request-id': 'str', 'ETag': 'str', 'Last-Modified': 'rfc-1123', 'DataServiceId': 'str'})
        return client_raw_response
