source: ogCli-Git/cli/cli.py @ 7d11dc4

Last change on this file since 7d11dc4 was d90ab82, checked in by Jose M. Guisado <jguisado@…>, 2 years ago

format: use autopep8

Use autopep8 for coding format, and only for whitespace changes. This
change drops use of tabs in favor of spaces.

Doesn't use autopep8 --aggresive option.

Format command:

$ autopep8 --inline --recursive .

When using git-blame, use --ignore-rev in order to ignore this
reformatting commit.

  • Property mode set to 100644
File size: 4.5 KB
Line 
1# Copyright (C) 2020-2021 Soleta Networks <info@soleta.eu>
2#
3# This program is free software: you can redistribute it and/or modify it under
4# the terms of the GNU Affero General Public License as published by the
5# Free Software Foundation; either version 3 of the License, or
6# (at your option) any later version.
7
8from cli.objects.client import OgClient
9from cli.objects.scopes import OgScope
10from cli.objects.modes import OgModes
11from cli.objects.wol import OgWol
12from cli.objects.images import OgImage
13from cli.objects.disks import OgDisk
14from cli.objects.poweroff import OgPoweroff
15import argparse
16import requests
17import sys
18
19
20class OgREST():
21    def __init__(self, ip, port, api_token):
22        self.URL = f'http://{ip}:{port}'
23        self.HEADERS = {'Authorization': api_token}
24
25    def get(self, path, payload=None):
26        try:
27            r = requests.get(f'{self.URL}{path}',
28                             headers=self.HEADERS,
29                             json=payload)
30            if r.status_code != 200:
31                sys.exit(f"Cannot connect to ogServer: "
32                         f"{r.status_code} HTTP status code")
33        except IOError as e:
34            sys.exit(f"Cannot connect to ogServer: {e}")
35        return r
36
37    def post(self, path, payload):
38        try:
39            r = requests.post(f'{self.URL}{path}',
40                              headers=self.HEADERS,
41                              json=payload)
42            print(r.text)
43            if r.status_code not in {200, 202}:
44                sys.exit(f"Cannot connect to ogServer: "
45                         f"{r.status_code} HTTP status code")
46        except IOError as e:
47            sys.exit(f"Cannot connect to ogServer: {e}")
48        return r
49
50
51class OgCLI():
52    def __init__(self, cfg):
53        self.rest = OgREST(cfg['ip'], cfg['port'], cfg['api_token'])
54
55    def list(self, args):
56        choices = ['clients', 'scopes', 'modes', 'hardware',
57                   'client', 'images', 'disks']
58        parser = argparse.ArgumentParser(prog='ogcli list')
59        parser.add_argument('item', choices=choices)
60        parsed_args = parser.parse_args([args[0]])
61
62        if parsed_args.item == 'clients':
63            OgClient.list_clients(self.rest)
64        elif parsed_args.item == 'client':
65            OgClient.get_client_properties(self.rest, args[1:])
66        elif parsed_args.item == 'hardware':
67            OgClient.list_client_hardware(self.rest, args[1:])
68        elif parsed_args.item == 'modes':
69            OgModes.list_available_modes(self.rest)
70        elif parsed_args.item == 'scopes':
71            OgScope.list_scopes(self.rest)
72        elif parsed_args.item == 'images':
73            OgImage.list_images(self.rest)
74        elif parsed_args.item == 'disks':
75            OgDisk.list_disks(self.rest, args[1:])
76
77    def set(self, args):
78        choices = ['modes', 'mode']
79        parser = argparse.ArgumentParser(prog='ogcli set')
80        parser.add_argument('item', choices=choices)
81        parsed_args = parser.parse_args([args[0]])
82
83        if parsed_args.item in choices:
84            OgModes.set_modes(self.rest, args[1:])
85
86    def send(self, args):
87        choices = ['wol', 'poweroff', 'refresh']
88        parser = argparse.ArgumentParser(prog='ogcli send')
89        parser.add_argument('send_obj', choices=choices)
90        parsed_args = parser.parse_args([args[0]])
91
92        if parsed_args.send_obj == 'wol':
93            OgWol.send_wol(self.rest, args[1:])
94        elif parsed_args.send_obj == 'poweroff':
95            OgPoweroff.send_poweroff(self.rest, args[1:])
96        elif parsed_args.send_obj == 'refresh':
97            OgClient.send_refresh(self.rest, args[1:])
98
99    def restore(self, args):
100        choices = ['image']
101        parser = argparse.ArgumentParser(prog='ogcli restore')
102        parser.add_argument('send_obj', choices=choices)
103        parsed_args = parser.parse_args([args[0]])
104
105        if parsed_args.send_obj == 'image':
106            OgImage.restore_image(self.rest, args[1:])
107
108    def create(self, args):
109        choices = ['image']
110        parser = argparse.ArgumentParser(prog='ogcli create')
111        parser.add_argument('create_obj', choices=choices)
112        parsed_args = parser.parse_args([args[0]])
113
114        if parsed_args.create_obj == 'image':
115            OgImage.create_image(self.rest, args[1:])
116
117    def setup(self, args):
118        choices = ['disk']
119        parser = argparse.ArgumentParser(prog='ogcli setup')
120        parser.add_argument('setup_obj', choices=choices)
121        parsed_args = parser.parse_args([args[0]])
122
123        if parsed_args.setup_obj == 'disk':
124            OgDisk.setup_disk(self.rest, args[1:])
Note: See TracBrowser for help on using the repository browser.