diff options
author | Roberto Hueso Gómez <rhueso@soleta.eu> | 2020-07-03 14:27:29 +0200 |
---|---|---|
committer | Roberto Hueso Gómez <rhueso@soleta.eu> | 2020-07-06 13:32:02 +0200 |
commit | 8961937329940e41219f0a32c4aec0aad9d81636 (patch) | |
tree | 5be63b67bbede2f22ec88320f7d0c7c6a8cda816 /cli | |
parent | 4dddd359e73d96eba4c472138ea70064d0f39616 (diff) |
Add ogcli set mode command
This requests POST /modes and changes a scope mode by calling something like:
ogcli set modes --scope-id=1 --scope-type=computer --mode=pxe
Diffstat (limited to 'cli')
-rw-r--r-- | cli/cli.py | 9 | ||||
-rw-r--r-- | cli/objects/modes.py | 24 |
2 files changed, 33 insertions, 0 deletions
@@ -58,3 +58,12 @@ class OgCLI(): OgModes.list_available_modes(self.rest) elif args.item == 'scopes': OgScope.list_scopes(self.rest) + + def set(self, args): + choices = ['modes'] + parser = argparse.ArgumentParser() + parser.add_argument('item', choices=choices) + parsed_args = parser.parse_args([args[0]]) + + if parsed_args.item == 'modes': + OgModes.set_modes(self.rest, args[1:]) diff --git a/cli/objects/modes.py b/cli/objects/modes.py index 04e281d..983175f 100644 --- a/cli/objects/modes.py +++ b/cli/objects/modes.py @@ -6,9 +6,33 @@ # Free Software Foundation, version 3. # +import argparse + class OgModes(): @staticmethod def list_available_modes(rest): r = rest.get('/modes') print(r.json()) + + @staticmethod + def set_modes(rest, args): + parser = argparse.ArgumentParser() + parser.add_argument('--scope-id', + nargs=1, + required=True, + help='ID of the scope') + parser.add_argument('--scope-type', + nargs=1, + required=True, + help='Type of the scope') + parser.add_argument('--mode', + nargs=1, + required=True, + help='Mode for the scope') + parsed_args = parser.parse_args(args) + + payload = {'scope': {'id': int(parsed_args.scope_id[0]), + 'type': parsed_args.scope_type[0]}, + 'mode': parsed_args.mode[0]} + r = rest.post('/modes', payload=payload) |