twc-cli 2.11.0__tar.gz → 2.12.0__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.
Potentially problematic release.
This version of twc-cli might be problematic. Click here for more details.
- {twc_cli-2.11.0 → twc_cli-2.12.0}/CHANGELOG.md +11 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/PKG-INFO +1 -1
- {twc_cli-2.11.0 → twc_cli-2.12.0}/pyproject.toml +1 -1
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/__version__.py +1 -1
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/api/client.py +60 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/balancer.py +42 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/storage.py +1 -1
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/vars.py +1 -1
- {twc_cli-2.11.0 → twc_cli-2.12.0}/COPYING +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/README.md +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/__init__.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/__main__.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/api/__init__.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/api/base.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/api/exceptions.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/api/types.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/apiwrap.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/__init__.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/account.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/common.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/config.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/database.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/domain.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/firewall.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/floating_ip.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/image.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/kubernetes.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/project.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/server.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/ssh_key.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/commands/vpc.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/fmt.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/typerx.py +0 -0
- {twc_cli-2.11.0 → twc_cli-2.12.0}/twc/utils.py +0 -0
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
В этом файле описаны все значимые изменения в Timeweb Cloud CLI. В выпусках мы придерживается правил [семантического версионирования](https://semver.org/lang/ru/).
|
|
4
4
|
|
|
5
|
+
# Версия 2.12.0 (2025.xx.xx)
|
|
6
|
+
|
|
7
|
+
## Добавлено
|
|
8
|
+
|
|
9
|
+
- Добавлены опции `--max-connections`, `--connect-timeout`, `--client-timeout`, `--server-timeout` в команды `twc balancer create`, `twc balancer set`.
|
|
10
|
+
- В регионе `kz-1` для облачных серверов теперь доступен IPv6.
|
|
11
|
+
|
|
12
|
+
## Изменено
|
|
13
|
+
|
|
14
|
+
- Стандартный ендпоинт объектного хранилища изменён с `s3.timeweb.cloud` на `s3.twcstorage.ru`.
|
|
15
|
+
|
|
5
16
|
# Версия 2.11.0 (2025.04.01)
|
|
6
17
|
|
|
7
18
|
## Добавлено
|
|
@@ -1162,6 +1162,11 @@ class TimewebCloud(TimewebCloudBase):
|
|
|
1162
1162
|
comment: Optional[str] = None,
|
|
1163
1163
|
project_id: Optional[int] = None,
|
|
1164
1164
|
certificates: Optional[dict] = None,
|
|
1165
|
+
max_connections: Optional[int] = None,
|
|
1166
|
+
connect_timeout: Optional[int] = None,
|
|
1167
|
+
client_timeout: Optional[int] = None,
|
|
1168
|
+
server_timeout: Optional[int] = None,
|
|
1169
|
+
http_timeout: Optional[int] = None,
|
|
1165
1170
|
):
|
|
1166
1171
|
"""Create load balancer."""
|
|
1167
1172
|
payload = {
|
|
@@ -1183,6 +1188,31 @@ class TimewebCloud(TimewebCloudBase):
|
|
|
1183
1188
|
**({"comment": comment} if comment else {}),
|
|
1184
1189
|
**({"project_id": project_id} if project_id else {}),
|
|
1185
1190
|
**({"certificates": certificates} if certificates else {}),
|
|
1191
|
+
**(
|
|
1192
|
+
{"maxconn": max_connections}
|
|
1193
|
+
if max_connections is not None
|
|
1194
|
+
else {}
|
|
1195
|
+
),
|
|
1196
|
+
**(
|
|
1197
|
+
{"connect_timeout": connect_timeout}
|
|
1198
|
+
if connect_timeout is not None
|
|
1199
|
+
else {}
|
|
1200
|
+
),
|
|
1201
|
+
**(
|
|
1202
|
+
{"client_timeout": client_timeout}
|
|
1203
|
+
if client_timeout is not None
|
|
1204
|
+
else {}
|
|
1205
|
+
),
|
|
1206
|
+
**(
|
|
1207
|
+
{"server_timeout": server_timeout}
|
|
1208
|
+
if server_timeout is not None
|
|
1209
|
+
else {}
|
|
1210
|
+
),
|
|
1211
|
+
**(
|
|
1212
|
+
{"httprequest_timeout": http_timeout}
|
|
1213
|
+
if http_timeout is not None
|
|
1214
|
+
else {}
|
|
1215
|
+
),
|
|
1186
1216
|
}
|
|
1187
1217
|
return self._request("POST", f"{self.api_url}/balancers", json=payload)
|
|
1188
1218
|
|
|
@@ -1203,6 +1233,11 @@ class TimewebCloud(TimewebCloudBase):
|
|
|
1203
1233
|
proxy_protocol: Optional[bool] = None,
|
|
1204
1234
|
force_https: Optional[bool] = None,
|
|
1205
1235
|
backend_keepalive: Optional[bool] = None,
|
|
1236
|
+
max_connections: Optional[int] = None,
|
|
1237
|
+
connect_timeout: Optional[int] = None,
|
|
1238
|
+
client_timeout: Optional[int] = None,
|
|
1239
|
+
server_timeout: Optional[int] = None,
|
|
1240
|
+
http_timeout: Optional[int] = None,
|
|
1206
1241
|
):
|
|
1207
1242
|
"""Update load balancer settings."""
|
|
1208
1243
|
payload = {
|
|
@@ -1228,6 +1263,31 @@ class TimewebCloud(TimewebCloudBase):
|
|
|
1228
1263
|
if backend_keepalive is not None
|
|
1229
1264
|
else {}
|
|
1230
1265
|
),
|
|
1266
|
+
**(
|
|
1267
|
+
{"maxconn": max_connections}
|
|
1268
|
+
if max_connections is not None
|
|
1269
|
+
else {}
|
|
1270
|
+
),
|
|
1271
|
+
**(
|
|
1272
|
+
{"connect_timeout": connect_timeout}
|
|
1273
|
+
if connect_timeout is not None
|
|
1274
|
+
else {}
|
|
1275
|
+
),
|
|
1276
|
+
**(
|
|
1277
|
+
{"client_timeout": client_timeout}
|
|
1278
|
+
if client_timeout is not None
|
|
1279
|
+
else {}
|
|
1280
|
+
),
|
|
1281
|
+
**(
|
|
1282
|
+
{"server_timeout": server_timeout}
|
|
1283
|
+
if server_timeout is not None
|
|
1284
|
+
else {}
|
|
1285
|
+
),
|
|
1286
|
+
**(
|
|
1287
|
+
{"httprequest_timeout": http_timeout}
|
|
1288
|
+
if http_timeout is not None
|
|
1289
|
+
else {}
|
|
1290
|
+
),
|
|
1231
1291
|
}
|
|
1232
1292
|
return self._request(
|
|
1233
1293
|
"PATCH", f"{self.api_url}/balancers/{balancer_id}", json=payload
|
|
@@ -198,6 +198,22 @@ def balancer_create(
|
|
|
198
198
|
proxy_protocol: bool = typer.Option(False),
|
|
199
199
|
force_https: bool = typer.Option(False),
|
|
200
200
|
backend_keepalive: bool = typer.Option(False),
|
|
201
|
+
max_connections: Optional[int] = typer.Option(
|
|
202
|
+
None, help="Backend server's maximum number of concurrent connections."
|
|
203
|
+
),
|
|
204
|
+
connect_timeout: Optional[int] = typer.Option(
|
|
205
|
+
None,
|
|
206
|
+
help="Maximum time to wait for a connection attempt to a backend server to succeed.",
|
|
207
|
+
),
|
|
208
|
+
client_timeout: Optional[int] = typer.Option(
|
|
209
|
+
None, help="Maximum inactivity time on the client side."
|
|
210
|
+
),
|
|
211
|
+
server_timeout: Optional[int] = typer.Option(
|
|
212
|
+
None, help="Maximum time for pending data staying into output buffer."
|
|
213
|
+
),
|
|
214
|
+
http_timeout: Optional[int] = typer.Option(
|
|
215
|
+
None, help="Maximum allowed time to wait for a complete HTTP request."
|
|
216
|
+
),
|
|
201
217
|
project_id: Optional[int] = typer.Option(
|
|
202
218
|
None,
|
|
203
219
|
envvar="TWC_PROJECT",
|
|
@@ -259,6 +275,11 @@ def balancer_create(
|
|
|
259
275
|
"network": {},
|
|
260
276
|
"project_id": project_id,
|
|
261
277
|
"certificates": {},
|
|
278
|
+
"max_connections": max_connections,
|
|
279
|
+
"connect_timeout": connect_timeout,
|
|
280
|
+
"client_timeout": client_timeout,
|
|
281
|
+
"server_timeout": server_timeout,
|
|
282
|
+
"http_timeout": http_timeout,
|
|
262
283
|
}
|
|
263
284
|
|
|
264
285
|
if cert_type == CertType.CUSTOM:
|
|
@@ -412,6 +433,22 @@ def balancer_set(
|
|
|
412
433
|
proxy_protocol: Optional[bool] = typer.Option(None),
|
|
413
434
|
force_https: Optional[bool] = typer.Option(None),
|
|
414
435
|
backend_keepalive: Optional[bool] = typer.Option(None),
|
|
436
|
+
max_connections: Optional[int] = typer.Option(
|
|
437
|
+
None, help="Backend server's maximum number of concurrent connections."
|
|
438
|
+
),
|
|
439
|
+
connect_timeout: Optional[int] = typer.Option(
|
|
440
|
+
None,
|
|
441
|
+
help="Maximum time to wait for a connection attempt to a backend server to succeed.",
|
|
442
|
+
),
|
|
443
|
+
client_timeout: Optional[int] = typer.Option(
|
|
444
|
+
None, help="Maximum inactivity time on the client side."
|
|
445
|
+
),
|
|
446
|
+
server_timeout: Optional[int] = typer.Option(
|
|
447
|
+
None, help="Maximum time for pending data staying into output buffer."
|
|
448
|
+
),
|
|
449
|
+
http_timeout: Optional[int] = typer.Option(
|
|
450
|
+
None, help="Maximum allowed time to wait for a complete HTTP request."
|
|
451
|
+
),
|
|
415
452
|
):
|
|
416
453
|
"""Change load balancer parameters."""
|
|
417
454
|
client = create_client(config, profile)
|
|
@@ -442,6 +479,11 @@ def balancer_set(
|
|
|
442
479
|
proxy_protocol=proxy_protocol,
|
|
443
480
|
force_https=force_https,
|
|
444
481
|
backend_keepalive=backend_keepalive,
|
|
482
|
+
max_connections=max_connections,
|
|
483
|
+
connect_timeout=connect_timeout,
|
|
484
|
+
client_timeout=client_timeout,
|
|
485
|
+
server_timeout=server_timeout,
|
|
486
|
+
http_timeout=http_timeout,
|
|
445
487
|
)
|
|
446
488
|
|
|
447
489
|
fmt.printer(
|
|
@@ -611,7 +611,7 @@ def storage_genconfig(
|
|
|
611
611
|
"rclone": RCLONE_CONFIG_TEMPLATE.strip(),
|
|
612
612
|
}
|
|
613
613
|
|
|
614
|
-
endpoint = "s3.
|
|
614
|
+
endpoint = "s3.twcstorage.ru"
|
|
615
615
|
if not access_key.isupper():
|
|
616
616
|
# Legacy object storage service have lowercase usernames only.
|
|
617
617
|
# New storage, on the contrary, always has keys in uppercase.
|
|
@@ -8,7 +8,7 @@ expand or other infrastructure or product changes occur.
|
|
|
8
8
|
CONTROL_PANEL_URL = "https://timeweb.cloud/my"
|
|
9
9
|
|
|
10
10
|
# Location specific parameters. May change later.
|
|
11
|
-
REGIONS_WITH_IPV6 = ["ru-1", "ru-3", "pl-1", "nl-1"]
|
|
11
|
+
REGIONS_WITH_IPV6 = ["ru-1", "ru-3", "pl-1", "nl-1", "kz-1"]
|
|
12
12
|
REGIONS_WITH_IMAGES = ["ru-1", "ru-3", "kz-1", "pl-1", "nl-1"]
|
|
13
13
|
REGIONS_WITH_LAN = ["ru-1", "ru-3", "nl-1", "pl-1", "de-1"]
|
|
14
14
|
ZONES_WITH_LAN = [
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|