'Create a new ``_MountScenario``.
The scenario comes with a newly created volume attached to
``self.host`` and with a new ``self.filesystem_type`` filesystem.
:param TestCase case: The running test case, used for temporary path
generation.
:param FilePath mountpoint: The location at which the mount attempt
will eventually be made.
:return: A new ``_MountScenario`` with attributes describing all of the
state which has been set up.'

@classmethod
def generate(cls, case, mountpoint):

    host = u'192.0.7.8'
    filesystem_type = u'ext4'
    dataset_id = uuid4()
    api = loopbackblockdeviceapi_for_test(case)
    volume = api.create_volume(dataset_id=dataset_id, size=LOOPBACK_MINIMUM_ALLOCATABLE_SIZE)
    api.attach_volume(volume.blockdevice_id, host)
    device_path = api.get_device_path(volume.blockdevice_id)
    deployer = BlockDeviceDeployer(node_uuid=uuid4(), hostname=host, block_device_api=api, mountroot=mountpoint.parent())
    return cls(host=host, dataset_id=dataset_id, filesystem_type=filesystem_type, api=api, volume=volume, deployer=deployer, device_path=device_path, mountpoint=mountpoint)
