From a6f9183b18cc3f1cc5fb30700b2350645758d5a2 Mon Sep 17 00:00:00 2001 From: Christopher Grabski Date: Sat, 27 Jul 2019 17:19:58 -0700 Subject: [PATCH 1/5] add rebootdevice function --- .gitignore | 3 ++- __pycache__/meraki.cpython-37.pyc | Bin 0 -> 87703 bytes meraki.py | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 __pycache__/meraki.cpython-37.pyc diff --git a/.gitignore b/.gitignore index 33e533b6..e378538f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .DS_Store # No PyCharm config files .idea/ -venv/ \ No newline at end of file +venv/ +test.py \ No newline at end of file diff --git a/__pycache__/meraki.cpython-37.pyc b/__pycache__/meraki.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7a91631028ebc0018cac55a0763c7beccedce306 GIT binary patch literal 87703 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 GbN>rqGj8?( literal 0 HcmV?d00001 diff --git a/meraki.py b/meraki.py index ff70d6aa..7caf878c 100644 --- a/meraki.py +++ b/meraki.py @@ -1678,6 +1678,23 @@ def removedevfromnet(apikey, networkid, serial, suppressprint=False): dashboard.status_code, dashboard.text, calltype, suppressprint) return result +# Reboot a single device +# https://api.meraki.com/api_docs#reboot-a-device +def rebootdevice(apikey, networkid, serial, suppressprint=False): + calltype = 'Device' + posturl = '{0}/networks/{1}/devices/{2}/reboot'.format( + str(base_url), str(networkid), str(serial)) + headers = { + 'x-cisco-meraki-api-key': format(str(apikey)), + 'Content-Type': 'application/json' + } + dashboard = requests.post(posturl, headers=headers) + # + # Call return handler function to parse Dashboard response + # + result = __returnhandler( + dashboard.status_code, dashboard.text, calltype, suppressprint) + return result # List LLDP and CDP information for a device # https://dashboard.meraki.com/api_docs#list-lldp-and-cdp-information-for-a-device From e82baa55ab0d98415301659a73d7d21f43fd8d50 Mon Sep 17 00:00:00 2001 From: Christopher Grabski Date: Sat, 27 Jul 2019 17:32:14 -0700 Subject: [PATCH 2/5] Revert "add rebootdevice function" This reverts commit a6f9183b18cc3f1cc5fb30700b2350645758d5a2. --- .gitignore | 3 +-- __pycache__/meraki.cpython-37.pyc | Bin 87703 -> 0 bytes meraki.py | 17 ----------------- 3 files changed, 1 insertion(+), 19 deletions(-) delete mode 100644 __pycache__/meraki.cpython-37.pyc diff --git a/.gitignore b/.gitignore index e378538f..33e533b6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ .DS_Store # No PyCharm config files .idea/ -venv/ -test.py \ No newline at end of file +venv/ \ No newline at end of file diff --git a/__pycache__/meraki.cpython-37.pyc b/__pycache__/meraki.cpython-37.pyc deleted file mode 100644 index 7a91631028ebc0018cac55a0763c7beccedce306..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87703 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 GbN>rqGj8?( diff --git a/meraki.py b/meraki.py index 7caf878c..ff70d6aa 100644 --- a/meraki.py +++ b/meraki.py @@ -1678,23 +1678,6 @@ def removedevfromnet(apikey, networkid, serial, suppressprint=False): dashboard.status_code, dashboard.text, calltype, suppressprint) return result -# Reboot a single device -# https://api.meraki.com/api_docs#reboot-a-device -def rebootdevice(apikey, networkid, serial, suppressprint=False): - calltype = 'Device' - posturl = '{0}/networks/{1}/devices/{2}/reboot'.format( - str(base_url), str(networkid), str(serial)) - headers = { - 'x-cisco-meraki-api-key': format(str(apikey)), - 'Content-Type': 'application/json' - } - dashboard = requests.post(posturl, headers=headers) - # - # Call return handler function to parse Dashboard response - # - result = __returnhandler( - dashboard.status_code, dashboard.text, calltype, suppressprint) - return result # List LLDP and CDP information for a device # https://dashboard.meraki.com/api_docs#list-lldp-and-cdp-information-for-a-device From 72167fd2477896e6aa12fee39137c7962bcb7101 Mon Sep 17 00:00:00 2001 From: Christopher Grabski Date: Sat, 27 Jul 2019 17:43:40 -0700 Subject: [PATCH 3/5] add rebootdevice function --- meraki.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/meraki.py b/meraki.py index ff70d6aa..e94f3cab 100644 --- a/meraki.py +++ b/meraki.py @@ -1679,6 +1679,25 @@ def removedevfromnet(apikey, networkid, serial, suppressprint=False): return result +# Reboot a single device +# https://api.meraki.com/api_docs#reboot-a-device +def rebootdevice(apikey, networkid, serial, suppressprint=False): + calltype = 'Device' + posturl = '{0}/networks/{1}/devices/{2}/reboot'.format( + str(base_url), str(networkid), str(serial)) + headers = { + 'x-cisco-meraki-api-key': format(str(apikey)), + 'Content-Type': 'application/json' + } + dashboard = requests.post(posturl, headers=headers) + # + # Call return handler function to parse Dashboard response + # + result = __returnhandler( + dashboard.status_code, dashboard.text, calltype, suppressprint) + return result + + # List LLDP and CDP information for a device # https://dashboard.meraki.com/api_docs#list-lldp-and-cdp-information-for-a-device def getlldpcdp(apikey, networkid, serial, timespan=10800, suppressprint=False): From 4b494cc1cd9a94835853eb2838e087202b347a9a Mon Sep 17 00:00:00 2001 From: Christopher Grabski Date: Sun, 28 Jul 2019 13:32:23 -0700 Subject: [PATCH 4/5] add get_uplinks_loss_and_latency --- meraki.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/meraki.py b/meraki.py index e94f3cab..6c2b1fc2 100644 --- a/meraki.py +++ b/meraki.py @@ -2555,6 +2555,44 @@ def get_device_statuses(api_key, org_id, suppress_print=False): return result +# Return the uplink loss and latency for every MX in the organization from at latest 2 minutes ago +# https://dashboard.meraki.com/api_docs#return-the-uplink-loss-and-latency-for-every-mx-in-the-organization-from-at-latest-2-minutes-ago +def get_uplinks_loss_and_latency(api_key, org_id, params_dict=None, suppress_print=False): + __hasorgaccess(api_key, org_id) + + """ + Args: + apikey: User's Meraki API Key + orgid: OrganizationId for operation to be performed against + params_dict (optional): A dictionary of parameters to include in the request. See the dashboard API docs for more details on the available parameters. Below is an example dictionary to include with this function call to return uplink stats for all MXs, for the most recent 60 seconds, for WAN 2: + {'timespan':60, 'uplink':'wan2'} + suppressprint: Suppress any print output from function (Default: False) + + Returns: JSON formatted string of uplink stats for each MX in the organization + """ + + call_type = 'Device Statuses' + + params_string = '' + if params_dict is not None: + for param in params_dict: + params_string += f'{param}={params_dict[param]}&' + + get_url = '{0}/organizations/{1}/uplinksLossAndLatency?{2}'.format( + str(base_url), str(org_id), params_string) + headers = { + 'x-cisco-meraki-api-key': format(str(api_key)), + 'Content-Type': 'application/json' + } + dashboard = requests.get(get_url, headers=headers) + # + # Call return handler function to parse Dashboard response + # + result = __returnhandler( + dashboard.status_code, dashboard.text, call_type, suppress_print) + return result + + # Return the SNMP settings for an organization # https://api.meraki.com/api_docs#return-the-snmp-settings-for-an-organization def getsnmpsettings(apikey, orgid, suppressprint=False): From 08bb9eb8e4f03dffa5f89a76e19b92b92c5a0eed Mon Sep 17 00:00:00 2001 From: Christopher Grabski Date: Sun, 28 Jul 2019 14:06:53 -0700 Subject: [PATCH 5/5] rename rebootdevice to reboot_device --- meraki.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meraki.py b/meraki.py index 6c2b1fc2..88e01c49 100644 --- a/meraki.py +++ b/meraki.py @@ -1681,7 +1681,7 @@ def removedevfromnet(apikey, networkid, serial, suppressprint=False): # Reboot a single device # https://api.meraki.com/api_docs#reboot-a-device -def rebootdevice(apikey, networkid, serial, suppressprint=False): +def reboot_device(apikey, networkid, serial, suppressprint=False): calltype = 'Device' posturl = '{0}/networks/{1}/devices/{2}/reboot'.format( str(base_url), str(networkid), str(serial))