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 | |
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.
-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') |