async def main(): """Get the data from a Netdata instance.""" with aiohttp.ClientSession() as session: data = Netdata("localhost", loop, session, data="data") await data.get_data("system.cpu") print(json.dumps(data.values, indent=4, sort_keys=True)) # Print the current value of the system's CPU print("CPU System:", round(data.values["system"], 2)) with aiohttp.ClientSession() as session: data = Netdata("localhost", loop, session, data="alarms") await data.get_alarms() print(data.alarms) with aiohttp.ClientSession() as session: data = Netdata("localhost", loop, session) await data.get_allmetrics() print(data.metrics) # Print the current value for the system's CPU print( "CPU System:", round(data.metrics["system.cpu"]["dimensions"]["system"]["value"], 2), )
async def test_info_valid(httpx_mock: HTTPXMock): """Test a valid response.""" httpx_mock.add_response(json=RESPONSE_VALID) client = Netdata("localhost") await client.get_info() assert client.info.get("version") == "v1.31.0"
async def test_chart_valid(httpx_mock: HTTPXMock): """Test a valid response.""" httpx_mock.add_response(json=RESPONSE_VALID) client = Netdata("localhost") await client.get_chart("system.cpu") assert client.values.get("system") == 6.015038
async def test_timeout(httpx_mock: HTTPXMock): """Test if the connection is hitting the timeout.""" def raise_timeout(request): """Set the timeout for the requests.""" raise httpx.ReadTimeout( f"Unable to read within {request.extensions['timeout']}", request=request) httpx_mock.add_callback(raise_timeout) with pytest.raises(httpx.ReadTimeout): client = Netdata("localhost") await client.get_info()
async def main(): """Get the data from a Netdata instance.""" async with aiohttp.ClientSession() as session: data = Netdata("localhost", loop, session) # Get data for the CPU await data.get_data("system.cpu") print(json.dumps(data.values, indent=4, sort_keys=True)) # Print the current value of the system's CPU print("CPU System:", round(data.values["system"], 2)) # Get the alarms which are present await data.get_alarms() print(data.alarms)
async def async_setup_platform(opp, config, async_add_entities, discovery_info=None): """Set up the Netdata sensor.""" name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) resources = config.get(CONF_RESOURCES) session = async_get_clientsession(opp) netdata = NetdataData(Netdata(host, opp.loop, session, port=port)) await netdata.async_update() if netdata.api.metrics is None: raise PlatformNotReady dev = [] for entry, data in resources.items(): icon = data[CONF_ICON] sensor = data[CONF_DATA_GROUP] element = data[CONF_ELEMENT] invert = data[CONF_INVERT] sensor_name = entry try: resource_data = netdata.api.metrics[sensor] unit = ( PERCENTAGE if resource_data["units"] == "percentage" else resource_data["units"] ) except KeyError: _LOGGER.error("Sensor is not available: %s", sensor) continue dev.append( NetdataSensor( netdata, name, sensor, sensor_name, element, icon, unit, invert ) ) dev.append(NetdataAlarms(netdata, name, host, port)) async_add_entities(dev, True)
async def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Set up the Netdata sensor.""" from netdata import Netdata name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) resources = config.get(CONF_RESOURCES) session = async_get_clientsession(hass) netdata = NetdataData(Netdata(host, hass.loop, session, port=port)) await netdata.async_update() if netdata.api.metrics is None: raise PlatformNotReady dev = [] for entry, data in resources.items(): sensor = entry element = data[CONF_ELEMENT] sensor_name = icon = None try: resource_data = netdata.api.metrics[sensor] unit = '%' if resource_data['units'] == 'percentage' else \ resource_data['units'] if data is not None: sensor_name = data.get(CONF_NAME) icon = data.get(CONF_ICON) except KeyError: _LOGGER.error("Sensor is not available: %s", sensor) continue dev.append( NetdataSensor(netdata, name, sensor, sensor_name, element, icon, unit)) async_add_devices(dev, True)
async def async_setup_platform( hass: HomeAssistant, config: ConfigType, async_add_entities: AddEntitiesCallback, discovery_info: DiscoveryInfoType | None = None, ) -> None: """Set up the Netdata sensor.""" name = config[CONF_NAME] host = config[CONF_HOST] port = config[CONF_PORT] resources = config[CONF_RESOURCES] netdata = NetdataData(Netdata(host, port=port)) await netdata.async_update() if netdata.api.metrics is None: raise PlatformNotReady dev: list[SensorEntity] = [] for entry, data in resources.items(): icon = data[CONF_ICON] sensor = data[CONF_DATA_GROUP] element = data[CONF_ELEMENT] invert = data[CONF_INVERT] sensor_name = entry try: resource_data = netdata.api.metrics[sensor] unit = (PERCENTAGE if resource_data["units"] == "percentage" else resource_data["units"]) except KeyError: _LOGGER.error("Sensor is not available: %s", sensor) continue dev.append( NetdataSensor(netdata, name, sensor, sensor_name, element, icon, unit, invert)) dev.append(NetdataAlarms(netdata, name, host, port)) async_add_entities(dev, True)
async def main(): """Get the data from a Netdata instance.""" client = Netdata("localhost") # Get all metrics await client.get_info() print(client.info) # Get details of a available chart await client.get_chart("system.cpu") print(json.dumps(client.values, indent=4, sort_keys=True)) # Print the current value of the system's CPU print("CPU System:", round(client.values["system"], 2)) # Get the alarms which are present await client.get_alarms() print(client.alarms) # Get all metrics await client.get_allmetrics() print(client.metrics)