summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoberto Hueso Gómez <rhueso@soleta.eu>2020-07-03 14:27:29 +0200
committerRoberto Hueso Gómez <rhueso@soleta.eu>2020-07-06 13:32:02 +0200
commit8961937329940e41219f0a32c4aec0aad9d81636 (patch)
tree5be63b67bbede2f22ec88320f7d0c7c6a8cda816
parent4dddd359e73d96eba4c472138ea70064d0f39616 (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
-rw-r--r--cli/cli.py9
-rw-r--r--cli/objects/modes.py24
2 files changed, 33 insertions, 0 deletions
diff --git a/cli/cli.py b/cli/cli.py
index 01e15eb..49b3930 100644
--- a/cli/cli.py
+++ b/cli/cli.py
@@ -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)