tmunzer / mist_library

Python scripts demoing Mist APIs possibilities.
MIT License
29 stars 13 forks source link

problems with inventory_assign.py #24

Open JYarg72 opened 6 days ago

JYarg72 commented 6 days ago

Hello Thomas, we've found a problem with the inventory_assign.py script. I've provided output of it failing with using site_id, claimcode(ap gets claimed, but does not get assigned to a site) and using site_id,mac(ap does not get assigned to a site). Also the relevant script log is included for both scenarios. Some information has been x'd out for privacy. Our group doesn't have alot of python experience so we appreciate all these scripts as they are helping us get off the ground with our mass ap deployments. Thanks!

[xxxxxx@xxxxx ~]$ more device-assign-to-site.csv

site_id,claimcode

22c7ebfd-e520-41f5-9e38-fb5f046a6d0c,XXXXXXXXXXXXXXX [xxxxxx@xxxxx ~]$ python3 ./inventory_assign.py --org_id=dea4115e-xxxx-xxxx-xxxx-6790ad3ea35b -f ./device-assign-to-site.csv

-------------------------------- Authenticated ---------------------------------

Processing CSV file .......................................................... ✔ Claiming 1 device(s) ......................................................... ✔

Traceback (most recent call last): File "/home/xxxxxx/./inventory_assign.py", line 643, in start(apisession, csv_file, org_id, managed, no_reassign) File "/home/xxxxxx/./inventory_assign.py", line 459, in start data = _read_csv_file(apisession, file_path, org_id) File "/home/xxxxxx/./inventory_assign.py", line 436, in _read_csv_file data[site_id] = [] TypeError: list indices must be integers or slices, not str [xxxxxx@xxxxx ~]$ more script.log INFO:main:"mistapi" package version 0.44.1 is required, you are currently using version 0.46.1. INFO:mistapi:mistapi:init:package version 0.46.1 DEBUG:mistapi:apisession:_load_env:loading settings from /home/xxxxxx/mist-dev.env DEBUG:mistapi:apisession:set_cloud DEBUG:mistapi:apisession:set_cloud:Mist Cloud configured to api.mist.com DEBUG:mistapi:apisession:set_api_token INFO:mistapi:apisession:set_api_token:found 1 API Tokens DEBUG:mistapi:apisession:_check_api_tokens INFO:mistapi:apisession:_check_api_tokens:there is only 1 API token. No check required INFO:mistapi:apisession:set_api_token:API Token configured DEBUG:mistapi:apisession:init: API Session initialized DEBUG:mistapi:apisession:login DEBUG:mistapi:apisession:login:not authenticated yet DEBUG:mistapi:apisession:_set_authenticated DEBUG:mistapi:apisession:_set_authenticated:authentication_status is True INFO:mistapi:apisession:_set_authenticated: session is now "Authenticated" DEBUG:mistapi:apisession:get_authentication_status:return True INFO:mistapi:apisession:login:authenticated DEBUG:mistapi:apisession:_getself INFO:mistapi:apisession:_getself: sending GET request to "/api/v1/self" DEBUG:mistapi:apirequest:_url:https://api.mist.com/api/v1/self DEBUG:mistapi:apirequest:_gen_query:processing query None DEBUG:mistapi:apirequest:_gen_query:generated query:? INFO:mistapi:apirequest:mist_get:sending request to https://api.mist.com/api/v1/self DEBUG:mistapi:apirequest:mist_get:request headers:{'User-Agent': 'python-requests/2.29.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '/', ' Connection': 'keep-alive', 'Authorization': 'hidden'} INFO:mistapi:apiresponse:init:response status code: 200 DEBUG:mistapi:apiresponse:_check_next DEBUG:mistapi:apiresponse:init:HTTP response processed INFO:mistapi:apisession:_getself:authentication Ok. Processing account privileges INFO:mistapi:apisession:_getself:account used: INFO:main:Processing CSV file: Success DEBUG:mistapi:apirequest:_url:https://api.mist.com/api/v1/orgs/dea4115e-xxxx-xxxx-xxxx-6790ad3ea35b/inventory INFO:mistapi:apirequest:mist_post:sending request to https://api.mist.com/api/v1/orgs/dea4115e-xxxx-xxxx-xxxx-6790ad3ea35b/inventory DEBUG:mistapi:apirequest:mist_post:Request body:['XXXXXXXXXXXXX'] DEBUG:mistapi:apirequest:mist_post:request headers:{'User-Agent': 'python-requests/2.29.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '/', 'Connection': 'keep-alive', 'Authorization': 'hidden', 'Content-Type': 'application/json', 'Content-Length': '19'} DEBUG:mistapi:apirequest:mist_post:request body:b'["XXXXXXXXXXXXX"]' INFO:mistapi:apiresponse:init:response status code: 200 DEBUG:mistapi:apiresponse:_check_next DEBUG:mistapi:apiresponse:init:HTTP response processed INFO:main:Claiming 1 device(s): Success DEBUG:mistapi:apirequest:_url:https://api.mist.com/api/v1/orgs/dea4115e-xxxx-xxxx-xxxx-6790ad3ea35b/inventory DEBUG:mistapi:apirequest:_gen_query:processing query {'limit': 1000, 'page': 1} DEBUG:mistapi:apirequest:_gen_query:generated query:?limit=1000&page=1& INFO:mistapi:apirequest:mist_get:sending request to https://api.mist.com/api/v1/orgs/dea4115e-xxxx-xxxx-xxxx-6790ad3ea35b/inventory?limit=1000&pa ge=1 DEBUG:mistapi:apirequest:mist_get:request headers:{'User-Agent': 'python-requests/2.29.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '/', ' Connection': 'keep-alive', 'Authorization': 'hidden'} INFO:mistapi:apiresponse:init:response status code: 200 DEBUG:mistapi:apiresponse:_check_next DEBUG:mistapi:apiresponse:init:HTTP response processed

==================================================================================================

[xxxxxx@xxxxx ~]$ more device-assign-to-site.csv

site_id,mac

22c7ebfd-xxxx-xxxx-xxxx-fb5f046a6d0c,ac:23:16:84:95:ca [xxxxxx@xxxxx ~]$ python3 ./inventory_assign.py --org_id=dea4115e-xxxx-xxxx-xxxx-6790ad3ea35b -f ./device-assign-to-site.csv

-------------------------------- Authenticated ---------------------------------

Retrieving device list from Mist ............................................. ✔ Processing CSV file ..........................................................

Traceback (most recent call last): File "/home/xxxxxx/./inventory_assign.py", line 643, in start(apisession, csv_file, org_id, managed, no_reassign) File "/home/xxxxxx/./inventory_assign.py", line 459, in start data = _read_csv_file(apisession, file_path, org_id) File "/home/xxxxxx/./inventory_assign.py", line 411, in _read_csv_file data[site_id] = [device_mac.replace(":", "").replace("-", "")] TypeError: list indices must be integers or slices, not str [xxxxxx@xxxxx ~]$ more script.log INFO:main:"mistapi" package version 0.44.1 is required, you are currently using version 0.46.1. INFO:mistapi:mistapi:init:package version 0.46.1 DEBUG:mistapi:apisession:_load_env:loading settings from /home/xxxxxx/mist-dev.env DEBUG:mistapi:apisession:set_cloud DEBUG:mistapi:apisession:set_cloud:Mist Cloud configured to api.mist.com DEBUG:mistapi:apisession:set_api_token INFO:mistapi:apisession:set_api_token:found 1 API Tokens DEBUG:mistapi:apisession:_check_api_tokens INFO:mistapi:apisession:_check_api_tokens:there is only 1 API token. No check required INFO:mistapi:apisession:set_api_token:API Token configured DEBUG:mistapi:apisession:init: API Session initialized DEBUG:mistapi:apisession:login DEBUG:mistapi:apisession:login:not authenticated yet DEBUG:mistapi:apisession:_set_authenticated DEBUG:mistapi:apisession:_set_authenticated:authentication_status is True INFO:mistapi:apisession:_set_authenticated: session is now "Authenticated" DEBUG:mistapi:apisession:get_authentication_status:return True INFO:mistapi:apisession:login:authenticated DEBUG:mistapi:apisession:_getself INFO:mistapi:apisession:_getself: sending GET request to "/api/v1/self" DEBUG:mistapi:apirequest:_url:https://api.mist.com/api/v1/self DEBUG:mistapi:apirequest:_gen_query:processing query None DEBUG:mistapi:apirequest:_gen_query:generated query:? INFO:mistapi:apirequest:mist_get:sending request to https://api.mist.com/api/v1/self DEBUG:mistapi:apirequest:mist_get:request headers:{'User-Agent': 'python-requests/2.29.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '/', ' Connection': 'keep-alive', 'Authorization': 'hidden'} INFO:mistapi:apiresponse:init:response status code: 200 DEBUG:mistapi:apiresponse:_check_next DEBUG:mistapi:apiresponse:init:HTTP response processed INFO:mistapi:apisession:_getself:authentication Ok. Processing account privileges INFO:mistapi:apisession:_getself:account used: DEBUG:mistapi:apirequest:_url:https://api.mist.com/api/v1/orgs/dea4115e-xxxx-xxxx-xxxx-6790ad3ea35b/inventory DEBUG:mistapi:apirequest:_gen_query:processing query {'limit': 1000, 'page': 1} DEBUG:mistapi:apirequest:_gen_query:generated query:?limit=1000&page=1& INFO:mistapi:apirequest:mist_get:sending request to https://api.mist.com/api/v1/orgs/dea4115e-xxxx-xxxx-xxxx-6790ad3ea35b/inventory?limit=1000&pa ge=1 DEBUG:mistapi:apirequest:mist_get:request headers:{'User-Agent': 'python-requests/2.29.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '/', ' Connection': 'keep-alive', 'Authorization': 'hidden'} INFO:mistapi:apiresponse:init:response status code: 200 DEBUG:mistapi:apiresponse:_check_next DEBUG:mistapi:apiresponse:init:HTTP response processed INFO:main:Retrieving device list from Mist: Success

tmunzer commented 6 days ago

Hi @JYarg72 ,

Let me check that.

PS: I removed the Device Claim Code from your comment.

tmunzer commented 6 days ago

Can you send me your CSV file by email?

JYarg72 commented 6 days ago

Sure, it has been sent.

tmunzer commented 5 days ago

Hi @JYarg72 ,

The script has been fixed. The issue was coming from a copy/paste used to remove some Excel characters from the CSV file (\ufeff) I added to multiple scripts, but in this case the variable name was conflicting with another variable.

Can you give it a try?

Thanks

JYarg72 commented 5 days ago

Thomas, the script executed perfectly for me this morning. Thank you for your prompt attention to this issue