Source code for globus_sdk.local_endpoint.server.endpoint

from __future__ import annotations

import json
import pathlib
import typing as t


[docs] class LocalGlobusConnectServer: r""" A LocalGlobusConnectServer object represents the available SDK methods for inspecting and controlling a running Globus Connect Server installation. These objects do *not* inherit from BaseClient and do not provide methods for interacting with any Globus Service APIs. :param info_path: The path to the info file used to inspect the local system """ def __init__( self, *, info_path: str | pathlib.Path = "/var/lib/globus-connect-server/info.json", ) -> None: self.info_path = pathlib.Path(info_path) self._loaded_info: dict[str, t.Any] | None = None @property def info_dict(self) -> dict[str, t.Any] | None: """ The info.json data for the local Globus Connect Server, as a dict. If the info.json file is not present or cannot be parsed, the data is None. This indicates that there is no local Globus Connect Server node, or if there is one, it cannot be used or examined by the SDK. For example, containerized applications using the SDK may not be able to interact with Globus Connect Server on the container host. """ if self._loaded_info is None: if self.info_path.is_file(): with open(self.info_path, encoding="utf-8") as fp: try: parsed_data = json.load(fp) except (UnicodeDecodeError, json.JSONDecodeError): pass else: if isinstance(parsed_data, dict): self._loaded_info = t.cast(t.Dict[str, t.Any], parsed_data) return self._loaded_info @info_dict.deleter def info_dict(self) -> None: self._loaded_info = None @property def endpoint_id(self) -> str | None: """ The endpoint ID of the local Globus Connect Server endpoint. None if the data cannot be loaded or is malformed. """ if self.info_dict is not None: epid = self.info_dict.get("endpoint_id") if isinstance(epid, str): return epid return None @property def domain_name(self) -> str | None: """ The domain name of the local Globus Connect Server endpoint. None if the data cannot be loaded or is malformed. """ if self.info_dict is not None: domain = self.info_dict.get("domain_name") if isinstance(domain, str): return domain return None