From e4f2c22d23dc2e00b7091558e31135a034f65b73 Mon Sep 17 00:00:00 2001 From: Saimon Michelson Date: Sun, 8 Mar 2026 13:21:50 -0400 Subject: [PATCH 1/2] resolve documentation error references --- cterasdk/cio/core/types.py | 10 ++-- cterasdk/core/admins.py | 2 +- cterasdk/core/buckets.py | 5 +- cterasdk/core/cloudfs.py | 6 +-- cterasdk/core/devices.py | 14 +++--- cterasdk/core/directoryservice.py | 2 +- cterasdk/core/groups.py | 4 +- cterasdk/core/logs.py | 10 ++-- cterasdk/core/plans.py | 4 +- cterasdk/core/portals.py | 9 ++-- cterasdk/core/reports.py | 14 ++---- cterasdk/core/servers.py | 5 +- cterasdk/core/settings.py | 2 +- cterasdk/core/users.py | 4 +- cterasdk/direct/client.py | 46 +++++++++---------- cterasdk/direct/lib.py | 4 +- cterasdk/edge/logs.py | 2 +- cterasdk/edge/services.py | 4 +- cterasdk/edge/sync.py | 2 +- cterasdk/edge/syslog.py | 4 +- .../UserGuides/Portal/Administration.rst | 2 + docs/source/api/cterasdk.common.enum.rst | 7 +++ docs/source/api/cterasdk.common.rst | 1 + 23 files changed, 82 insertions(+), 81 deletions(-) create mode 100644 docs/source/api/cterasdk.common.enum.rst diff --git a/cterasdk/cio/core/types.py b/cterasdk/cio/core/types.py index 52aaa250..98b3a1bd 100644 --- a/cterasdk/cio/core/types.py +++ b/cterasdk/cio/core/types.py @@ -49,7 +49,7 @@ def from_snapshot(snapshot): @staticmethod def from_cursor(cursor): """ - Create Path Object from 'ResourceActionCursor' Class Object. + Create Path Object from :class:`cterasdk.cio.core.types.ResourceActionCursor`. :param object cursor: Resource Action Cursor Object """ @@ -110,7 +110,7 @@ def resolve(path, namespace=None): Resolve Path :param object path: Path - :param cterasdk.cio.core.types.PortalPath,optional namespace: Path Object + :param namespace: :class:`cterasdk.cio.core.types.ServicesPortalPath` or :class:`cterasdk.cio.core.types.GlobalAdminPath` (optional) """ if isinstance(path, PortalPath): return path @@ -133,7 +133,7 @@ def create_generator(paths, namespace=None): Create Path Object Generator Object. :param object paths: List or a tuple - :param cterasdk.cio.core.types.PortalPath,optional namespace: Path Object + :param namespace: :class:`cterasdk.cio.core.types.ServicesPortalPath` or :class:`cterasdk.cio.core.types.GlobalAdminPath` (optional) """ def wrapper(): for path in paths: @@ -335,7 +335,7 @@ class PreviousVersion(Object): Class Representing a Previous Version :ivar bool current: Current - :ivar cterasdk.cio.types.PortalPath path: Path Object + :ivar path: :class:`cterasdk.cio.types.ServicesPortalPath` or :class:`cterasdk.cio.types.GlobalAdminPath` :ivar datetime.datetime start_time: Snapshot start time :ivar datetime.datetime end_time: Snapshot end time """ @@ -370,7 +370,7 @@ class PortalResource(BaseResource): :ivar int,optional id: Resource ID, defaults to ``None`` if not exists :ivar str name: Resource name - :ivar cterasdk.cio.types.PortalPath path: Path Object + :ivar path: :class:`cterasdk.cio.types.ServicesPortalPath` or :class:`cterasdk.cio.types.GlobalAdminPath` :ivar bool is_dir: ``True`` if directory, ``False`` otherwise :ivar bool deleted: ``True`` if deleted, ``False`` otherwise :ivar int size: Size diff --git a/cterasdk/core/admins.py b/cterasdk/core/admins.py index b51b97ed..dc5a955b 100644 --- a/cterasdk/core/admins.py +++ b/cterasdk/core/admins.py @@ -46,7 +46,7 @@ def list_admins(self, include=None): :param list[str] include: List of fields to retrieve, defaults to ['name'] :return: Iterator for local administrators - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ include = union(include or [], Administrators.default) param = query.QueryParamBuilder().include(include).build() diff --git a/cterasdk/core/buckets.py b/cterasdk/core/buckets.py index 5004e9e3..74517da1 100644 --- a/cterasdk/core/buckets.py +++ b/cterasdk/core/buckets.py @@ -101,9 +101,8 @@ def modify(self, current_name, new_name=None, read_only=None, dedicated_to=None, def list_buckets(self, include=None): """ - List Buckets.\n - To retrieve buckets, you must first browse the Global Administration Portal, using: `GlobalAdmin.portals.browse_global_admin()` - + List Buckets. + Restricted to the Global Administration Portal. Browse it using :py:func:`cterasdk.core.portals.browse_global_admin`. :param list[str],optional include: List of fields to retrieve, defaults to ``['name']`` """ include = union(include or [], Buckets.default) diff --git a/cterasdk/core/cloudfs.py b/cterasdk/core/cloudfs.py index e18b7080..96d03fb7 100644 --- a/cterasdk/core/cloudfs.py +++ b/cterasdk/core/cloudfs.py @@ -516,7 +516,7 @@ def all(self, filters=None): :param list[],optional filters: List of additional filters, defaults to None :return: Iterator for all Zones - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ builder = query.QueryParamBuilder().include_classname().startFrom(0).countLimit(25) filters = filters or [] @@ -532,7 +532,7 @@ def search(self, name): :param str name: Search query :return: Iterator for all matching Zones - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ filters = [query.FilterBuilder(Zones.name_attr).like(name)] return self.all(filters) @@ -543,7 +543,7 @@ def add(self, name, policy_type=PolicyType.SELECT, description=None): :param str name: The name of the new zone :param cterasdk.core.enum.PolicyType,optional policy_type: - Policy type of the new zone, defaults to cterasdk.core.enum.PolicyType.SELECT + Policy type of the new zone, defaults to :py:attr:`cterasdk.core.enum.PolicyType.SELECT` :param str,optional description: The description of the new zone """ param = self._zone_param(name, policy_type, description) diff --git a/cterasdk/core/devices.py b/cterasdk/core/devices.py index a23ef481..a45470fe 100644 --- a/cterasdk/core/devices.py +++ b/cterasdk/core/devices.py @@ -31,7 +31,7 @@ def device(self, device_name, tenant=None, include=None): :param list[str],optional include: List of fields to retrieve, defaults to ['name', 'portal', 'deviceType'] :return: Managed Device - :rtype: cterasdk.objects.synchronous.Edge or cterasdk.objects.synchronous.Drive + :rtype: cterasdk.objects.synchronous.edge.Edge or cterasdk.objects.synchronous.drive.Drive """ include = union(include or [], Devices.default) include = ['/' + attr for attr in include] @@ -53,7 +53,7 @@ def filers(self, include=None, allPortals=False, deviceTypes=None): :param list[cterasdk.core.enum.DeviceType.Gateways] deviceTypes: Types of Filers, defaults to all Filer types :return: Iterator for all matching Filers - :rtype: cterasdk.lib.iterator.Iterator[cterasdk.object.Gateway.Gateway] + :rtype: cterasdk.lib.iterator.QueryIterator[cterasdk.objects.synchronous.edge.Edge] """ if deviceTypes: deviceTypes = [deviceType for deviceType in deviceTypes if deviceType in DeviceType.Gateways] @@ -71,7 +71,7 @@ def agents(self, include=None, allPortals=False): :param bool,optional allPortals: Search in all portals, defaults to False :return: Iterator for all matching Agents - :rtype: cterasdk.lib.iterator.Iterator[cterasdk.object.Agent.Agent] + :rtype: cterasdk.lib.iterator.QueryIterator[cterasdk.objects.synchronous.drive.Drive] """ filters = [query.FilterBuilder(Devices.type_attr).like('Agent')] return self.devices(include, allPortals, filters) @@ -84,7 +84,7 @@ def desktops(self, include=None, allPortals=False): :param bool,optional allPortals: Search in all portals, defaults to False :return: Iterator for all matching Desktops - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ filters = [query.FilterBuilder(Devices.type_attr).eq(DeviceType.WorkstationAgent)] return self.devices(include, allPortals, filters) @@ -97,7 +97,7 @@ def servers(self, include=None, allPortals=False): :param bool,optional allPortals: Search in all portals, defaults to False :return: Iterator for all matching Servers - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ filters = [query.FilterBuilder(Devices.type_attr).eq(DeviceType.ServerAgent)] return self.devices(include, allPortals, filters) @@ -110,7 +110,7 @@ def by_name(self, names, include=None): :param list[str],optional include: List of fields to retrieve, defaults to ['name', 'portal', 'deviceType'] :return: Iterator for all matching Devices - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ filters = [query.FilterBuilder('name').eq(name) for name in names] return self.devices(include, False, filters) @@ -125,7 +125,7 @@ def devices(self, include=None, allPortals=False, filters=None, user=None): :param cterasdk.core.types.UserAccount user: User account of the device owner :return: Iterator for all matching Devices - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ include = union(include or [], Devices.default) builder = query.QueryParamBuilder().include(include).allPortals(allPortals) diff --git a/cterasdk/core/directoryservice.py b/cterasdk/core/directoryservice.py index 3aaae8b2..36cd24fb 100644 --- a/cterasdk/core/directoryservice.py +++ b/cterasdk/core/directoryservice.py @@ -39,7 +39,7 @@ def connect(self, domain, username, password, directory=DirectoryServiceType.Mic :param str username: The user name to use when connecting to the active directory services :param str password: The password to use when connecting to the active directory services :param str,optional ou: The OU path to use when connecting to the active directory services, defaults to `None` - :param cterasdk.core.enum.DirectoryServiceType,optional directory: The directory service type, deafults to `'ActiveDirectory'` + :param cterasdk.core.enum.DirectoryServiceType,optional directory: The directory service type, defaults to ``ActiveDirectory`` :param cterasdk.core.types.DomainControllers,optional domain_controllers: Connect to a primary and a secondary domain controllers, defaults to `None` :param bool,optional ssl: Connect using SSL, defaults to `False` diff --git a/cterasdk/core/groups.py b/cterasdk/core/groups.py index 4df8a67a..a8c45ab2 100644 --- a/cterasdk/core/groups.py +++ b/cterasdk/core/groups.py @@ -52,7 +52,7 @@ def list_local_groups(self, include=None): :param list[str] include: List of fields to retrieve, defaults to ['name'] :return: Iterator for all local groups - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ include = union(include or [], Groups.default) param = query.QueryParamBuilder().include(include).build() @@ -65,7 +65,7 @@ def list_domain_groups(self, domain, include=None): :param str domain: Domain name :param list[str] include: List of fields to retrieve, defaults to ['name'] :return: Iterator for all the domain groups - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ include = union(include or [], Groups.default) param = query.QueryParamBuilder().include(include).build() diff --git a/cterasdk/core/logs.py b/cterasdk/core/logs.py index 37b5ff03..542ffb47 100644 --- a/cterasdk/core/logs.py +++ b/cterasdk/core/logs.py @@ -33,15 +33,15 @@ def device(self, Get device logs from the Portal :param str name: Name of a device - :param cterasdk.core.enum.LogTopic,optional topic: Log topic to get, defaults to cterasdk.core.enum.LogTopic.System + :param cterasdk.core.enum.LogTopic,optional topic: Log topic to get, defaults to :py:attr:`cterasdk.core.enum.LogTopic.System` :param cterasdk.core.enum.Severity,optional min_severity: - Minimun severity of logs to get, defaults to cterasdk.core.enum.Severity.INFO + Minimun severity of logs to get, defaults to :py:attr:`cterasdk.core.enum.Severity.INFO` :param str,optional before: Get logs before this date (in format "%m/%d/%Y %H:%M:%S"), defaults to None :param str,optional after: Get logs after this date (in format "%m/%d/%Y %H:%M:%S"), defaults to None :param list[cterasdk.core.query.FilterBuilder],optional filters: List of additional filters, defaults to None :return: Iterator for all matching logs - :rtype: cterasdk.lib.iterator.Iterator[cterasdk.object.Object] + :rtype: cterasdk.lib.iterator.QueryIterator[cterasdk.common.object.Object] """ return self.get(topic, min_severity, enum.OriginType.Device, name, before, after, filters) @@ -54,14 +54,14 @@ def get(self, topic=enum.LogTopic.System, min_severity=enum.Severity.INFO, origi :param cterasdk.core.enum.Severity,optional min_severity: Minimun severity of logs to get, defaults to cterasdk.core.enum.Severity.INFO :param cterasdk.core.enum.OriginType,optional origin_type: - Origin type of the logs to get, defaults to cterasdk.core.enum.OriginType.Portal + Origin type of the logs to get, defaults to :py:attr:`cterasdk.core.enum.OriginType.Portal` :param str,optional origin: Log origin (e.g. device name, Portal server name), defaults to None :param str,optional before: Get logs before this date (in format "%m/%d/%Y %H:%M:%S"), defaults to None :param str,optional after: Get logs after this date (in format "%m/%d/%Y %H:%M:%S"), defaults to None :param list[cterasdk.core.query.FilterBuilder],optional filters: List of additional filters, defaults to None :return: Iterator for all matching logs - :rtype: cterasdk.lib.iterator.Iterator[cterasdk.object.Object] + :rtype: cterasdk.lib.iterator.QueryIterator[cterasdk.common.object.Object] """ builder = query.QueryParamBuilder().put('topic', topic).put('minSeverity', min_severity) diff --git a/cterasdk/core/plans.py b/cterasdk/core/plans.py index d21cf35e..d49ad4be 100644 --- a/cterasdk/core/plans.py +++ b/cterasdk/core/plans.py @@ -43,7 +43,7 @@ def by_name(self, names, include=None): :param list[cterasdk.core.query.FilterBuilder],optional filters: List of additional filters, defaults to None :return: Iterator for all matching Plans - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ filters = [query.FilterBuilder('name').eq(name) for name in names] return self.list_plans(include, filters) @@ -56,7 +56,7 @@ def list_plans(self, include=None, filters=None): :param list[],optional filters: List of additional filters, defaults to None :return: Iterator for all matching Plans - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ include = union(include or [], Plans.default) builder = query.QueryParamBuilder().include(include) diff --git a/cterasdk/core/portals.py b/cterasdk/core/portals.py index 182169ce..b4338dbf 100644 --- a/cterasdk/core/portals.py +++ b/cterasdk/core/portals.py @@ -32,11 +32,10 @@ def get(self, name, include=None): def list_tenants(self, include=None, portal_type=None): """ - List tenants.\n - To retrieve tenants, you must first browse the Global Administration Portal, using: `GlobalAdmin.portals.browse_global_admin()` - + List tenants. + Restricted to the Global Administration Portal. Browse it using :py:func:`cterasdk.core.portals.browse_global_admin`. :param list[str],optional include: List of fields to retrieve, defaults to ['name'] - :param cterasdk.core.enum.PortalType portal_type: The Portal type + :param cterasdk.core.enum.PortalType portal_type: Portal type """ # browse administration include = union(include or [], Portals.default) @@ -147,7 +146,7 @@ def apply_changes(self, wait=False): :param bool,optional wait: Wait for all changes to apply :returns: Task status object, or an awaitable task object - :rtype: cterasdk.common.object.Object or :class:`cterasdk.lib.tasks.AwaitablePortalTask` + :rtype: :py:attr:`cterasdk.common.object.Object` or :class:`cterasdk.lib.tasks.AwaitablePortalTask` """ param = Object() param.objectId = None diff --git a/cterasdk/core/reports.py b/cterasdk/core/reports.py index ee97a544..b0e6bc8f 100644 --- a/cterasdk/core/reports.py +++ b/cterasdk/core/reports.py @@ -13,29 +13,25 @@ class Reports(BaseCommand): """ def storage(self): """ - Retrieve the portals statistics report.\n - To retrieve this report, you must first browse the Global Administration Portal, using: `GlobalAdmin.portals.browse_global_admin()` + Storage Statistics Report. """ return self._get_report(enum.Reports.Storage) def portals(self): """ - Retrieve the storage statistics report.\n - To retrieve this report, you must first browse the Global Administration Portal, using: `GlobalAdmin.portals.browse_global_admin()` + Portal Statistics Report. """ return self._get_report(enum.Reports.Portals) def folders(self): """ - Retrieve the cloud folders statistics report.\n - To retrieve this report, you must first browse the Virtual Portal that contains the report, using: `GlobalAdmin.portals.browse()` + Cloud Drive Folders Statistics Report. """ return self._get_report(enum.Reports.Folders) def folder_groups(self): """ - Retrieve the folder groups statistics report.\n - To retrieve this report, you must first browse the Virtual Portal that contains the report, using: `GlobalAdmin.portals.browse()` + Folder Groups Statistics Report. """ return self._get_report(enum.Reports.FolderGroups) @@ -43,7 +39,7 @@ def generate(self, name): """ Generate a CTERA Portal Report - :param cterasdk.core.enum.reports report: Report + :param cterasdk.core.enum.Reports report: Report """ options = {v: k for k, v in enum.Reports.__dict__.items() if not k.startswith('_')} if options.get(name, None) is None: diff --git a/cterasdk/core/servers.py b/cterasdk/core/servers.py index ddebbd4b..d5a60924 100644 --- a/cterasdk/core/servers.py +++ b/cterasdk/core/servers.py @@ -45,9 +45,8 @@ def get(self, name, include=None): def list_servers(self, include=None): """ - Retrieve the servers that comprise CTERA Portal.\n - To retrieve servers, you must first browse the Global Administration Portal, using: `GlobalAdmin.portals.browse_global_admin()` - + Retrieve the servers that comprise CTERA Portal. + Restricted to the Global Administration Portal. Browse it using :py:func:`cterasdk.core.portals.browse_global_admin`. :param list[str],optional include: List of fields to retrieve, defaults to ['name'] """ # browse administration diff --git a/cterasdk/core/settings.py b/cterasdk/core/settings.py index e6831702..3e04e61b 100644 --- a/cterasdk/core/settings.py +++ b/cterasdk/core/settings.py @@ -36,7 +36,7 @@ def update(self, settings=None): """ Update Portal Settings - :param cterasdk.common.object.Objcet settings: Settings, defaults to using the global settings. + :param cterasdk.common.object.Object settings: Settings, defaults to using the global settings. """ if not self.session().in_tenant_context(): self._core.api.put('/settings/defaultPortalSettings', settings) diff --git a/cterasdk/core/users.py b/cterasdk/core/users.py index f20ab3d1..5f2c811b 100644 --- a/cterasdk/core/users.py +++ b/cterasdk/core/users.py @@ -56,7 +56,7 @@ def list_local_users(self, include=None): :param list[str] include: List of fields to retrieve, defaults to ['name'] :return: Iterator for all local users - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ include = union(include or [], Users.default) param = query.QueryParamBuilder().include(include).build() @@ -69,7 +69,7 @@ def list_domain_users(self, domain, include=None): :param str domain: Domain name :param list[str] include: List of fields to retrieve, defaults to ['name'] :return: Iterator for all the domain users - :rtype: cterasdk.lib.iterator.Iterator + :rtype: cterasdk.lib.iterator.QueryIterator """ include = union(include or [], Users.default) param = query.QueryParamBuilder().include(include).build() diff --git a/cterasdk/direct/client.py b/cterasdk/direct/client.py index e314904b..4ac6282c 100644 --- a/cterasdk/direct/client.py +++ b/cterasdk/direct/client.py @@ -20,10 +20,10 @@ def __init__(self, baseurl=None, access_key_id=None, secret_access_key=None, bea """ Initialize a CTERA Direct IO Client. - :param str baseurl: Portal URL - :param str,optional access_key_id: Access key - :param str,optional secret_access_key: Secret key - :param str,optional bearer: Bearer token + :param str, optional baseurl: Portal URL. + :param str, optional access_key_id: Access key. + :param str, optional secret_access_key: Secret key. + :param str, optional bearer: Bearer token. """ self._api = AsyncJSON(EndpointBuilder.new(baseurl, '/directio'), settings=cterasdk.settings.io.direct.api.settings, authenticator=lambda *_: True) @@ -45,6 +45,7 @@ async def metadata(self, file_id): Get File Metadata. :param int file_id: File ID. + :return: Serialized file metadata. """ meta = await self._chunks(file_id) return meta.serialize() @@ -54,14 +55,12 @@ async def blocks(self, file_id, byte_range=None, max_workers=None): Blocks API. :param int file_id: File ID. - :param cterasdk.direct.types.ByteRange,optional byte_range: Byte Range. - :param int,optional max_workers: Max concurrent tasks + :param cterasdk.direct.types.ByteRange, optional byte_range: Byte range. + :param int, optional max_workers: Max concurrent tasks. :returns: List of Blocks. :rtype: list[cterasdk.direct.types.Block] """ - meta = await self._chunks(file_id) - byte_range = byte_range if byte_range is not None else ByteRange.default() - executor = self.executor(filters.span(meta, byte_range), meta.encryption_key, meta.file_id, max_workers) + executor = self.executor(await self._chunks(file_id), byte_range=byte_range, max_workers=max_workers) return await executor() async def streamer(self, file_id, byte_range=None, max_workers=None): @@ -69,35 +68,34 @@ async def streamer(self, file_id, byte_range=None, max_workers=None): Stream API. :param int file_id: File ID. - :param cterasdk.direct.types.ByteRange,optional byte_range: Byte Range. - :param int,optional max_workers: Max concurrent tasks - :returns: Streamer Object + :param cterasdk.direct.types.ByteRange, optional byte_range: Byte range. + :param int, optional max_workers: Max concurrent tasks. + :returns: Streamer object. :rtype: cterasdk.direct.stream.Streamer """ - meta = await self._chunks(file_id) - byte_range = byte_range if byte_range is not None else ByteRange.default() - max_workers = max_workers if max_workers else cterasdk.settings.io.direct.streamer.max_workers - executor = self.executor(filters.span(meta, byte_range), meta.encryption_key, file_id, max_workers) + executor = self.executor(await self._chunks(file_id), byte_range=byte_range, max_workers=max_workers) return Streamer(executor, byte_range) - def executor(self, chunks, encryption_key, file_id=None, max_workers=None): + def executor(self, metadata, file_id=None, byte_range=None, max_workers=None): """ Download Executor. - :param list[cterasdk.direct.types.Chunk] chunks: List of Chunks. - :param str encryption_key: Decryption Key. - :param int,optional file_id: File ID. - :param int,optional max_workers: Max concurrent tasks. - - :returns: Callable Downloader + :param cterasdk.direct.types.Metadata metadata: Direct I/O file metadata. + :param int, optional file_id: File ID. + :param cterasdk.direct.types.ByteRange, optional byte_range: Byte range. + :param int, optional max_workers: Max concurrent tasks. + :returns: Callable downloader. :rtype: function """ + byte_range = byte_range if byte_range is not None else ByteRange.default() + chunks = filters.span(metadata, byte_range) + file_id = file_id if file_id is not None else metadata.file_id async def execute(): """ Asynchronous Executable of Chunk Retrieval Tasks. """ - return await process_chunks(self._client, file_id, chunks, encryption_key, + return await process_chunks(self._client, file_id, chunks, metadata.encryption_key, asyncio.Semaphore(max_workers) if max_workers else None) return execute diff --git a/cterasdk/direct/lib.py b/cterasdk/direct/lib.py index 254a6534..7a9a55b9 100644 --- a/cterasdk/direct/lib.py +++ b/cterasdk/direct/lib.py @@ -6,7 +6,7 @@ from .types import Metadata, Block from .crypto import decrypt_key, decrypt_block from .decompressor import decompress -from ..exceptions.transport import BadRequest, Unauthorized, Unprocessable, InternalServerError, HTTPError +from ..exceptions.transport import BadRequest, Unauthorized, Forbidden, Unprocessable, InternalServerError, HTTPError from ..exceptions.direct import ( AuthorizationError, BlockListConnectionError, BlockListTimeout, BlockValidationException, BlocksNotFoundError, DecompressBlockError, DecryptBlockError, DecryptKeyError, DirectIOError, DownloadConnectionError, @@ -207,7 +207,7 @@ async def get_chunks(api, bearer, file_id): return Metadata(file_id, response) except BadRequest as error: raise ObjectNotFoundError(file_id) from error - except Unauthorized as error: + except (Unauthorized, Forbidden) as error: raise AuthorizationError(file_id) from error except Unprocessable as error: raise UnsupportedStorageError(file_id) from error diff --git a/cterasdk/edge/logs.py b/cterasdk/edge/logs.py index 5d112ef9..7e640cae 100644 --- a/cterasdk/edge/logs.py +++ b/cterasdk/edge/logs.py @@ -40,7 +40,7 @@ def logs(self, topic, include=None, minSeverity=enum.Severity.INFO): :param str topic: Log Topic to fetch :param list[str],optional include: List of fields to include in the response, defailts to Logs.default_include - :param cterasdk.edge.enum.Severity,optional minSeverity: Minimal log severity to fetch, defaults to cterasdk.edge.enum.Severity.INFO + :param cterasdk.edge.enum.Severity,optional minSeverity: Minimal log severity to fetch, defaults to :py:attr:`cterasdk.edge.enum.Severity.INFO` :return: Log entries :rtype: cterasdk.lib.iterator.QueryIterator diff --git a/cterasdk/edge/services.py b/cterasdk/edge/services.py index eb809444..a167ea7e 100644 --- a/cterasdk/edge/services.py +++ b/cterasdk/edge/services.py @@ -67,7 +67,7 @@ def connect(self, server, user, password, ctera_license=enum.License.EV16): :param str server: Address of the Portal :param str user: User for the Portal connection :param str password: Password for the Portal connection - :param cterasdk.edge.enum.License,optional ctera_license: CTERA License, defaults to cterasdk.edge.enum.License.EV16 + :param cterasdk.edge.enum.License,optional ctera_license: CTERA License, defaults to :py:attr:`cterasdk.edge.enum.License.EV16` """ self._before_connect_to_services(ctera_license, server) self._check_connection(server) @@ -86,7 +86,7 @@ def activate(self, server, user, code, ctera_license=enum.License.EV16): :param str server: Address of the Portal :param str user: User for the Portal connection :param str code: Activation code for the Portal connection - :param cterasdk.edge.enum.License,optional ctera_license: CTERA License, defaults to cterasdk.edge.enum.License.EV16 + :param cterasdk.edge.enum.License,optional ctera_license: CTERA License, defaults to :py:attr:`cterasdk.edge.enum.License.EV16` """ self._before_connect_to_services(ctera_license, server) diff --git a/cterasdk/edge/sync.py b/cterasdk/edge/sync.py index 374942e4..41f330f5 100644 --- a/cterasdk/edge/sync.py +++ b/cterasdk/edge/sync.py @@ -170,7 +170,7 @@ def evict(self, path, wait=False): :param str path: Directory path :param bool wait: Wait for eviction task to complete, defaults to ``False`` :returns: Task status object, or an awaitable task object - :rtype: cterasdk.common.object.Object or :class:`cterasdk.lib.tasks.AwaitableEdgeTask` + :rtype: :class:`cterasdk.common.object.Object` or :class:`cterasdk.lib.tasks.AwaitableEdgeTask` """ param = Object() param._classname = 'evictFolderParam' # pylint: disable=protected-access diff --git a/cterasdk/edge/syslog.py b/cterasdk/edge/syslog.py index ae34e5a1..5016eb47 100644 --- a/cterasdk/edge/syslog.py +++ b/cterasdk/edge/syslog.py @@ -19,9 +19,9 @@ def enable(self, server, port=514, proto=enum.IPProtocol.UDP, min_severity=enum. :param str server: Server address to send syslog logs :param int,optional port: Syslog server communication port, defaults to 514 :param cterasdk.edge.enum.IPProtocol,optional proto: - Syslog server communication protocol, defaults to cterasdk.edge.enum.IPProtocol.UDP + Syslog server communication protocol, defaults to :py:attr:`cterasdk.edge.enum.IPProtocol.UDP` :param cterasdk.edge.enum.Severity,optional min_severity: - Minimal log severity to fetch, defaults to cterasdk.edge.enum.Severity.INFO + Minimal log severity to fetch, defaults to :py:attr:`cterasdk.edge.enum.Severity.INFO` """ obj = Object() obj.mode = enum.Mode.Enabled diff --git a/docs/source/UserGuides/Portal/Administration.rst b/docs/source/UserGuides/Portal/Administration.rst index 8df4b212..df365eba 100644 --- a/docs/source/UserGuides/Portal/Administration.rst +++ b/docs/source/UserGuides/Portal/Administration.rst @@ -1244,6 +1244,8 @@ Retrieve a Report Once a report was generated, use the following commands to retrieve the report. +.. note:: To retrieve the following reports, first navigate to the Global Administration view using :py:func:`cterasdk.core.portals.browse_global_admin()` + .. automethod:: cterasdk.core.reports.Reports.storage :noindex: diff --git a/docs/source/api/cterasdk.common.enum.rst b/docs/source/api/cterasdk.common.enum.rst new file mode 100644 index 00000000..5f6f39b2 --- /dev/null +++ b/docs/source/api/cterasdk.common.enum.rst @@ -0,0 +1,7 @@ +cterasdk.common.enum module +=========================== + +.. automodule:: cterasdk.common.enum + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/source/api/cterasdk.common.rst b/docs/source/api/cterasdk.common.rst index 058ae104..cc1e0760 100644 --- a/docs/source/api/cterasdk.common.rst +++ b/docs/source/api/cterasdk.common.rst @@ -12,6 +12,7 @@ Submodules .. toctree:: cterasdk.common.datetime_utils + cterasdk.common.enum cterasdk.common.item cterasdk.common.object cterasdk.common.types From 51a81597ecc3321b5d2036d0279bb1ec2babd03a Mon Sep 17 00:00:00 2001 From: Saimon Michelson Date: Sun, 8 Mar 2026 14:29:13 -0400 Subject: [PATCH 2/2] resolve line too long --- cterasdk/edge/logs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cterasdk/edge/logs.py b/cterasdk/edge/logs.py index 7e640cae..bc937b20 100644 --- a/cterasdk/edge/logs.py +++ b/cterasdk/edge/logs.py @@ -40,8 +40,8 @@ def logs(self, topic, include=None, minSeverity=enum.Severity.INFO): :param str topic: Log Topic to fetch :param list[str],optional include: List of fields to include in the response, defailts to Logs.default_include - :param cterasdk.edge.enum.Severity,optional minSeverity: Minimal log severity to fetch, defaults to :py:attr:`cterasdk.edge.enum.Severity.INFO` - + :param cterasdk.edge.enum.Severity,optional minSeverity: Minimal log severity to fetch, + defaults to :py:attr:`cterasdk.edge.enum.Severity.INFO` :return: Log entries :rtype: cterasdk.lib.iterator.QueryIterator """