def update_transfer_device_and_wait_for_state(self, id, transfer_device_label, update_transfer_device_details, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}):
    '\n        Calls :py:func:`~oci.dts.TransferDeviceClient.update_transfer_device` and waits for the :py:class:`~oci.dts.models.TransferDevice` acted upon\n        to enter the given state(s).\n\n        :param str id: (required)\n            ID of the Transfer Job\n\n        :param str transfer_device_label: (required)\n            Label of the Transfer Device\n\n        :param oci.dts.models.UpdateTransferDeviceDetails update_transfer_device_details: (required)\n            fields to update\n\n        :param list[str] wait_for_states:\n            An array of states to wait on. These should be valid values for :py:attr:`~oci.dts.models.TransferDevice.lifecycle_state`\n\n        :param dict operation_kwargs:\n            A dictionary of keyword arguments to pass to :py:func:`~oci.dts.TransferDeviceClient.update_transfer_device`\n\n        :param dict waiter_kwargs:\n            A dictionary of keyword arguments to pass to the :py:func:`oci.wait_until` function. For example, you could pass ``max_interval_seconds`` or ``max_interval_seconds``\n            as dictionary keys to modify how long the waiter function will wait between retries and the maximum amount of time it will wait\n        '
    operation_result = self.client.update_transfer_device(id, transfer_device_label, update_transfer_device_details, **operation_kwargs)
    if (not wait_for_states):
        return operation_result
    lowered_wait_for_states = [w.lower() for w in wait_for_states]
    wait_for_resource_id = operation_result.data.id
    try:
        waiter_result = oci.wait_until(self.client, self.client.get_transfer_device(wait_for_resource_id), evaluate_response=(lambda r: (getattr(r.data, 'lifecycle_state') and (getattr(r.data, 'lifecycle_state').lower() in lowered_wait_for_states))), **waiter_kwargs)
        result_to_return = waiter_result
        return result_to_return
    except Exception as e:
        raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e)
Calls :py:func:`~oci.dts.TransferDeviceClient.update_transfer_device` and waits for the :py:class:`~oci.dts.models.TransferDevice` acted upon
to enter the given state(s).

:param str id: (required)
    ID of the Transfer Job

:param str transfer_device_label: (required)
    Label of the Transfer Device

:param oci.dts.models.UpdateTransferDeviceDetails update_transfer_device_details: (required)
    fields to update

:param list[str] wait_for_states:
    An array of states to wait on. These should be valid values for :py:attr:`~oci.dts.models.TransferDevice.lifecycle_state`

:param dict operation_kwargs:
    A dictionary of keyword arguments to pass to :py:func:`~oci.dts.TransferDeviceClient.update_transfer_device`

:param dict waiter_kwargs:
    A dictionary of keyword arguments to pass to the :py:func:`oci.wait_until` function. For example, you could pass ``max_interval_seconds`` or ``max_interval_seconds``
    as dictionary keys to modify how long the waiter function will wait between retries and the maximum amount of time it will wait
def update_transfer_device_and_wait_for_state(self, id, transfer_device_label, update_transfer_device_details, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}):
    '\n        Calls :py:func:`~oci.dts.TransferDeviceClient.update_transfer_device` and waits for the :py:class:`~oci.dts.models.TransferDevice` acted upon\n        to enter the given state(s).\n\n        :param str id: (required)\n            ID of the Transfer Job\n\n        :param str transfer_device_label: (required)\n            Label of the Transfer Device\n\n        :param oci.dts.models.UpdateTransferDeviceDetails update_transfer_device_details: (required)\n            fields to update\n\n        :param list[str] wait_for_states:\n            An array of states to wait on. These should be valid values for :py:attr:`~oci.dts.models.TransferDevice.lifecycle_state`\n\n        :param dict operation_kwargs:\n            A dictionary of keyword arguments to pass to :py:func:`~oci.dts.TransferDeviceClient.update_transfer_device`\n\n        :param dict waiter_kwargs:\n            A dictionary of keyword arguments to pass to the :py:func:`oci.wait_until` function. For example, you could pass ``max_interval_seconds`` or ``max_interval_seconds``\n            as dictionary keys to modify how long the waiter function will wait between retries and the maximum amount of time it will wait\n        '
    operation_result = self.client.update_transfer_device(id, transfer_device_label, update_transfer_device_details, **operation_kwargs)
    if (not wait_for_states):
        return operation_result
    lowered_wait_for_states = [w.lower() for w in wait_for_states]
    wait_for_resource_id = operation_result.data.id
    try:
        waiter_result = oci.wait_until(self.client, self.client.get_transfer_device(wait_for_resource_id), evaluate_response=(lambda r: (getattr(r.data, 'lifecycle_state') and (getattr(r.data, 'lifecycle_state').lower() in lowered_wait_for_states))), **waiter_kwargs)
        result_to_return = waiter_result
        return result_to_return
    except Exception as e:
        raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e)