From e40d253ff8131d2c37dc040b021fc5c594349bc1 Mon Sep 17 00:00:00 2001 From: Samuel Soubeyran Date: Thu, 8 Jun 2023 17:25:39 -0700 Subject: [PATCH 1/3] Add manage team script --- manage_team.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 manage_team.py diff --git a/manage_team.py b/manage_team.py new file mode 100755 index 0000000..31c2aeb --- /dev/null +++ b/manage_team.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 +import argparse +import csv +from utils import SigmaClient + +''' +./manage_team.py --env production --cloud aws --client_id xxxx --client_secret xxx \ +--team_id xxx --file xxx.csv +''' +def main(): + parser = argparse.ArgumentParser( + description='Add or remove members of a team') + parser.add_argument( + '--env', type=str, required=True, help='env to use: [production | staging].') + parser.add_argument( + '--cloud', type=str, required=True, help='Cloud to use: [aws | gcp]') + parser.add_argument( + '--client_id', type=str, required=True, help='Client ID generated from Sigma') + parser.add_argument( + '--client_secret', type=str, required=True, help='Client secret generated from Sigma') + parser.add_argument( + '--team_id', type=str, required=True, help='ID of the team') + parser.add_argument( + '-a', '--add', nargs='+', type=str, help='Optional workbook element') + parser.add_argument( + '-r', '--remove', nargs='+', type=str, help='Optional filename prefix') + parser.add_argument( + '-f', '--file', type=str, help='Optional csv file with columns "member_id, operation" where operation in (add|remove)' + ) + parser.add_argument( + '--dry_run', action='store_true', help='Just print') + + args = parser.parse_args() + if args.dry_run: + print(args) + client = SigmaClient(args.env, args.cloud, args.client_id, args.client_secret) + payload = { + 'add': [], + 'remove': [] + } + if args.add or args.remove: + payload = { + 'add': args.add, + 'remove': args.remove + } + elif args.file: + with open(args.file) as csvfile: + reader = csv.DictReader(csvfile) + for row in reader: + print(row) + if row['operation'] == 'add': + payload['add'].append(row['member_id']) + elif row['operation'] == 'remove': + payload['remove'].append(row['member_id']) + if args.dry_run: + print(payload) + else: + res = client.patch(f'v2/teams/{args.team_id}/members', json=payload) + print(res) + +if __name__ == '__main__': + main() \ No newline at end of file From 251834caf94eaa987866a4d49bc97915764caa1b Mon Sep 17 00:00:00 2001 From: Samuel Soubeyran Date: Thu, 8 Jun 2023 17:28:59 -0700 Subject: [PATCH 2/3] fix help --- manage_team.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manage_team.py b/manage_team.py index 31c2aeb..669b424 100755 --- a/manage_team.py +++ b/manage_team.py @@ -21,9 +21,9 @@ def main(): parser.add_argument( '--team_id', type=str, required=True, help='ID of the team') parser.add_argument( - '-a', '--add', nargs='+', type=str, help='Optional workbook element') + '-a', '--add', nargs='+', type=str, help='user ids to add to the teams') parser.add_argument( - '-r', '--remove', nargs='+', type=str, help='Optional filename prefix') + '-r', '--remove', nargs='+', type=str, help='user ids to remove from the team') parser.add_argument( '-f', '--file', type=str, help='Optional csv file with columns "member_id, operation" where operation in (add|remove)' ) From 901912f1e5827a7c19121c9e16f5fe22fd790dd4 Mon Sep 17 00:00:00 2001 From: Samuel Soubeyran Date: Thu, 8 Jun 2023 17:29:27 -0700 Subject: [PATCH 3/3] nit --- manage_team.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manage_team.py b/manage_team.py index 669b424..853545c 100755 --- a/manage_team.py +++ b/manage_team.py @@ -59,4 +59,4 @@ def main(): print(res) if __name__ == '__main__': - main() \ No newline at end of file + main()