Skip to content

Commit ee3dd69

Browse files
feat(api): feat(storage)!: migrate storage endpoints from v1-v3 to v4
Split the unified storage resource into separate object_storages (S3) and sftp_storages subresources, add access_keys and ssh_keys management, and consolidate bucket CORS/lifecycle/policy into a single update method. BREAKING CHANGE: storage resource restructured — methods moved from storage.* to storage.object_storages.* and storage.sftp_storages.*, credentials.recreate replaced by access_keys CRUD, bucket subresources (cors, lifecycle, policy) removed in favor of buckets.update, link_ssh_key/unlink_ssh_key removed in favor of ssh_keys resource.
1 parent d45ea8c commit ee3dd69

65 files changed

Lines changed: 5072 additions & 4999 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 655
1+
configured_endpoints: 658
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gcore%2Fgcore-979c8dcf6f85145ede67f446fa50785ed5847281a8dc67b5b85dc146bf2782a3.yml
33
openapi_spec_hash: c5ae6893846eda4838239c4711465c7e
4-
config_hash: 733199e7cca3e234d6d65cbd1b754ca6
4+
config_hash: adcd166301758ddd61a653444255d48c

src/gcore/resources/storage/__init__.py

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22

3-
from .buckets import (
4-
BucketsResource,
5-
AsyncBucketsResource,
6-
BucketsResourceWithRawResponse,
7-
AsyncBucketsResourceWithRawResponse,
8-
BucketsResourceWithStreamingResponse,
9-
AsyncBucketsResourceWithStreamingResponse,
10-
)
113
from .storage import (
124
StorageResource,
135
AsyncStorageResource,
@@ -16,6 +8,14 @@
168
StorageResourceWithStreamingResponse,
179
AsyncStorageResourceWithStreamingResponse,
1810
)
11+
from .ssh_keys import (
12+
SSHKeysResource,
13+
AsyncSSHKeysResource,
14+
SSHKeysResourceWithRawResponse,
15+
AsyncSSHKeysResourceWithRawResponse,
16+
SSHKeysResourceWithStreamingResponse,
17+
AsyncSSHKeysResourceWithStreamingResponse,
18+
)
1919
from .locations import (
2020
LocationsResource,
2121
AsyncLocationsResource,
@@ -32,13 +32,21 @@
3232
StatisticsResourceWithStreamingResponse,
3333
AsyncStatisticsResourceWithStreamingResponse,
3434
)
35-
from .credentials import (
36-
CredentialsResource,
37-
AsyncCredentialsResource,
38-
CredentialsResourceWithRawResponse,
39-
AsyncCredentialsResourceWithRawResponse,
40-
CredentialsResourceWithStreamingResponse,
41-
AsyncCredentialsResourceWithStreamingResponse,
35+
from .sftp_storages import (
36+
SftpStoragesResource,
37+
AsyncSftpStoragesResource,
38+
SftpStoragesResourceWithRawResponse,
39+
AsyncSftpStoragesResourceWithRawResponse,
40+
SftpStoragesResourceWithStreamingResponse,
41+
AsyncSftpStoragesResourceWithStreamingResponse,
42+
)
43+
from .object_storages import (
44+
ObjectStoragesResource,
45+
AsyncObjectStoragesResource,
46+
ObjectStoragesResourceWithRawResponse,
47+
AsyncObjectStoragesResourceWithRawResponse,
48+
ObjectStoragesResourceWithStreamingResponse,
49+
AsyncObjectStoragesResourceWithStreamingResponse,
4250
)
4351

4452
__all__ = [
@@ -48,24 +56,30 @@
4856
"AsyncLocationsResourceWithRawResponse",
4957
"LocationsResourceWithStreamingResponse",
5058
"AsyncLocationsResourceWithStreamingResponse",
59+
"ObjectStoragesResource",
60+
"AsyncObjectStoragesResource",
61+
"ObjectStoragesResourceWithRawResponse",
62+
"AsyncObjectStoragesResourceWithRawResponse",
63+
"ObjectStoragesResourceWithStreamingResponse",
64+
"AsyncObjectStoragesResourceWithStreamingResponse",
65+
"SftpStoragesResource",
66+
"AsyncSftpStoragesResource",
67+
"SftpStoragesResourceWithRawResponse",
68+
"AsyncSftpStoragesResourceWithRawResponse",
69+
"SftpStoragesResourceWithStreamingResponse",
70+
"AsyncSftpStoragesResourceWithStreamingResponse",
71+
"SSHKeysResource",
72+
"AsyncSSHKeysResource",
73+
"SSHKeysResourceWithRawResponse",
74+
"AsyncSSHKeysResourceWithRawResponse",
75+
"SSHKeysResourceWithStreamingResponse",
76+
"AsyncSSHKeysResourceWithStreamingResponse",
5177
"StatisticsResource",
5278
"AsyncStatisticsResource",
5379
"StatisticsResourceWithRawResponse",
5480
"AsyncStatisticsResourceWithRawResponse",
5581
"StatisticsResourceWithStreamingResponse",
5682
"AsyncStatisticsResourceWithStreamingResponse",
57-
"CredentialsResource",
58-
"AsyncCredentialsResource",
59-
"CredentialsResourceWithRawResponse",
60-
"AsyncCredentialsResourceWithRawResponse",
61-
"CredentialsResourceWithStreamingResponse",
62-
"AsyncCredentialsResourceWithStreamingResponse",
63-
"BucketsResource",
64-
"AsyncBucketsResource",
65-
"BucketsResourceWithRawResponse",
66-
"AsyncBucketsResourceWithRawResponse",
67-
"BucketsResourceWithStreamingResponse",
68-
"AsyncBucketsResourceWithStreamingResponse",
6983
"StorageResource",
7084
"AsyncStorageResource",
7185
"StorageResourceWithRawResponse",

src/gcore/resources/storage/api.md

Lines changed: 45 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,97 +1,103 @@
11
# Storage
22

3+
## Locations
4+
35
Types:
46

57
```python
6-
from gcore.types.storage import Storage
8+
from gcore.types.storage import Location
79
```
810

911
Methods:
1012

11-
- <code title="post /storage/provisioning/v2/storage">client.storage.<a href="./src/gcore/resources/storage/storage.py">create</a>(\*\*<a href="src/gcore/types/storage/storage_create_params.py">params</a>) -> <a href="./src/gcore/types/storage/storage.py">Storage</a></code>
12-
- <code title="patch /storage/provisioning/v2/storage/{storage_id}">client.storage.<a href="./src/gcore/resources/storage/storage.py">update</a>(storage_id, \*\*<a href="src/gcore/types/storage/storage_update_params.py">params</a>) -> <a href="./src/gcore/types/storage/storage.py">Storage</a></code>
13-
- <code title="get /storage/provisioning/v3/storage">client.storage.<a href="./src/gcore/resources/storage/storage.py">list</a>(\*\*<a href="src/gcore/types/storage/storage_list_params.py">params</a>) -> <a href="./src/gcore/types/storage/storage.py">SyncOffsetPage[Storage]</a></code>
14-
- <code title="delete /storage/provisioning/v1/storage/{storage_id}">client.storage.<a href="./src/gcore/resources/storage/storage.py">delete</a>(storage_id) -> None</code>
15-
- <code title="get /storage/provisioning/v1/storage/{storage_id}">client.storage.<a href="./src/gcore/resources/storage/storage.py">get</a>(storage_id) -> <a href="./src/gcore/types/storage/storage.py">Storage</a></code>
16-
- <code title="post /storage/provisioning/v1/storage/{storage_id}/key/{key_id}/link">client.storage.<a href="./src/gcore/resources/storage/storage.py">link_ssh_key</a>(key_id, \*, storage_id) -> None</code>
17-
- <code title="post /storage/provisioning/v1/storage/{storage_id}/restore">client.storage.<a href="./src/gcore/resources/storage/storage.py">restore</a>(storage_id, \*\*<a href="src/gcore/types/storage/storage_restore_params.py">params</a>) -> None</code>
18-
- <code title="post /storage/provisioning/v1/storage/{storage_id}/key/{key_id}/unlink">client.storage.<a href="./src/gcore/resources/storage/storage.py">unlink_ssh_key</a>(key_id, \*, storage_id) -> None</code>
13+
- <code title="get /storage/v4/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>
1914

20-
## Locations
15+
## ObjectStorages
2116

2217
Types:
2318

2419
```python
25-
from gcore.types.storage import Location
20+
from gcore.types.storage import S3Storage, S3StorageCreated
2621
```
2722

2823
Methods:
2924

30-
- <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>
25+
- <code title="post /storage/v4/object_storages">client.storage.object_storages.<a href="./src/gcore/resources/storage/object_storages/object_storages.py">create</a>(\*\*<a href="src/gcore/types/storage/object_storage_create_params.py">params</a>) -> <a href="./src/gcore/types/storage/s3_storage_created.py">S3StorageCreated</a></code>
26+
- <code title="get /storage/v4/object_storages">client.storage.object_storages.<a href="./src/gcore/resources/storage/object_storages/object_storages.py">list</a>(\*\*<a href="src/gcore/types/storage/object_storage_list_params.py">params</a>) -> <a href="./src/gcore/types/storage/s3_storage.py">SyncOffsetPage[S3Storage]</a></code>
27+
- <code title="delete /storage/v4/object_storages/{storage_id}">client.storage.object_storages.<a href="./src/gcore/resources/storage/object_storages/object_storages.py">delete</a>(storage_id) -> None</code>
28+
- <code title="get /storage/v4/object_storages/{storage_id}">client.storage.object_storages.<a href="./src/gcore/resources/storage/object_storages/object_storages.py">get</a>(storage_id) -> <a href="./src/gcore/types/storage/s3_storage.py">S3Storage</a></code>
29+
- <code title="post /storage/v4/object_storages/{storage_id}/restore">client.storage.object_storages.<a href="./src/gcore/resources/storage/object_storages/object_storages.py">restore</a>(storage_id) -> None</code>
3130

32-
## Statistics
31+
### AccessKeys
3332

3433
Types:
3534

3635
```python
37-
from gcore.types.storage import UsageSeries, UsageTotal, StatisticGetUsageSeriesResponse
36+
from gcore.types.storage.object_storages import AccessKey, AccessKeyCreated
3837
```
3938

4039
Methods:
4140

42-
- <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>
43-
- <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>
44-
45-
## Credentials
46-
47-
Methods:
48-
49-
- <code title="post /storage/provisioning/v1/storage/{storage_id}/credentials">client.storage.credentials.<a href="./src/gcore/resources/storage/credentials.py">recreate</a>(storage_id, \*\*<a href="src/gcore/types/storage/credential_recreate_params.py">params</a>) -> <a href="./src/gcore/types/storage/storage.py">Storage</a></code>
41+
- <code title="post /storage/v4/object_storages/{storage_id}/access_keys">client.storage.object_storages.access_keys.<a href="./src/gcore/resources/storage/object_storages/access_keys.py">create</a>(storage_id) -> <a href="./src/gcore/types/storage/object_storages/access_key_created.py">AccessKeyCreated</a></code>
42+
- <code title="get /storage/v4/object_storages/{storage_id}/access_keys">client.storage.object_storages.access_keys.<a href="./src/gcore/resources/storage/object_storages/access_keys.py">list</a>(storage_id, \*\*<a href="src/gcore/types/storage/object_storages/access_key_list_params.py">params</a>) -> <a href="./src/gcore/types/storage/object_storages/access_key.py">SyncOffsetPage[AccessKey]</a></code>
43+
- <code title="delete /storage/v4/object_storages/{storage_id}/access_keys/{access_key}">client.storage.object_storages.access_keys.<a href="./src/gcore/resources/storage/object_storages/access_keys.py">delete</a>(access_key, \*, storage_id) -> None</code>
5044

51-
## Buckets
45+
### Buckets
5246

5347
Types:
5448

5549
```python
56-
from gcore.types.storage import Bucket
50+
from gcore.types.storage.object_storages import Bucket, BucketCreated
5751
```
5852

5953
Methods:
6054

61-
- <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>
62-
- <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>
63-
- <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>
55+
- <code title="post /storage/v4/object_storages/{storage_id}/buckets">client.storage.object_storages.buckets.<a href="./src/gcore/resources/storage/object_storages/buckets.py">create</a>(storage_id, \*\*<a href="src/gcore/types/storage/object_storages/bucket_create_params.py">params</a>) -> <a href="./src/gcore/types/storage/object_storages/bucket_created.py">BucketCreated</a></code>
56+
- <code title="patch /storage/v4/object_storages/{storage_id}/buckets/{bucket_name}">client.storage.object_storages.buckets.<a href="./src/gcore/resources/storage/object_storages/buckets.py">update</a>(bucket_name, \*, storage_id, \*\*<a href="src/gcore/types/storage/object_storages/bucket_update_params.py">params</a>) -> <a href="./src/gcore/types/storage/object_storages/bucket.py">Bucket</a></code>
57+
- <code title="get /storage/v4/object_storages/{storage_id}/buckets">client.storage.object_storages.buckets.<a href="./src/gcore/resources/storage/object_storages/buckets.py">list</a>(storage_id, \*\*<a href="src/gcore/types/storage/object_storages/bucket_list_params.py">params</a>) -> <a href="./src/gcore/types/storage/object_storages/bucket.py">SyncOffsetPage[Bucket]</a></code>
58+
- <code title="delete /storage/v4/object_storages/{storage_id}/buckets/{bucket_name}">client.storage.object_storages.buckets.<a href="./src/gcore/resources/storage/object_storages/buckets.py">delete</a>(bucket_name, \*, storage_id) -> None</code>
59+
- <code title="get /storage/v4/object_storages/{storage_id}/buckets/{bucket_name}">client.storage.object_storages.buckets.<a href="./src/gcore/resources/storage/object_storages/buckets.py">get</a>(bucket_name, \*, storage_id) -> <a href="./src/gcore/types/storage/object_storages/bucket.py">Bucket</a></code>
6460

65-
### Cors
61+
## SftpStorages
6662

6763
Types:
6864

6965
```python
70-
from gcore.types.storage.buckets import BucketCors
66+
from gcore.types.storage import SftpStorage
7167
```
7268

7369
Methods:
7470

75-
- <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>
76-
- <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>
71+
- <code title="post /storage/v4/sftp_storages">client.storage.sftp_storages.<a href="./src/gcore/resources/storage/sftp_storages.py">create</a>(\*\*<a href="src/gcore/types/storage/sftp_storage_create_params.py">params</a>) -> <a href="./src/gcore/types/storage/sftp_storage.py">SftpStorage</a></code>
72+
- <code title="patch /storage/v4/sftp_storages/{storage_id}">client.storage.sftp_storages.<a href="./src/gcore/resources/storage/sftp_storages.py">update</a>(storage_id, \*\*<a href="src/gcore/types/storage/sftp_storage_update_params.py">params</a>) -> <a href="./src/gcore/types/storage/sftp_storage.py">SftpStorage</a></code>
73+
- <code title="get /storage/v4/sftp_storages">client.storage.sftp_storages.<a href="./src/gcore/resources/storage/sftp_storages.py">list</a>(\*\*<a href="src/gcore/types/storage/sftp_storage_list_params.py">params</a>) -> <a href="./src/gcore/types/storage/sftp_storage.py">SyncOffsetPage[SftpStorage]</a></code>
74+
- <code title="delete /storage/v4/sftp_storages/{storage_id}">client.storage.sftp_storages.<a href="./src/gcore/resources/storage/sftp_storages.py">delete</a>(storage_id) -> None</code>
75+
- <code title="get /storage/v4/sftp_storages/{storage_id}">client.storage.sftp_storages.<a href="./src/gcore/resources/storage/sftp_storages.py">get</a>(storage_id) -> <a href="./src/gcore/types/storage/sftp_storage.py">SftpStorage</a></code>
76+
77+
## SSHKeys
7778

78-
### Lifecycle
79+
Types:
80+
81+
```python
82+
from gcore.types.storage import SSHKey
83+
```
7984

8085
Methods:
8186

82-
- <code title="post /storage/provisioning/v1/storage/{storage_id}/s3/bucket/{bucket_name}/lifecycle">client.storage.buckets.lifecycle.<a href="./src/gcore/resources/storage/buckets/lifecycle.py">create</a>(bucket_name, \*, storage_id, \*\*<a href="src/gcore/types/storage/buckets/lifecycle_create_params.py">params</a>) -> None</code>
83-
- <code title="delete /storage/provisioning/v1/storage/{storage_id}/s3/bucket/{bucket_name}/lifecycle">client.storage.buckets.lifecycle.<a href="./src/gcore/resources/storage/buckets/lifecycle.py">delete</a>(bucket_name, \*, storage_id) -> None</code>
87+
- <code title="post /storage/v4/ssh_keys">client.storage.ssh_keys.<a href="./src/gcore/resources/storage/ssh_keys.py">create</a>(\*\*<a href="src/gcore/types/storage/ssh_key_create_params.py">params</a>) -> <a href="./src/gcore/types/storage/ssh_key.py">SSHKey</a></code>
88+
- <code title="get /storage/v4/ssh_keys">client.storage.ssh_keys.<a href="./src/gcore/resources/storage/ssh_keys.py">list</a>(\*\*<a href="src/gcore/types/storage/ssh_key_list_params.py">params</a>) -> <a href="./src/gcore/types/storage/ssh_key.py">SyncOffsetPage[SSHKey]</a></code>
89+
- <code title="delete /storage/v4/ssh_keys/{ssh_key_id}">client.storage.ssh_keys.<a href="./src/gcore/resources/storage/ssh_keys.py">delete</a>(ssh_key_id) -> None</code>
90+
- <code title="get /storage/v4/ssh_keys/{ssh_key_id}">client.storage.ssh_keys.<a href="./src/gcore/resources/storage/ssh_keys.py">get</a>(ssh_key_id) -> <a href="./src/gcore/types/storage/ssh_key.py">SSHKey</a></code>
8491

85-
### Policy
92+
## Statistics
8693

8794
Types:
8895

8996
```python
90-
from gcore.types.storage.buckets import BucketPolicy, PolicyGetResponse
97+
from gcore.types.storage import UsageSeries, UsageTotal, StatisticGetUsageSeriesResponse
9198
```
9299

93100
Methods:
94101

95-
- <code title="post /storage/provisioning/v1/storage/{storage_id}/s3/bucket/{bucket_name}/policy">client.storage.buckets.policy.<a href="./src/gcore/resources/storage/buckets/policy.py">create</a>(bucket_name, \*, storage_id) -> None</code>
96-
- <code title="delete /storage/provisioning/v1/storage/{storage_id}/s3/bucket/{bucket_name}/policy">client.storage.buckets.policy.<a href="./src/gcore/resources/storage/buckets/policy.py">delete</a>(bucket_name, \*, storage_id) -> None</code>
97-
- <code title="get /storage/provisioning/v1/storage/{storage_id}/s3/bucket/{bucket_name}/policy">client.storage.buckets.policy.<a href="./src/gcore/resources/storage/buckets/policy.py">get</a>(bucket_name, \*, storage_id) -> <a href="./src/gcore/types/storage/buckets/policy_get_response.py">PolicyGetResponse</a></code>
102+
- <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>
103+
- <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>

0 commit comments

Comments
 (0)