Source code for sevenbridges.api

from concurrent.futures import ThreadPoolExecutor

from requests.adapters import DEFAULT_POOLSIZE

from sevenbridges.errors import SbgError
from sevenbridges.http.client import HttpClient

from sevenbridges.models.app import App
from sevenbridges.models.file import File
from sevenbridges.models.task import Task
from sevenbridges.models.team import Team
from sevenbridges.models.user import User
from sevenbridges.models.marker import Marker
from sevenbridges.models.volume import Volume
from sevenbridges.models.actions import Actions
from sevenbridges.models.dataset import Dataset
from sevenbridges.models.invoice import Invoice
from sevenbridges.models.project import Project
from sevenbridges.models.division import Division
from sevenbridges.models.async_jobs import AsyncJob
from sevenbridges.models.endpoints import Endpoints
from sevenbridges.models.rate_limit import RateLimit
from sevenbridges.models.storage_export import Export
from sevenbridges.models.storage_import import Import
from sevenbridges.models.drs_import import DRSImportBulk
from sevenbridges.models.enums import RequestParameters
from sevenbridges.models.billing_group import BillingGroup
from sevenbridges.models.automation import (
    Automation, AutomationRun, AutomationPackage
)


[docs]class Api(HttpClient): """ Api aggregates all resource classes into single place """ actions = Actions apps = App async_jobs = AsyncJob automations = Automation automation_runs = AutomationRun automation_packages = AutomationPackage billing_groups = BillingGroup datasets = Dataset divisions = Division drs_imports = DRSImportBulk endpoints = Endpoints exports = Export files = File imports = Import invoices = Invoice markers = Marker projects = Project rate_limit = RateLimit tasks = Task teams = Team users = User volumes = Volume def __init__( self, url=None, token=None, oauth_token=None, config=None, timeout=None, download_max_workers=16, upload_max_workers=16, proxies=None, error_handlers=None, advance_access=False, pool_connections=DEFAULT_POOLSIZE, pool_maxsize=100, pool_block=True, max_parallel_requests=100, retry_count=RequestParameters.DEFAULT_RETRY_COUNT, backoff_factor=RequestParameters.DEFAULT_BACKOFF_FACTOR, debug=False, ): """ Initializes api object. :param url: Api url. :param token: Secure token. :param oauth_token: Oauth token. :param config: Configuration profile. :param timeout: Client timeout. :param download_max_workers: Max number of threads for download. :param upload_max_workers: Max number of threads for upload. :param proxies: Proxy settings if any. :param error_handlers: List of error handlers - callables. :param advance_access: If True advance access features will be enabled. :param pool_connections: The number of urllib3 connection pools to cache. :param pool_maxsize: The maximum number of connections to save in the pool. :param pool_block: Whether the connection pool should block for connections. :param max_parallel_requests: Number which indicates number of parallel requests, only useful for multi thread applications. :return: Api object instance. """ if not debug and url and url.startswith('http:'): raise SbgError( 'Seven Bridges api client requires https, ' f'cannot initialize with url {url}' ) super().__init__( url=url, token=token, oauth_token=oauth_token, config=config, timeout=timeout, proxies=proxies, error_handlers=error_handlers, advance_access=advance_access, pool_connections=pool_connections, pool_maxsize=pool_maxsize, pool_block=pool_block, max_parallel_requests=max_parallel_requests, retry_count=retry_count, backoff_factor=backoff_factor, ) self.download_pool = ThreadPoolExecutor( max_workers=download_max_workers ) self.upload_pool = ThreadPoolExecutor(max_workers=upload_max_workers)