mirror of https://git.48k.eu/ogcli/
Rework set mode command
This reworks the POST /mode command to the new API: POST /mode { 'clients': ['192.168.1.5', '192.168.1.6'] 'mode': 'pxe' }master
parent
d4f4497056
commit
015a43ac3a
|
@ -18,16 +18,51 @@ class OgModes():
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def set_modes(rest, args):
|
def set_modes(rest, args):
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('--scope-name',
|
parser.add_argument('--scope-id',
|
||||||
nargs=1,
|
nargs=1,
|
||||||
required=True,
|
required=True,
|
||||||
help='Name of the scope (room or computer)')
|
help='ID of the scope')
|
||||||
|
parser.add_argument('--scope-type',
|
||||||
|
nargs=1,
|
||||||
|
required=True,
|
||||||
|
help='Type of the scope')
|
||||||
parser.add_argument('--mode',
|
parser.add_argument('--mode',
|
||||||
nargs=1,
|
nargs=1,
|
||||||
required=True,
|
required=True,
|
||||||
help='Mode for the scope')
|
help='Mode for the scope')
|
||||||
parsed_args = parser.parse_args(args)
|
parsed_args = parser.parse_args(args)
|
||||||
|
|
||||||
payload = {'scope_name': parsed_args.scope_name[0],
|
def scope_lookup(scope_id, scope_type, d):
|
||||||
'mode': parsed_args.mode[0]}
|
if scope_id == d.get('id') and \
|
||||||
|
scope_type == d.get('type'):
|
||||||
|
return d
|
||||||
|
for scope in d['scope']:
|
||||||
|
lookup = scope_lookup(scope_id,
|
||||||
|
scope_type,
|
||||||
|
scope)
|
||||||
|
if lookup is not None:
|
||||||
|
return lookup
|
||||||
|
return None
|
||||||
|
|
||||||
|
def ips_in_scope(scope):
|
||||||
|
if 'ip' in scope:
|
||||||
|
return [scope['ip']]
|
||||||
|
ips = []
|
||||||
|
for child in scope['scope']:
|
||||||
|
ips += ips_in_scope(child)
|
||||||
|
return ips
|
||||||
|
|
||||||
|
r = rest.get('/scopes')
|
||||||
|
scopes = r.json()
|
||||||
|
found_scope = scope_lookup(int(parsed_args.scope_id[0]),
|
||||||
|
parsed_args.scope_type[0],
|
||||||
|
scopes)
|
||||||
|
|
||||||
|
if found_scope is None:
|
||||||
|
print("Scope not found")
|
||||||
|
return None
|
||||||
|
|
||||||
|
ips = ips_in_scope(found_scope)
|
||||||
|
|
||||||
|
payload = {'clients': ips, 'mode': parsed_args.mode[0]}
|
||||||
r = rest.post('/mode', payload=payload)
|
r = rest.post('/mode', payload=payload)
|
||||||
|
|
Loading…
Reference in New Issue