Source code for linode_api4.groups.lock

from typing import Union

from linode_api4.errors import UnexpectedResponseError
from linode_api4.groups import Group
from linode_api4.objects import Lock, LockType

__all__ = ["LockGroup"]


[docs] class LockGroup(Group): """ Encapsulates methods for interacting with Resource Locks. Resource locks prevent deletion or modification of resources. Currently, only Linode instances can be locked. """
[docs] def __call__(self, *filters): """ Returns a list of all Resource Locks on the account. This is intended to be called off of the :any:`LinodeClient` class, like this:: locks = client.locks() API Documentation: https://techdocs.akamai.com/linode-api/reference/get-resource-locks :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 Resource Locks on the account. :rtype: PaginatedList of Lock """ return self.client._get_and_filter(Lock, *filters)
[docs] def create( self, entity_type: str, entity_id: Union[int, str], lock_type: Union[LockType, str], ) -> Lock: """ Creates a new Resource Lock for the specified entity. API Documentation: https://techdocs.akamai.com/linode-api/reference/post-resource-lock :param entity_type: The type of entity to lock (e.g., "linode"). :type entity_type: str :param entity_id: The ID of the entity to lock. :type entity_id: int | str :param lock_type: The type of lock to create. Defaults to "cannot_delete". :type lock_type: LockType | str :returns: The newly created Resource Lock. :rtype: Lock """ params = { "entity_type": entity_type, "entity_id": entity_id, "lock_type": lock_type, } result = self.client.post("/locks", data=params) if "id" not in result: raise UnexpectedResponseError( "Unexpected response when creating lock!", json=result ) return Lock(self.client, result["id"], result)