Example #1
0
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,
            ), )
Example #2
0
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
Example #3
0
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
Example #4
0
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