@classmethod
def all(cls, storage_pool):
    """Get all the volumnes for this storage pool.

        Implements GET /1.0/storage-pools/<name>/volumes

        Volumes returned from this method will only have the name
        set, as that is the only property returned from LXD. If more
        information is needed, `StorageVolume.sync` is the method call
        that should be used.

        Note that the storage volume types are 'container', 'image' and
        'custom', and these maps to the names 'containers', 'images' and
        everything else is mapped to 'custom'.

        :param storage_pool: a storage pool object on which to fetch resources
        :type storage_pool: :class:`pylxd.models.storage_pool.StoragePool`
        :returns: a list storage volume if successful
        :rtype: [:class:`pylxd.models.storage_pool.StorageVolume`]
        :raises: :class:`pylxd.exceptions.LXDAPIExtensionNotAvailable` if the
            'storage' api extension is missing.
        """
    storage_pool.client.assert_has_api_extension('storage')
    response = storage_pool.api.volumes.get()
    volumes = []
    for volume in response.json()['metadata']:
        _type, name = volume.split('/')[-2:]
        if _type == 'containers':
            _type = 'container'
        elif _type == 'images':
            _type = 'image'
        else:
            _type = 'custom'
        volumes.append(cls(storage_pool.client, name=name, type=_type,
            storage_pool=storage_pool))
    return volumes
