'Get an ``IProfiledBlockDeviceAPI`` provider which can create volumes
configured based on pre-defined profiles. This will use the
_underlying_blockdevice_api attribute, falling back to the
block_device_api attributed and finally an adapter implementation
around the block_device_api if neither of those provide the interface.'

@property
def profiled_blockdevice_api(self):

    if IProfiledBlockDeviceAPI.providedBy(self._underlying_blockdevice_api):
        return self._underlying_blockdevice_api
    if IProfiledBlockDeviceAPI.providedBy(self.block_device_api):
        return self.block_device_api
    return ProfiledBlockDeviceAPIAdapter(_blockdevice_api=self.block_device_api)
