diff options
author | Roberto Hueso Gómez <rhueso@soleta.eu> | 2020-07-08 11:47:48 +0200 |
---|---|---|
committer | Roberto Hueso Gómez <rhueso@soleta.eu> | 2020-07-08 13:38:50 +0200 |
commit | f4e1bb767b98ef8370208c79123b6eafac5f4732 (patch) | |
tree | 1d616806dbf80468484af8e5e0029eec4ea04364 | |
parent | e3d30d23ff22bebb8e5ebf0e731aab4a14502cea (diff) |
Add ogcli list hardware command
This requests GET /hardware by calling something like:
ogcli list hardware --scope-id=6
It is important to notice that 'scope-id' must be a "computer" type scope id.
-rw-r--r-- | cli/cli.py | 12 | ||||
-rw-r--r-- | cli/objects/client.py | 16 |
2 files changed, 23 insertions, 5 deletions
@@ -48,16 +48,18 @@ class OgCLI(): self.rest = OgREST(cfg['ip'], cfg['port'], cfg['api_token']) def list(self, args): - choices = ['clients', 'scopes', 'modes'] + choices = ['clients', 'scopes', 'modes', 'hardware'] parser = argparse.ArgumentParser() parser.add_argument('item', choices=choices) - args = parser.parse_args(args) + parsed_args = parser.parse_args([args[0]]) - if args.item == 'clients': + if parsed_args.item == 'clients': OgClient.list_clients(self.rest) - elif args.item == 'modes': + elif parsed_args.item == 'hardware': + OgClient.list_client_hardware(self.rest, args[1:]) + elif parsed_args.item == 'modes': OgModes.list_available_modes(self.rest) - elif args.item == 'scopes': + elif parsed_args.item == 'scopes': OgScope.list_scopes(self.rest) def set(self, args): diff --git a/cli/objects/client.py b/cli/objects/client.py index 6ae1867..9404635 100644 --- a/cli/objects/client.py +++ b/cli/objects/client.py @@ -6,9 +6,25 @@ # Free Software Foundation, version 3. # +import argparse + class OgClient(): @staticmethod def list_clients(rest): r = rest.get('/clients') print(r.json()) + + @staticmethod + def list_client_hardware(rest, args): + parser = argparse.ArgumentParser() + parser.add_argument('--scope-id', + nargs=1, + required=True, + help='ID of the computer scope') + parsed_args = parser.parse_args(args) + + payload = {'scope': {'id': int(parsed_args.scope_id[0]), + 'type': 'computer'}} + r = rest.get('/hardware', payload=payload) + print(r.json()) |