def _is_expected_agent_version( agent_version: Optional[str], expected_version: config.AgentTargetVersion, ) -> bool: try: if agent_version is None: return False if agent_version in ['(unknown)', 'None']: return False if isinstance(expected_version, str) and expected_version != agent_version: return False if isinstance(expected_version, tuple) and expected_version[0] == 'at_least': spec = cast(Dict[str, str], expected_version[1]) if cmk.utils.misc.is_daily_build_version( agent_version) and 'daily_build' in spec: expected = int(spec['daily_build'].replace('.', '')) branch = cmk.utils.misc.branch_of_daily_build( agent_version) if branch == "master": agent = int(agent_version.replace('.', '')) else: # branch build (e.g. 1.2.4-2014.06.01) agent = int( agent_version.split('-')[1].replace('.', '')) if agent < expected: return False elif 'release' in spec: if cmk.utils.misc.is_daily_build_version(agent_version): return False if parse_check_mk_version( agent_version) < parse_check_mk_version( spec['release']): return False return True except Exception as e: if cmk.utils.debug.enabled(): raise raise MKGeneralException( "Unable to check agent version (Agent: %s Expected: %s, Error: %s)" % (agent_version, expected_version, e))
def normalize_ip_addresses(ip_addresses: Union[AnyStr, List[AnyStr]]) -> List[HostAddress]: """Expand 10.0.0.{1,2,3}.""" if not isinstance(ip_addresses, list): ip_addresses = ip_addresses.split() decoded_ip_addresses = [ensure_str(word) for word in ip_addresses] expanded = [word for word in decoded_ip_addresses if '{' not in word] for word in decoded_ip_addresses: if word in expanded: continue try: prefix, tmp = word.split('{') curly, suffix = tmp.split('}') expanded.extend(prefix + i + suffix for i in curly.split(',')) except Exception: raise MKGeneralException("could not expand %r" % word) return expanded