mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-10-31 19:08:01 +00:00 
			
		
		
		
	 fbc7e09f7e
			
		
	
	fbc7e09f7e
	
	
	
		
			
			* Add Ananda API wrapper Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org> * Add short usage description Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org> * Add requirements.txt and change error handling Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
		
			
				
	
	
		
			149 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| import json
 | |
| import requests
 | |
| import argparse
 | |
| 
 | |
| ananda_api = 'https://api.ananda.net'
 | |
| 
 | |
| 
 | |
| def get_bearer_token():
 | |
|     authHeader = {"Authorization": args.token}
 | |
|     r = requests.post(
 | |
|         f'{ananda_api}/login-accounts/v1.2/auths/apis/oauth/token',
 | |
|         headers=authHeader)
 | |
| 
 | |
|     try:
 | |
|         org_id = r.json()['meta']['orgId']
 | |
|         token = r.json()['access_token']
 | |
|     except Exception:
 | |
|         print('Error: could not get bearer token.')
 | |
|         exit(1)
 | |
| 
 | |
|     return org_id, token
 | |
| 
 | |
| 
 | |
| def logout():
 | |
|     authHeader = {"Authorization": f"Bearer {token}"}
 | |
|     r = requests.get(
 | |
|         f'{ananda_api}/login-accounts/v1.2/auths/logout',
 | |
|         headers=authHeader)
 | |
| 
 | |
| 
 | |
| def get_user_id():
 | |
|     authHeader = {"Authorization": f"Bearer {token}"}
 | |
|     r = requests.get(
 | |
|         f'{ananda_api}/manage-accounts/v1.2/api/orgs/{org_id}/users',
 | |
|         headers=authHeader)
 | |
| 
 | |
|     try:
 | |
|         for key in r.json():
 | |
|             user_data = key
 | |
|             if user_data['email'] == args.user or user_data['name'] == args.user:
 | |
|                 user_id = user_data['userId']
 | |
|                 break
 | |
|     except Exception:
 | |
|         print('Error: user was not found')
 | |
|         exit(1)
 | |
| 
 | |
|     return user_id
 | |
| 
 | |
| 
 | |
| def get_group_id():
 | |
|     authHeader = {"Authorization": f"Bearer {token}"}
 | |
|     r = requests.get(
 | |
|         f'{ananda_api}/manage-accounts/v1.2/api/orgs/{org_id}/groups',
 | |
|         headers=authHeader)
 | |
| 
 | |
|     try:
 | |
|         for key in r.json():
 | |
|             group_data = key
 | |
|             if group_data['name'] == args.group:
 | |
|                 group_id = group_data['groupId']
 | |
|                 break
 | |
|     except Exception:
 | |
|         print('Error: group was not found')
 | |
|         exit(1)
 | |
| 
 | |
|     return group_id
 | |
| 
 | |
| 
 | |
| def get_user_groups():
 | |
|     user_id = get_user_id()
 | |
| 
 | |
|     authHeader = {"Authorization": f"Bearer {token}"}
 | |
|     r = requests.get(
 | |
|         f'{ananda_api}/manage-accounts/v1.2/api/orgs/{org_id}/users/{user_id}',
 | |
|         headers=authHeader)
 | |
| 
 | |
|     try:
 | |
|         user_groups = r.json()['groupIds']
 | |
|     except Exception:
 | |
|         print('Error: user was not found')
 | |
|         exit(1)
 | |
| 
 | |
|     return user_groups
 | |
| 
 | |
| 
 | |
| def list_resource(resource):
 | |
|     authHeader = {"Authorization": f"Bearer {token}"}
 | |
|     r = requests.get(
 | |
|         f'{ananda_api}/manage-accounts/v1.2/api/orgs/{org_id}/{resource}',
 | |
|         headers=authHeader)
 | |
| 
 | |
|     print(json.dumps(r.json(), indent=4, sort_keys=True))
 | |
| 
 | |
| 
 | |
| def set_user_groups():
 | |
|     user_id = get_user_id()
 | |
|     group_id = get_group_id()
 | |
|     user_groups = get_user_groups()
 | |
| 
 | |
|     authHeader = {"Authorization": f"Bearer {token}"}
 | |
| 
 | |
|     if args.api_call == 'add_user_to_group':
 | |
|         data = user_groups + [group_id]
 | |
|     elif args.api_call == 'remove_user_from_group':
 | |
|         try:
 | |
|             user_groups.remove(group_id)
 | |
|         except Exception:
 | |
|             print('Error: user is not in group')
 | |
|             exit(1)
 | |
|         data = user_groups
 | |
| 
 | |
|     r = requests.post(
 | |
|         f'{ananda_api}/manage-accounts/v1.2/api/orgs/{org_id}/users/{user_id}/groups',
 | |
|         json=data,
 | |
|         headers=authHeader)
 | |
| 
 | |
| 
 | |
| def main():
 | |
|     if args.api_call == 'list_users':
 | |
|         list_resource('users')
 | |
|     if args.api_call == 'list_groups':
 | |
|         list_resource('groups')
 | |
|     if args.api_call == 'add_user_to_group' or args.api_call == 'remove_user_from_group':
 | |
|         set_user_groups()
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     parser = argparse.ArgumentParser()
 | |
|     parser.add_argument(
 | |
|         'api_call',
 | |
|         help='The API call you want to make, currently supported are: '
 | |
|              'list_users, '
 | |
|              'list_groups, '
 | |
|              'add_user_to_group, '
 | |
|              'remove_user_from_group')
 | |
|     parser.add_argument('--token', help='your Ananda API token')
 | |
|     parser.add_argument(
 | |
|         '--user',
 | |
|         help='user you want to add to or remove from group, '
 | |
|              'you can either specify email address or first and last name')
 | |
|     parser.add_argument('--group', help='name of the group you want to add or remove a user from')
 | |
|     args = parser.parse_args()
 | |
| 
 | |
|     org_id, token = get_bearer_token()
 | |
|     main()
 | |
|     logout()
 |