def discovery_migration_wrapper(section): disco_func = check_info_dict.get("inventory_function") if not callable(disco_func): # never discover: return original_discovery_result = disco_func(section) if not original_discovery_result: return for element in original_discovery_result: if isinstance(element, (HostLabel, DiscoveredHostLabels)): # these are dealt with in the host_label_function! continue if isinstance(element, LegacyService): yield Service( item=element.item, parameters=wrap_parameters(element.parameters or {}), labels=list(element.service_labels), ) elif isinstance(element, tuple) and len(element) in (2, 3): parameters = _resolve_string_parameters(element[-1], check_name, get_check_context) service = Service( item=element[0] or None, parameters=wrap_parameters(parameters or {}), ) # nasty hack for nasty plugins: # Bypass validation. Item should be None or non-empty string! service._item = element[0] # pylint: disable=protected-access yield service else: # just let it through. Base must deal with bogus return types anyway. yield element
def discovery_migration_wrapper(section): disco_func = check_info_dict.get("inventory_function") if not callable(disco_func): # never discover: return original_discovery_result = disco_func(section) if not original_discovery_result: return for element in original_discovery_result: if isinstance(element, tuple) and len(element) in (2, 3): parameters = _resolve_string_parameters( element[-1], check_name, get_check_context) service = Service( item=element[0] or None, parameters=wrap_parameters(parameters or {}), ) # nasty hack for nasty plugins: # Bypass validation. Item should be None or non-empty string! service = service._replace(item=element[0]) yield service else: try: yield Service( item=element.item, parameters=wrap_parameters(element.parameters or {}), labels=[ ServiceLabel(l.name, l.value) for l in element.service_labels ], ) except AttributeError: # just let it through. Base must deal with bogus return types anyway. yield element
def test_service_features(): service = Service( item="thingy", parameters={"size": 42}, labels=[ServiceLabel("test-thing", "true")], ) assert service.item == "thingy" assert service.parameters == {"size": 42} assert service.labels == [ServiceLabel("test-thing", "true")] assert repr(service) == ("Service(item='thingy', parameters={'size': 42}," " labels=[ServiceLabel('test-thing', 'true')])") service = Service() assert service.item is None assert service.parameters == {} assert service.labels == [] assert repr(service) == "Service(item=None, parameters={}, labels=[])"
def test_discovery(): section = { "mysql": { "red": 12, "information_schema": 12, "performance_schema": 12, "mysql": 12, } } assert list(mysql_capacity.discover_capacity(section)) == [ Service(item="mysql:red") ]
def discovery_migration_wrapper(section): disco_func = check_info_dict.get("inventory_function") if not callable(disco_func): # never discover: return original_discovery_result = disco_func(section) if not original_discovery_result: return for element in original_discovery_result: if isinstance(element, tuple) and len(element) in (2, 3): item, raw_params = element[0], element[-1] if item is not None and not isinstance(item, str): raise ValueError("item must be None or of type `str`") parameters = _resolve_string_parameters( raw_params, check_name, get_check_context) service = Service( item=None, # will be replaced parameters=wrap_parameters(parameters or {}), ) # nasty hack for nasty plugins: item = '' # Bypass validation. Item should be None or non-empty string! service = service._replace(item=item) yield service continue with suppress(AttributeError): yield Service( item=element.item, parameters=wrap_parameters(element.parameters or {}), labels=[ ServiceLabel(l.name, l.value) for l in element.service_labels ], ) continue # just let it through. Base must deal with bogus return types anyway. yield element
def test_service_kwargs_only(): with pytest.raises(TypeError): _ = Service(None) # type: ignore[misc] # pylint: disable=too-many-function-args
def test_service_invalid(item, parameters, labels): with pytest.raises(TypeError): _ = Service(item=item, parameters=parameters, labels=labels)
def test_cpu_threads_regression(info, check_result): section = parse_cpu(info) assert section is not None params = {"levels": ("levels", (2000, 4000))} assert list(discover_cpu_threads(section)) == [Service()] assert set(check_cpu_threads(params, section)) == check_result
current_state="exited", description="LSB: OMD sites", enabled_status="generated", ), } @pytest.mark.parametrize( "section, discovery_params, discovered_services", [ ( SECTION, [ {"names": ["~virtualbox.*"]}, ], [Service(item="virtualbox")], ), ( SECTION, [], [], ), ( {}, [ {"names": ["~virtualbox.*"]}, ], [], ), ( SECTION,