def with_pool_for(machine, read_only=false)
      @pool_storage.transaction(read_only) do
        pool = lookup_pool_for(machine)
        pool ||= generate_pool_for(machine)

        yield pool
      end
    end
def with_pool_for(machine, read_only=false)
      @pool_storage.transaction(read_only) do
        pool = lookup_pool_for(machine)
        pool ||= generate_pool_for(machine)

        yield pool
      end
    end
Create a new `PoolManager` instance with persistent storage.

 @param path [String, Pathname] the location at which to persist the state
   of `AutoNetwork` pools.
 Looks up the pool associated with the provider for a given machine and
 sets up a transaction where the state of the pool can be safely inspected
 or modified. If a pool does not exist for the machine provider, one will
 automatically be created.

 @param machine [Vagrant::Machine]
 @param read_only [Boolean] whether to create a read_only transaction.
 @yieldparam pool [AutoNetwork::Pool]