def _begin_operation_action(self, action):
        """Begin an attempted operation.

        Args:
            action (ConnectionAction): the action object describing what we are
                operating on
        """

        conn_key = action.data['id']
        callback = action.data['callback']

        if self._get_connection_state(conn_key) != self.Idle:
            callback(conn_key, self.id, False, 'Cannot start operation, connection is not idle')
            return

        data = self._get_connection(conn_key)
        data['state'] = self.InProgress
        data['microstate'] = action.data['operation_name']
        data['action'] = action
Begin an attempted operation.

        Args:
            action (ConnectionAction): the action object describing what we are
                operating on