def process_inotify_event(event, services_by_dependencies, soa_dir, synapse_service_dir): filename = event[3].decode() log.debug('process_inotify_event on {}'.format(filename)) service_instance, suffix = os.path.splitext(filename) if suffix != '.json': return services_to_update = services_by_dependencies.get(service_instance, ()) if not services_to_update: return # filter active_service_groups() down to just the names in services_to_update service_groups = { service_group: macs for service_group, macs in firewall.active_service_groups().items() if service_group in services_to_update } try: with firewall.firewall_flock(): firewall.ensure_service_chains(service_groups, soa_dir, synapse_service_dir) for service_to_update in services_to_update: log.debug('Updated {}'.format(service_to_update)) except TimeoutError as e: log.error( 'Unable to update firewalls for {} because time-out obtaining flock: {}' .format( service_groups.keys(), e, ), )
def test_ensure_service_chains(mock_active_service_groups, mock_service_config): with mock.patch.object(iptables, 'ensure_chain', autospec=True) as m: assert firewall.ensure_service_chains(DEFAULT_SOA_DIR) == { 'PAASTA.cool_servi.771bae24b0': { 'fe:a3:a3:da:2d:40', }, 'PAASTA.dumb_servi.b3e0fd962a': { 'fe:a3:a3:da:2d:30', 'fe:a3:a3:da:2d:31', }, } assert len(m.mock_calls) == 2 assert mock.call('PAASTA.cool_servi.771bae24b0', mock.ANY) in m.mock_calls assert mock.call('PAASTA.dumb_servi.b3e0fd962a', mock.ANY) in m.mock_calls
def test_ensure_service_chains( mock_reorder_chain, mock_active_service_groups, mock_service_config ): with mock.patch.object(iptables, "ensure_chain", autospec=True) as m: assert firewall.ensure_service_chains( mock_active_service_groups, DEFAULT_SOA_DIR, firewall.DEFAULT_SYNAPSE_SERVICE_DIR, ) == { "PAASTA.cool_servi.397dba3c1f": {"fe:a3:a3:da:2d:40"}, "PAASTA.dumb_servi.8fb64b4f63": {"fe:a3:a3:da:2d:30", "fe:a3:a3:da:2d:31"}, } assert len(m.mock_calls) == 2 assert mock.call("PAASTA.cool_servi.397dba3c1f", mock.ANY) in m.mock_calls assert mock.call("PAASTA.dumb_servi.8fb64b4f63", mock.ANY) in m.mock_calls assert mock.call("PAASTA.cool_servi.397dba3c1f") in mock_reorder_chain.mock_calls assert mock.call("PAASTA.dumb_servi.8fb64b4f63") in mock_reorder_chain.mock_calls
def test_ensure_service_chains(mock_reorder_chain, mock_active_service_groups, mock_service_config): with mock.patch.object(iptables, 'ensure_chain', autospec=True) as m: assert firewall.ensure_service_chains( mock_active_service_groups, DEFAULT_SOA_DIR, firewall.DEFAULT_SYNAPSE_SERVICE_DIR ) == { 'PAASTA.cool_servi.397dba3c1f': { 'fe:a3:a3:da:2d:40', }, 'PAASTA.dumb_servi.8fb64b4f63': { 'fe:a3:a3:da:2d:30', 'fe:a3:a3:da:2d:31', }, } assert len(m.mock_calls) == 2 assert mock.call('PAASTA.cool_servi.397dba3c1f', mock.ANY) in m.mock_calls assert mock.call('PAASTA.dumb_servi.8fb64b4f63', mock.ANY) in m.mock_calls assert mock.call('PAASTA.cool_servi.397dba3c1f') in mock_reorder_chain.mock_calls assert mock.call('PAASTA.dumb_servi.8fb64b4f63') in mock_reorder_chain.mock_calls