Configure VLAN Transport Service.

        Args:
            vlan (str): The VLAN ID.
            service_id (str): The transport-service ID.
            callback (function): A function executed upon completion of the
                method.  The only parameter passed to `callback` will be the
                ``ElementTree`` `config`.

        Returns:
            Return value of `callback`.

        Raises:
            KeyError: if `vlan` or `service_id` is not specified.
            ValueError: if `vlan` is invalid.

        Examples:
            >>> # Skip due to current work in devel
            >>> # TODO: Reenable
            >>> def test_transport_service():
            ...     import pynos.device
            ...     switches = ['10.24.39.212', '10.24.39.202']
            ...     auth = ('admin', 'password')
            ...     vlan = '6666'
            ...     service_id = '1'
            ...     for switch in switches:
            ...         conn = (switch, '22')
            ...         with pynos.device.Device(conn=conn, auth=auth) as dev:
            ...             output = dev.interface.add_vlan_int(vlan)
            ...             output = dev.interface.spanning_tree_state(
            ...             int_type='vlan', name=vlan, enabled=False)
            ...             output = dev.interface.transport_service(vlan=vlan,
            ...             service_id=service_id)
            ...             dev.interface.transport_service()
            ...             # doctest: +IGNORE_EXCEPTION_DETAIL
            >>> test_transport_service() # doctest: +SKIP

def transport_service(self, **kwargs):
        """Configure VLAN Transport Service.

        Args:
            vlan (str): The VLAN ID.
            service_id (str): The transport-service ID.
            callback (function): A function executed upon completion of the
                method.  The only parameter passed to `callback` will be the
                ``ElementTree`` `config`.

        Returns:
            Return value of `callback`.

        Raises:
            KeyError: if `vlan` or `service_id` is not specified.
            ValueError: if `vlan` is invalid.

        Examples:
            >>> # Skip due to current work in devel
            >>> # TODO: Reenable
            >>> def test_transport_service():
            ...     import pynos.device
            ...     switches = ['10.24.39.212', '10.24.39.202']
            ...     auth = ('admin', 'password')
            ...     vlan = '6666'
            ...     service_id = '1'
            ...     for switch in switches:
            ...         conn = (switch, '22')
            ...         with pynos.device.Device(conn=conn, auth=auth) as dev:
            ...             output = dev.interface.add_vlan_int(vlan)
            ...             output = dev.interface.spanning_tree_state(
            ...             int_type='vlan', name=vlan, enabled=False)
            ...             output = dev.interface.transport_service(vlan=vlan,
            ...             service_id=service_id)
            ...             dev.interface.transport_service()
            ...             # doctest: +IGNORE_EXCEPTION_DETAIL
            >>> test_transport_service() # doctest: +SKIP
        """
        vlan = kwargs.pop('vlan')
        service_id = kwargs.pop('service_id')
        callback = kwargs.pop('callback', self._callback)

        if not pynos.utilities.valid_vlan_id(vlan, extended=True):
            raise InvalidVlanId("vlan must be between `1` and `8191`")

        service_args = dict(name=vlan, transport_service=service_id)
        transport_service = getattr(self._interface,
                                    'interface_vlan_interface_vlan_'
                                    'transport_service')
        config = transport_service(**service_args)
        return callback(config)