def update_single_tunnel_exception(
    self,
    exception_id: int,
    appliance_1_ne_pk: str,
    appliance_1_label: str,
    appliance_2_ne_pk: str,
    appliance_2_label: str,
    description: str = "",
) -> bool:
    """Update a tunnel exception between two appliances.

    .. list-table::
        :header-rows: 1

        * - Swagger Section
          - Method
          - Endpoint
        * - exception
          - PUT
          - /exception/tunnel/{id}

    :param exception_id: ID of the existing tunnel exception to update
    :type exception_id: int
    :param appliance_1_ne_pk: Network Primary Key (nePk) of first
        appliance, e.g. ``3.NE``
    :type appliance_1_ne_pk: str
    :param appliance_1_label: Interface label id of first appliance for
        tunnel exception. Can use the value of ``any`` for all interface
        labels, e.g. ``2`` or ``any``
    :type appliance_1_label: str
    :param appliance_1_ne_pk: Network Primary Key (nePk) of second
        appliance, e.g. ``5.NE``
    :type appliance_2_ne_pk: str
    :param appliance_2_label: Interface label id of second appliance for
        tunnel exception. Can use the value of ``any`` for all interface
        labels, e.g. ``2`` or ``any``
    :type appliance_2_label: str
    :param description: Description/comment to include with exception
    :type description: str, optional
    :return: Returns True/False based on successful call
    :rtype: bool
    """
    data = {
        "appliance_id_1": appliance_1_ne_pk,
        "interface_label_1": appliance_1_label,
        "appliance_id_2": appliance_2_ne_pk,
        "interface_label_2": appliance_2_label,
        "description": description,
    }

    return self._put(
        "/exception/tunnel/{}".format(exception_id),
        data=data,
        expected_status=[204],
        return_type="bool",
    )