'Retrieve the progress of a long running operation on a pool
The return will be a tuple containing: a bool representing whether
or not the operation is complete, a set of actions that are
currently running on the storage pool, and the estimated time
remaining in minutes.
An action type may be passed in such that once no actions of that type
remain active on the pool, the operation will be considered
completed. If no action str is passed in, it is assumed that
multiple actions compose the operation, and none are terminal,
so the operation will not be considered completed until there are no
actions remaining to be completed on any volume on the pool.
:param pool_id: The id of a storage pool
:param action: The anticipated action
:returns: A tuple (bool, set(str), int)'

def _get_pool_operation_progress(self, pool_id, action=None):

    actions = set()
    eta = 0
    for progress in self._client.get_pool_operation_progress(pool_id):
        actions.add(progress.get('currentAction'))
        eta += progress.get('estimatedTimeToCompletion', 0)
    if (action is not None):
        complete = (action not in actions)
    else:
        complete = (not actions)
    return (complete, actions, eta)
