Skip to content

Commit eeef646

Browse files
feat(storage): make list storage locations paginated
1 parent e645a83 commit eeef646

22 files changed

+212
-171
lines changed

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 523
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-82710e4affc54069c75e3620abaab301786e7afd7b76433ea54da62a4b6e9b7d.yml
33
openapi_spec_hash: 9651b07f3ca9fa4b3e7f17ab08aa9d43
4-
config_hash: 296feeb9e44105df95628b9989e56273
4+
config_hash: 73d242df5d8f0213f2bd62cd792080b5

api.md

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2000,28 +2000,24 @@ Methods:
20002000
Types:
20012001

20022002
```python
2003-
from gcore.types.storage import StorageLocation, LocationListResponse
2003+
from gcore.types.storage import Location
20042004
```
20052005

20062006
Methods:
20072007

2008-
- <code title="get /storage/provisioning/v1/location">client.storage.locations.<a href="./src/gcore/resources/storage/locations.py">list</a>() -> <a href="./src/gcore/types/storage/location_list_response.py">LocationListResponse</a></code>
2008+
- <code title="get /storage/provisioning/v2/locations">client.storage.locations.<a href="./src/gcore/resources/storage/locations.py">list</a>(\*\*<a href="src/gcore/types/storage/location_list_params.py">params</a>) -> <a href="./src/gcore/types/storage/location.py">SyncOffsetPage[Location]</a></code>
20092009

20102010
## Statistics
20112011

20122012
Types:
20132013

20142014
```python
2015-
from gcore.types.storage import (
2016-
StorageUsageSeries,
2017-
StorageUsageTotal,
2018-
StatisticGetUsageSeriesResponse,
2019-
)
2015+
from gcore.types.storage import UsageSeries, UsageTotal, StatisticGetUsageSeriesResponse
20202016
```
20212017

20222018
Methods:
20232019

2024-
- <code title="post /storage/stats/v1/storage/usage/total">client.storage.statistics.<a href="./src/gcore/resources/storage/statistics.py">get_usage_aggregated</a>(\*\*<a href="src/gcore/types/storage/statistic_get_usage_aggregated_params.py">params</a>) -> <a href="./src/gcore/types/storage/storage_usage_total.py">StorageUsageTotal</a></code>
2020+
- <code title="post /storage/stats/v1/storage/usage/total">client.storage.statistics.<a href="./src/gcore/resources/storage/statistics.py">get_usage_aggregated</a>(\*\*<a href="src/gcore/types/storage/statistic_get_usage_aggregated_params.py">params</a>) -> <a href="./src/gcore/types/storage/usage_total.py">UsageTotal</a></code>
20252021
- <code title="post /storage/stats/v1/storage/usage/series">client.storage.statistics.<a href="./src/gcore/resources/storage/statistics.py">get_usage_series</a>(\*\*<a href="src/gcore/types/storage/statistic_get_usage_series_params.py">params</a>) -> <a href="./src/gcore/types/storage/statistic_get_usage_series_response.py">StatisticGetUsageSeriesResponse</a></code>
20262022

20272023
## Credentials
@@ -2035,27 +2031,27 @@ Methods:
20352031
Types:
20362032

20372033
```python
2038-
from gcore.types.storage import StorageBucket
2034+
from gcore.types.storage import Bucket
20392035
```
20402036

20412037
Methods:
20422038

20432039
- <code title="post /storage/provisioning/v1/storage/{storage_id}/s3/bucket/{bucket_name}">client.storage.buckets.<a href="./src/gcore/resources/storage/buckets/buckets.py">create</a>(bucket_name, \*, storage_id) -> None</code>
2044-
- <code title="get /storage/provisioning/v2/storage/{storage_id}/s3/buckets">client.storage.buckets.<a href="./src/gcore/resources/storage/buckets/buckets.py">list</a>(storage_id, \*\*<a href="src/gcore/types/storage/bucket_list_params.py">params</a>) -> <a href="./src/gcore/types/storage/storage_bucket.py">SyncOffsetPage[StorageBucket]</a></code>
2040+
- <code title="get /storage/provisioning/v2/storage/{storage_id}/s3/buckets">client.storage.buckets.<a href="./src/gcore/resources/storage/buckets/buckets.py">list</a>(storage_id, \*\*<a href="src/gcore/types/storage/bucket_list_params.py">params</a>) -> <a href="./src/gcore/types/storage/bucket.py">SyncOffsetPage[Bucket]</a></code>
20452041
- <code title="delete /storage/provisioning/v1/storage/{storage_id}/s3/bucket/{bucket_name}">client.storage.buckets.<a href="./src/gcore/resources/storage/buckets/buckets.py">delete</a>(bucket_name, \*, storage_id) -> None</code>
20462042

20472043
### Cors
20482044

20492045
Types:
20502046

20512047
```python
2052-
from gcore.types.storage.buckets import StorageBucketCors
2048+
from gcore.types.storage.buckets import BucketCors
20532049
```
20542050

20552051
Methods:
20562052

20572053
- <code title="post /storage/provisioning/v1/storage/{storage_id}/s3/bucket/{bucket_name}/cors">client.storage.buckets.cors.<a href="./src/gcore/resources/storage/buckets/cors.py">create</a>(bucket_name, \*, storage_id, \*\*<a href="src/gcore/types/storage/buckets/cor_create_params.py">params</a>) -> None</code>
2058-
- <code title="get /storage/provisioning/v1/storage/{storage_id}/s3/bucket/{bucket_name}/cors">client.storage.buckets.cors.<a href="./src/gcore/resources/storage/buckets/cors.py">get</a>(bucket_name, \*, storage_id) -> <a href="./src/gcore/types/storage/buckets/storage_bucket_cors.py">StorageBucketCors</a></code>
2054+
- <code title="get /storage/provisioning/v1/storage/{storage_id}/s3/bucket/{bucket_name}/cors">client.storage.buckets.cors.<a href="./src/gcore/resources/storage/buckets/cors.py">get</a>(bucket_name, \*, storage_id) -> <a href="./src/gcore/types/storage/buckets/bucket_cors.py">BucketCors</a></code>
20592055

20602056
### Lifecycle
20612057

@@ -2069,7 +2065,7 @@ Methods:
20692065
Types:
20702066

20712067
```python
2072-
from gcore.types.storage.buckets import StorageBucketPolicy, PolicyGetResponse
2068+
from gcore.types.storage.buckets import BucketPolicy, PolicyGetResponse
20732069
```
20742070

20752071
Methods:

src/gcore/resources/storage/buckets/buckets.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
from ....pagination import SyncOffsetPage, AsyncOffsetPage
4242
from ...._base_client import AsyncPaginator, make_request_options
4343
from ....types.storage import bucket_list_params
44-
from ....types.storage.storage_bucket import StorageBucket
44+
from ....types.storage.bucket import Bucket
4545

4646
__all__ = ["BucketsResource", "AsyncBucketsResource"]
4747

@@ -129,7 +129,7 @@ def list(
129129
extra_query: Query | None = None,
130130
extra_body: Body | None = None,
131131
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
132-
) -> SyncOffsetPage[StorageBucket]:
132+
) -> SyncOffsetPage[Bucket]:
133133
"""Returns the list of buckets for the storage in a wrapped response.
134134
135135
Response
@@ -153,7 +153,7 @@ def list(
153153
f"/storage/provisioning/v2/storage/{storage_id}/s3/buckets"
154154
if self._client._base_url_overridden
155155
else f"https://api.gcore.com//storage/provisioning/v2/storage/{storage_id}/s3/buckets",
156-
page=SyncOffsetPage[StorageBucket],
156+
page=SyncOffsetPage[Bucket],
157157
options=make_request_options(
158158
extra_headers=extra_headers,
159159
extra_query=extra_query,
@@ -167,7 +167,7 @@ def list(
167167
bucket_list_params.BucketListParams,
168168
),
169169
),
170-
model=StorageBucket,
170+
model=Bucket,
171171
)
172172

173173
def delete(
@@ -293,7 +293,7 @@ def list(
293293
extra_query: Query | None = None,
294294
extra_body: Body | None = None,
295295
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
296-
) -> AsyncPaginator[StorageBucket, AsyncOffsetPage[StorageBucket]]:
296+
) -> AsyncPaginator[Bucket, AsyncOffsetPage[Bucket]]:
297297
"""Returns the list of buckets for the storage in a wrapped response.
298298
299299
Response
@@ -317,7 +317,7 @@ def list(
317317
f"/storage/provisioning/v2/storage/{storage_id}/s3/buckets"
318318
if self._client._base_url_overridden
319319
else f"https://api.gcore.com//storage/provisioning/v2/storage/{storage_id}/s3/buckets",
320-
page=AsyncOffsetPage[StorageBucket],
320+
page=AsyncOffsetPage[Bucket],
321321
options=make_request_options(
322322
extra_headers=extra_headers,
323323
extra_query=extra_query,
@@ -331,7 +331,7 @@ def list(
331331
bucket_list_params.BucketListParams,
332332
),
333333
),
334-
model=StorageBucket,
334+
model=Bucket,
335335
)
336336

337337
async def delete(

src/gcore/resources/storage/buckets/cors.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
)
1717
from ...._base_client import make_request_options
1818
from ....types.storage.buckets import cor_create_params
19-
from ....types.storage.buckets.storage_bucket_cors import StorageBucketCors
19+
from ....types.storage.buckets.bucket_cors import BucketCors
2020

2121
__all__ = ["CorsResource", "AsyncCorsResource"]
2222

@@ -95,7 +95,7 @@ def get(
9595
extra_query: Query | None = None,
9696
extra_body: Body | None = None,
9797
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
98-
) -> StorageBucketCors:
98+
) -> BucketCors:
9999
"""
100100
Retrieves the current Cross-Origin Resource Sharing (CORS) configuration for an
101101
S3 bucket, showing which domains are allowed to access the bucket from web
@@ -119,7 +119,7 @@ def get(
119119
options=make_request_options(
120120
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
121121
),
122-
cast_to=StorageBucketCors,
122+
cast_to=BucketCors,
123123
)
124124

125125

@@ -197,7 +197,7 @@ async def get(
197197
extra_query: Query | None = None,
198198
extra_body: Body | None = None,
199199
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
200-
) -> StorageBucketCors:
200+
) -> BucketCors:
201201
"""
202202
Retrieves the current Cross-Origin Resource Sharing (CORS) configuration for an
203203
S3 bucket, showing which domains are allowed to access the bucket from web
@@ -221,7 +221,7 @@ async def get(
221221
options=make_request_options(
222222
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
223223
),
224-
cast_to=StorageBucketCors,
224+
cast_to=BucketCors,
225225
)
226226

227227

src/gcore/resources/storage/locations.py

Lines changed: 70 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
from __future__ import annotations
44

5-
import typing_extensions
6-
75
import httpx
86

97
from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
8+
from ..._utils import maybe_transform
109
from ..._compat import cached_property
1110
from ..._resource import SyncAPIResource, AsyncAPIResource
1211
from ..._response import (
@@ -15,8 +14,10 @@
1514
async_to_raw_response_wrapper,
1615
async_to_streamed_response_wrapper,
1716
)
18-
from ..._base_client import make_request_options
19-
from ...types.storage.location_list_response import LocationListResponse
17+
from ...pagination import SyncOffsetPage, AsyncOffsetPage
18+
from ..._base_client import AsyncPaginator, make_request_options
19+
from ...types.storage import location_list_params
20+
from ...types.storage.location import Location
2021

2122
__all__ = ["LocationsResource", "AsyncLocationsResource"]
2223

@@ -41,30 +42,51 @@ def with_streaming_response(self) -> LocationsResourceWithStreamingResponse:
4142
"""
4243
return LocationsResourceWithStreamingResponse(self)
4344

44-
@typing_extensions.deprecated("deprecated")
4545
def list(
4646
self,
4747
*,
48+
limit: int | NotGiven = NOT_GIVEN,
49+
offset: int | NotGiven = NOT_GIVEN,
4850
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
4951
# The extra values given here take precedence over values defined on the client or passed to this method.
5052
extra_headers: Headers | None = None,
5153
extra_query: Query | None = None,
5254
extra_body: Body | None = None,
5355
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
54-
) -> LocationListResponse:
56+
) -> SyncOffsetPage[Location]:
5557
"""Returns available storage locations where you can create storages.
5658
5759
Each location
5860
represents a geographic region with specific data center facilities.
61+
62+
Args:
63+
extra_headers: Send extra headers
64+
65+
extra_query: Add additional query parameters to the request
66+
67+
extra_body: Add additional JSON properties to the request
68+
69+
timeout: Override the client-level default timeout for this request, in seconds
5970
"""
60-
return self._get(
61-
"/storage/provisioning/v1/location"
71+
return self._get_api_list(
72+
"/storage/provisioning/v2/locations"
6273
if self._client._base_url_overridden
63-
else "https://api.gcore.com//storage/provisioning/v1/location",
74+
else "https://api.gcore.com//storage/provisioning/v2/locations",
75+
page=SyncOffsetPage[Location],
6476
options=make_request_options(
65-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
77+
extra_headers=extra_headers,
78+
extra_query=extra_query,
79+
extra_body=extra_body,
80+
timeout=timeout,
81+
query=maybe_transform(
82+
{
83+
"limit": limit,
84+
"offset": offset,
85+
},
86+
location_list_params.LocationListParams,
87+
),
6688
),
67-
cast_to=LocationListResponse,
89+
model=Location,
6890
)
6991

7092

@@ -88,72 +110,85 @@ def with_streaming_response(self) -> AsyncLocationsResourceWithStreamingResponse
88110
"""
89111
return AsyncLocationsResourceWithStreamingResponse(self)
90112

91-
@typing_extensions.deprecated("deprecated")
92-
async def list(
113+
def list(
93114
self,
94115
*,
116+
limit: int | NotGiven = NOT_GIVEN,
117+
offset: int | NotGiven = NOT_GIVEN,
95118
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
96119
# The extra values given here take precedence over values defined on the client or passed to this method.
97120
extra_headers: Headers | None = None,
98121
extra_query: Query | None = None,
99122
extra_body: Body | None = None,
100123
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
101-
) -> LocationListResponse:
124+
) -> AsyncPaginator[Location, AsyncOffsetPage[Location]]:
102125
"""Returns available storage locations where you can create storages.
103126
104127
Each location
105128
represents a geographic region with specific data center facilities.
129+
130+
Args:
131+
extra_headers: Send extra headers
132+
133+
extra_query: Add additional query parameters to the request
134+
135+
extra_body: Add additional JSON properties to the request
136+
137+
timeout: Override the client-level default timeout for this request, in seconds
106138
"""
107-
return await self._get(
108-
"/storage/provisioning/v1/location"
139+
return self._get_api_list(
140+
"/storage/provisioning/v2/locations"
109141
if self._client._base_url_overridden
110-
else "https://api.gcore.com//storage/provisioning/v1/location",
142+
else "https://api.gcore.com//storage/provisioning/v2/locations",
143+
page=AsyncOffsetPage[Location],
111144
options=make_request_options(
112-
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
145+
extra_headers=extra_headers,
146+
extra_query=extra_query,
147+
extra_body=extra_body,
148+
timeout=timeout,
149+
query=maybe_transform(
150+
{
151+
"limit": limit,
152+
"offset": offset,
153+
},
154+
location_list_params.LocationListParams,
155+
),
113156
),
114-
cast_to=LocationListResponse,
157+
model=Location,
115158
)
116159

117160

118161
class LocationsResourceWithRawResponse:
119162
def __init__(self, locations: LocationsResource) -> None:
120163
self._locations = locations
121164

122-
self.list = ( # pyright: ignore[reportDeprecated]
123-
to_raw_response_wrapper(
124-
locations.list, # pyright: ignore[reportDeprecated],
125-
)
165+
self.list = to_raw_response_wrapper(
166+
locations.list,
126167
)
127168

128169

129170
class AsyncLocationsResourceWithRawResponse:
130171
def __init__(self, locations: AsyncLocationsResource) -> None:
131172
self._locations = locations
132173

133-
self.list = ( # pyright: ignore[reportDeprecated]
134-
async_to_raw_response_wrapper(
135-
locations.list, # pyright: ignore[reportDeprecated],
136-
)
174+
self.list = async_to_raw_response_wrapper(
175+
locations.list,
137176
)
138177

139178

140179
class LocationsResourceWithStreamingResponse:
141180
def __init__(self, locations: LocationsResource) -> None:
142181
self._locations = locations
143182

144-
self.list = ( # pyright: ignore[reportDeprecated]
145-
to_streamed_response_wrapper(
146-
locations.list, # pyright: ignore[reportDeprecated],
147-
)
183+
self.list = to_streamed_response_wrapper(
184+
locations.list,
148185
)
149186

150187

151188
class AsyncLocationsResourceWithStreamingResponse:
152189
def __init__(self, locations: AsyncLocationsResource) -> None:
153190
self._locations = locations
154191

155-
self.list = ( # pyright: ignore[reportDeprecated]
156-
async_to_streamed_response_wrapper(
157-
locations.list, # pyright: ignore[reportDeprecated],
158-
)
192+
self.list = async_to_streamed_response_wrapper(
193+
locations.list,
159194
)

0 commit comments

Comments
 (0)