def _open_interface(self, client, uuid, iface, key):
        """Open an interface on a connected device.

        Args:
            client (string): The client id who is requesting this operation
            uuid (int): The id of the device we're opening the interface on
            iface (string): The name of the interface that we're opening
            key (string): The key to authenticate the caller
        """

        conn_id = self._validate_connection('open_interface', uuid, key)
        if conn_id is None:
            return

        conn_data = self._connections[uuid]
        conn_data['last_touch'] = monotonic()

        slug = self._build_device_slug(uuid)

        try:
            resp = yield self._manager.open_interface(conn_id, iface)
        except Exception as exc:
            self._logger.exception("Error in manager open interface")
            resp = {'success': False, 'reason': "Internal error: %s" % str(exc)}

        message = {'type': 'response', 'operation': 'open_interface', 'client': client}
        message['success'] = resp['success']

        if not message['success']:
            message['failure_reason'] = resp['reason']

        self._publish_response(slug, message)
Open an interface on a connected device.

        Args:
            client (string): The client id who is requesting this operation
            uuid (int): The id of the device we're opening the interface on
            iface (string): The name of the interface that we're opening
            key (string): The key to authenticate the caller