from abc import ABC, abstractmethod from typing import List, Optional from frostfs_testlib.storage.cluster import Cluster, ClusterNode class ContainerInterface(ABC): @abstractmethod def create( self, endpoint: str, nns_zone: Optional[str] = None, nns_name: Optional[str] = None, address: Optional[str] = None, attributes: Optional[dict] = None, basic_acl: Optional[str] = None, await_mode: bool = False, disable_timestamp: bool = False, force: bool = False, trace: bool = False, name: Optional[str] = None, nonce: Optional[str] = None, policy: Optional[str] = None, session: Optional[str] = None, subnet: Optional[str] = None, ttl: Optional[int] = None, xhdr: Optional[dict] = None, timeout: Optional[str] = None, ) -> str: """ Create a new container and register it in the FrostFS. It will be stored in the sidechain when the Inner Ring accepts it. """ raise NotImplementedError("No implemethed method create") @abstractmethod def delete( self, endpoint: str, cid: str, address: Optional[str] = None, await_mode: bool = False, session: Optional[str] = None, ttl: Optional[int] = None, xhdr: Optional[dict] = None, force: bool = False, trace: bool = False, ) -> List[str]: """ Delete an existing container. Only the owner of the container has permission to remove the container. """ raise NotImplementedError("No implemethed method delete") @abstractmethod def get( self, endpoint: str, cid: str, address: Optional[str] = None, generate_key: Optional[bool] = None, await_mode: bool = False, to: Optional[str] = None, json_mode: bool = True, trace: bool = False, ttl: Optional[int] = None, xhdr: Optional[dict] = None, timeout: Optional[str] = None, ) -> List[str]: """Get container field info.""" raise NotImplementedError("No implemethed method get") @abstractmethod def get_eacl( self, endpoint: str, cid: str, address: Optional[str] = None, generate_key: Optional[bool] = None, await_mode: bool = False, json_mode: bool = True, trace: bool = False, to: Optional[str] = None, session: Optional[str] = None, ttl: Optional[int] = None, xhdr: Optional[dict] = None, timeout: Optional[str] = None, ) -> List[str]: """Get extended ACL table of container.""" raise NotImplementedError("No implemethed method get-eacl") @abstractmethod def list( self, endpoint: str, name: Optional[str] = None, address: Optional[str] = None, generate_key: Optional[bool] = None, trace: bool = False, owner: Optional[str] = None, ttl: Optional[int] = None, xhdr: Optional[dict] = None, timeout: Optional[str] = None, **params, ) -> List[str]: """List all created containers.""" raise NotImplementedError("No implemethed method list") @abstractmethod def nodes( self, endpoint: str, cid: str, cluster: Cluster, address: Optional[str] = None, ttl: Optional[int] = None, from_file: Optional[str] = None, trace: bool = False, short: Optional[bool] = True, xhdr: Optional[dict] = None, generate_key: Optional[bool] = None, timeout: Optional[str] = None, ) -> List[ClusterNode]: """Show the nodes participating in the container in the current epoch.""" raise NotImplementedError("No implemethed method nodes")