Source code for globus_sdk.services.gcs.data.endpoint

from __future__ import annotations

import typing as t

from globus_sdk import utils
from globus_sdk.services.gcs.data._common import DatatypeCallback, ensure_datatype
from globus_sdk.utils import MISSING, MissingType


[docs] class EndpointDocument(utils.PayloadWrapper): r""" :param data_type: Explicitly set the ``DATA_TYPE`` value for this endpoint document. Normally ``DATA_TYPE`` is deduced from the provided parameters and should not be set. To maximize compatibility with different versions of GCS, only set this value when necessary. :param contact_email: Email address of the support contact for this endpoint. This is visible to end users so that they may contact your organization for support. :param contact_info: Other non-email contact information for the endpoint, e.g. phone and mailing address. This is visible to end users for support. :param department: Department within organization that runs the server(s). Searchable. Unicode string, max 1024 characters, no new lines. :param description: A description of the endpoint. :param display_name: Friendly name for the endpoint, not unique. Unicode string, no new lines (\r or \n). Searchable. :param info_link: Link to a web page with more information about the endpoint. The administrator is responsible for running a website at this URL and verifying that it is accepting public connections. :param network_use: Control how Globus interacts with this endpoint over the network. Allowed values are: * ``normal``: (Default) Uses an average level of concurrency and parallelism. The levels depend on the number of physical servers in the endpoint. * ``minimal``: Uses a minimal level of concurrency and parallelism. * ``aggressive``: Uses a high level of concurrency and parallelism. * ``custom``: Uses custom values of concurrency and parallelism set by the endpoint admin. When setting this level, you must also set the ``max_concurrency``, ``preferred_concurrency``, ``max_parallelism``, and ``preferred_parallelism`` properties. :param organization: Organization that runs the server(s). Searchable. Unicode string, max 1024 characters, no new lines. :param subscription_id: The id of the subscription that is managing this endpoint. This may be the special value DEFAULT when using this as input to PATCH or PUT to use the caller’s default subscription id. :param keywords: List of search keywords for the endpoint. Unicode string, max 1024 characters total across all strings. :param allow_udt: Allow data transfer on this endpoint using the UDT protocol. :param public: Flag indicating whether this endpoint is visible to all other Globus users. If false, only users which have been granted a role on the endpoint or one of its collections, or belong to a domain allowed access to any of its storage gateways may view it. :param gridftp_control_channel_port: TCP port for the Globus control channel to listen on. By default, the control channel is passed through 443 with an ALPN header containing the value "ftp". :param max_concurrency: Admin-specified value when the ``network_use`` property’s value is ``"custom"``; otherwise the preset value for the specified ``network_use``. :param max_parallelism: Admin-specified value when the ``network_use`` property’s value is ``"custom"``; otherwise the preset value for the specified ``network_use``. :param preferred_concurrency: Admin-specified value when the ``network_use`` property’s value is ``"custom"``; otherwise the preset value for the specified ``network_use``. :param preferred_parallelism: Admin-specified value when the ``network_use`` property’s value is ``"custom"``; otherwise the preset value for the specified ``network_use``. """ DATATYPE_BASE = "endpoint" DATATYPE_VERSION_IMPLICATIONS: dict[str, tuple[int, int, int]] = { "gridftp_control_channel_port": (1, 1, 0), } DATATYPE_VERSION_CALLBACKS: tuple[DatatypeCallback, ...] = () # Note: The fields below represent the set of mutable endpoint fields in # an Endpoint#1.2.0 document. # https://docs.globus.org/globus-connect-server/v5.4/api/schemas/Endpoint_1_2_0_schema/ # Read-only fields (e.g. "gcs_manager_url", "endpoint_id", and # "earliest_last_access") are intentionally omitted as this data class is designed # for input construction not response parsing. def __init__( self, *, # data type data_type: str | MissingType = MISSING, # strs contact_email: str | MissingType = MISSING, contact_info: str | MissingType = MISSING, department: str | MissingType = MISSING, description: str | MissingType = MISSING, display_name: str | MissingType = MISSING, info_link: str | MissingType = MISSING, network_use: ( t.Literal["normal", "minimal", "aggressive", "custom"] | MissingType ) = MISSING, organization: str | MissingType = MISSING, # nullable strs subscription_id: str | None | MissingType = MISSING, # str lists keywords: t.Iterable[str] | MissingType = MISSING, # bools allow_udt: bool | MissingType = MISSING, public: bool | MissingType = MISSING, # ints max_concurrency: int | MissingType = MISSING, max_parallelism: int | MissingType = MISSING, preferred_concurrency: int | MissingType = MISSING, preferred_parallelism: int | MissingType = MISSING, # nullable ints gridftp_control_channel_port: int | None | MissingType = MISSING, # additional fields additional_fields: dict[str, t.Any] | MissingType = MISSING, ): super().__init__() self["DATA_TYPE"] = data_type self["contact_email"] = contact_email self["contact_info"] = contact_info self["department"] = department self["description"] = description self["display_name"] = display_name self["info_link"] = info_link self["network_use"] = network_use self["organization"] = organization self["keywords"] = ( keywords if isinstance(keywords, MissingType) else list(utils.safe_strseq_iter(keywords)) ) self["allow_udt"] = allow_udt self["public"] = public self["max_concurrency"] = max_concurrency self["max_parallelism"] = max_parallelism self["preferred_concurrency"] = preferred_concurrency self["preferred_parallelism"] = preferred_parallelism self["subscription_id"] = subscription_id self["gridftp_control_channel_port"] = gridftp_control_channel_port if not isinstance(additional_fields, MissingType): self.update(additional_fields) ensure_datatype(self)