Source code for linode_api4.groups.volume

from linode_api4.errors import UnexpectedResponseError
from linode_api4.groups import Group
from linode_api4.objects import Volume, VolumeType
from linode_api4.objects.base import _flatten_request_body_recursive


[docs] class VolumeGroup(Group):
[docs] def __call__(self, *filters): """ Retrieves the Block Storage Volumes your user has access to. This is intended to be called off of the :any:`LinodeClient` class, like this:: volumes = client.volumes() API Documentation: https://techdocs.akamai.com/linode-api/reference/get-volumes :param filters: Any number of filters to apply to this query. See :doc:`Filtering Collections</linode_api4/objects/filtering>` for more details on filtering. :returns: A list of Volumes the acting user can access. :rtype: PaginatedList of Volume """ return self.client._get_and_filter(Volume, *filters)
[docs] def create(self, label, region=None, linode=None, size=20, **kwargs): """ Creates a new Block Storage Volume, either in the given Region or attached to the given Instance. API Documentation: https://techdocs.akamai.com/linode-api/reference/get-volumes :param label: The label for the new Volume. :type label: str :param region: The Region to create this Volume in. Not required if `linode` is provided. :type region: Region or str :param linode: The Instance to attach this Volume to. If not given, the new Volume will not be attached to anything. :type linode: Instance or int :param size: The size, in GB, of the new Volume. Defaults to 20. :type size: int :param tags: A list of tags to apply to the new volume. If any of the tags included do not exist, they will be created as part of this operation. :type tags: list[str] :param encryption: Whether the new Volume should opt in or out of disk encryption. :type encryption: str Note: Block Storage Disk Encryption is not currently available to all users. :returns: The new Volume. :rtype: Volume """ if not (region or linode): raise ValueError("region or linode required!") params = { "label": label, "size": size, "region": region, "linode_id": linode, } params.update(kwargs) result = self.client.post( "/volumes", data=_flatten_request_body_recursive(params), ) if not "id" in result: raise UnexpectedResponseError( "Unexpected response when creating volume!", json=result ) v = Volume(self.client, result["id"], result) return v
[docs] def types(self, *filters): """ Returns a :any:`PaginatedList` of :any:`VolumeType` objects that represents a valid Volume type. API Documentation: https://techdocs.akamai.com/linode-api/reference/get-volume-types :param filters: Any number of filters to apply to this query. See :doc:`Filtering Collections</linode_api4/objects/filtering>` for more details on filtering. :returns: A Paginated List of Volume types that match the query. :rtype: PaginatedList of VolumeType """ return self.client._get_and_filter( VolumeType, *filters, endpoint="/volumes/types" )