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
master
Roberto Hueso Gómez 2020-07-03 14:27:29 +02:00
parent 4dddd359e7
commit 8961937329
2 changed files with 33 additions and 0 deletions

View File

@ -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:])

View File

@ -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)