syneto_api 0.2.34__tar.gz → 0.2.35__tar.gz
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.
- {syneto_api-0.2.34 → syneto_api-0.2.35}/PKG-INFO +1 -2
- {syneto_api-0.2.34 → syneto_api-0.2.35}/pyproject.toml +1 -1
- {syneto_api-0.2.34 → syneto_api-0.2.35}/setup.py +1 -1
- {syneto_api-0.2.34 → syneto_api-0.2.35}/src/syneto_api/storage_api.py +26 -91
- {syneto_api-0.2.34 → syneto_api-0.2.35}/README.md +0 -0
- {syneto_api-0.2.34 → syneto_api-0.2.35}/src/syneto_api/__init__.py +0 -0
- {syneto_api-0.2.34 → syneto_api-0.2.35}/src/syneto_api/api_client.py +0 -0
- {syneto_api-0.2.34 → syneto_api-0.2.35}/src/syneto_api/auth_api.py +0 -0
- {syneto_api-0.2.34 → syneto_api-0.2.35}/src/syneto_api/central_api.py +0 -0
- {syneto_api-0.2.34 → syneto_api-0.2.35}/src/syneto_api/jobs_api.py +0 -0
- {syneto_api-0.2.34 → syneto_api-0.2.35}/src/syneto_api/keyring.py +0 -0
- {syneto_api-0.2.34 → syneto_api-0.2.35}/src/syneto_api/protection_api.py +0 -0
- {syneto_api-0.2.34 → syneto_api-0.2.35}/src/syneto_api/settings.py +0 -0
- {syneto_api-0.2.34 → syneto_api-0.2.35}/src/syneto_api/virt_api.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: syneto-api
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.35
|
|
4
4
|
Summary: Syneto Client API library
|
|
5
5
|
Home-page: https://github.com/SynetoNet/syneto-api
|
|
6
6
|
License: Proprietary
|
|
@@ -12,7 +12,6 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.6
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.7
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
16
15
|
Requires-Dist: aiodns (>=3,<4)
|
|
17
16
|
Requires-Dist: aiohttp (>=3.7,<4.0)
|
|
18
17
|
Requires-Dist: cchardet (>=2.1,<3.0)
|
|
@@ -20,7 +20,7 @@ install_requires = \
|
|
|
20
20
|
|
|
21
21
|
setup_kwargs = {
|
|
22
22
|
'name': 'syneto-api',
|
|
23
|
-
'version': '0.2.
|
|
23
|
+
'version': '0.2.35',
|
|
24
24
|
'description': 'Syneto Client API library',
|
|
25
25
|
'long_description': '# Syneto API\n\nSyneto Client API library: authentication, storage, virtualization and protection\n\n# Installation\n\n```\n$ pip install syneto-api\n```\n\n# Basic Usage\n\n```\nfrom syneto_api import Authentication, Virtualization, Storage, Protection\n\nauth_api = Authentication(url_base="https://syneto-instance-ip-address/api/auth", insecure_ssl=True)\nresponse = auth_api.login(username="admin", password="admin")\njwt = response[\'jwt\']\n\nvirt_api = Virtualization(url_base="https://syneto-instance-ip-address/api/virtualization", insecure_ssl=True)\nvirt_api.set_auth_jwt(jwt)\nprint(virt_api.get_vms())\n\nstorage_api = Storage(url_base="https://syneto-instance-ip-address/api/storage", insecure_ssl=True)\nstorage_api.set_auth_jwt(jwt)\nprint(storage_api.get_pools())\n```\n\n# Environment Variables\n\nFor conveninence, the base urls for the api endpoints are also accepted as environment variables, please see below.\n\n```\nAUTH_SERVICE=https://syneto-instance-ip-address/api/auth\nVIRTUALIZATION_SERVICE=https://syneto-instance-ip-address/api/virtualization\nSTORAGE_SERVICE=https://syneto-instance-ip-address/api/storage\nPROTECTION_SERVICE=https://syneto-instance-ip-address/api/protection\n```\n\nIf you are using self-signed SSL certificates, set the following env. so that the http request library does not perform ssl verification. \n\n```\nALLOW_INSECURE_SSL=True\n```\n',
|
|
26
26
|
'author': 'Your Name',
|
|
@@ -25,21 +25,15 @@ class Storage(APIClientBase):
|
|
|
25
25
|
return self.put_request("/pools/{pool_name}/export", pool_name=pool_name)
|
|
26
26
|
|
|
27
27
|
def get_pool_periodic_scrub(self, pool_name: str):
|
|
28
|
-
return self.get_request(
|
|
29
|
-
"/pools/{pool_name}/scrub/interval", pool_name=pool_name
|
|
30
|
-
)
|
|
28
|
+
return self.get_request("/pools/{pool_name}/scrub/interval", pool_name=pool_name)
|
|
31
29
|
|
|
32
30
|
def set_pool_periodic_scrub(self, pool_name: str, interval: str):
|
|
33
31
|
return self.post_request(
|
|
34
|
-
"/pools/{pool_name}/scrub/interval",
|
|
35
|
-
pool_name=pool_name,
|
|
36
|
-
query_args={"interval": interval},
|
|
32
|
+
"/pools/{pool_name}/scrub/interval", pool_name=pool_name, query_args={"interval": interval},
|
|
37
33
|
)
|
|
38
34
|
|
|
39
35
|
def delete_pool_periodic_scrub(self, pool_name: str):
|
|
40
|
-
return self.delete_request(
|
|
41
|
-
"/pools/{pool_name}/scrub/interval", pool_name=pool_name
|
|
42
|
-
)
|
|
36
|
+
return self.delete_request("/pools/{pool_name}/scrub/interval", pool_name=pool_name)
|
|
43
37
|
|
|
44
38
|
def start_pool_scrub(self, pool_name: str):
|
|
45
39
|
return self.put_request("/pools/{pool_name}/scrub/start", pool_name=pool_name)
|
|
@@ -48,22 +42,14 @@ class Storage(APIClientBase):
|
|
|
48
42
|
return self.put_request("/pools/{pool_name}/scrub/stop", pool_name=pool_name)
|
|
49
43
|
|
|
50
44
|
def get_volumes(
|
|
51
|
-
self,
|
|
52
|
-
volume_type: str = "NFS",
|
|
53
|
-
only_clones: bool = False,
|
|
54
|
-
label_key: str = "",
|
|
45
|
+
self, volume_type: str = "NFS", only_clones: bool = False, label_key: str = "",
|
|
55
46
|
):
|
|
56
47
|
return self.get_request(
|
|
57
|
-
"/volumes",
|
|
58
|
-
query_args={
|
|
59
|
-
"volume_type": volume_type,
|
|
60
|
-
"only_clones": only_clones,
|
|
61
|
-
"label_key": label_key,
|
|
62
|
-
},
|
|
48
|
+
"/volumes", query_args={"volume_type": volume_type, "only_clones": only_clones, "label_key": label_key,},
|
|
63
49
|
)
|
|
64
50
|
|
|
65
51
|
def create_volume(
|
|
66
|
-
self, pool_name: str, ips: list, volume_type: str = "NFS", quota: str = "none"
|
|
52
|
+
self, pool_name: str, ips: list, volume_type: str = "NFS", quota: str = "none",
|
|
67
53
|
):
|
|
68
54
|
hosts = [{"ipNetwork": ip, "accessType": "rw"} for ip in ips]
|
|
69
55
|
body = {
|
|
@@ -72,57 +58,35 @@ class Storage(APIClientBase):
|
|
|
72
58
|
"nfsShareConfig": {"rootAccess": "true", "hosts": hosts},
|
|
73
59
|
"quota": quota,
|
|
74
60
|
}
|
|
75
|
-
return self.post_request(
|
|
76
|
-
"/volumes",
|
|
77
|
-
body=body,
|
|
78
|
-
)
|
|
61
|
+
return self.post_request("/volumes", body=body,)
|
|
79
62
|
|
|
80
63
|
def get_volume(self, volume_id: str):
|
|
81
|
-
return self.get_request(
|
|
82
|
-
"/volumes/{volume_id}",
|
|
83
|
-
volume_id=volume_id,
|
|
84
|
-
)
|
|
64
|
+
return self.get_request("/volumes/{volume_id}", volume_id=volume_id,)
|
|
85
65
|
|
|
86
66
|
def delete_volume(self, volume_id: str):
|
|
87
|
-
return self.delete_request(
|
|
88
|
-
"/volumes",
|
|
89
|
-
query_args={"volume_id": volume_id},
|
|
90
|
-
)
|
|
67
|
+
return self.delete_request("/volumes", query_args={"volume_id": volume_id},)
|
|
91
68
|
|
|
92
69
|
def promote_volume(self, volume_id: str):
|
|
93
70
|
return self.put_request("/volumes/{volume_id}/promote", volume_id=volume_id)
|
|
94
71
|
|
|
95
72
|
def get_volume_meta(self, volume_id: str, key: str):
|
|
96
|
-
return self.
|
|
97
|
-
"/volumes/{volume_id}/meta", volume_id=volume_id, query_args={"key": key}
|
|
98
|
-
)
|
|
73
|
+
return self.get_request("/volumes/{volume_id}/meta", volume_id=volume_id, query_args={"key": key},)
|
|
99
74
|
|
|
100
75
|
def set_volume_meta(self, volume_id: str, key: str, value: dict):
|
|
101
76
|
body = {"key": key, "value": value}
|
|
102
|
-
return self.put_request(
|
|
103
|
-
"/volumes/{volume_id}/meta",
|
|
104
|
-
volume_id=volume_id,
|
|
105
|
-
body=body,
|
|
106
|
-
)
|
|
77
|
+
return self.put_request("/volumes/{volume_id}/meta", volume_id=volume_id, body=body,)
|
|
107
78
|
|
|
108
79
|
def get_volume_snapshots(self, volume_id: str):
|
|
109
|
-
return self.get_request(
|
|
110
|
-
"/volumes/{volume_id}/snapshots",
|
|
111
|
-
volume_id=volume_id,
|
|
112
|
-
)
|
|
80
|
+
return self.get_request("/volumes/{volume_id}/snapshots", volume_id=volume_id,)
|
|
113
81
|
|
|
114
82
|
def create_volume_snapshot(self, volume_id: str, snapshot_name: str):
|
|
115
83
|
return self.post_request(
|
|
116
|
-
"/volumes/{volume_id}/snapshots",
|
|
117
|
-
volume_id=volume_id,
|
|
118
|
-
query_args={"snapshot_name": snapshot_name},
|
|
84
|
+
"/volumes/{volume_id}/snapshots", volume_id=volume_id, query_args={"snapshot_name": snapshot_name},
|
|
119
85
|
)
|
|
120
86
|
|
|
121
87
|
def get_volume_snapshot(self, volume_id: str, snapshot_name: str):
|
|
122
88
|
return self.get_request(
|
|
123
|
-
"/volumes/{volume_id}/snapshots/{snapshot_name}",
|
|
124
|
-
volume_id=volume_id,
|
|
125
|
-
snapshot_name=snapshot_name,
|
|
89
|
+
"/volumes/{volume_id}/snapshots/{snapshot_name}", volume_id=volume_id, snapshot_name=snapshot_name,
|
|
126
90
|
)
|
|
127
91
|
|
|
128
92
|
def remove_volume_snapshot(self, volume_id: str, snapshot_name: str):
|
|
@@ -131,63 +95,43 @@ class Storage(APIClientBase):
|
|
|
131
95
|
|
|
132
96
|
def delete_volume_snapshot(self, volume_id: str, snapshot_name: str):
|
|
133
97
|
return self.delete_request(
|
|
134
|
-
"/volumes/{volume_id}/snapshots",
|
|
135
|
-
volume_id=volume_id,
|
|
136
|
-
query_args={"snapshot_name": snapshot_name},
|
|
98
|
+
"/volumes/{volume_id}/snapshots", volume_id=volume_id, query_args={"snapshot_name": snapshot_name},
|
|
137
99
|
)
|
|
138
100
|
|
|
139
101
|
def rollback_volume_snapshot(self, volume_id: str, snapshot_name: str):
|
|
140
102
|
return self.put_request(
|
|
141
|
-
"/volumes/{volume_id}/snapshots/{snapshot_name}/rollback",
|
|
142
|
-
volume_id=volume_id,
|
|
143
|
-
snapshot_name=snapshot_name,
|
|
103
|
+
"/volumes/{volume_id}/snapshots/{snapshot_name}/rollback", volume_id=volume_id, snapshot_name=snapshot_name,
|
|
144
104
|
)
|
|
145
105
|
|
|
146
106
|
def get_volume_snapshot_clones(self, volume_id: str, snapshot_name: str):
|
|
147
107
|
return self.get_request(
|
|
148
|
-
"/volumes/{volume_id}/snapshots/{snapshot_name}/clones",
|
|
149
|
-
volume_id=volume_id,
|
|
150
|
-
snapshot_name=snapshot_name,
|
|
108
|
+
"/volumes/{volume_id}/snapshots/{snapshot_name}/clones", volume_id=volume_id, snapshot_name=snapshot_name,
|
|
151
109
|
)
|
|
152
110
|
|
|
153
111
|
def create_volume_snapshot_clone(self, volume_id: str, snapshot_name: str):
|
|
154
112
|
return self.post_request(
|
|
155
|
-
"/volumes/{volume_id}/snapshots/{snapshot_name}/clones",
|
|
156
|
-
volume_id=volume_id,
|
|
157
|
-
snapshot_name=snapshot_name,
|
|
113
|
+
"/volumes/{volume_id}/snapshots/{snapshot_name}/clones", volume_id=volume_id, snapshot_name=snapshot_name,
|
|
158
114
|
)
|
|
159
115
|
|
|
160
116
|
def get_volume_files(
|
|
161
|
-
self,
|
|
162
|
-
volume_id: str,
|
|
163
|
-
path: str = "",
|
|
164
|
-
recursive: bool = False,
|
|
165
|
-
match_pattern: str = "",
|
|
117
|
+
self, volume_id: str, path: str = "", recursive: bool = False, match_pattern: str = "",
|
|
166
118
|
):
|
|
167
119
|
return self.get_request(
|
|
168
120
|
"/volumes/{volume_id}/files",
|
|
169
121
|
volume_id=volume_id,
|
|
170
|
-
query_args={
|
|
171
|
-
"path": path,
|
|
172
|
-
"recursive": recursive,
|
|
173
|
-
"match_pattern": match_pattern,
|
|
174
|
-
},
|
|
122
|
+
query_args={"path": path, "recursive": recursive, "match_pattern": match_pattern,},
|
|
175
123
|
)
|
|
176
124
|
|
|
177
|
-
def delete_volume_files(
|
|
178
|
-
self, volume_id: str, file_path: str = None, pattern: str = None
|
|
179
|
-
):
|
|
125
|
+
def delete_volume_files(self, volume_id: str, file_path: str = None, pattern: str = None):
|
|
180
126
|
return self.delete_request(
|
|
181
127
|
"/volumes/{volume_id}/files",
|
|
182
128
|
volume_id=volume_id,
|
|
183
|
-
body={"volume_id": volume_id, "file_path": file_path, "pattern": pattern},
|
|
129
|
+
body={"volume_id": volume_id, "file_path": file_path, "pattern": pattern,},
|
|
184
130
|
)
|
|
185
131
|
|
|
186
132
|
def get_volume_file_content(self, volume_id: str, file_path: str):
|
|
187
133
|
return self.get_request(
|
|
188
|
-
"/volumes/{volume_id}/files/content",
|
|
189
|
-
volume_id=volume_id,
|
|
190
|
-
query_args={"file_path": file_path},
|
|
134
|
+
"/volumes/{volume_id}/files/content", volume_id=volume_id, query_args={"file_path": file_path},
|
|
191
135
|
)
|
|
192
136
|
|
|
193
137
|
def set_volume_file_content(self, volume_id: str, file_path: str, content: str):
|
|
@@ -199,27 +143,18 @@ class Storage(APIClientBase):
|
|
|
199
143
|
)
|
|
200
144
|
|
|
201
145
|
def create_directory_in_volume(self, volume_id: str, dir_path: str):
|
|
202
|
-
return self.post_request(
|
|
203
|
-
"/volumes/{volume_id}/folder",
|
|
204
|
-
volume_id=volume_id,
|
|
205
|
-
query_args={"dir_path": dir_path},
|
|
206
|
-
)
|
|
146
|
+
return self.post_request("/volumes/{volume_id}/folder", volume_id=volume_id, query_args={"dir_path": dir_path},)
|
|
207
147
|
|
|
208
148
|
def delete_directory_in_volume(self, volume_id: str, dir_path: str):
|
|
209
149
|
return self.delete_request(
|
|
210
|
-
"/volumes/{volume_id}/folder",
|
|
211
|
-
volume_id=volume_id,
|
|
212
|
-
query_args={"dir_path": dir_path},
|
|
150
|
+
"/volumes/{volume_id}/folder", volume_id=volume_id, query_args={"dir_path": dir_path},
|
|
213
151
|
)
|
|
214
152
|
|
|
215
153
|
def get_file_recovery_volume(self):
|
|
216
154
|
return self.get_request("/file-recovery")
|
|
217
155
|
|
|
218
156
|
def create_file_recovery_volume(self, pool_name: str):
|
|
219
|
-
return self.post_request(
|
|
220
|
-
"/file-recovery",
|
|
221
|
-
body={"pool": pool_name},
|
|
222
|
-
)
|
|
157
|
+
return self.post_request("/file-recovery", body={"pool": pool_name},)
|
|
223
158
|
|
|
224
159
|
def get_system_information(self):
|
|
225
160
|
return self.get_request("/system")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|