'Call ``CreateBlockDeviceDataset.run`` with a ``BlockDeviceDeployer``.
:param UUID dataset_id: The uuid4 identifier for the dataset which will
be created.
:param int maximum_size: The size, in bytes, of the dataset which will
be created.
:param pmap(unicode, unicode) metadata: The metadata for the dataset.
:returns: A ``BlockDeviceVolume`` for the created volume.'

def _create_blockdevice_dataset(self, dataset_id, maximum_size, metadata=pmap({})):

    change = CreateBlockDeviceDataset(dataset_id=dataset_id, maximum_size=maximum_size, metadata=metadata)
    run_state_change(change, self.deployer, InMemoryStatePersister())
    [volume] = self.api.list_volumes()
    return volume
