latitudesh-python-sdk 1.0.0__py3-none-any.whl → 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of latitudesh-python-sdk might be problematic. Click here for more details.
- latitudesh_python_sdk/_hooks/types.py +7 -0
- latitudesh_python_sdk/_version.py +6 -4
- latitudesh_python_sdk/apikeys.py +22 -18
- latitudesh_python_sdk/basesdk.py +12 -20
- latitudesh_python_sdk/billing.py +2 -0
- latitudesh_python_sdk/events_sdk.py +86 -5
- latitudesh_python_sdk/firewalls_sdk.py +146 -9
- latitudesh_python_sdk/httpclient.py +6 -16
- latitudesh_python_sdk/ipaddresses_sdk.py +82 -5
- latitudesh_python_sdk/models/__init__.py +2597 -1071
- latitudesh_python_sdk/models/assign_server_virtual_networkop.py +2 -2
- latitudesh_python_sdk/models/{bandwidth_plan.py → bandwidth_plan_data.py} +9 -9
- latitudesh_python_sdk/models/bandwidth_plans.py +14 -3
- latitudesh_python_sdk/models/billing_usage.py +3 -0
- latitudesh_python_sdk/models/custom_tag.py +15 -0
- latitudesh_python_sdk/models/custom_tag_data.py +54 -0
- latitudesh_python_sdk/models/custom_tags.py +26 -0
- latitudesh_python_sdk/models/delete_ssh_keyop.py +16 -0
- latitudesh_python_sdk/models/delete_user_dataop.py +16 -0
- latitudesh_python_sdk/models/event_data.py +98 -0
- latitudesh_python_sdk/models/events.py +16 -1
- latitudesh_python_sdk/models/filesystem_data.py +4 -0
- latitudesh_python_sdk/models/firewall.py +15 -0
- latitudesh_python_sdk/models/firewall_assignment_data.py +50 -0
- latitudesh_python_sdk/models/firewall_assignments.py +29 -0
- latitudesh_python_sdk/models/firewall_data.py +71 -0
- latitudesh_python_sdk/models/firewall_server.py +4 -1
- latitudesh_python_sdk/models/firewalls.py +7 -7
- latitudesh_python_sdk/models/get_bandwidth_plansop.py +30 -1
- latitudesh_python_sdk/models/get_eventsop.py +29 -1
- latitudesh_python_sdk/models/get_firewall_assignmentsop.py +37 -2
- latitudesh_python_sdk/models/get_ipsop.py +30 -1
- latitudesh_python_sdk/models/get_plans_operating_systemop.py +37 -2
- latitudesh_python_sdk/models/get_projectsop.py +30 -1
- latitudesh_python_sdk/models/get_regionsop.py +42 -0
- latitudesh_python_sdk/models/get_rolesop.py +37 -2
- latitudesh_python_sdk/models/get_serversop.py +30 -1
- latitudesh_python_sdk/models/get_ssh_keyop.py +30 -0
- latitudesh_python_sdk/models/get_ssh_keysop.py +22 -0
- latitudesh_python_sdk/models/get_team_membersop.py +42 -0
- latitudesh_python_sdk/models/get_traffic_consumptionop.py +8 -4
- latitudesh_python_sdk/models/get_user_dataop.py +31 -0
- latitudesh_python_sdk/models/get_users_dataop.py +35 -0
- latitudesh_python_sdk/models/get_virtual_networks_assignmentsop.py +33 -1
- latitudesh_python_sdk/models/get_virtual_networksop.py +30 -1
- latitudesh_python_sdk/models/list_firewallsop.py +30 -1
- latitudesh_python_sdk/models/operating_system_data.py +65 -0
- latitudesh_python_sdk/models/operating_systems.py +15 -0
- latitudesh_python_sdk/models/out_of_band_connection.py +4 -4
- latitudesh_python_sdk/models/patch_user_dataop.py +69 -0
- latitudesh_python_sdk/models/post_ssh_keyop.py +58 -0
- latitudesh_python_sdk/models/post_user_dataop.py +45 -0
- latitudesh_python_sdk/models/project_include.py +3 -0
- latitudesh_python_sdk/models/put_ssh_keyop.py +80 -0
- latitudesh_python_sdk/models/role.py +11 -0
- latitudesh_python_sdk/models/server_data.py +8 -0
- latitudesh_python_sdk/models/{ssh_key.py → ssh_keys.py} +13 -2
- latitudesh_python_sdk/models/storage_plan_data.py +47 -0
- latitudesh_python_sdk/models/storage_plans.py +14 -3
- latitudesh_python_sdk/models/update_serverop.py +60 -10
- latitudesh_python_sdk/models/user_data.py +11 -0
- latitudesh_python_sdk/models/virtual_network.py +19 -1
- latitudesh_python_sdk/models/virtual_network1.py +15 -0
- latitudesh_python_sdk/models/virtual_network_assignment.py +41 -0
- latitudesh_python_sdk/models/virtual_network_assignment_data.py +68 -0
- latitudesh_python_sdk/models/virtual_network_assignments.py +5 -5
- latitudesh_python_sdk/models/virtual_network_data.py +88 -0
- latitudesh_python_sdk/models/virtual_networks.py +3 -3
- latitudesh_python_sdk/operatingsystems_sdk.py +78 -9
- latitudesh_python_sdk/plans.py +109 -30
- latitudesh_python_sdk/privatenetworks.py +185 -36
- latitudesh_python_sdk/projects_sdk.py +113 -32
- latitudesh_python_sdk/regions_sdk.py +78 -7
- latitudesh_python_sdk/roles.py +78 -7
- latitudesh_python_sdk/sdk.py +110 -73
- latitudesh_python_sdk/sdkconfiguration.py +0 -7
- latitudesh_python_sdk/servers_sdk.py +195 -50
- latitudesh_python_sdk/{sshkeys.py → sshkeys_sdk.py} +1030 -5
- latitudesh_python_sdk/storage.py +8 -0
- latitudesh_python_sdk/tags.py +30 -22
- latitudesh_python_sdk/teams_sdk.py +6 -0
- latitudesh_python_sdk/teamsmembers.py +80 -7
- latitudesh_python_sdk/traffic_sdk.py +12 -8
- latitudesh_python_sdk/userdata_sdk.py +1029 -0
- latitudesh_python_sdk/userprofile.py +6 -0
- latitudesh_python_sdk/utils/__init__.py +131 -45
- latitudesh_python_sdk/utils/datetimes.py +23 -0
- latitudesh_python_sdk/utils/forms.py +49 -28
- latitudesh_python_sdk/utils/serializers.py +32 -3
- latitudesh_python_sdk/virtualmachines.py +36 -18
- latitudesh_python_sdk/vpnsessions.py +38 -26
- {latitudesh_python_sdk-1.0.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/METADATA +58 -22
- {latitudesh_python_sdk-1.0.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/RECORD +95 -73
- {latitudesh_python_sdk-1.0.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/WHEEL +1 -1
- latitudesh_python_sdk/models/storage_plan.py +0 -36
- {latitudesh_python_sdk-1.0.0.dist-info → latitudesh_python_sdk-2.0.0.dist-info}/LICENSE +0 -0
latitudesh_python_sdk/roles.py
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
3
|
from .basesdk import BaseSDK
|
|
4
|
+
from jsonpath import JSONPath
|
|
4
5
|
from latitudesh_python_sdk import models, utils
|
|
5
6
|
from latitudesh_python_sdk._hooks import HookContext
|
|
6
7
|
from latitudesh_python_sdk.types import OptionalNullable, UNSET
|
|
7
8
|
from latitudesh_python_sdk.utils import get_security_from_env
|
|
8
|
-
from typing import Any, Mapping, Optional
|
|
9
|
+
from typing import Any, Dict, List, Mapping, Optional, Union
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
class Roles(BaseSDK):
|
|
12
13
|
def list(
|
|
13
14
|
self,
|
|
14
15
|
*,
|
|
16
|
+
page_size: Optional[int] = 20,
|
|
17
|
+
page_number: Optional[int] = 1,
|
|
15
18
|
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
16
19
|
server_url: Optional[str] = None,
|
|
17
20
|
timeout_ms: Optional[int] = None,
|
|
18
21
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
19
|
-
) -> models.
|
|
22
|
+
) -> Optional[models.GetRolesResponse]:
|
|
20
23
|
r"""List all Roles
|
|
21
24
|
|
|
22
25
|
Returns a list of all roles that can be assigned to users
|
|
23
26
|
|
|
24
27
|
|
|
28
|
+
:param page_size: Number of items to return per page
|
|
29
|
+
:param page_number: Page number to return (starts at 1)
|
|
25
30
|
:param retries: Override the default retry configuration for this method
|
|
26
31
|
:param server_url: Override the default server URL for this method
|
|
27
32
|
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
@@ -36,12 +41,18 @@ class Roles(BaseSDK):
|
|
|
36
41
|
base_url = server_url
|
|
37
42
|
else:
|
|
38
43
|
base_url = self._get_url(base_url, url_variables)
|
|
44
|
+
|
|
45
|
+
request = models.GetRolesRequest(
|
|
46
|
+
page_size=page_size,
|
|
47
|
+
page_number=page_number,
|
|
48
|
+
)
|
|
49
|
+
|
|
39
50
|
req = self._build_request(
|
|
40
51
|
method="GET",
|
|
41
52
|
path="/roles",
|
|
42
53
|
base_url=base_url,
|
|
43
54
|
url_variables=url_variables,
|
|
44
|
-
request=
|
|
55
|
+
request=request,
|
|
45
56
|
request_body_required=False,
|
|
46
57
|
request_has_path_params=False,
|
|
47
58
|
request_has_query_params=True,
|
|
@@ -62,6 +73,7 @@ class Roles(BaseSDK):
|
|
|
62
73
|
|
|
63
74
|
http_res = self.do_request(
|
|
64
75
|
hook_ctx=HookContext(
|
|
76
|
+
config=self.sdk_configuration,
|
|
65
77
|
base_url=base_url or "",
|
|
66
78
|
operation_id="get-roles",
|
|
67
79
|
oauth2_scopes=[],
|
|
@@ -74,8 +86,31 @@ class Roles(BaseSDK):
|
|
|
74
86
|
retry_config=retry_config,
|
|
75
87
|
)
|
|
76
88
|
|
|
89
|
+
def next_func() -> Optional[models.GetRolesResponse]:
|
|
90
|
+
body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
|
|
91
|
+
page = request.page_number if not request.page_number is None else 1
|
|
92
|
+
next_page = page + 1
|
|
93
|
+
|
|
94
|
+
if not http_res.text:
|
|
95
|
+
return None
|
|
96
|
+
results = JSONPath("$.data").parse(body)
|
|
97
|
+
if len(results) == 0 or len(results[0]) == 0:
|
|
98
|
+
return None
|
|
99
|
+
limit = request.page_size if not request.page_size is None else 20
|
|
100
|
+
if len(results[0]) < limit:
|
|
101
|
+
return None
|
|
102
|
+
|
|
103
|
+
return self.list(
|
|
104
|
+
page_size=page_size,
|
|
105
|
+
page_number=next_page,
|
|
106
|
+
retries=retries,
|
|
107
|
+
)
|
|
108
|
+
|
|
77
109
|
if utils.match_response(http_res, "200", "application/vnd.api+json"):
|
|
78
|
-
return
|
|
110
|
+
return models.GetRolesResponse(
|
|
111
|
+
result=utils.unmarshal_json(http_res.text, models.GetRolesResponseBody),
|
|
112
|
+
next=next_func,
|
|
113
|
+
)
|
|
79
114
|
if utils.match_response(http_res, "4XX", "*"):
|
|
80
115
|
http_res_text = utils.stream_to_text(http_res)
|
|
81
116
|
raise models.APIError(
|
|
@@ -99,16 +134,20 @@ class Roles(BaseSDK):
|
|
|
99
134
|
async def list_async(
|
|
100
135
|
self,
|
|
101
136
|
*,
|
|
137
|
+
page_size: Optional[int] = 20,
|
|
138
|
+
page_number: Optional[int] = 1,
|
|
102
139
|
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
103
140
|
server_url: Optional[str] = None,
|
|
104
141
|
timeout_ms: Optional[int] = None,
|
|
105
142
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
106
|
-
) -> models.
|
|
143
|
+
) -> Optional[models.GetRolesResponse]:
|
|
107
144
|
r"""List all Roles
|
|
108
145
|
|
|
109
146
|
Returns a list of all roles that can be assigned to users
|
|
110
147
|
|
|
111
148
|
|
|
149
|
+
:param page_size: Number of items to return per page
|
|
150
|
+
:param page_number: Page number to return (starts at 1)
|
|
112
151
|
:param retries: Override the default retry configuration for this method
|
|
113
152
|
:param server_url: Override the default server URL for this method
|
|
114
153
|
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
@@ -123,12 +162,18 @@ class Roles(BaseSDK):
|
|
|
123
162
|
base_url = server_url
|
|
124
163
|
else:
|
|
125
164
|
base_url = self._get_url(base_url, url_variables)
|
|
165
|
+
|
|
166
|
+
request = models.GetRolesRequest(
|
|
167
|
+
page_size=page_size,
|
|
168
|
+
page_number=page_number,
|
|
169
|
+
)
|
|
170
|
+
|
|
126
171
|
req = self._build_request_async(
|
|
127
172
|
method="GET",
|
|
128
173
|
path="/roles",
|
|
129
174
|
base_url=base_url,
|
|
130
175
|
url_variables=url_variables,
|
|
131
|
-
request=
|
|
176
|
+
request=request,
|
|
132
177
|
request_body_required=False,
|
|
133
178
|
request_has_path_params=False,
|
|
134
179
|
request_has_query_params=True,
|
|
@@ -149,6 +194,7 @@ class Roles(BaseSDK):
|
|
|
149
194
|
|
|
150
195
|
http_res = await self.do_request_async(
|
|
151
196
|
hook_ctx=HookContext(
|
|
197
|
+
config=self.sdk_configuration,
|
|
152
198
|
base_url=base_url or "",
|
|
153
199
|
operation_id="get-roles",
|
|
154
200
|
oauth2_scopes=[],
|
|
@@ -161,8 +207,31 @@ class Roles(BaseSDK):
|
|
|
161
207
|
retry_config=retry_config,
|
|
162
208
|
)
|
|
163
209
|
|
|
210
|
+
def next_func() -> Optional[models.GetRolesResponse]:
|
|
211
|
+
body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]])
|
|
212
|
+
page = request.page_number if not request.page_number is None else 1
|
|
213
|
+
next_page = page + 1
|
|
214
|
+
|
|
215
|
+
if not http_res.text:
|
|
216
|
+
return None
|
|
217
|
+
results = JSONPath("$.data").parse(body)
|
|
218
|
+
if len(results) == 0 or len(results[0]) == 0:
|
|
219
|
+
return None
|
|
220
|
+
limit = request.page_size if not request.page_size is None else 20
|
|
221
|
+
if len(results[0]) < limit:
|
|
222
|
+
return None
|
|
223
|
+
|
|
224
|
+
return self.list(
|
|
225
|
+
page_size=page_size,
|
|
226
|
+
page_number=next_page,
|
|
227
|
+
retries=retries,
|
|
228
|
+
)
|
|
229
|
+
|
|
164
230
|
if utils.match_response(http_res, "200", "application/vnd.api+json"):
|
|
165
|
-
return
|
|
231
|
+
return models.GetRolesResponse(
|
|
232
|
+
result=utils.unmarshal_json(http_res.text, models.GetRolesResponseBody),
|
|
233
|
+
next=next_func,
|
|
234
|
+
)
|
|
166
235
|
if utils.match_response(http_res, "4XX", "*"):
|
|
167
236
|
http_res_text = await utils.stream_to_text_async(http_res)
|
|
168
237
|
raise models.APIError(
|
|
@@ -240,6 +309,7 @@ class Roles(BaseSDK):
|
|
|
240
309
|
|
|
241
310
|
http_res = self.do_request(
|
|
242
311
|
hook_ctx=HookContext(
|
|
312
|
+
config=self.sdk_configuration,
|
|
243
313
|
base_url=base_url or "",
|
|
244
314
|
operation_id="get-role-id",
|
|
245
315
|
oauth2_scopes=[],
|
|
@@ -335,6 +405,7 @@ class Roles(BaseSDK):
|
|
|
335
405
|
|
|
336
406
|
http_res = await self.do_request_async(
|
|
337
407
|
hook_ctx=HookContext(
|
|
408
|
+
config=self.sdk_configuration,
|
|
338
409
|
base_url=base_url or "",
|
|
339
410
|
operation_id="get-role-id",
|
|
340
411
|
oauth2_scopes=[],
|
latitudesh_python_sdk/sdk.py
CHANGED
|
@@ -6,60 +6,96 @@ from .sdkconfiguration import SDKConfiguration
|
|
|
6
6
|
from .utils.logger import Logger, get_default_logger
|
|
7
7
|
from .utils.retries import RetryConfig
|
|
8
8
|
import httpx
|
|
9
|
+
import importlib
|
|
9
10
|
from latitudesh_python_sdk import models, utils
|
|
10
11
|
from latitudesh_python_sdk._hooks import SDKHooks
|
|
11
|
-
from latitudesh_python_sdk.apikeys import APIKeys
|
|
12
|
-
from latitudesh_python_sdk.billing import Billing
|
|
13
|
-
from latitudesh_python_sdk.events_sdk import EventsSDK
|
|
14
|
-
from latitudesh_python_sdk.firewalls_sdk import FirewallsSDK
|
|
15
|
-
from latitudesh_python_sdk.ipaddresses_sdk import IPAddressesSDK
|
|
16
|
-
from latitudesh_python_sdk.operatingsystems_sdk import OperatingSystemsSDK
|
|
17
|
-
from latitudesh_python_sdk.plans import Plans
|
|
18
|
-
from latitudesh_python_sdk.privatenetworks import PrivateNetworks
|
|
19
|
-
from latitudesh_python_sdk.projects_sdk import ProjectsSDK
|
|
20
|
-
from latitudesh_python_sdk.regions_sdk import RegionsSDK
|
|
21
|
-
from latitudesh_python_sdk.roles import Roles
|
|
22
|
-
from latitudesh_python_sdk.servers_sdk import ServersSDK
|
|
23
|
-
from latitudesh_python_sdk.sshkeys import SSHKeys
|
|
24
|
-
from latitudesh_python_sdk.storage import Storage
|
|
25
|
-
from latitudesh_python_sdk.tags import Tags
|
|
26
|
-
from latitudesh_python_sdk.teams_sdk import TeamsSDK
|
|
27
|
-
from latitudesh_python_sdk.teamsmembers import TeamsMembers
|
|
28
|
-
from latitudesh_python_sdk.traffic_sdk import TrafficSDK
|
|
29
12
|
from latitudesh_python_sdk.types import OptionalNullable, UNSET
|
|
30
|
-
from
|
|
31
|
-
from latitudesh_python_sdk.userprofile import UserProfile
|
|
32
|
-
from latitudesh_python_sdk.virtualmachines import VirtualMachines
|
|
33
|
-
from latitudesh_python_sdk.vpnsessions import VpnSessions
|
|
34
|
-
from typing import Any, Callable, Dict, List, Optional, Union, cast
|
|
13
|
+
from typing import Any, Callable, Dict, List, Optional, TYPE_CHECKING, Union, cast
|
|
35
14
|
import weakref
|
|
36
15
|
|
|
16
|
+
if TYPE_CHECKING:
|
|
17
|
+
from latitudesh_python_sdk.apikeys import APIKeys
|
|
18
|
+
from latitudesh_python_sdk.billing import Billing
|
|
19
|
+
from latitudesh_python_sdk.events_sdk import EventsSDK
|
|
20
|
+
from latitudesh_python_sdk.firewalls_sdk import FirewallsSDK
|
|
21
|
+
from latitudesh_python_sdk.ipaddresses_sdk import IPAddressesSDK
|
|
22
|
+
from latitudesh_python_sdk.operatingsystems_sdk import OperatingSystemsSDK
|
|
23
|
+
from latitudesh_python_sdk.plans import Plans
|
|
24
|
+
from latitudesh_python_sdk.privatenetworks import PrivateNetworks
|
|
25
|
+
from latitudesh_python_sdk.projects_sdk import ProjectsSDK
|
|
26
|
+
from latitudesh_python_sdk.regions_sdk import RegionsSDK
|
|
27
|
+
from latitudesh_python_sdk.roles import Roles
|
|
28
|
+
from latitudesh_python_sdk.servers_sdk import ServersSDK
|
|
29
|
+
from latitudesh_python_sdk.sshkeys_sdk import SSHKeysSDK
|
|
30
|
+
from latitudesh_python_sdk.storage import Storage
|
|
31
|
+
from latitudesh_python_sdk.tags import Tags
|
|
32
|
+
from latitudesh_python_sdk.teams_sdk import TeamsSDK
|
|
33
|
+
from latitudesh_python_sdk.teamsmembers import TeamsMembers
|
|
34
|
+
from latitudesh_python_sdk.traffic_sdk import TrafficSDK
|
|
35
|
+
from latitudesh_python_sdk.userdata_sdk import UserDataSDK
|
|
36
|
+
from latitudesh_python_sdk.userprofile import UserProfile
|
|
37
|
+
from latitudesh_python_sdk.virtualmachines import VirtualMachines
|
|
38
|
+
from latitudesh_python_sdk.vpnsessions import VpnSessions
|
|
39
|
+
|
|
37
40
|
|
|
38
41
|
class Latitudesh(BaseSDK):
|
|
39
42
|
r"""Latitude.sh API: The Latitude.sh API is a RESTful API to manage your Latitude.sh account. It allows you to perform the same actions as the Latitude.sh dashboard."""
|
|
40
43
|
|
|
41
|
-
api_keys: APIKeys
|
|
42
|
-
billing: Billing
|
|
43
|
-
events: EventsSDK
|
|
44
|
-
firewalls: FirewallsSDK
|
|
45
|
-
ip_addresses: IPAddressesSDK
|
|
46
|
-
teams_members: TeamsMembers
|
|
47
|
-
operating_systems: OperatingSystemsSDK
|
|
48
|
-
plans: Plans
|
|
49
|
-
projects: ProjectsSDK
|
|
50
|
-
regions: RegionsSDK
|
|
51
|
-
roles: Roles
|
|
52
|
-
servers: ServersSDK
|
|
53
|
-
ssh_keys:
|
|
54
|
-
storage: Storage
|
|
55
|
-
tags: Tags
|
|
56
|
-
teams: TeamsSDK
|
|
57
|
-
traffic: TrafficSDK
|
|
58
|
-
user_data: UserDataSDK
|
|
59
|
-
user_profile: UserProfile
|
|
60
|
-
virtual_machines: VirtualMachines
|
|
61
|
-
private_networks: PrivateNetworks
|
|
62
|
-
vpn_sessions: VpnSessions
|
|
44
|
+
api_keys: "APIKeys"
|
|
45
|
+
billing: "Billing"
|
|
46
|
+
events: "EventsSDK"
|
|
47
|
+
firewalls: "FirewallsSDK"
|
|
48
|
+
ip_addresses: "IPAddressesSDK"
|
|
49
|
+
teams_members: "TeamsMembers"
|
|
50
|
+
operating_systems: "OperatingSystemsSDK"
|
|
51
|
+
plans: "Plans"
|
|
52
|
+
projects: "ProjectsSDK"
|
|
53
|
+
regions: "RegionsSDK"
|
|
54
|
+
roles: "Roles"
|
|
55
|
+
servers: "ServersSDK"
|
|
56
|
+
ssh_keys: "SSHKeysSDK"
|
|
57
|
+
storage: "Storage"
|
|
58
|
+
tags: "Tags"
|
|
59
|
+
teams: "TeamsSDK"
|
|
60
|
+
traffic: "TrafficSDK"
|
|
61
|
+
user_data: "UserDataSDK"
|
|
62
|
+
user_profile: "UserProfile"
|
|
63
|
+
virtual_machines: "VirtualMachines"
|
|
64
|
+
private_networks: "PrivateNetworks"
|
|
65
|
+
vpn_sessions: "VpnSessions"
|
|
66
|
+
_sub_sdk_map = {
|
|
67
|
+
"api_keys": ("latitudesh_python_sdk.apikeys", "APIKeys"),
|
|
68
|
+
"billing": ("latitudesh_python_sdk.billing", "Billing"),
|
|
69
|
+
"events": ("latitudesh_python_sdk.events_sdk", "EventsSDK"),
|
|
70
|
+
"firewalls": ("latitudesh_python_sdk.firewalls_sdk", "FirewallsSDK"),
|
|
71
|
+
"ip_addresses": ("latitudesh_python_sdk.ipaddresses_sdk", "IPAddressesSDK"),
|
|
72
|
+
"teams_members": ("latitudesh_python_sdk.teamsmembers", "TeamsMembers"),
|
|
73
|
+
"operating_systems": (
|
|
74
|
+
"latitudesh_python_sdk.operatingsystems_sdk",
|
|
75
|
+
"OperatingSystemsSDK",
|
|
76
|
+
),
|
|
77
|
+
"plans": ("latitudesh_python_sdk.plans", "Plans"),
|
|
78
|
+
"projects": ("latitudesh_python_sdk.projects_sdk", "ProjectsSDK"),
|
|
79
|
+
"regions": ("latitudesh_python_sdk.regions_sdk", "RegionsSDK"),
|
|
80
|
+
"roles": ("latitudesh_python_sdk.roles", "Roles"),
|
|
81
|
+
"servers": ("latitudesh_python_sdk.servers_sdk", "ServersSDK"),
|
|
82
|
+
"ssh_keys": ("latitudesh_python_sdk.sshkeys_sdk", "SSHKeysSDK"),
|
|
83
|
+
"storage": ("latitudesh_python_sdk.storage", "Storage"),
|
|
84
|
+
"tags": ("latitudesh_python_sdk.tags", "Tags"),
|
|
85
|
+
"teams": ("latitudesh_python_sdk.teams_sdk", "TeamsSDK"),
|
|
86
|
+
"traffic": ("latitudesh_python_sdk.traffic_sdk", "TrafficSDK"),
|
|
87
|
+
"user_data": ("latitudesh_python_sdk.userdata_sdk", "UserDataSDK"),
|
|
88
|
+
"user_profile": ("latitudesh_python_sdk.userprofile", "UserProfile"),
|
|
89
|
+
"virtual_machines": (
|
|
90
|
+
"latitudesh_python_sdk.virtualmachines",
|
|
91
|
+
"VirtualMachines",
|
|
92
|
+
),
|
|
93
|
+
"private_networks": (
|
|
94
|
+
"latitudesh_python_sdk.privatenetworks",
|
|
95
|
+
"PrivateNetworks",
|
|
96
|
+
),
|
|
97
|
+
"vpn_sessions": ("latitudesh_python_sdk.vpnsessions", "VpnSessions"),
|
|
98
|
+
}
|
|
63
99
|
|
|
64
100
|
def __init__(
|
|
65
101
|
self,
|
|
@@ -145,6 +181,9 @@ class Latitudesh(BaseSDK):
|
|
|
145
181
|
|
|
146
182
|
hooks = SDKHooks()
|
|
147
183
|
|
|
184
|
+
# pylint: disable=protected-access
|
|
185
|
+
self.sdk_configuration.__dict__["_hooks"] = hooks
|
|
186
|
+
|
|
148
187
|
current_server_url, *_ = self.sdk_configuration.get_server_details()
|
|
149
188
|
server_url, self.sdk_configuration.client = hooks.sdk_init(
|
|
150
189
|
current_server_url, client
|
|
@@ -152,9 +191,6 @@ class Latitudesh(BaseSDK):
|
|
|
152
191
|
if current_server_url != server_url:
|
|
153
192
|
self.sdk_configuration.server_url = server_url
|
|
154
193
|
|
|
155
|
-
# pylint: disable=protected-access
|
|
156
|
-
self.sdk_configuration.__dict__["_hooks"] = hooks
|
|
157
|
-
|
|
158
194
|
weakref.finalize(
|
|
159
195
|
self,
|
|
160
196
|
close_clients,
|
|
@@ -165,31 +201,32 @@ class Latitudesh(BaseSDK):
|
|
|
165
201
|
self.sdk_configuration.async_client_supplied,
|
|
166
202
|
)
|
|
167
203
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
204
|
+
def __getattr__(self, name: str):
|
|
205
|
+
if name in self._sub_sdk_map:
|
|
206
|
+
module_path, class_name = self._sub_sdk_map[name]
|
|
207
|
+
try:
|
|
208
|
+
module = importlib.import_module(module_path)
|
|
209
|
+
klass = getattr(module, class_name)
|
|
210
|
+
instance = klass(self.sdk_configuration)
|
|
211
|
+
setattr(self, name, instance)
|
|
212
|
+
return instance
|
|
213
|
+
except ImportError as e:
|
|
214
|
+
raise AttributeError(
|
|
215
|
+
f"Failed to import module {module_path} for attribute {name}: {e}"
|
|
216
|
+
) from e
|
|
217
|
+
except AttributeError as e:
|
|
218
|
+
raise AttributeError(
|
|
219
|
+
f"Failed to find class {class_name} in module {module_path} for attribute {name}: {e}"
|
|
220
|
+
) from e
|
|
221
|
+
|
|
222
|
+
raise AttributeError(
|
|
223
|
+
f"'{type(self).__name__}' object has no attribute '{name}'"
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
def __dir__(self):
|
|
227
|
+
default_attrs = list(super().__dir__())
|
|
228
|
+
lazy_attrs = list(self._sub_sdk_map.keys())
|
|
229
|
+
return sorted(list(set(default_attrs + lazy_attrs)))
|
|
193
230
|
|
|
194
231
|
def __enter__(self):
|
|
195
232
|
return self
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
|
-
from ._hooks import SDKHooks
|
|
4
3
|
from ._version import (
|
|
5
4
|
__gen_version__,
|
|
6
5
|
__openapi_doc_version__,
|
|
@@ -42,9 +41,6 @@ class SDKConfiguration:
|
|
|
42
41
|
retry_config: OptionalNullable[RetryConfig] = Field(default_factory=lambda: UNSET)
|
|
43
42
|
timeout_ms: Optional[int] = None
|
|
44
43
|
|
|
45
|
-
def __post_init__(self):
|
|
46
|
-
self._hooks = SDKHooks()
|
|
47
|
-
|
|
48
44
|
def get_server_details(self) -> Tuple[str, Dict[str, str]]:
|
|
49
45
|
if self.server_url is not None and self.server_url:
|
|
50
46
|
return remove_suffix(self.server_url, "/"), {}
|
|
@@ -52,6 +48,3 @@ class SDKConfiguration:
|
|
|
52
48
|
self.server_idx = 0
|
|
53
49
|
|
|
54
50
|
return SERVERS[self.server_idx], self.server_defaults[self.server_idx]
|
|
55
|
-
|
|
56
|
-
def get_hooks(self) -> SDKHooks:
|
|
57
|
-
return self._hooks
|