def smartstack_dependencies_of_running_firewalled_services( soa_dir=DEFAULT_SOA_DIR): dependencies_to_services = defaultdict(set) for service, instance, _, _ in firewall.services_running_here(): config = get_instance_config( service, instance, load_system_paasta_config().get_cluster(), load_deployments=False, soa_dir=soa_dir, ) outbound_firewall = config.get_outbound_firewall() if not outbound_firewall: continue dependencies = config.get_dependencies() or () smartstack_dependencies = [ d['smartstack'] for d in dependencies if d.get('smartstack') ] for smartstack_dependency in smartstack_dependencies: # TODO: filter down to only services that have no proxy_port dependencies_to_services[smartstack_dependency].add( firewall.ServiceGroup(service, instance)) return dependencies_to_services
def test_services_running_here(): assert tuple(firewall.services_running_here()) == ( ('myservice', 'hassecurity', '02:42:a9:fe:00:0a', '1.1.1.1'), ('myservice', 'chronoswithsecurity', '02:42:a9:fe:00:0b', '2.2.2.2'), )
def test_services_running_here(): assert tuple(firewall.services_running_here()) == ( ("myservice", "hassecurity", "02:42:a9:fe:00:0a", "1.1.1.1"), ("myservice", "hassecurity2", "02:42:a9:fe:00:0b", "2.2.2.2"), )
def lookup_service_instance_by_ip(ip_lookup): for service, instance, mac, ip in services_running_here(): if ip == ip_lookup: return (service, instance) log.info(f'Unable to find container for ip {ip_lookup}') return (None, None)