Collection of CheckMK checks (see https://checkmk.com/). All checks and plugins are provided as is. Absolutely no warranty. Send any comments to thl-cmk[at]outlook[dot]com

Skip to content
Snippets Groups Projects
Commit 21cefa0e authored by thl-cmk's avatar thl-cmk :flag_na:
Browse files

update project

parent 79ccd8e5
No related branches found
No related tags found
No related merge requests found
[PACKAGE]: ../../raw/master/mkp/cisco_meraki-1.2.0-2023-11-09.mkp "cisco_meraki-1.2.0-2023-11-09.mkp"
[PACKAGE]: ../../raw/master/mkp/cisco_meraki-1.2.1-2023-11-10.mkp "cisco_meraki-1.2.1-2023-11-10.mkp"
# Cisco Meraki special agent
This is an enhanched version of the build in Cisco Meraki special agent.
......
......@@ -13,6 +13,7 @@
#
# 2023-11-09: removed nonworking original datacache (cleanup before reimplementing)
# added new Cacheing code based on AWS agent - works this time ;-)
# 2023-11-10: a bit of cleanup, removed oneliner API calls, moved to the calling function
#
# ToDo: list Connected Datacenters like Umbrella https://developer.cisco.com/meraki/api-v1/list-data-centers/
# ToDo: with SDK vertion 1.39.0
......@@ -501,7 +502,10 @@ class MerakiOrganisation:
)
if _SEC_NAME_DEVICE_STATUSES in self.config.section_names:
for device_status in self._get_device_statuses():
for device_status in MerakiGetOrganizationDevicesStatuses(
config=self.config,
org_id=self.organisation_id
).get_data():
if piggyback := self._get_device_piggyback(device_status, devices_by_serial):
yield self._make_section(
name=_SEC_NAME_DEVICE_STATUSES,
......@@ -510,7 +514,10 @@ class MerakiOrganisation:
)
if _SEC_NAME_SENSOR_READINGS in self.config.section_names:
for sensor_reading in self._get_sensor_readings():
for sensor_reading in MerakiGetOrganizationSensorReadingsLatest(
config=self.config,
org_id=self.organisation_id
).get_data():
if piggyback := self._get_device_piggyback(sensor_reading, devices_by_serial):
yield self._make_section(
name=_SEC_NAME_SENSOR_READINGS,
......@@ -519,7 +526,10 @@ class MerakiOrganisation:
)
if _SEC_NAME_DEVICE_UPLINKS_INFO in self.config.section_names:
for device_uplink in self._get_device_uplinks():
for device_uplink in MerakiGetOrganizationDevicesUplinksAddressesByDevice(
config=self.config,
org_id=self.organisation_id,
).get_data():
if piggyback := self._get_device_piggyback(device_uplink, devices_by_serial):
yield self._make_section(
name=_SEC_NAME_DEVICE_UPLINKS_INFO,
......@@ -528,7 +538,10 @@ class MerakiOrganisation:
)
if _SEC_NAME_APPLIANCE_UPLINKS in self.config.section_names:
for appliance_uplinks in self._get_appliance_uplinks_status():
for appliance_uplinks in MerakiGetOrganizationApplianceUplinkStatuses(
config=self.config,
org_id=self.organisation_id
).get_data():
if piggyback := self._get_device_piggyback(appliance_uplinks, devices_by_serial):
# add network name
appliance_uplinks['networkName'] = self._networks[appliance_uplinks['networkId']].name
......@@ -539,7 +552,10 @@ class MerakiOrganisation:
)
if _SEC_NAME_APPLIANCE_VPNS in self.config.section_names:
for appliance_vpn in self._get_appliance_vpn_statuses():
for appliance_vpn in MerakiGetOrganizationApplianceVpnStatuses(
config=self.config,
org_id=self.organisation_id
).get_data():
appliance_vpn.update({'serial': appliance_vpn['deviceSerial']}) # devices_by_serial expects serial
if piggyback := self._get_device_piggyback(appliance_vpn, devices_by_serial):
yield self._make_section(
......@@ -568,7 +584,10 @@ class MerakiOrganisation:
def add_networks(self):
self._networks = {}
networks = self._get_org_networks()
networks = MerakiGetOrganizationNetworks(
config=self.config,
org_id=self.organisation_id
).get_data()
for network in networks:
self._networks[network['id']] = MerakiNetwork(
id=network['id'],
......@@ -610,8 +629,8 @@ class MerakiOrganisation:
return None
licenses_overview.update(
{
"organisation_id": self.organisation["id_"],
"organisation_name": self.organisation["name"],
"organisation_id": self.organisation_id,
"organisation_name": self.organisation_name,
}
)
return licenses_overview
......@@ -627,8 +646,8 @@ class MerakiOrganisation:
def _update_device(device: dict[str, object]) -> MerakiAPIData:
device.update(
{
"organisation_id": self.organisation["id_"],
"organisation_name": self.organisation["name"],
"organisation_id": self.organisation_id,
"organisation_name": self.organisation_name,
}
)
return device
......@@ -638,22 +657,7 @@ class MerakiOrganisation:
for device in MerakiGetOrganizationDevices(config=self.config, org_id=self.organisation_id).get_data()
}
def _get_device_statuses(self) -> Sequence[MerakiAPIData]:
return MerakiGetOrganizationDevicesStatuses(config=self.config, org_id=self.organisation_id).get_data()
def _get_org_networks(self) -> Sequence[MerakiAPIData]:
return MerakiGetOrganizationNetworks(config=self.config, org_id=self.organisation_id).get_data()
def _get_device_uplinks(self) -> Sequence[MerakiAPIData]:
return MerakiGetOrganizationDevicesUplinksAddressesByDevice(
config=self.config,
org_id=self.organisation_id,
).get_data()
def _get_appliance_uplinks_status(self) -> Sequence[MerakiAPIData]:
return MerakiGetOrganizationApplianceUplinkStatuses(config=self.config, org_id=self.organisation_id).get_data()
# usage doesn't work for 670 seconds intervals
# usage doesn't work for 60 seconds intervals
# def _get_appliance_uplinks_usage(self) -> Sequence[MerakiAPIData]:
# try:
# return self.config.dashboard.appliance.getOrganizationApplianceUplinksUsageByNetwork(
......@@ -666,9 +670,6 @@ class MerakiOrganisation:
# _LOGGER.debug("Organisation ID: %r: Get Appliance uplink usage by network: %r", self.organisation_id, e)
# return []
def _get_appliance_vpn_statuses(self) -> Sequence[MerakiAPIData]:
return MerakiGetOrganizationApplianceVpnStatuses(config=self.config, org_id=self.organisation_id).get_data()
# usage doesn't work for 60 seconds intervals
# def _get_appliance_vpn_stats(self) -> Sequence[MerakiAPIData]:
# try:
......@@ -692,9 +693,6 @@ class MerakiOrganisation:
# _LOGGER.debug("Organisation ID: %r: Get Switch Ports Statuses: %r", self.organisation_id, e)
# return []
def _get_sensor_readings(self) -> Sequence[MerakiAPIData]:
return MerakiGetOrganizationSensorReadingsLatest(config=self.config, org_id=self.organisation_id).get_data()
def _get_device_piggyback(
self, device: MerakiAPIData, devices_by_serial: Mapping[str, MerakiAPIData]
) -> str | None:
......
File added
......@@ -21,7 +21,7 @@
'lib': ['python3/cmk/special_agents/agent_cisco_meraki.py']},
'name': 'cisco_meraki',
'title': 'Cisco Meraki special agent',
'version': '1.2.0-2023-11-09',
'version': '1.2.1-2023-11-10',
'version.min_required': '2.2.0p11',
'version.packaged': '2.2.0p11',
'version.usable_until': '2.3.0b1'}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment