diff options
author | Alejandro Sirgo Rica <asirgo@soleta.eu> | 2024-02-09 11:32:10 +0100 |
---|---|---|
committer | OpenGnSys Support Team <soporte-og@soleta.eu> | 2024-02-13 12:13:00 +0100 |
commit | 9be4de87b7ba14adc6754f408d855b960ffeca25 (patch) | |
tree | a39db25f300b338ffb71a538485f22c646286d06 /cli | |
parent | 499272fa2996fa0d1152645e190d8012b6b83a50 (diff) |
ogcli: add update command for folder, room and center
Expand of the update command to be able to modify the values of
previous folder, room and center configurations.
Diffstat (limited to 'cli')
-rw-r--r-- | cli/cli.py | 10 | ||||
-rw-r--r-- | cli/objects/center.py | 25 | ||||
-rw-r--r-- | cli/objects/folder.py | 23 | ||||
-rw-r--r-- | cli/objects/room.py | 43 |
4 files changed, 97 insertions, 4 deletions
@@ -186,7 +186,7 @@ class OgCLI(): OgDisk.setup_disk(self.rest, args[1:]) def update(self, args): - choices = ['image'] + choices = ['image', 'center', 'room', 'folder'] parser = argparse.ArgumentParser(prog='ogcli update') parser.add_argument('update_obj', choices=choices) @@ -198,6 +198,12 @@ class OgCLI(): parsed_args = parser.parse_args([args[0]]) if parsed_args.update_obj == 'image': OgImage.update_image(self.rest, args[1:]) + elif parsed_args.update_obj == 'center': + OgCenter.update_center(self.rest, args[1:]) + elif parsed_args.update_obj == 'room': + OgRoom.update_room(self.rest, args[1:]) + elif parsed_args.update_obj == 'folder': + OgFolder.update_folder(self.rest, args[1:]) def delete(self, args): choices = ['server', 'repo', 'center', 'room', 'client', 'folder'] @@ -220,7 +226,7 @@ class OgCLI(): OgRoom.delete_room(self.rest, args[1:]) elif parsed_args.delete_obj == 'client': OgClient.delete_client(self.rest, args[1:]) - elif parsed_args.add_obj == 'folder': + elif parsed_args.delete_obj == 'folder': OgFolder.delete_folder(self.rest, args[1:]) def add(self, args): diff --git a/cli/objects/center.py b/cli/objects/center.py index 0318a57..80e5e3e 100644 --- a/cli/objects/center.py +++ b/cli/objects/center.py @@ -26,6 +26,31 @@ class OgCenter(): rest.post('/center/add', payload=payload) @staticmethod + def update_center(rest, args): + parser = argparse.ArgumentParser(prog='ogcli update center') + parser.add_argument('--id', + type=int, + nargs='?', + required=True, + help='center id in database') + parser.add_argument('--name', + nargs='?', + required=True, + help='the new name for the center') + parser.add_argument('--comment', + nargs='?', + required=False, + help='the new comment for the center') + parsed_args = parser.parse_args(args) + payload = { + 'id': parsed_args.id, + 'name': parsed_args.name, + } + if parsed_args.comment: + payload['comment'] = parsed_args.comment + rest.post('/center/update', payload=payload) + + @staticmethod def delete_center(rest, args): parser = argparse.ArgumentParser(prog='ogcli delete center') parser.add_argument('--id', diff --git a/cli/objects/folder.py b/cli/objects/folder.py index 4b9485b..c4da900 100644 --- a/cli/objects/folder.py +++ b/cli/objects/folder.py @@ -18,12 +18,12 @@ class OgFolder(): group.add_argument('--center-id', nargs='?', type=int, - required=True, + required=False, help='provide the id of the center that will contain the folder') group.add_argument('--room-id', nargs='?', type=int, - required=True, + required=False, help='provide the id of the room that will contain the folder') parser.add_argument('--name', @@ -42,6 +42,25 @@ class OgFolder(): rest.post('/folder/add', payload=payload) @staticmethod + def update_folder(rest, args): + parser = argparse.ArgumentParser(prog='ogcli update folder') + parser.add_argument('--id', + type=int, + nargs='?', + required=True, + help='folder id in database') + parser.add_argument('--name', + nargs='?', + required=True, + help='the new name for the folder') + parsed_args = parser.parse_args(args) + payload = { + 'id': parsed_args.id, + 'name': parsed_args.name, + } + rest.post('/folder/update', payload=payload) + + @staticmethod def delete_folder(rest, args): parser = argparse.ArgumentParser(prog='ogcli delete folder') parser.add_argument('--id', diff --git a/cli/objects/room.py b/cli/objects/room.py index 9198237..f22c843 100644 --- a/cli/objects/room.py +++ b/cli/objects/room.py @@ -85,9 +85,52 @@ class OgRoom(): rest.post('/room/add', payload=payload) @staticmethod + def update_room(rest, args): + parser = argparse.ArgumentParser(prog='ogcli update room') + parser.add_argument('--id', + type=int, + nargs='?', + required=True, + help='room id in database') + parser.add_argument('--name', + nargs='?', + required=True, + help='the updated name for the room') + parser.add_argument('--netmask', + nargs='?', + required=True, + help='the updated netmask for the room') + parser.add_argument('--gateway', + nargs='?', + required=True, + help='updated address of the main gateway in the room') + parsed_args = parser.parse_args(args) + + err = False + if parsed_args.netmask and not check_address(parsed_args.netmask): + print('invalid netmask address', file=sys.stderr) + err = True + if parsed_args.gateway and not check_address(parsed_args.gateway): + print('invalid gateway address', file=sys.stderr) + err = True + if err: + parser.print_help(file=sys.stderr) + sys.exit(1) + + payload = { + 'id': parsed_args.id, + 'name': parsed_args.name, + 'netmask': parsed_args.netmask, + 'gateway': parsed_args.gateway, + } + + rest.post('/room/update', payload=payload) + + @staticmethod def delete_room(rest, args): parser = argparse.ArgumentParser(prog='ogcli delete room') parser.add_argument('--id', + type=int, nargs='?', required=True, help='room id in database') |