mirror of
https://github.com/thousandeyes/thousandeyes-sdk-python.git
synced 2025-12-06 07:55:31 +00:00
CP-1897 Change versioning mechanism
This commit is contained in:
parent
92594366d2
commit
294144feca
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/AccountGroup.md
|
docs/AccountGroup.md
|
||||||
docs/AccountGroupDetail.md
|
docs/AccountGroupDetail.md
|
||||||
|
|||||||
@ -18,7 +18,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.administrative.models
|
import thousandeyes_sdk.administrative.models
|
||||||
|
|
||||||
@ -30,7 +31,6 @@ from thousandeyes_sdk.administrative.models.expand import Expand
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class AccountGroupsApi:
|
class AccountGroupsApi:
|
||||||
@ -43,7 +43,7 @@ class AccountGroupsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-administrative"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.administrative.models
|
import thousandeyes_sdk.administrative.models
|
||||||
|
|
||||||
@ -26,7 +27,6 @@ from thousandeyes_sdk.administrative.models.permissions import Permissions
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class PermissionsApi:
|
class PermissionsApi:
|
||||||
@ -39,7 +39,7 @@ class PermissionsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-administrative"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.administrative.models
|
import thousandeyes_sdk.administrative.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.administrative.models.roles import Roles
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class RolesApi:
|
class RolesApi:
|
||||||
@ -41,7 +41,7 @@ class RolesApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-administrative"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.administrative.models
|
import thousandeyes_sdk.administrative.models
|
||||||
|
|
||||||
@ -27,7 +28,6 @@ from thousandeyes_sdk.administrative.models.audit_user_events import AuditUserEv
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class UserEventsApi:
|
class UserEventsApi:
|
||||||
@ -40,7 +40,7 @@ class UserEventsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-administrative"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.administrative.models
|
import thousandeyes_sdk.administrative.models
|
||||||
|
|
||||||
@ -29,7 +30,6 @@ from thousandeyes_sdk.administrative.models.users import Users
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class UsersApi:
|
class UsersApi:
|
||||||
@ -42,7 +42,7 @@ class UsersApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-administrative"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/AccountGroup.md
|
docs/AccountGroup.md
|
||||||
docs/Agent.md
|
docs/Agent.md
|
||||||
|
|||||||
@ -11,7 +11,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.agents.models
|
import thousandeyes_sdk.agents.models
|
||||||
|
|
||||||
@ -27,7 +28,6 @@ from thousandeyes_sdk.agents.models.notification_rule_detail import Notification
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class CloudAndEnterpriseAgentNotificationRulesApi:
|
class CloudAndEnterpriseAgentNotificationRulesApi:
|
||||||
@ -40,7 +40,7 @@ class CloudAndEnterpriseAgentNotificationRulesApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-agents"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.agents.models
|
import thousandeyes_sdk.agents.models
|
||||||
|
|
||||||
@ -31,7 +32,6 @@ from thousandeyes_sdk.agents.models.cloud_enterprise_agents import CloudEnterpri
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class CloudAndEnterpriseAgentsApi:
|
class CloudAndEnterpriseAgentsApi:
|
||||||
@ -44,7 +44,7 @@ class CloudAndEnterpriseAgentsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-agents"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.agents.models
|
import thousandeyes_sdk.agents.models
|
||||||
|
|
||||||
@ -30,7 +31,6 @@ from thousandeyes_sdk.agents.models.cloud_enterprise_agents import CloudEnterpri
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class EnterpriseAgentClusterApi:
|
class EnterpriseAgentClusterApi:
|
||||||
@ -43,7 +43,7 @@ class EnterpriseAgentClusterApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-agents"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.agents.models
|
import thousandeyes_sdk.agents.models
|
||||||
|
|
||||||
@ -26,7 +27,6 @@ from thousandeyes_sdk.agents.models.agent_proxies import AgentProxies
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class ProxiesApi:
|
class ProxiesApi:
|
||||||
@ -39,7 +39,7 @@ class ProxiesApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-agents"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/Alert.md
|
docs/Alert.md
|
||||||
docs/AlertDetail.md
|
docs/AlertDetail.md
|
||||||
|
|||||||
@ -18,7 +18,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.alerts.models
|
import thousandeyes_sdk.alerts.models
|
||||||
|
|
||||||
@ -29,7 +30,6 @@ from thousandeyes_sdk.alerts.models.rules import Rules
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class AlertRulesApi:
|
class AlertRulesApi:
|
||||||
@ -42,7 +42,7 @@ class AlertRulesApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-alerts"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.alerts.models
|
import thousandeyes_sdk.alerts.models
|
||||||
|
|
||||||
@ -29,7 +30,6 @@ from thousandeyes_sdk.alerts.models.expand import Expand
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class AlertSuppressionWindowsApi:
|
class AlertSuppressionWindowsApi:
|
||||||
@ -42,7 +42,7 @@ class AlertSuppressionWindowsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-alerts"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.alerts.models
|
import thousandeyes_sdk.alerts.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.alerts.models.alerts import Alerts
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class AlertsApi:
|
class AlertsApi:
|
||||||
@ -41,7 +41,7 @@ class AlertsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-alerts"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/Error.md
|
docs/Error.md
|
||||||
docs/Link.md
|
docs/Link.md
|
||||||
|
|||||||
@ -15,7 +15,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.bgp_monitors.models
|
import thousandeyes_sdk.bgp_monitors.models
|
||||||
|
|
||||||
@ -26,7 +27,6 @@ from thousandeyes_sdk.bgp_monitors.models.monitors import Monitors
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class ListBGPMonitorsApi:
|
class ListBGPMonitorsApi:
|
||||||
@ -39,7 +39,7 @@ class ListBGPMonitorsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-bgp-monitors"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +0,0 @@
|
|||||||
# thousandeyes-sdk-core
|
|
||||||
|
|
||||||
This package provides core functionality for interacting with the ThousandEyes API and should be installed before using any of the published SDKs.
|
|
||||||
@ -1,82 +0,0 @@
|
|||||||
[project]
|
|
||||||
name = "thousandeyes-sdk-core"
|
|
||||||
readme = "README.md"
|
|
||||||
dynamic = ["version"]
|
|
||||||
authors = [
|
|
||||||
{ name = "ThousandEyes API Team", email = "api-team@thousandeyes.com" }
|
|
||||||
]
|
|
||||||
description = "ThousandEyes SDK Core"
|
|
||||||
license = { file = "LICENSE" }
|
|
||||||
dependencies = [
|
|
||||||
"urllib3 >= 1.25.3",
|
|
||||||
"python-dateutil >=2.8.2",
|
|
||||||
"pydantic >=2",
|
|
||||||
"typing-extensions >=4.7.1",
|
|
||||||
]
|
|
||||||
|
|
||||||
[tool.setuptools.packages.find]
|
|
||||||
where = ["src/"]
|
|
||||||
include = ["thousandeyes_sdk.core"]
|
|
||||||
|
|
||||||
[tool.setuptools.dynamic]
|
|
||||||
version = {attr = "thousandeyes_sdk.core.__version__"}
|
|
||||||
|
|
||||||
[project.optional-dependencies]
|
|
||||||
test = [
|
|
||||||
"pytest~=7.1.3",
|
|
||||||
"pytest-cov>=2.8.1",
|
|
||||||
"pytest-randomly>=3.12.0",
|
|
||||||
"mypy>=1.4.1",
|
|
||||||
"types-python-dateutil>=2.8.19",
|
|
||||||
]
|
|
||||||
dev = [
|
|
||||||
"flake8>=4.0.0",
|
|
||||||
"mypy>=1.4.1",
|
|
||||||
"types-python-dateutil>=2.8.19",
|
|
||||||
]
|
|
||||||
|
|
||||||
[build-system]
|
|
||||||
requires = ["setuptools"]
|
|
||||||
build-backend = "setuptools.build_meta"
|
|
||||||
|
|
||||||
[tool.pylint.'MESSAGES CONTROL']
|
|
||||||
extension-pkg-whitelist = "pydantic"
|
|
||||||
|
|
||||||
[tool.mypy]
|
|
||||||
files = [
|
|
||||||
"src",
|
|
||||||
#"test", # auto-generated tests
|
|
||||||
#"tests", # hand-written tests
|
|
||||||
]
|
|
||||||
namespace_packages = true
|
|
||||||
# TODO: enable "strict" once all these individual checks are passing
|
|
||||||
# strict = true
|
|
||||||
|
|
||||||
# List from: https://mypy.readthedocs.io/en/stable/existing_code.html#introduce-stricter-options
|
|
||||||
warn_unused_configs = true
|
|
||||||
warn_redundant_casts = true
|
|
||||||
warn_unused_ignores = true
|
|
||||||
|
|
||||||
## Getting these passing should be easy
|
|
||||||
strict_equality = true
|
|
||||||
strict_concatenate = true
|
|
||||||
|
|
||||||
## Strongly recommend enabling this one as soon as you can
|
|
||||||
check_untyped_defs = true
|
|
||||||
|
|
||||||
## These shouldn't be too much additional work, but may be tricky to
|
|
||||||
## get passing if you use a lot of untyped libraries
|
|
||||||
disallow_subclassing_any = true
|
|
||||||
disallow_untyped_decorators = true
|
|
||||||
disallow_any_generics = true
|
|
||||||
|
|
||||||
### These next few are various gradations of forcing use of type annotations
|
|
||||||
#disallow_untyped_calls = true
|
|
||||||
#disallow_incomplete_defs = true
|
|
||||||
#disallow_untyped_defs = true
|
|
||||||
#
|
|
||||||
### This one isn't too hard to get passing, but return on investment is lower
|
|
||||||
#no_implicit_reexport = true
|
|
||||||
#
|
|
||||||
### This one can be tricky to get passing if you use a lot of untyped libraries
|
|
||||||
#warn_return_any = true
|
|
||||||
@ -1,25 +0,0 @@
|
|||||||
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
from . import exceptions
|
|
||||||
from .api_client import ApiClient
|
|
||||||
from .api_response import ApiResponse
|
|
||||||
from .configuration import Configuration
|
|
||||||
from .version import Version
|
|
||||||
|
|
||||||
import os.path
|
|
||||||
|
|
||||||
__version__ = "1.0.0"
|
|
||||||
@ -1,766 +0,0 @@
|
|||||||
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
import datetime
|
|
||||||
import json
|
|
||||||
import mimetypes
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import tempfile
|
|
||||||
from enum import Enum
|
|
||||||
from typing import Tuple, Optional, List, Dict, Union
|
|
||||||
from urllib.parse import quote
|
|
||||||
|
|
||||||
from dateutil.parser import parse
|
|
||||||
from pydantic import SecretStr
|
|
||||||
from thousandeyes_sdk.core import rest
|
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse, T as ApiResponseT
|
|
||||||
from thousandeyes_sdk.core.configuration import Configuration
|
|
||||||
from thousandeyes_sdk.core.exceptions import (
|
|
||||||
ApiValueError,
|
|
||||||
ApiException
|
|
||||||
)
|
|
||||||
|
|
||||||
RequestSerialized = Tuple[str, str, Dict[str, str], Optional[str], List[str]]
|
|
||||||
|
|
||||||
|
|
||||||
class ApiClient:
|
|
||||||
"""Generic API client for OpenAPI client library builds.
|
|
||||||
|
|
||||||
OpenAPI generic API client. This client handles the client-
|
|
||||||
server communication, and is invariant across implementations. Specifics of
|
|
||||||
the methods and models for each application are generated from the OpenAPI
|
|
||||||
templates.
|
|
||||||
|
|
||||||
:param configuration: .Configuration object for this client
|
|
||||||
:param header_name: a header to pass when making calls to the API.
|
|
||||||
:param header_value: a header value to pass when making calls to
|
|
||||||
the API.
|
|
||||||
:param cookie: a cookie to include in the header when making calls
|
|
||||||
to the API
|
|
||||||
"""
|
|
||||||
|
|
||||||
PRIMITIVE_TYPES = (float, bool, bytes, str, int)
|
|
||||||
NATIVE_TYPES_MAPPING = {
|
|
||||||
'int': int,
|
|
||||||
'long': int, # TODO remove as only py3 is supported?
|
|
||||||
'float': float,
|
|
||||||
'str': str,
|
|
||||||
'bool': bool,
|
|
||||||
'date': datetime.date,
|
|
||||||
'datetime': datetime.datetime,
|
|
||||||
'object': object,
|
|
||||||
}
|
|
||||||
_pool = None
|
|
||||||
|
|
||||||
def __init__(
|
|
||||||
self,
|
|
||||||
configuration=None,
|
|
||||||
header_name=None,
|
|
||||||
header_value=None,
|
|
||||||
cookie=None
|
|
||||||
) -> None:
|
|
||||||
# use default configuration if none is provided
|
|
||||||
if configuration is None:
|
|
||||||
configuration = Configuration.get_default()
|
|
||||||
self.configuration = configuration
|
|
||||||
|
|
||||||
self.rest_client = rest.RESTClientObject(configuration)
|
|
||||||
self.default_headers = {}
|
|
||||||
if header_name is not None:
|
|
||||||
self.default_headers[header_name] = header_value
|
|
||||||
self.cookie = cookie
|
|
||||||
self.client_side_validation = configuration.client_side_validation
|
|
||||||
|
|
||||||
def __enter__(self):
|
|
||||||
return self
|
|
||||||
|
|
||||||
def __exit__(self, exc_type, exc_value, traceback):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@property
|
|
||||||
def user_agent(self):
|
|
||||||
"""User agent for this API client"""
|
|
||||||
return self.default_headers['User-Agent']
|
|
||||||
|
|
||||||
@user_agent.setter
|
|
||||||
def user_agent(self, value):
|
|
||||||
self.default_headers['User-Agent'] = value
|
|
||||||
|
|
||||||
def set_default_header(self, header_name, header_value):
|
|
||||||
self.default_headers[header_name] = header_value
|
|
||||||
|
|
||||||
_default = None
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_default(cls):
|
|
||||||
"""Return new instance of ApiClient.
|
|
||||||
|
|
||||||
This method returns newly created, based on default constructor,
|
|
||||||
object of ApiClient class or returns a copy of default
|
|
||||||
ApiClient.
|
|
||||||
|
|
||||||
:return: The ApiClient object.
|
|
||||||
"""
|
|
||||||
if cls._default is None:
|
|
||||||
cls._default = ApiClient()
|
|
||||||
return cls._default
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def set_default(cls, default):
|
|
||||||
"""Set default instance of ApiClient.
|
|
||||||
|
|
||||||
It stores default ApiClient.
|
|
||||||
|
|
||||||
:param default: object of ApiClient.
|
|
||||||
"""
|
|
||||||
cls._default = default
|
|
||||||
|
|
||||||
def param_serialize(
|
|
||||||
self,
|
|
||||||
method,
|
|
||||||
resource_path,
|
|
||||||
path_params=None,
|
|
||||||
query_params=None,
|
|
||||||
header_params=None,
|
|
||||||
body=None,
|
|
||||||
post_params=None,
|
|
||||||
files=None, auth_settings=None,
|
|
||||||
collection_formats=None,
|
|
||||||
_host=None,
|
|
||||||
_request_auth=None
|
|
||||||
) -> RequestSerialized:
|
|
||||||
|
|
||||||
"""Builds the HTTP request params needed by the request.
|
|
||||||
:param method: Method to call.
|
|
||||||
:param resource_path: Path to method endpoint.
|
|
||||||
:param path_params: Path parameters in the url.
|
|
||||||
:param query_params: Query parameters in the url.
|
|
||||||
:param header_params: Header parameters to be
|
|
||||||
placed in the request header.
|
|
||||||
:param body: Request body.
|
|
||||||
:param post_params dict: Request post form parameters,
|
|
||||||
for `application/x-www-form-urlencoded`, `multipart/form-data`.
|
|
||||||
:param auth_settings list: Auth Settings names for the request.
|
|
||||||
:param files dict: key -> filename, value -> filepath,
|
|
||||||
for `multipart/form-data`.
|
|
||||||
:param collection_formats: dict of collection formats for path, query,
|
|
||||||
header, and post parameters.
|
|
||||||
:param _request_auth: set to override the auth_settings for an a single
|
|
||||||
request; this effectively ignores the authentication
|
|
||||||
in the spec for a single request.
|
|
||||||
:return: tuple of form (path, http_method, query_params, header_params,
|
|
||||||
body, post_params, files)
|
|
||||||
"""
|
|
||||||
|
|
||||||
config = self.configuration
|
|
||||||
|
|
||||||
# header parameters
|
|
||||||
header_params = header_params or {}
|
|
||||||
header_params.update(self.default_headers)
|
|
||||||
if self.cookie:
|
|
||||||
header_params['Cookie'] = self.cookie
|
|
||||||
if header_params:
|
|
||||||
header_params = self.sanitize_for_serialization(header_params)
|
|
||||||
header_params = dict(
|
|
||||||
self.parameters_to_tuples(header_params, collection_formats)
|
|
||||||
)
|
|
||||||
|
|
||||||
# path parameters
|
|
||||||
if path_params:
|
|
||||||
path_params = self.sanitize_for_serialization(path_params)
|
|
||||||
path_params = self.parameters_to_tuples(
|
|
||||||
path_params,
|
|
||||||
collection_formats
|
|
||||||
)
|
|
||||||
for k, v in path_params:
|
|
||||||
# specified safe chars, encode everything
|
|
||||||
resource_path = resource_path.replace(
|
|
||||||
'{%s}' % k,
|
|
||||||
quote(str(v), safe=config.safe_chars_for_path_param)
|
|
||||||
)
|
|
||||||
|
|
||||||
# post parameters
|
|
||||||
if post_params or files:
|
|
||||||
post_params = post_params if post_params else []
|
|
||||||
post_params = self.sanitize_for_serialization(post_params)
|
|
||||||
post_params = self.parameters_to_tuples(
|
|
||||||
post_params,
|
|
||||||
collection_formats
|
|
||||||
)
|
|
||||||
if files:
|
|
||||||
post_params.extend(self.files_parameters(files))
|
|
||||||
|
|
||||||
# auth setting
|
|
||||||
self.update_params_for_auth(
|
|
||||||
header_params,
|
|
||||||
query_params,
|
|
||||||
auth_settings,
|
|
||||||
resource_path,
|
|
||||||
method,
|
|
||||||
body,
|
|
||||||
request_auth=_request_auth
|
|
||||||
)
|
|
||||||
|
|
||||||
# body
|
|
||||||
if body:
|
|
||||||
body = self.sanitize_for_serialization(body)
|
|
||||||
|
|
||||||
# request url
|
|
||||||
if _host is None:
|
|
||||||
url = self.configuration.host + resource_path
|
|
||||||
else:
|
|
||||||
# use server/host defined in path or operation instead
|
|
||||||
url = _host + resource_path
|
|
||||||
|
|
||||||
# query parameters
|
|
||||||
if query_params:
|
|
||||||
query_params = self.sanitize_for_serialization(query_params)
|
|
||||||
url_query = self.parameters_to_url_query(
|
|
||||||
query_params,
|
|
||||||
collection_formats
|
|
||||||
)
|
|
||||||
url += "?" + url_query
|
|
||||||
|
|
||||||
return method, url, header_params, body, post_params
|
|
||||||
|
|
||||||
def call_api(
|
|
||||||
self,
|
|
||||||
method,
|
|
||||||
url,
|
|
||||||
header_params=None,
|
|
||||||
body=None,
|
|
||||||
post_params=None,
|
|
||||||
_request_timeout=None
|
|
||||||
) -> rest.RESTResponse:
|
|
||||||
"""Makes the HTTP request (synchronous)
|
|
||||||
:param method: Method to call.
|
|
||||||
:param url: Path to method endpoint.
|
|
||||||
:param header_params: Header parameters to be
|
|
||||||
placed in the request header.
|
|
||||||
:param body: Request body.
|
|
||||||
:param post_params dict: Request post form parameters,
|
|
||||||
for `application/x-www-form-urlencoded`, `multipart/form-data`.
|
|
||||||
:param _request_timeout: timeout setting for this request.
|
|
||||||
:return: RESTResponse
|
|
||||||
"""
|
|
||||||
|
|
||||||
try:
|
|
||||||
# perform request and return response
|
|
||||||
response_data = self.rest_client.request(
|
|
||||||
method, url,
|
|
||||||
headers=header_params,
|
|
||||||
body=body, post_params=post_params,
|
|
||||||
_request_timeout=_request_timeout
|
|
||||||
)
|
|
||||||
|
|
||||||
except ApiException as e:
|
|
||||||
raise e
|
|
||||||
|
|
||||||
return response_data
|
|
||||||
|
|
||||||
def response_deserialize(
|
|
||||||
self,
|
|
||||||
response_data: rest.RESTResponse,
|
|
||||||
response_types_map: Optional[Dict[str, ApiResponseT]] = None,
|
|
||||||
models: Dict = {}
|
|
||||||
) -> ApiResponse[ApiResponseT]:
|
|
||||||
"""Deserializes response into an object.
|
|
||||||
:param response_data: RESTResponse object to be deserialized.
|
|
||||||
:param response_types_map: dict of response types.
|
|
||||||
:return: ApiResponse
|
|
||||||
"""
|
|
||||||
|
|
||||||
msg = "RESTResponse.read() must be called before passing it to response_deserialize()"
|
|
||||||
assert response_data.data is not None, msg
|
|
||||||
|
|
||||||
response_type = response_types_map.get(str(response_data.status), None)
|
|
||||||
if not response_type and isinstance(response_data.status,
|
|
||||||
int) and 100 <= response_data.status <= 599:
|
|
||||||
# if not found, look for '1XX', '2XX', etc.
|
|
||||||
response_type = response_types_map.get(str(response_data.status)[0] + "XX", None)
|
|
||||||
|
|
||||||
# deserialize response data
|
|
||||||
response_text = None
|
|
||||||
return_data = None
|
|
||||||
try:
|
|
||||||
if response_type == "bytearray":
|
|
||||||
return_data = response_data.data
|
|
||||||
elif response_type == "file":
|
|
||||||
return_data = self.__deserialize_file(response_data)
|
|
||||||
elif response_type is not None:
|
|
||||||
match = None
|
|
||||||
content_type = response_data.getheader('content-type')
|
|
||||||
if content_type is not None:
|
|
||||||
match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
|
|
||||||
encoding = match.group(1) if match else "utf-8"
|
|
||||||
response_text = response_data.data.decode(encoding)
|
|
||||||
if response_type in ["bytearray", "str"]:
|
|
||||||
return_data = self.__deserialize_primitive(response_text, response_type)
|
|
||||||
else:
|
|
||||||
return_data = self.deserialize(response_text, response_type, models)
|
|
||||||
finally:
|
|
||||||
if not 200 <= response_data.status <= 299:
|
|
||||||
raise ApiException.from_response(
|
|
||||||
http_resp=response_data,
|
|
||||||
body=response_text,
|
|
||||||
data=return_data,
|
|
||||||
)
|
|
||||||
|
|
||||||
return ApiResponse(
|
|
||||||
status_code=response_data.status,
|
|
||||||
data=return_data,
|
|
||||||
headers=response_data.getheaders(),
|
|
||||||
raw_data=response_data.data
|
|
||||||
)
|
|
||||||
|
|
||||||
def sanitize_for_serialization(self, obj):
|
|
||||||
"""Builds a JSON POST object.
|
|
||||||
|
|
||||||
If obj is None, return None.
|
|
||||||
If obj is SecretStr, return obj.get_secret_value()
|
|
||||||
If obj is str, int, long, float, bool, return directly.
|
|
||||||
If obj is datetime.datetime, datetime.date
|
|
||||||
convert to string in iso8601 format.
|
|
||||||
If obj is list, sanitize each element in the list.
|
|
||||||
If obj is dict, return the dict.
|
|
||||||
If obj is OpenAPI model, return the properties dict.
|
|
||||||
|
|
||||||
:param obj: The data to serialize.
|
|
||||||
:return: The serialized form of data.
|
|
||||||
"""
|
|
||||||
if obj is None:
|
|
||||||
return None
|
|
||||||
elif isinstance(obj, Enum):
|
|
||||||
return obj.value
|
|
||||||
elif isinstance(obj, SecretStr):
|
|
||||||
return obj.get_secret_value()
|
|
||||||
elif isinstance(obj, self.PRIMITIVE_TYPES):
|
|
||||||
return obj
|
|
||||||
elif isinstance(obj, list):
|
|
||||||
return [
|
|
||||||
self.sanitize_for_serialization(sub_obj) for sub_obj in obj
|
|
||||||
]
|
|
||||||
elif isinstance(obj, tuple):
|
|
||||||
return tuple(
|
|
||||||
self.sanitize_for_serialization(sub_obj) for sub_obj in obj
|
|
||||||
)
|
|
||||||
elif isinstance(obj, (datetime.datetime, datetime.date)):
|
|
||||||
return obj.isoformat()
|
|
||||||
|
|
||||||
elif isinstance(obj, dict):
|
|
||||||
obj_dict = obj
|
|
||||||
else:
|
|
||||||
# Convert model obj to dict except
|
|
||||||
# attributes `openapi_types`, `attribute_map`
|
|
||||||
# and attributes which value is not None.
|
|
||||||
# Convert attribute name to json key in
|
|
||||||
# model definition for request.
|
|
||||||
if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')):
|
|
||||||
obj_dict = obj.to_dict()
|
|
||||||
else:
|
|
||||||
obj_dict = obj.__dict__
|
|
||||||
|
|
||||||
return {
|
|
||||||
key: self.sanitize_for_serialization(val)
|
|
||||||
for key, val in obj_dict.items()
|
|
||||||
}
|
|
||||||
|
|
||||||
def deserialize(self, response_text, response_type, models):
|
|
||||||
"""Deserializes response into an object.
|
|
||||||
|
|
||||||
:param response: RESTResponse object to be deserialized.
|
|
||||||
:param response_type: class literal for
|
|
||||||
deserialized object, or string of class name.
|
|
||||||
:param models: Object containing the model classes
|
|
||||||
|
|
||||||
:return: deserialized object.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# fetch data from response object
|
|
||||||
try:
|
|
||||||
data = json.loads(response_text)
|
|
||||||
except ValueError:
|
|
||||||
data = response_text
|
|
||||||
|
|
||||||
return self.__deserialize(data, response_type, models)
|
|
||||||
|
|
||||||
def __deserialize(self, data, klass, models):
|
|
||||||
"""Deserializes dict, list, str into an object.
|
|
||||||
|
|
||||||
:param data: dict, list or str.
|
|
||||||
:param klass: class literal, or string of class name.
|
|
||||||
:param models: object containing the model classes to deserialise into
|
|
||||||
|
|
||||||
:return: object.
|
|
||||||
"""
|
|
||||||
if data is None:
|
|
||||||
return None
|
|
||||||
|
|
||||||
if isinstance(klass, str):
|
|
||||||
if klass.startswith('List['):
|
|
||||||
m = re.match(r'List\[(.*)]', klass)
|
|
||||||
assert m is not None, "Malformed List type definition"
|
|
||||||
sub_kls = m.group(1)
|
|
||||||
return [self.__deserialize(sub_data, sub_kls, models)
|
|
||||||
for sub_data in data]
|
|
||||||
|
|
||||||
if klass.startswith('Dict['):
|
|
||||||
m = re.match(r'Dict\[([^,]*), (.*)]', klass)
|
|
||||||
assert m is not None, "Malformed Dict type definition"
|
|
||||||
sub_kls = m.group(2)
|
|
||||||
return {k: self.__deserialize(v, sub_kls, models)
|
|
||||||
for k, v in data.items()}
|
|
||||||
|
|
||||||
# convert str to class
|
|
||||||
if klass in self.NATIVE_TYPES_MAPPING:
|
|
||||||
klass = self.NATIVE_TYPES_MAPPING[klass]
|
|
||||||
else:
|
|
||||||
klass = getattr(models, klass)
|
|
||||||
|
|
||||||
if klass in self.PRIMITIVE_TYPES:
|
|
||||||
return self.__deserialize_primitive(data, klass)
|
|
||||||
elif klass == object:
|
|
||||||
return self.__deserialize_object(data)
|
|
||||||
elif klass == datetime.date:
|
|
||||||
return self.__deserialize_date(data)
|
|
||||||
elif klass == datetime.datetime:
|
|
||||||
return self.__deserialize_datetime(data)
|
|
||||||
elif issubclass(klass, Enum):
|
|
||||||
return self.__deserialize_enum(data, klass)
|
|
||||||
else:
|
|
||||||
return self.__deserialize_model(data, klass)
|
|
||||||
|
|
||||||
def parameters_to_tuples(self, params, collection_formats):
|
|
||||||
"""Get parameters as list of tuples, formatting collections.
|
|
||||||
|
|
||||||
:param params: Parameters as dict or list of two-tuples
|
|
||||||
:param dict collection_formats: Parameter collection formats
|
|
||||||
:return: Parameters as list of tuples, collections formatted
|
|
||||||
"""
|
|
||||||
new_params: List[Tuple[str, str]] = []
|
|
||||||
if collection_formats is None:
|
|
||||||
collection_formats = {}
|
|
||||||
for k, v in params.items() if isinstance(params, dict) else params:
|
|
||||||
if k in collection_formats:
|
|
||||||
collection_format = collection_formats[k]
|
|
||||||
if collection_format == 'multi':
|
|
||||||
new_params.extend((k, value) for value in v)
|
|
||||||
else:
|
|
||||||
if collection_format == 'ssv':
|
|
||||||
delimiter = ' '
|
|
||||||
elif collection_format == 'tsv':
|
|
||||||
delimiter = '\t'
|
|
||||||
elif collection_format == 'pipes':
|
|
||||||
delimiter = '|'
|
|
||||||
else: # csv is the default
|
|
||||||
delimiter = ','
|
|
||||||
new_params.append(
|
|
||||||
(k, delimiter.join(str(value) for value in v)))
|
|
||||||
else:
|
|
||||||
new_params.append((k, v))
|
|
||||||
return new_params
|
|
||||||
|
|
||||||
def parameters_to_url_query(self, params, collection_formats):
|
|
||||||
"""Get parameters as list of tuples, formatting collections.
|
|
||||||
|
|
||||||
:param params: Parameters as dict or list of two-tuples
|
|
||||||
:param dict collection_formats: Parameter collection formats
|
|
||||||
:return: URL query string (e.g. a=Hello%20World&b=123)
|
|
||||||
"""
|
|
||||||
new_params: List[Tuple[str, str]] = []
|
|
||||||
if collection_formats is None:
|
|
||||||
collection_formats = {}
|
|
||||||
for k, v in params.items() if isinstance(params, dict) else params:
|
|
||||||
if isinstance(v, bool):
|
|
||||||
v = str(v).lower()
|
|
||||||
if isinstance(v, (int, float)):
|
|
||||||
v = str(v)
|
|
||||||
if isinstance(v, dict):
|
|
||||||
v = json.dumps(v)
|
|
||||||
|
|
||||||
if k in collection_formats:
|
|
||||||
collection_format = collection_formats[k]
|
|
||||||
if collection_format == 'multi':
|
|
||||||
new_params.extend((k, str(value)) for value in v)
|
|
||||||
else:
|
|
||||||
if collection_format == 'ssv':
|
|
||||||
delimiter = ' '
|
|
||||||
elif collection_format == 'tsv':
|
|
||||||
delimiter = '\t'
|
|
||||||
elif collection_format == 'pipes':
|
|
||||||
delimiter = '|'
|
|
||||||
else: # csv is the default
|
|
||||||
delimiter = ','
|
|
||||||
new_params.append(
|
|
||||||
(k, delimiter.join(quote(str(value)) for value in v))
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
new_params.append((k, quote(str(v))))
|
|
||||||
|
|
||||||
return "&".join(["=".join(map(str, item)) for item in new_params])
|
|
||||||
|
|
||||||
def files_parameters(self, files: Dict[str, Union[str, bytes]]):
|
|
||||||
"""Builds form parameters.
|
|
||||||
|
|
||||||
:param files: File parameters.
|
|
||||||
:return: Form parameters with files.
|
|
||||||
"""
|
|
||||||
params = []
|
|
||||||
for k, v in files.items():
|
|
||||||
if isinstance(v, str):
|
|
||||||
with open(v, 'rb') as f:
|
|
||||||
filename = os.path.basename(f.name)
|
|
||||||
filedata = f.read()
|
|
||||||
elif isinstance(v, bytes):
|
|
||||||
filename = k
|
|
||||||
filedata = v
|
|
||||||
else:
|
|
||||||
raise ValueError("Unsupported file value")
|
|
||||||
mimetype = (
|
|
||||||
mimetypes.guess_type(filename)[0]
|
|
||||||
or 'application/octet-stream'
|
|
||||||
)
|
|
||||||
params.append(
|
|
||||||
tuple([k, tuple([filename, filedata, mimetype])])
|
|
||||||
)
|
|
||||||
return params
|
|
||||||
|
|
||||||
def select_header_accept(self, accepts: List[str]) -> Optional[str]:
|
|
||||||
"""Returns `Accept` based on an array of accepts provided.
|
|
||||||
|
|
||||||
:param accepts: List of headers.
|
|
||||||
:return: Accept (e.g. application/json).
|
|
||||||
"""
|
|
||||||
if not accepts:
|
|
||||||
return None
|
|
||||||
|
|
||||||
for accept in accepts:
|
|
||||||
if re.search('json', accept, re.IGNORECASE):
|
|
||||||
return accept
|
|
||||||
|
|
||||||
return accepts[0]
|
|
||||||
|
|
||||||
def select_header_content_type(self, content_types):
|
|
||||||
"""Returns `Content-Type` based on an array of content_types provided.
|
|
||||||
|
|
||||||
:param content_types: List of content-types.
|
|
||||||
:return: Content-Type (e.g. application/json).
|
|
||||||
"""
|
|
||||||
if not content_types:
|
|
||||||
return None
|
|
||||||
|
|
||||||
for content_type in content_types:
|
|
||||||
if re.search('json', content_type, re.IGNORECASE):
|
|
||||||
return content_type
|
|
||||||
|
|
||||||
return content_types[0]
|
|
||||||
|
|
||||||
def update_params_for_auth(
|
|
||||||
self,
|
|
||||||
headers,
|
|
||||||
queries,
|
|
||||||
auth_settings,
|
|
||||||
resource_path,
|
|
||||||
method,
|
|
||||||
body,
|
|
||||||
request_auth=None
|
|
||||||
) -> None:
|
|
||||||
"""Updates header and query params based on authentication setting.
|
|
||||||
|
|
||||||
:param headers: Header parameters dict to be updated.
|
|
||||||
:param queries: Query parameters tuple list to be updated.
|
|
||||||
:param auth_settings: Authentication setting identifiers list.
|
|
||||||
:resource_path: A string representation of the HTTP request resource path.
|
|
||||||
:method: A string representation of the HTTP request method.
|
|
||||||
:body: A object representing the body of the HTTP request.
|
|
||||||
The object type is the return value of sanitize_for_serialization().
|
|
||||||
:param request_auth: if set, the provided settings will
|
|
||||||
override the token in the configuration.
|
|
||||||
"""
|
|
||||||
if not auth_settings:
|
|
||||||
return
|
|
||||||
|
|
||||||
if request_auth:
|
|
||||||
self._apply_auth_params(
|
|
||||||
headers,
|
|
||||||
queries,
|
|
||||||
resource_path,
|
|
||||||
method,
|
|
||||||
body,
|
|
||||||
request_auth
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
for auth in auth_settings:
|
|
||||||
auth_setting = self.configuration.auth_settings().get(auth)
|
|
||||||
if auth_setting:
|
|
||||||
self._apply_auth_params(
|
|
||||||
headers,
|
|
||||||
queries,
|
|
||||||
resource_path,
|
|
||||||
method,
|
|
||||||
body,
|
|
||||||
auth_setting
|
|
||||||
)
|
|
||||||
|
|
||||||
def _apply_auth_params(
|
|
||||||
self,
|
|
||||||
headers,
|
|
||||||
queries,
|
|
||||||
resource_path,
|
|
||||||
method,
|
|
||||||
body,
|
|
||||||
auth_setting
|
|
||||||
) -> None:
|
|
||||||
"""Updates the request parameters based on a single auth_setting
|
|
||||||
|
|
||||||
:param headers: Header parameters dict to be updated.
|
|
||||||
:param queries: Query parameters tuple list to be updated.
|
|
||||||
:resource_path: A string representation of the HTTP request resource path.
|
|
||||||
:method: A string representation of the HTTP request method.
|
|
||||||
:body: A object representing the body of the HTTP request.
|
|
||||||
The object type is the return value of sanitize_for_serialization().
|
|
||||||
:param auth_setting: auth settings for the endpoint
|
|
||||||
"""
|
|
||||||
if auth_setting['in'] == 'cookie':
|
|
||||||
headers['Cookie'] = auth_setting['value']
|
|
||||||
elif auth_setting['in'] == 'header':
|
|
||||||
if auth_setting['type'] != 'http-signature':
|
|
||||||
headers[auth_setting['key']] = auth_setting['value']
|
|
||||||
elif auth_setting['in'] == 'query':
|
|
||||||
queries.append((auth_setting['key'], auth_setting['value']))
|
|
||||||
else:
|
|
||||||
raise ApiValueError(
|
|
||||||
'Authentication token must be in `query` or `header`'
|
|
||||||
)
|
|
||||||
|
|
||||||
def __deserialize_file(self, response):
|
|
||||||
"""Deserializes body to file
|
|
||||||
|
|
||||||
Saves response body into a file in a temporary folder,
|
|
||||||
using the filename from the `Content-Disposition` header if provided.
|
|
||||||
|
|
||||||
handle file downloading
|
|
||||||
save response body into a tmp file and return the instance
|
|
||||||
|
|
||||||
:param response: RESTResponse.
|
|
||||||
:return: file path.
|
|
||||||
"""
|
|
||||||
fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path)
|
|
||||||
os.close(fd)
|
|
||||||
os.remove(path)
|
|
||||||
|
|
||||||
content_disposition = response.getheader("Content-Disposition")
|
|
||||||
if content_disposition:
|
|
||||||
m = re.search(
|
|
||||||
r'filename=[\'"]?([^\'"\s]+)[\'"]?',
|
|
||||||
content_disposition
|
|
||||||
)
|
|
||||||
assert m is not None, "Unexpected 'content-disposition' header value"
|
|
||||||
filename = m.group(1)
|
|
||||||
path = os.path.join(os.path.dirname(path), filename)
|
|
||||||
|
|
||||||
with open(path, "wb") as f:
|
|
||||||
f.write(response.data)
|
|
||||||
|
|
||||||
return path
|
|
||||||
|
|
||||||
def __deserialize_primitive(self, data, klass):
|
|
||||||
"""Deserializes string to primitive type.
|
|
||||||
|
|
||||||
:param data: str.
|
|
||||||
:param klass: class literal.
|
|
||||||
|
|
||||||
:return: int, long, float, str, bool.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
return klass(data)
|
|
||||||
except UnicodeEncodeError:
|
|
||||||
return str(data)
|
|
||||||
except TypeError:
|
|
||||||
return data
|
|
||||||
|
|
||||||
def __deserialize_object(self, value):
|
|
||||||
"""Return an original value.
|
|
||||||
|
|
||||||
:return: object.
|
|
||||||
"""
|
|
||||||
return value
|
|
||||||
|
|
||||||
def __deserialize_date(self, string):
|
|
||||||
"""Deserializes string to date.
|
|
||||||
|
|
||||||
:param string: str.
|
|
||||||
:return: date.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
return parse(string).date()
|
|
||||||
except ImportError:
|
|
||||||
return string
|
|
||||||
except ValueError:
|
|
||||||
raise rest.ApiException(
|
|
||||||
status=0,
|
|
||||||
reason="Failed to parse `{0}` as date object".format(string)
|
|
||||||
)
|
|
||||||
|
|
||||||
def __deserialize_datetime(self, string):
|
|
||||||
"""Deserializes string to datetime.
|
|
||||||
|
|
||||||
The string should be in iso8601 datetime format.
|
|
||||||
|
|
||||||
:param string: str.
|
|
||||||
:return: datetime.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
return parse(string)
|
|
||||||
except ImportError:
|
|
||||||
return string
|
|
||||||
except ValueError:
|
|
||||||
raise rest.ApiException(
|
|
||||||
status=0,
|
|
||||||
reason=(
|
|
||||||
"Failed to parse `{0}` as datetime object"
|
|
||||||
.format(string)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
def __deserialize_enum(self, data, klass):
|
|
||||||
"""Deserializes primitive type to enum.
|
|
||||||
|
|
||||||
:param data: primitive type.
|
|
||||||
:param klass: class literal.
|
|
||||||
:return: enum value.
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
return klass(data)
|
|
||||||
except ValueError:
|
|
||||||
raise rest.ApiException(
|
|
||||||
status=0,
|
|
||||||
reason=(
|
|
||||||
"Failed to parse `{0}` as `{1}`"
|
|
||||||
.format(data, klass)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
def __deserialize_model(self, data, klass):
|
|
||||||
"""Deserializes list or dict to model.
|
|
||||||
|
|
||||||
:param data: dict, list.
|
|
||||||
:param klass: class literal.
|
|
||||||
:return: model object.
|
|
||||||
"""
|
|
||||||
|
|
||||||
return klass.from_dict(data)
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
"""API response object."""
|
|
||||||
|
|
||||||
from __future__ import annotations
|
|
||||||
from typing import Optional, Generic, Mapping, TypeVar
|
|
||||||
from pydantic import Field, StrictInt, StrictBytes, BaseModel
|
|
||||||
|
|
||||||
T = TypeVar("T")
|
|
||||||
|
|
||||||
class ApiResponse(BaseModel, Generic[T]):
|
|
||||||
"""
|
|
||||||
API response object
|
|
||||||
"""
|
|
||||||
|
|
||||||
status_code: StrictInt = Field(description="HTTP status code")
|
|
||||||
headers: Optional[Mapping[str, str]] = Field(None, description="HTTP headers")
|
|
||||||
data: T = Field(description="Deserialized data given the data type")
|
|
||||||
raw_data: StrictBytes = Field(description="Raw data (HTTP response body)")
|
|
||||||
|
|
||||||
model_config = {
|
|
||||||
"arbitrary_types_allowed": True
|
|
||||||
}
|
|
||||||
@ -1,452 +0,0 @@
|
|||||||
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
import copy
|
|
||||||
import http.client as httplib
|
|
||||||
import logging
|
|
||||||
import multiprocessing
|
|
||||||
import sys
|
|
||||||
from logging import FileHandler
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
import urllib3
|
|
||||||
|
|
||||||
from thousandeyes_sdk.core.thousandeyes_retry import ThousandEyesRetry
|
|
||||||
|
|
||||||
JSON_SCHEMA_VALIDATION_KEYWORDS = {
|
|
||||||
'multipleOf', 'maximum', 'exclusiveMaximum',
|
|
||||||
'minimum', 'exclusiveMinimum', 'maxLength',
|
|
||||||
'minLength', 'pattern', 'maxItems', 'minItems'
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class Configuration:
|
|
||||||
"""This class contains various settings of the API client.
|
|
||||||
|
|
||||||
:param host: Base url.
|
|
||||||
:param api_key: Dict to store API key(s).
|
|
||||||
Each entry in the dict specifies an API key.
|
|
||||||
The dict key is the name of the security scheme in the OAS specification.
|
|
||||||
The dict value is the API key secret.
|
|
||||||
:param api_key_prefix: Dict to store API prefix (e.g. Bearer).
|
|
||||||
The dict key is the name of the security scheme in the OAS specification.
|
|
||||||
The dict value is an API key prefix when generating the auth data.
|
|
||||||
:param username: Username for HTTP basic authentication.
|
|
||||||
:param password: Password for HTTP basic authentication.
|
|
||||||
:param access_token: Access token.
|
|
||||||
:param server_index: Index to servers configuration.
|
|
||||||
:param server_variables: Mapping with string values to replace variables in
|
|
||||||
templated server configuration. The validation of enums is performed for
|
|
||||||
variables with defined enum values before.
|
|
||||||
:param server_operation_index: Mapping from operation ID to an index to server
|
|
||||||
configuration.
|
|
||||||
:param server_operation_variables: Mapping from operation ID to a mapping with
|
|
||||||
string values to replace variables in templated server configuration.
|
|
||||||
The validation of enums is performed for variables with defined enum
|
|
||||||
values before.
|
|
||||||
:param ssl_ca_cert: str - the path to a file of concatenated CA certificates
|
|
||||||
in PEM format.
|
|
||||||
|
|
||||||
:Example:
|
|
||||||
"""
|
|
||||||
|
|
||||||
_default = None
|
|
||||||
|
|
||||||
def __init__(self, host=None,
|
|
||||||
api_key=None, api_key_prefix=None,
|
|
||||||
username=None, password=None,
|
|
||||||
access_token=None,
|
|
||||||
server_index=None, server_variables=None,
|
|
||||||
server_operation_index=None, server_operation_variables=None,
|
|
||||||
ssl_ca_cert=None,
|
|
||||||
retries=None
|
|
||||||
) -> None:
|
|
||||||
"""Constructor
|
|
||||||
"""
|
|
||||||
self._base_path = "https://api.thousandeyes.com" if host is None else host
|
|
||||||
"""Default Base url
|
|
||||||
"""
|
|
||||||
self.server_index = 0 if server_index is None and host is None else server_index
|
|
||||||
self.server_operation_index = server_operation_index or {}
|
|
||||||
"""Default server index
|
|
||||||
"""
|
|
||||||
self.server_variables = server_variables or {}
|
|
||||||
self.server_operation_variables = server_operation_variables or {}
|
|
||||||
"""Default server variables
|
|
||||||
"""
|
|
||||||
self.temp_folder_path = None
|
|
||||||
"""Temp file folder for downloading files
|
|
||||||
"""
|
|
||||||
# Authentication Settings
|
|
||||||
self.api_key = {}
|
|
||||||
if api_key:
|
|
||||||
self.api_key = api_key
|
|
||||||
"""dict to store API key(s)
|
|
||||||
"""
|
|
||||||
self.api_key_prefix = {}
|
|
||||||
if api_key_prefix:
|
|
||||||
self.api_key_prefix = api_key_prefix
|
|
||||||
"""dict to store API prefix (e.g. Bearer)
|
|
||||||
"""
|
|
||||||
self.refresh_api_key_hook = None
|
|
||||||
"""function hook to refresh API key if expired
|
|
||||||
"""
|
|
||||||
self.username = username
|
|
||||||
"""Username for HTTP basic authentication
|
|
||||||
"""
|
|
||||||
self.password = password
|
|
||||||
"""Password for HTTP basic authentication
|
|
||||||
"""
|
|
||||||
self.access_token = access_token
|
|
||||||
"""Access token
|
|
||||||
"""
|
|
||||||
self.logger = {}
|
|
||||||
"""Logging Settings
|
|
||||||
"""
|
|
||||||
self.logger["package_logger"] = logging.getLogger("admin")
|
|
||||||
self.logger["urllib3_logger"] = logging.getLogger("urllib3")
|
|
||||||
self.logger_format = '%(asctime)s %(levelname)s %(message)s'
|
|
||||||
"""Log format
|
|
||||||
"""
|
|
||||||
self.logger_stream_handler = None
|
|
||||||
"""Log stream handler
|
|
||||||
"""
|
|
||||||
self.logger_file_handler: Optional[FileHandler] = None
|
|
||||||
"""Log file handler
|
|
||||||
"""
|
|
||||||
self.logger_file = None
|
|
||||||
"""Debug file location
|
|
||||||
"""
|
|
||||||
self.debug = False
|
|
||||||
"""Debug switch
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.verify_ssl = True
|
|
||||||
"""SSL/TLS verification
|
|
||||||
Set this to false to skip verifying SSL certificate when calling API
|
|
||||||
from https server.
|
|
||||||
"""
|
|
||||||
self.ssl_ca_cert = ssl_ca_cert
|
|
||||||
"""Set this to customize the certificate file to verify the peer.
|
|
||||||
"""
|
|
||||||
self.cert_file = None
|
|
||||||
"""client certificate file
|
|
||||||
"""
|
|
||||||
self.key_file = None
|
|
||||||
"""client key file
|
|
||||||
"""
|
|
||||||
self.assert_hostname = None
|
|
||||||
"""Set this to True/False to enable/disable SSL hostname verification.
|
|
||||||
"""
|
|
||||||
self.tls_server_name = None
|
|
||||||
"""SSL/TLS Server Name Indication (SNI)
|
|
||||||
Set this to the SNI value expected by the server.
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.connection_pool_maxsize = multiprocessing.cpu_count() * 5
|
|
||||||
"""urllib3 connection pool's maximum number of connections saved
|
|
||||||
per pool. urllib3 uses 1 connection as default value, but this is
|
|
||||||
not the best value when you are making a lot of possibly parallel
|
|
||||||
requests to the same host, which is often the case here.
|
|
||||||
cpu_count * 5 is used as default value to increase performance.
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.proxy: Optional[str] = None
|
|
||||||
"""Proxy URL
|
|
||||||
"""
|
|
||||||
self.proxy_headers = None
|
|
||||||
"""Proxy headers
|
|
||||||
"""
|
|
||||||
self.safe_chars_for_path_param = ''
|
|
||||||
"""Safe chars for path_param
|
|
||||||
"""
|
|
||||||
self.retries = ThousandEyesRetry()
|
|
||||||
if retries:
|
|
||||||
self.retries = retries
|
|
||||||
"""Adding retries to override urllib3 default value 3
|
|
||||||
"""
|
|
||||||
# Enable client side validation
|
|
||||||
self.client_side_validation = True
|
|
||||||
|
|
||||||
self.socket_options = None
|
|
||||||
"""Options to pass down to the underlying urllib3 socket
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.datetime_format = "%Y-%m-%dT%H:%M:%S.%f%z"
|
|
||||||
"""datetime format
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.date_format = "%Y-%m-%d"
|
|
||||||
"""date format
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __deepcopy__(self, memo):
|
|
||||||
cls = self.__class__
|
|
||||||
result = cls.__new__(cls)
|
|
||||||
memo[id(self)] = result
|
|
||||||
for k, v in self.__dict__.items():
|
|
||||||
if k not in ('logger', 'logger_file_handler'):
|
|
||||||
setattr(result, k, copy.deepcopy(v, memo))
|
|
||||||
# shallow copy of loggers
|
|
||||||
result.logger = copy.copy(self.logger)
|
|
||||||
# use setters to configure loggers
|
|
||||||
result.logger_file = self.logger_file
|
|
||||||
result.debug = self.debug
|
|
||||||
return result
|
|
||||||
|
|
||||||
def __setattr__(self, name, value):
|
|
||||||
object.__setattr__(self, name, value)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def set_default(cls, default):
|
|
||||||
"""Set default instance of configuration.
|
|
||||||
|
|
||||||
It stores default configuration, which can be
|
|
||||||
returned by get_default_copy method.
|
|
||||||
|
|
||||||
:param default: object of Configuration
|
|
||||||
"""
|
|
||||||
cls._default = default
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_default_copy(cls):
|
|
||||||
"""Deprecated. Please use `get_default` instead.
|
|
||||||
|
|
||||||
Deprecated. Please use `get_default` instead.
|
|
||||||
|
|
||||||
:return: The configuration object.
|
|
||||||
"""
|
|
||||||
return cls.get_default()
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_default(cls):
|
|
||||||
"""Return the default configuration.
|
|
||||||
|
|
||||||
This method returns newly created, based on default constructor,
|
|
||||||
object of Configuration class or returns a copy of default
|
|
||||||
configuration.
|
|
||||||
|
|
||||||
:return: The configuration object.
|
|
||||||
"""
|
|
||||||
if cls._default is None:
|
|
||||||
cls._default = Configuration()
|
|
||||||
return cls._default
|
|
||||||
|
|
||||||
@property
|
|
||||||
def logger_file(self):
|
|
||||||
"""The logger file.
|
|
||||||
|
|
||||||
If the logger_file is None, then add stream handler and remove file
|
|
||||||
handler. Otherwise, add file handler and remove stream handler.
|
|
||||||
|
|
||||||
:param value: The logger_file path.
|
|
||||||
:type: str
|
|
||||||
"""
|
|
||||||
return self.__logger_file
|
|
||||||
|
|
||||||
@logger_file.setter
|
|
||||||
def logger_file(self, value):
|
|
||||||
"""The logger file.
|
|
||||||
|
|
||||||
If the logger_file is None, then add stream handler and remove file
|
|
||||||
handler. Otherwise, add file handler and remove stream handler.
|
|
||||||
|
|
||||||
:param value: The logger_file path.
|
|
||||||
:type: str
|
|
||||||
"""
|
|
||||||
self.__logger_file = value
|
|
||||||
if self.__logger_file:
|
|
||||||
# If set logging file,
|
|
||||||
# then add file handler and remove stream handler.
|
|
||||||
self.logger_file_handler = logging.FileHandler(self.__logger_file)
|
|
||||||
self.logger_file_handler.setFormatter(self.logger_formatter)
|
|
||||||
for _, logger in self.logger.items():
|
|
||||||
logger.addHandler(self.logger_file_handler)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def debug(self):
|
|
||||||
"""Debug status
|
|
||||||
|
|
||||||
:param value: The debug status, True or False.
|
|
||||||
:type: bool
|
|
||||||
"""
|
|
||||||
return self.__debug
|
|
||||||
|
|
||||||
@debug.setter
|
|
||||||
def debug(self, value):
|
|
||||||
"""Debug status
|
|
||||||
|
|
||||||
:param value: The debug status, True or False.
|
|
||||||
:type: bool
|
|
||||||
"""
|
|
||||||
self.__debug = value
|
|
||||||
if self.__debug:
|
|
||||||
# if debug status is True, turn on debug logging
|
|
||||||
for _, logger in self.logger.items():
|
|
||||||
logger.setLevel(logging.DEBUG)
|
|
||||||
# turn on httplib debug
|
|
||||||
httplib.HTTPConnection.debuglevel = 1
|
|
||||||
else:
|
|
||||||
# if debug status is False, turn off debug logging,
|
|
||||||
# setting log level to default `logging.WARNING`
|
|
||||||
for _, logger in self.logger.items():
|
|
||||||
logger.setLevel(logging.WARNING)
|
|
||||||
# turn off httplib debug
|
|
||||||
httplib.HTTPConnection.debuglevel = 0
|
|
||||||
|
|
||||||
@property
|
|
||||||
def logger_format(self):
|
|
||||||
"""The logger format.
|
|
||||||
|
|
||||||
The logger_formatter will be updated when sets logger_format.
|
|
||||||
|
|
||||||
:param value: The format string.
|
|
||||||
:type: str
|
|
||||||
"""
|
|
||||||
return self.__logger_format
|
|
||||||
|
|
||||||
@logger_format.setter
|
|
||||||
def logger_format(self, value):
|
|
||||||
"""The logger format.
|
|
||||||
|
|
||||||
The logger_formatter will be updated when sets logger_format.
|
|
||||||
|
|
||||||
:param value: The format string.
|
|
||||||
:type: str
|
|
||||||
"""
|
|
||||||
self.__logger_format = value
|
|
||||||
self.logger_formatter = logging.Formatter(self.__logger_format)
|
|
||||||
|
|
||||||
def get_api_key_with_prefix(self, identifier, alias=None):
|
|
||||||
"""Gets API key (with prefix if set).
|
|
||||||
|
|
||||||
:param identifier: The identifier of apiKey.
|
|
||||||
:param alias: The alternative identifier of apiKey.
|
|
||||||
:return: The token for api key authentication.
|
|
||||||
"""
|
|
||||||
if self.refresh_api_key_hook is not None:
|
|
||||||
self.refresh_api_key_hook(self)
|
|
||||||
key = self.api_key.get(identifier, self.api_key.get(alias) if alias is not None else None)
|
|
||||||
if key:
|
|
||||||
prefix = self.api_key_prefix.get(identifier)
|
|
||||||
if prefix:
|
|
||||||
return "%s %s" % (prefix, key)
|
|
||||||
else:
|
|
||||||
return key
|
|
||||||
|
|
||||||
def get_basic_auth_token(self):
|
|
||||||
"""Gets HTTP basic authentication header (string).
|
|
||||||
|
|
||||||
:return: The token for basic HTTP authentication.
|
|
||||||
"""
|
|
||||||
username = ""
|
|
||||||
if self.username is not None:
|
|
||||||
username = self.username
|
|
||||||
password = ""
|
|
||||||
if self.password is not None:
|
|
||||||
password = self.password
|
|
||||||
return urllib3.util.make_headers(
|
|
||||||
basic_auth=username + ':' + password
|
|
||||||
).get('authorization')
|
|
||||||
|
|
||||||
def auth_settings(self):
|
|
||||||
"""Gets Auth Settings dict for api client.
|
|
||||||
|
|
||||||
:return: The Auth Settings information dict.
|
|
||||||
"""
|
|
||||||
auth = {}
|
|
||||||
if self.access_token is not None:
|
|
||||||
auth['BearerAuth'] = {
|
|
||||||
'type': 'bearer',
|
|
||||||
'in': 'header',
|
|
||||||
'key': 'Authorization',
|
|
||||||
'value': 'Bearer ' + self.access_token
|
|
||||||
}
|
|
||||||
return auth
|
|
||||||
|
|
||||||
def to_debug_report(self):
|
|
||||||
"""Gets the essential information for debugging.
|
|
||||||
|
|
||||||
:return: The report for debugging.
|
|
||||||
"""
|
|
||||||
return "Python SDK Debug Report:\n" \
|
|
||||||
"OS: {env}\n" \
|
|
||||||
"Python Version: {pyversion}\n" \
|
|
||||||
"Version of the API: 7.0.0\n" \
|
|
||||||
"SDK Package Version: 1.0.0". \
|
|
||||||
format(env=sys.platform, pyversion=sys.version)
|
|
||||||
|
|
||||||
def get_host_settings(self):
|
|
||||||
"""Gets an array of host settings
|
|
||||||
|
|
||||||
:return: An array of host settings
|
|
||||||
"""
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
'url': "https://api.thousandeyes.com",
|
|
||||||
'description': "ThousandEyes API production URL",
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
def get_host_from_settings(self, index, variables=None, servers=None):
|
|
||||||
"""Gets host URL based on the index and variables
|
|
||||||
:param index: array index of the host settings
|
|
||||||
:param variables: hash of variable and the corresponding value
|
|
||||||
:param servers: an array of host settings or None
|
|
||||||
:return: URL based on host settings
|
|
||||||
"""
|
|
||||||
if index is None:
|
|
||||||
return self._base_path
|
|
||||||
|
|
||||||
variables = {} if variables is None else variables
|
|
||||||
servers = self.get_host_settings() if servers is None else servers
|
|
||||||
|
|
||||||
try:
|
|
||||||
server = servers[index]
|
|
||||||
except IndexError:
|
|
||||||
raise ValueError(
|
|
||||||
"Invalid index {0} when selecting the host settings. "
|
|
||||||
"Must be less than {1}".format(index, len(servers)))
|
|
||||||
|
|
||||||
url = server['url']
|
|
||||||
|
|
||||||
# go through variables and replace placeholders
|
|
||||||
for variable_name, variable in server.get('variables', {}).items():
|
|
||||||
used_value = variables.get(
|
|
||||||
variable_name, variable['default_value'])
|
|
||||||
|
|
||||||
if 'enum_values' in variable \
|
|
||||||
and used_value not in variable['enum_values']:
|
|
||||||
raise ValueError(
|
|
||||||
"The variable `{0}` in the host URL has invalid value "
|
|
||||||
"{1}. Must be {2}.".format(
|
|
||||||
variable_name, variables[variable_name],
|
|
||||||
variable['enum_values']))
|
|
||||||
|
|
||||||
url = url.replace("{" + variable_name + "}", used_value)
|
|
||||||
|
|
||||||
return url
|
|
||||||
|
|
||||||
@property
|
|
||||||
def host(self):
|
|
||||||
"""Return generated host."""
|
|
||||||
return self.get_host_from_settings(self.server_index, variables=self.server_variables)
|
|
||||||
|
|
||||||
@host.setter
|
|
||||||
def host(self, value):
|
|
||||||
"""Fix base path."""
|
|
||||||
self._base_path = value
|
|
||||||
self.server_index = None
|
|
||||||
@ -1,211 +0,0 @@
|
|||||||
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
from typing import Any, Optional
|
|
||||||
|
|
||||||
from typing_extensions import Self
|
|
||||||
|
|
||||||
|
|
||||||
class OpenApiException(Exception):
|
|
||||||
"""The base exception class for all OpenAPIExceptions"""
|
|
||||||
|
|
||||||
|
|
||||||
class ApiTypeError(OpenApiException, TypeError):
|
|
||||||
def __init__(self, msg, path_to_item=None, valid_classes=None,
|
|
||||||
key_type=None) -> None:
|
|
||||||
""" Raises an exception for TypeErrors
|
|
||||||
|
|
||||||
Args:
|
|
||||||
msg (str): the exception message
|
|
||||||
|
|
||||||
Keyword Args:
|
|
||||||
path_to_item (list): a list of keys an indices to get to the
|
|
||||||
current_item
|
|
||||||
None if unset
|
|
||||||
valid_classes (tuple): the primitive classes that current item
|
|
||||||
should be an instance of
|
|
||||||
None if unset
|
|
||||||
key_type (bool): False if our value is a value in a dict
|
|
||||||
True if it is a key in a dict
|
|
||||||
False if our item is an item in a list
|
|
||||||
None if unset
|
|
||||||
"""
|
|
||||||
self.path_to_item = path_to_item
|
|
||||||
self.valid_classes = valid_classes
|
|
||||||
self.key_type = key_type
|
|
||||||
full_msg = msg
|
|
||||||
if path_to_item:
|
|
||||||
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
|
||||||
super(ApiTypeError, self).__init__(full_msg)
|
|
||||||
|
|
||||||
|
|
||||||
class ApiValueError(OpenApiException, ValueError):
|
|
||||||
def __init__(self, msg, path_to_item=None) -> None:
|
|
||||||
"""
|
|
||||||
Args:
|
|
||||||
msg (str): the exception message
|
|
||||||
|
|
||||||
Keyword Args:
|
|
||||||
path_to_item (list) the path to the exception in the
|
|
||||||
received_data dict. None if unset
|
|
||||||
"""
|
|
||||||
|
|
||||||
self.path_to_item = path_to_item
|
|
||||||
full_msg = msg
|
|
||||||
if path_to_item:
|
|
||||||
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
|
||||||
super(ApiValueError, self).__init__(full_msg)
|
|
||||||
|
|
||||||
|
|
||||||
class ApiAttributeError(OpenApiException, AttributeError):
|
|
||||||
def __init__(self, msg, path_to_item=None) -> None:
|
|
||||||
"""
|
|
||||||
Raised when an attribute reference or assignment fails.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
msg (str): the exception message
|
|
||||||
|
|
||||||
Keyword Args:
|
|
||||||
path_to_item (None/list) the path to the exception in the
|
|
||||||
received_data dict
|
|
||||||
"""
|
|
||||||
self.path_to_item = path_to_item
|
|
||||||
full_msg = msg
|
|
||||||
if path_to_item:
|
|
||||||
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
|
||||||
super(ApiAttributeError, self).__init__(full_msg)
|
|
||||||
|
|
||||||
|
|
||||||
class ApiKeyError(OpenApiException, KeyError):
|
|
||||||
def __init__(self, msg, path_to_item=None) -> None:
|
|
||||||
"""
|
|
||||||
Args:
|
|
||||||
msg (str): the exception message
|
|
||||||
|
|
||||||
Keyword Args:
|
|
||||||
path_to_item (None/list) the path to the exception in the
|
|
||||||
received_data dict
|
|
||||||
"""
|
|
||||||
self.path_to_item = path_to_item
|
|
||||||
full_msg = msg
|
|
||||||
if path_to_item:
|
|
||||||
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
|
|
||||||
super(ApiKeyError, self).__init__(full_msg)
|
|
||||||
|
|
||||||
|
|
||||||
class ApiException(OpenApiException):
|
|
||||||
|
|
||||||
def __init__(
|
|
||||||
self,
|
|
||||||
status=None,
|
|
||||||
reason=None,
|
|
||||||
http_resp=None,
|
|
||||||
*,
|
|
||||||
body: Optional[str] = None,
|
|
||||||
data: Optional[Any] = None,
|
|
||||||
) -> None:
|
|
||||||
self.status = status
|
|
||||||
self.reason = reason
|
|
||||||
self.body = body
|
|
||||||
self.data = data
|
|
||||||
self.headers = None
|
|
||||||
|
|
||||||
if http_resp:
|
|
||||||
if self.status is None:
|
|
||||||
self.status = http_resp.status
|
|
||||||
if self.reason is None:
|
|
||||||
self.reason = http_resp.reason
|
|
||||||
if self.body is None:
|
|
||||||
try:
|
|
||||||
self.body = http_resp.data.decode('utf-8')
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
self.headers = http_resp.getheaders()
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def from_response(
|
|
||||||
cls,
|
|
||||||
*,
|
|
||||||
http_resp,
|
|
||||||
body: Optional[str],
|
|
||||||
data: Optional[Any],
|
|
||||||
) -> Self:
|
|
||||||
if http_resp.status == 400:
|
|
||||||
raise BadRequestException(http_resp=http_resp, body=body, data=data)
|
|
||||||
|
|
||||||
if http_resp.status == 401:
|
|
||||||
raise UnauthorizedException(http_resp=http_resp, body=body, data=data)
|
|
||||||
|
|
||||||
if http_resp.status == 403:
|
|
||||||
raise ForbiddenException(http_resp=http_resp, body=body, data=data)
|
|
||||||
|
|
||||||
if http_resp.status == 404:
|
|
||||||
raise NotFoundException(http_resp=http_resp, body=body, data=data)
|
|
||||||
|
|
||||||
if http_resp.status == 429:
|
|
||||||
raise TooManyRequestsException(http_resp=http_resp, body=body, data=data)
|
|
||||||
|
|
||||||
if 500 <= http_resp.status <= 599:
|
|
||||||
raise ServiceException(http_resp=http_resp, body=body, data=data)
|
|
||||||
raise ApiException(http_resp=http_resp, body=body, data=data)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
"""Custom error messages for exception"""
|
|
||||||
error_message = "({0})\n" \
|
|
||||||
"Reason: {1}\n".format(self.status, self.reason)
|
|
||||||
if self.headers:
|
|
||||||
error_message += "HTTP response headers: {0}\n".format(
|
|
||||||
self.headers)
|
|
||||||
|
|
||||||
if self.data or self.body:
|
|
||||||
error_message += "HTTP response body: {0}\n".format(self.data or self.body)
|
|
||||||
|
|
||||||
return error_message
|
|
||||||
|
|
||||||
|
|
||||||
class BadRequestException(ApiException):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class NotFoundException(ApiException):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class UnauthorizedException(ApiException):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class ForbiddenException(ApiException):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class TooManyRequestsException(ApiException):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class ServiceException(ApiException):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def render_path(path_to_item):
|
|
||||||
"""Returns a string representation of a path"""
|
|
||||||
result = ""
|
|
||||||
for pth in path_to_item:
|
|
||||||
if isinstance(pth, int):
|
|
||||||
result += "[{0}]".format(pth)
|
|
||||||
else:
|
|
||||||
result += "['{0}']".format(pth)
|
|
||||||
return result
|
|
||||||
@ -1,258 +0,0 @@
|
|||||||
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
import io
|
|
||||||
import json
|
|
||||||
import re
|
|
||||||
import ssl
|
|
||||||
|
|
||||||
import urllib3
|
|
||||||
from thousandeyes_sdk.core.exceptions import ApiException, ApiValueError
|
|
||||||
|
|
||||||
SUPPORTED_SOCKS_PROXIES = {"socks5", "socks5h", "socks4", "socks4a"}
|
|
||||||
RESTResponseType = urllib3.HTTPResponse
|
|
||||||
|
|
||||||
|
|
||||||
def is_socks_proxy_url(url):
|
|
||||||
if url is None:
|
|
||||||
return False
|
|
||||||
split_section = url.split("://")
|
|
||||||
if len(split_section) < 2:
|
|
||||||
return False
|
|
||||||
else:
|
|
||||||
return split_section[0].lower() in SUPPORTED_SOCKS_PROXIES
|
|
||||||
|
|
||||||
|
|
||||||
class RESTResponse(io.IOBase):
|
|
||||||
|
|
||||||
def __init__(self, resp) -> None:
|
|
||||||
self.response = resp
|
|
||||||
self.status = resp.status
|
|
||||||
self.reason = resp.reason
|
|
||||||
self.data = None
|
|
||||||
|
|
||||||
def read(self):
|
|
||||||
if self.data is None:
|
|
||||||
self.data = self.response.data
|
|
||||||
return self.data
|
|
||||||
|
|
||||||
def getheaders(self):
|
|
||||||
"""Returns a dictionary of the response headers."""
|
|
||||||
return self.response.headers
|
|
||||||
|
|
||||||
def getheader(self, name, default=None):
|
|
||||||
"""Returns a given response header."""
|
|
||||||
return self.response.headers.get(name, default)
|
|
||||||
|
|
||||||
|
|
||||||
class RESTClientObject:
|
|
||||||
|
|
||||||
def __init__(self, configuration) -> None:
|
|
||||||
# urllib3.PoolManager will pass all kw parameters to connectionpool
|
|
||||||
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501
|
|
||||||
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501
|
|
||||||
# Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501
|
|
||||||
|
|
||||||
# cert_reqs
|
|
||||||
if configuration.verify_ssl:
|
|
||||||
cert_reqs = ssl.CERT_REQUIRED
|
|
||||||
else:
|
|
||||||
cert_reqs = ssl.CERT_NONE
|
|
||||||
|
|
||||||
pool_args = {
|
|
||||||
"cert_reqs": cert_reqs,
|
|
||||||
"ca_certs": configuration.ssl_ca_cert,
|
|
||||||
"cert_file": configuration.cert_file,
|
|
||||||
"key_file": configuration.key_file,
|
|
||||||
}
|
|
||||||
if configuration.assert_hostname is not None:
|
|
||||||
pool_args['assert_hostname'] = (
|
|
||||||
configuration.assert_hostname
|
|
||||||
)
|
|
||||||
|
|
||||||
if configuration.retries is not None:
|
|
||||||
pool_args['retries'] = configuration.retries
|
|
||||||
|
|
||||||
if configuration.tls_server_name:
|
|
||||||
pool_args['server_hostname'] = configuration.tls_server_name
|
|
||||||
|
|
||||||
if configuration.socket_options is not None:
|
|
||||||
pool_args['socket_options'] = configuration.socket_options
|
|
||||||
|
|
||||||
if configuration.connection_pool_maxsize is not None:
|
|
||||||
pool_args['maxsize'] = configuration.connection_pool_maxsize
|
|
||||||
|
|
||||||
# https pool manager
|
|
||||||
self.pool_manager: urllib3.PoolManager
|
|
||||||
|
|
||||||
if configuration.proxy:
|
|
||||||
if is_socks_proxy_url(configuration.proxy):
|
|
||||||
from urllib3.contrib.socks import SOCKSProxyManager
|
|
||||||
pool_args["proxy_url"] = configuration.proxy
|
|
||||||
pool_args["headers"] = configuration.proxy_headers
|
|
||||||
self.pool_manager = SOCKSProxyManager(**pool_args)
|
|
||||||
else:
|
|
||||||
pool_args["proxy_url"] = configuration.proxy
|
|
||||||
pool_args["proxy_headers"] = configuration.proxy_headers
|
|
||||||
self.pool_manager = urllib3.ProxyManager(**pool_args)
|
|
||||||
else:
|
|
||||||
self.pool_manager = urllib3.PoolManager(**pool_args)
|
|
||||||
|
|
||||||
def request(
|
|
||||||
self,
|
|
||||||
method,
|
|
||||||
url,
|
|
||||||
headers=None,
|
|
||||||
body=None,
|
|
||||||
post_params=None,
|
|
||||||
_request_timeout=None
|
|
||||||
):
|
|
||||||
"""Perform requests.
|
|
||||||
|
|
||||||
:param method: http request method
|
|
||||||
:param url: http request url
|
|
||||||
:param headers: http request headers
|
|
||||||
:param body: request json body, for `application/json`
|
|
||||||
:param post_params: request post parameters,
|
|
||||||
`application/x-www-form-urlencoded`
|
|
||||||
and `multipart/form-data`
|
|
||||||
:param _request_timeout: timeout setting for this request. If one
|
|
||||||
number provided, it will be total request
|
|
||||||
timeout. It can also be a pair (tuple) of
|
|
||||||
(connection, read) timeouts.
|
|
||||||
"""
|
|
||||||
method = method.upper()
|
|
||||||
assert method in [
|
|
||||||
'GET',
|
|
||||||
'HEAD',
|
|
||||||
'DELETE',
|
|
||||||
'POST',
|
|
||||||
'PUT',
|
|
||||||
'PATCH',
|
|
||||||
'OPTIONS'
|
|
||||||
]
|
|
||||||
|
|
||||||
if post_params and body:
|
|
||||||
raise ApiValueError(
|
|
||||||
"body parameter cannot be used with post_params parameter."
|
|
||||||
)
|
|
||||||
|
|
||||||
post_params = post_params or {}
|
|
||||||
headers = headers or {}
|
|
||||||
|
|
||||||
timeout = None
|
|
||||||
if _request_timeout:
|
|
||||||
if isinstance(_request_timeout, (int, float)):
|
|
||||||
timeout = urllib3.Timeout(total=_request_timeout)
|
|
||||||
elif (
|
|
||||||
isinstance(_request_timeout, tuple)
|
|
||||||
and len(_request_timeout) == 2
|
|
||||||
):
|
|
||||||
timeout = urllib3.Timeout(
|
|
||||||
connect=_request_timeout[0],
|
|
||||||
read=_request_timeout[1]
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
|
||||||
# For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
|
|
||||||
if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
|
|
||||||
|
|
||||||
# no content type provided or payload is json
|
|
||||||
content_type = headers.get('Content-Type')
|
|
||||||
if (
|
|
||||||
not content_type
|
|
||||||
or re.search('json', content_type, re.IGNORECASE)
|
|
||||||
):
|
|
||||||
request_body = None
|
|
||||||
if body is not None:
|
|
||||||
request_body = json.dumps(body)
|
|
||||||
r = self.pool_manager.request(
|
|
||||||
method,
|
|
||||||
url,
|
|
||||||
body=request_body,
|
|
||||||
timeout=timeout,
|
|
||||||
headers=headers,
|
|
||||||
preload_content=False
|
|
||||||
)
|
|
||||||
elif content_type == 'application/x-www-form-urlencoded':
|
|
||||||
r = self.pool_manager.request(
|
|
||||||
method,
|
|
||||||
url,
|
|
||||||
fields=post_params,
|
|
||||||
encode_multipart=False,
|
|
||||||
timeout=timeout,
|
|
||||||
headers=headers,
|
|
||||||
preload_content=False
|
|
||||||
)
|
|
||||||
elif content_type == 'multipart/form-data':
|
|
||||||
# must del headers['Content-Type'], or the correct
|
|
||||||
# Content-Type which generated by urllib3 will be
|
|
||||||
# overwritten.
|
|
||||||
del headers['Content-Type']
|
|
||||||
# Ensures that dict objects are serialized
|
|
||||||
post_params = [(a, json.dumps(b)) if isinstance(b, dict) else (a, b) for a, b in
|
|
||||||
post_params]
|
|
||||||
r = self.pool_manager.request(
|
|
||||||
method,
|
|
||||||
url,
|
|
||||||
fields=post_params,
|
|
||||||
encode_multipart=True,
|
|
||||||
timeout=timeout,
|
|
||||||
headers=headers,
|
|
||||||
preload_content=False
|
|
||||||
)
|
|
||||||
# Pass a `string` parameter directly in the body to support
|
|
||||||
# other content types than JSON when `body` argument is
|
|
||||||
# provided in serialized form.
|
|
||||||
elif isinstance(body, str) or isinstance(body, bytes):
|
|
||||||
r = self.pool_manager.request(
|
|
||||||
method,
|
|
||||||
url,
|
|
||||||
body=body,
|
|
||||||
timeout=timeout,
|
|
||||||
headers=headers,
|
|
||||||
preload_content=False
|
|
||||||
)
|
|
||||||
elif headers['Content-Type'] == 'text/plain' and isinstance(body, bool):
|
|
||||||
request_body = "true" if body else "false"
|
|
||||||
r = self.pool_manager.request(
|
|
||||||
method,
|
|
||||||
url,
|
|
||||||
body=request_body,
|
|
||||||
preload_content=False,
|
|
||||||
timeout=timeout,
|
|
||||||
headers=headers)
|
|
||||||
else:
|
|
||||||
# Cannot generate the request from given parameters
|
|
||||||
msg = """Cannot prepare a request message for provided
|
|
||||||
arguments. Please check that your arguments match
|
|
||||||
declared content type."""
|
|
||||||
raise ApiException(status=0, reason=msg)
|
|
||||||
# For `GET`, `HEAD`
|
|
||||||
else:
|
|
||||||
r = self.pool_manager.request(
|
|
||||||
method,
|
|
||||||
url,
|
|
||||||
fields={},
|
|
||||||
timeout=timeout,
|
|
||||||
headers=headers,
|
|
||||||
preload_content=False
|
|
||||||
)
|
|
||||||
except urllib3.exceptions.SSLError as e:
|
|
||||||
msg = "\n".join([type(e).__name__, str(e)])
|
|
||||||
raise ApiException(status=0, reason=msg)
|
|
||||||
|
|
||||||
return RESTResponse(r)
|
|
||||||
@ -1,80 +0,0 @@
|
|||||||
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
import re
|
|
||||||
import time
|
|
||||||
from typing import Collection, Optional, Union
|
|
||||||
|
|
||||||
from urllib3 import BaseHTTPResponse
|
|
||||||
from urllib3.util.retry import RequestHistory, Retry
|
|
||||||
|
|
||||||
|
|
||||||
class ThousandEyesRetry(Retry):
|
|
||||||
RATE_LIMIT_RESET_HEADERS = {
|
|
||||||
"x-organization-rate-limit-reset",
|
|
||||||
"x-instant-test-rate-limit-reset"
|
|
||||||
}
|
|
||||||
|
|
||||||
RESET_HEADER_PATTERN = re.compile(r"^\s*[0-9]+\s*$")
|
|
||||||
HTTP_TOO_MANY_REQUESTS = 429
|
|
||||||
|
|
||||||
def __init__(
|
|
||||||
self,
|
|
||||||
total: Union[bool, int, None] = 3,
|
|
||||||
connect: Optional[int] = None,
|
|
||||||
read: Optional[int] = None,
|
|
||||||
redirect: Union[bool, int, None] = None,
|
|
||||||
status: Optional[int] = 1,
|
|
||||||
other: Optional[int] = None,
|
|
||||||
allowed_methods: Optional[Collection[str]] = Retry.DEFAULT_ALLOWED_METHODS,
|
|
||||||
status_forcelist=None,
|
|
||||||
backoff_factor: float = 0,
|
|
||||||
backoff_max: float = Retry.DEFAULT_BACKOFF_MAX,
|
|
||||||
raise_on_redirect: bool = False,
|
|
||||||
raise_on_status: bool = False,
|
|
||||||
history: Optional[tuple[RequestHistory, ...]] = None,
|
|
||||||
respect_retry_after_header: bool = True,
|
|
||||||
remove_headers_on_redirect: Collection[str] = Retry.DEFAULT_REMOVE_HEADERS_ON_REDIRECT,
|
|
||||||
backoff_jitter: float = 0.0) -> None:
|
|
||||||
super().__init__(total, connect, read, redirect, status, other, allowed_methods,
|
|
||||||
status_forcelist, backoff_factor, backoff_max, raise_on_redirect,
|
|
||||||
raise_on_status, history, respect_retry_after_header,
|
|
||||||
remove_headers_on_redirect, backoff_jitter)
|
|
||||||
|
|
||||||
def is_retry(self, method: str, status_code: int, has_retry_after: bool = False) -> bool:
|
|
||||||
# Always retry on 429, regardless of method or status_forcelist
|
|
||||||
return (status_code == self.HTTP_TOO_MANY_REQUESTS or
|
|
||||||
super().is_retry(method, status_code, has_retry_after))
|
|
||||||
|
|
||||||
def get_retry_after(self, response: BaseHTTPResponse) -> Optional[float]:
|
|
||||||
retry_after: Optional[float] = super().get_retry_after(response)
|
|
||||||
|
|
||||||
if retry_after:
|
|
||||||
return retry_after
|
|
||||||
|
|
||||||
for header in self.RATE_LIMIT_RESET_HEADERS:
|
|
||||||
value = self._parse_reset_header(response.headers.get(header))
|
|
||||||
if value and (retry_after is None or value > retry_after):
|
|
||||||
retry_after = value
|
|
||||||
|
|
||||||
return retry_after
|
|
||||||
|
|
||||||
def _parse_reset_header(self, value: Optional[str]) -> Optional[float]:
|
|
||||||
if value is None or not self.RESET_HEADER_PATTERN.match(value):
|
|
||||||
return None
|
|
||||||
|
|
||||||
seconds: float = int(value) - time.time()
|
|
||||||
return max(seconds, 0)
|
|
||||||
@ -1,22 +0,0 @@
|
|||||||
# Copyright 2024 Cisco Systems, Inc. and its affiliates
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
import thousandeyes_sdk.core
|
|
||||||
|
|
||||||
class Version:
|
|
||||||
@staticmethod
|
|
||||||
def get() -> str:
|
|
||||||
return thousandeyes_sdk.core.__version__
|
|
||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/Credential.md
|
docs/Credential.md
|
||||||
docs/CredentialRequest.md
|
docs/CredentialRequest.md
|
||||||
|
|||||||
@ -19,7 +19,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.credentials.models
|
import thousandeyes_sdk.credentials.models
|
||||||
|
|
||||||
@ -29,7 +30,6 @@ from thousandeyes_sdk.credentials.models.credentials import Credentials
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class CredentialsApi:
|
class CredentialsApi:
|
||||||
@ -42,7 +42,7 @@ class CredentialsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-credentials"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/ActiveWithin.md
|
docs/ActiveWithin.md
|
||||||
docs/AgentStatusDatasource.md
|
docs/AgentStatusDatasource.md
|
||||||
|
|||||||
@ -9,7 +9,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.dashboards.models
|
import thousandeyes_sdk.dashboards.models
|
||||||
|
|
||||||
@ -31,7 +32,6 @@ from thousandeyes_sdk.dashboards.models.update_snapshot_expiration_date_api_requ
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class DashboardSnapshotsApi:
|
class DashboardSnapshotsApi:
|
||||||
@ -44,7 +44,7 @@ class DashboardSnapshotsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-dashboards"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.dashboards.models
|
import thousandeyes_sdk.dashboards.models
|
||||||
|
|
||||||
@ -30,7 +31,6 @@ from thousandeyes_sdk.dashboards.models.dashboard_order import DashboardOrder
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class DashboardsApi:
|
class DashboardsApi:
|
||||||
@ -43,7 +43,7 @@ class DashboardsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-dashboards"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.dashboards.models
|
import thousandeyes_sdk.dashboards.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.dashboards.models.api_context_filters_response import ApiC
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class DashboardsFiltersApi:
|
class DashboardsFiltersApi:
|
||||||
@ -41,7 +41,7 @@ class DashboardsFiltersApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-dashboards"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/AddressProfile.md
|
docs/AddressProfile.md
|
||||||
docs/AddressType.md
|
docs/AddressType.md
|
||||||
|
|||||||
@ -11,7 +11,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_agents.models
|
import thousandeyes_sdk.endpoint_agents.models
|
||||||
|
|
||||||
@ -26,7 +27,6 @@ from thousandeyes_sdk.endpoint_agents.models.connection_string import Connection
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class AdministrativeEndpointsApi:
|
class AdministrativeEndpointsApi:
|
||||||
@ -39,7 +39,7 @@ class AdministrativeEndpointsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-agents"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_agents.models
|
import thousandeyes_sdk.endpoint_agents.models
|
||||||
|
|
||||||
@ -31,7 +32,6 @@ from thousandeyes_sdk.endpoint_agents.models.list_endpoint_agents_response impor
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class ManageAgentsApi:
|
class ManageAgentsApi:
|
||||||
@ -44,7 +44,7 @@ class ManageAgentsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-agents"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_agents.models
|
import thousandeyes_sdk.endpoint_agents.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.endpoint_agents.models.bulk_agent_transfer_response import
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class TransferApi:
|
class TransferApi:
|
||||||
@ -41,7 +41,7 @@ class TransferApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-agents"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/AgentToServerInstantScheduledTestApi.md
|
docs/AgentToServerInstantScheduledTestApi.md
|
||||||
docs/AlertDirection.md
|
docs/AlertDirection.md
|
||||||
|
|||||||
@ -19,7 +19,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_instant_tests.models
|
import thousandeyes_sdk.endpoint_instant_tests.models
|
||||||
|
|
||||||
@ -27,7 +28,6 @@ from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_agent_to_server_tes
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class AgentToServerInstantScheduledTestApi:
|
class AgentToServerInstantScheduledTestApi:
|
||||||
@ -40,7 +40,7 @@ class AgentToServerInstantScheduledTestApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_instant_tests.models
|
import thousandeyes_sdk.endpoint_instant_tests.models
|
||||||
|
|
||||||
@ -27,7 +28,6 @@ from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_test im
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class HttpServerInstantScheduledTestApi:
|
class HttpServerInstantScheduledTestApi:
|
||||||
@ -40,7 +40,7 @@ class HttpServerInstantScheduledTestApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_instant_tests.models
|
import thousandeyes_sdk.endpoint_instant_tests.models
|
||||||
|
|
||||||
@ -25,7 +26,6 @@ from typing_extensions import Annotated
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class RunExistingTestApi:
|
class RunExistingTestApi:
|
||||||
@ -38,7 +38,7 @@ class RunExistingTestApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/Error.md
|
docs/Error.md
|
||||||
docs/Expand.md
|
docs/Expand.md
|
||||||
|
|||||||
@ -10,7 +10,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_labels.models
|
import thousandeyes_sdk.endpoint_labels.models
|
||||||
|
|
||||||
@ -30,7 +31,6 @@ from thousandeyes_sdk.endpoint_labels.models.labels import Labels
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class ManageLabelsApi:
|
class ManageLabelsApi:
|
||||||
@ -43,7 +43,7 @@ class ManageLabelsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-labels"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/AlertDirection.md
|
docs/AlertDirection.md
|
||||||
docs/AlertRoundsViolationMode.md
|
docs/AlertRoundsViolationMode.md
|
||||||
|
|||||||
@ -9,7 +9,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_test_results.models
|
import thousandeyes_sdk.endpoint_test_results.models
|
||||||
|
|
||||||
@ -30,7 +31,6 @@ from thousandeyes_sdk.endpoint_test_results.models.local_network_topology_result
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class LocalNetworkTestsResultsApi:
|
class LocalNetworkTestsResultsApi:
|
||||||
@ -43,7 +43,7 @@ class LocalNetworkTestsResultsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-test-results"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_test_results.models
|
import thousandeyes_sdk.endpoint_test_results.models
|
||||||
|
|
||||||
@ -30,7 +31,6 @@ from thousandeyes_sdk.endpoint_test_results.models.path_vis_dynamic_test_results
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class NetworkDynamicTestsResultsApi:
|
class NetworkDynamicTestsResultsApi:
|
||||||
@ -43,7 +43,7 @@ class NetworkDynamicTestsResultsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-test-results"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_test_results.models
|
import thousandeyes_sdk.endpoint_test_results.models
|
||||||
|
|
||||||
@ -32,7 +33,6 @@ from thousandeyes_sdk.endpoint_test_results.models.tests_data_rounds_search impo
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class NetworkScheduledTestsResultsApi:
|
class NetworkScheduledTestsResultsApi:
|
||||||
@ -45,7 +45,7 @@ class NetworkScheduledTestsResultsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-test-results"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_test_results.models
|
import thousandeyes_sdk.endpoint_test_results.models
|
||||||
|
|
||||||
@ -33,7 +34,6 @@ from thousandeyes_sdk.endpoint_test_results.models.real_user_test_page_results i
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class RealUserTestsResultsApi:
|
class RealUserTestsResultsApi:
|
||||||
@ -46,7 +46,7 @@ class RealUserTestsResultsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-test-results"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_test_results.models
|
import thousandeyes_sdk.endpoint_test_results.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.endpoint_test_results.models.http_test_results import Http
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class WebHTTPServerScheduledTestResultsApi:
|
class WebHTTPServerScheduledTestResultsApi:
|
||||||
@ -41,7 +41,7 @@ class WebHTTPServerScheduledTestResultsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-test-results"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/AlertDirection.md
|
docs/AlertDirection.md
|
||||||
docs/AlertRoundsViolationMode.md
|
docs/AlertRoundsViolationMode.md
|
||||||
|
|||||||
@ -11,7 +11,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_tests.models
|
import thousandeyes_sdk.endpoint_tests.models
|
||||||
|
|
||||||
@ -29,7 +30,6 @@ from thousandeyes_sdk.endpoint_tests.models.endpoint_dynamic_test_update import
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class DynamicTestsAgentToServerApi:
|
class DynamicTestsAgentToServerApi:
|
||||||
@ -42,7 +42,7 @@ class DynamicTestsAgentToServerApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_tests.models
|
import thousandeyes_sdk.endpoint_tests.models
|
||||||
|
|
||||||
@ -26,7 +27,6 @@ from thousandeyes_sdk.endpoint_tests.models.endpoint_tests import EndpointTests
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class ListEndpointScheduledTestsApi:
|
class ListEndpointScheduledTestsApi:
|
||||||
@ -39,7 +39,7 @@ class ListEndpointScheduledTestsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_tests.models
|
import thousandeyes_sdk.endpoint_tests.models
|
||||||
|
|
||||||
@ -29,7 +30,6 @@ from thousandeyes_sdk.endpoint_tests.models.endpoint_network_test_update import
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class ScheduledTestsAgentToServerApi:
|
class ScheduledTestsAgentToServerApi:
|
||||||
@ -42,7 +42,7 @@ class ScheduledTestsAgentToServerApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.endpoint_tests.models
|
import thousandeyes_sdk.endpoint_tests.models
|
||||||
|
|
||||||
@ -29,7 +30,6 @@ from thousandeyes_sdk.endpoint_tests.models.endpoint_http_test_update import End
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class ScheduledTestsHTTPServerApi:
|
class ScheduledTestsHTTPServerApi:
|
||||||
@ -42,7 +42,7 @@ class ScheduledTestsHTTPServerApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/APIApi.md
|
docs/APIApi.md
|
||||||
docs/Agent.md
|
docs/Agent.md
|
||||||
|
|||||||
@ -14,7 +14,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class AgentToAgentApi:
|
class AgentToAgentApi:
|
||||||
@ -41,7 +41,7 @@ class AgentToAgentApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class AgentToServerApi:
|
class AgentToServerApi:
|
||||||
@ -41,7 +41,7 @@ class AgentToServerApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class APIApi:
|
class APIApi:
|
||||||
@ -41,7 +41,7 @@ class APIApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class DNSSecurityApi:
|
class DNSSecurityApi:
|
||||||
@ -41,7 +41,7 @@ class DNSSecurityApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class DNSServerApi:
|
class DNSServerApi:
|
||||||
@ -41,7 +41,7 @@ class DNSServerApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class DNSTraceApi:
|
class DNSTraceApi:
|
||||||
@ -41,7 +41,7 @@ class DNSTraceApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.server_instant_test_request import Se
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class FTPServerApi:
|
class FTPServerApi:
|
||||||
@ -41,7 +41,7 @@ class FTPServerApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.page_load_instant_test_request import
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class HTTPPageLoadApi:
|
class HTTPPageLoadApi:
|
||||||
@ -41,7 +41,7 @@ class HTTPPageLoadApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.http_server_instant_test_request impo
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class HTTPServerApi:
|
class HTTPServerApi:
|
||||||
@ -41,7 +41,7 @@ class HTTPServerApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -25,7 +26,6 @@ from typing_extensions import Annotated
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class RunApi:
|
class RunApi:
|
||||||
@ -38,7 +38,7 @@ class RunApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.sip_server_instant_test_response impo
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class SIPServerApi:
|
class SIPServerApi:
|
||||||
@ -41,7 +41,7 @@ class SIPServerApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.voice_instant_test_request import Voi
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class VoiceApi:
|
class VoiceApi:
|
||||||
@ -41,7 +41,7 @@ class VoiceApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.instant_tests.models
|
import thousandeyes_sdk.instant_tests.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.web_transaction_instant_test_request
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class WebTransactionApi:
|
class WebTransactionApi:
|
||||||
@ -41,7 +41,7 @@ class WebTransactionApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/ApiAffectedAgent.md
|
docs/ApiAffectedAgent.md
|
||||||
docs/ApiAffectedTest.md
|
docs/ApiAffectedTest.md
|
||||||
|
|||||||
@ -20,7 +20,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.internet_insights.models
|
import thousandeyes_sdk.internet_insights.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.internet_insights.models.api_catalog_provider_response imp
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class CatalogProvidersApi:
|
class CatalogProvidersApi:
|
||||||
@ -41,7 +41,7 @@ class CatalogProvidersApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-internet-insights"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.internet_insights.models
|
import thousandeyes_sdk.internet_insights.models
|
||||||
|
|
||||||
@ -29,7 +30,6 @@ from thousandeyes_sdk.internet_insights.models.api_outages_response import ApiOu
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class OutagesAPIPublicApi:
|
class OutagesAPIPublicApi:
|
||||||
@ -42,7 +42,7 @@ class OutagesAPIPublicApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-internet-insights"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/AgentApi.md
|
docs/AgentApi.md
|
||||||
docs/AllLabelsApi.md
|
docs/AllLabelsApi.md
|
||||||
|
|||||||
@ -10,7 +10,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.labels.models
|
import thousandeyes_sdk.labels.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.labels.models.labels import Labels
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class AgentApi:
|
class AgentApi:
|
||||||
@ -41,7 +41,7 @@ class AgentApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-labels"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.labels.models
|
import thousandeyes_sdk.labels.models
|
||||||
|
|
||||||
@ -26,7 +27,6 @@ from thousandeyes_sdk.labels.models.labels import Labels
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class AllLabelsApi:
|
class AllLabelsApi:
|
||||||
@ -39,7 +39,7 @@ class AllLabelsApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-labels"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.labels.models
|
import thousandeyes_sdk.labels.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.labels.models.labels import Labels
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class DashboardApi:
|
class DashboardApi:
|
||||||
@ -41,7 +41,7 @@ class DashboardApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-labels"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.labels.models
|
import thousandeyes_sdk.labels.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.labels.models.labels import Labels
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class EndpointTestApi:
|
class EndpointTestApi:
|
||||||
@ -41,7 +41,7 @@ class EndpointTestApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-labels"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.labels.models
|
import thousandeyes_sdk.labels.models
|
||||||
|
|
||||||
@ -28,7 +29,6 @@ from thousandeyes_sdk.labels.models.labels import Labels
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class TestApi:
|
class TestApi:
|
||||||
@ -41,7 +41,7 @@ class TestApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-labels"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/AppAndSelfLinks.md
|
docs/AppAndSelfLinks.md
|
||||||
docs/CreateTestSnapshotApi.md
|
docs/CreateTestSnapshotApi.md
|
||||||
|
|||||||
@ -9,7 +9,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.snapshots.models
|
import thousandeyes_sdk.snapshots.models
|
||||||
|
|
||||||
@ -27,7 +28,6 @@ from thousandeyes_sdk.snapshots.models.snapshot_response import SnapshotResponse
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class CreateTestSnapshotApi:
|
class CreateTestSnapshotApi:
|
||||||
@ -40,7 +40,7 @@ class CreateTestSnapshotApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-snapshots"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/ApiError.md
|
docs/ApiError.md
|
||||||
docs/ApiErrorIntegrationLimits.md
|
docs/ApiErrorIntegrationLimits.md
|
||||||
|
|||||||
@ -21,7 +21,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import warnings
|
|||||||
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||||
from typing_extensions import Annotated
|
from typing_extensions import Annotated
|
||||||
|
from importlib.metadata import version
|
||||||
|
|
||||||
import thousandeyes_sdk.streaming.models
|
import thousandeyes_sdk.streaming.models
|
||||||
|
|
||||||
@ -30,7 +31,6 @@ from thousandeyes_sdk.streaming.models.stream_type import StreamType
|
|||||||
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
|
||||||
from thousandeyes_sdk.core.api_response import ApiResponse
|
from thousandeyes_sdk.core.api_response import ApiResponse
|
||||||
from thousandeyes_sdk.core.rest import RESTResponseType
|
from thousandeyes_sdk.core.rest import RESTResponseType
|
||||||
from thousandeyes_sdk.core.version import Version
|
|
||||||
|
|
||||||
|
|
||||||
class StreamingApi:
|
class StreamingApi:
|
||||||
@ -43,7 +43,7 @@ class StreamingApi:
|
|||||||
def __init__(self, api_client=None) -> None:
|
def __init__(self, api_client=None) -> None:
|
||||||
if api_client is None:
|
if api_client is None:
|
||||||
api_client = ApiClient.get_default()
|
api_client = ApiClient.get_default()
|
||||||
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get())
|
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-streaming"))
|
||||||
self.api_client = api_client
|
self.api_client = api_client
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
.openapi-generator-ignore
|
|
||||||
README.md
|
README.md
|
||||||
docs/AccessType.md
|
docs/AccessType.md
|
||||||
docs/ApiError.md
|
docs/ApiError.md
|
||||||
|
|||||||
@ -22,7 +22,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
|
|||||||
|
|
||||||
## Requirements.
|
## Requirements.
|
||||||
|
|
||||||
Python 3.7+
|
Python 3.8+
|
||||||
|
|
||||||
## Installation & Usage
|
## Installation & Usage
|
||||||
### pip install
|
### pip install
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user