From eeeded888f8d39cd3a2b989983a11c91a112dd2d Mon Sep 17 00:00:00 2001 From: Lulzette Date: Fri, 8 Apr 2022 15:20:33 +0300 Subject: [PATCH] requirements.txt and README.md --- README.md | 16 ++++++++++++++++ requirements.txt | 7 +++++++ twvdscli.py | 33 ++++++++++++++++++++++++++++++++- 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 README.md create mode 100644 requirements.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..effb849 --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +twvdscli +==== + +Это утилита для управления серверами и сервисами в Timeweb Cloud. + +# Установка + +Потребуются пакеты typer, prettytable, requests. Ставим их из файла: + +```commandline +pip3 install --user -r requirements.txt +``` + +# Запуск + +При первом запуске утилита спросит логин и пароль, после чего запишет их в ~/.config/twvdscli.ini в формате base64 через знак ":". \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..aa29f38 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +click==8.0.4 +pip==22.0.4 +prettytable==3.2.0 +setuptools==60.9.3 +typer==0.4.0 +wcwidth==0.2.5 +wheel==0.37.1 diff --git a/twvdscli.py b/twvdscli.py index 8a745fd..ed5475a 100755 --- a/twvdscli.py +++ b/twvdscli.py @@ -18,6 +18,8 @@ from time import sleep app = typer.Typer() servers_app = typer.Typer() app.add_typer(servers_app, name='vds') +backups_app = typer.Typer() +servers_app.add_typer(backups_app, name='backup') class Server: @@ -115,6 +117,36 @@ class Server: return result.json() +class Backups: + @staticmethod + def create(vds_id): + disk_id = Server.get_vds(vds_id)['server']['disk_stats']['disk_id'] + + uri = "https://public-api.timeweb.com/api/v1/backups/vds/{id}/drive/{disk_id}" + result = requests.post( + uri.format(id=vds_id, disk_id=disk_id), + headers=reqHeader + ) + if result.ok: + return result.json() + else: + return None + + +@backups_app.command("create") +def create_backup(vds_id: Optional[int] = typer.Argument(None)): + """ + Create backup of main disk + """ + if vds_id is None: + vds_list() + vds_id = input("Enter VDS ID: ") + result = Backups.create(vds_id) + if result is None: + print(typer.style("Error", fg=typer.colors.RED)) + sys.exit(1) + print(result.json()) + @app.command("balance") def get_balance(): @@ -297,5 +329,4 @@ if __name__ == '__main__': print(typer.style("Auth Error", fg=typer.colors.RED)) sys.exit(1) reqHeader = {"Authorization": "Bearer " + apikey} - app()