Exemplo n.º 1
0
def test_process_inotify_event_flock_error(
    firewall_flock_mock,
    active_service_groups_mock,
    ensure_service_chains_mock,
    log_mock,
):
    active_service_groups_mock.return_value = {
        firewall.ServiceGroup("myservice", "myinstance"): {"00:00:00:00:00:00"},
        firewall.ServiceGroup("anotherservice", "instance"): {"11:11:11:11:11:11"},
        firewall.ServiceGroup("thirdservice", "instance"): {"22:22:22:22:22:22"},
    }

    services_by_dependencies = {
        "mydep.depinstance": {
            ("myservice", "myinstance"),
            ("anotherservice", "instance"),
        }
    }
    soa_dir = mock.Mock()
    synapse_service_dir = mock.Mock()
    firewall_update.process_inotify_event(
        (None, None, None, b"mydep.depinstance.json"),
        services_by_dependencies,
        soa_dir,
        synapse_service_dir,
    )
    assert log_mock.debug.call_count == 1
    assert log_mock.error.call_count == 1
Exemplo n.º 2
0
def test_process_inotify_event_flock_error(
    firewall_flock_mock,
    active_service_groups_mock,
    ensure_service_chains_mock,
    log_mock,
):
    active_service_groups_mock.return_value = {
        firewall.ServiceGroup('myservice', 'myinstance'):
        {'00:00:00:00:00:00'},
        firewall.ServiceGroup('anotherservice', 'instance'):
        {'11:11:11:11:11:11'},
        firewall.ServiceGroup('thirdservice', 'instance'):
        {'22:22:22:22:22:22'},
    }

    services_by_dependencies = {
        'mydep.depinstance': {('myservice', 'myinstance'),
                              ('anotherservice', 'instance')},
    }
    soa_dir = mock.Mock()
    synapse_service_dir = mock.Mock()
    firewall_update.process_inotify_event(
        (None, None, None, b'mydep.depinstance.json'),
        services_by_dependencies,
        soa_dir,
        synapse_service_dir,
    )
    assert log_mock.debug.call_count == 1
    assert log_mock.error.call_count == 1
Exemplo n.º 3
0
def test_process_inotify_event(
    firewall_flock_mock,
    active_service_groups_mock,
    ensure_service_chains_mock,
    log_mock,
):
    active_service_groups_mock.return_value = {
        firewall.ServiceGroup("myservice", "myinstance"):
        {"00:00:00:00:00:00"},
        firewall.ServiceGroup("anotherservice", "instance"):
        {"11:11:11:11:11:11"},
        firewall.ServiceGroup("thirdservice", "instance"):
        {"22:22:22:22:22:22"},
    }

    services_by_dependencies = {
        "mydep.depinstance": {
            ("myservice", "myinstance"),
            ("anotherservice", "instance"),
        }
    }
    soa_dir = mock.Mock()
    synapse_service_dir = mock.Mock()
    firewall_update.process_inotify_event(
        (None, None, None, b"mydep.depinstance.json"),
        services_by_dependencies,
        soa_dir,
        synapse_service_dir,
    )
    assert log_mock.debug.call_count == 3
    log_mock.debug.assert_any_call("Updated ('myservice', 'myinstance')")
    log_mock.debug.assert_any_call("Updated ('anotherservice', 'instance')")
    assert ensure_service_chains_mock.mock_calls == [
        mock.call(
            {
                firewall.ServiceGroup("myservice", "myinstance"):
                {"00:00:00:00:00:00"},
                firewall.ServiceGroup("anotherservice", "instance"):
                {"11:11:11:11:11:11"},
            },
            soa_dir,
            synapse_service_dir,
        )
    ]

    assert firewall_flock_mock.return_value.__enter__.called is True

    # Verify that tmp writes do not apply
    log_mock.reset_mock()
    ensure_service_chains_mock.reset_mock()
    firewall_update.process_inotify_event(
        (None, None, None, b"mydep.depinstance.tmp"),
        services_by_dependencies,
        soa_dir,
        synapse_service_dir,
    )
    assert log_mock.debug.call_count == 1
    assert ensure_service_chains_mock.call_count == 0
Exemplo n.º 4
0
def test_active_service_groups(mock_service_config, mock_services_running_here):
    assert firewall.active_service_groups() == {
        firewall.ServiceGroup("example_happyhour", "main"): {
            "02:42:a9:fe:00:00",
            "02:42:a9:fe:00:01",
        },
        firewall.ServiceGroup("example_happyhour", "batch"): {"02:42:a9:fe:00:02"},
        firewall.ServiceGroup("my_cool_service", "web"): {
            "02:42:a9:fe:00:03",
            "02:42:a9:fe:00:04",
        },
    }
Exemplo n.º 5
0
def test_active_service_groups(mock_service_config, mock_services_running_here):
    assert firewall.active_service_groups() == {
        firewall.ServiceGroup('example_happyhour', 'main'): {
            '02:42:a9:fe:00:00',
            '02:42:a9:fe:00:01',
        },
        firewall.ServiceGroup('example_happyhour', 'batch'): {
            '02:42:a9:fe:00:02',
        },
        firewall.ServiceGroup('my_cool_service', 'web'): {
            '02:42:a9:fe:00:03',
            '02:42:a9:fe:00:04',
        },
    }
Exemplo n.º 6
0
def mock_active_service_groups():
    groups = {
        firewall.ServiceGroup("cool_service", "main"): {
            "02:42:a9:fe:00:02",
            "fe:a3:a3:da:2d:51",
            "fe:a3:a3:da:2d:50",
        },
        firewall.ServiceGroup("cool_service", "main"): {"fe:a3:a3:da:2d:40"},
        firewall.ServiceGroup("dumb_service", "other"): {
            "fe:a3:a3:da:2d:30",
            "fe:a3:a3:da:2d:31",
        },
    }
    return groups
Exemplo n.º 7
0
def mock_active_service_groups():
    groups = {
        firewall.ServiceGroup('cool_service', 'main'): {
            '02:42:a9:fe:00:02',
            'fe:a3:a3:da:2d:51',
            'fe:a3:a3:da:2d:50',
        },
        firewall.ServiceGroup('cool_service', 'main'): {
            'fe:a3:a3:da:2d:40',
        },
        firewall.ServiceGroup('dumb_service', 'other'): {
            'fe:a3:a3:da:2d:30',
            'fe:a3:a3:da:2d:31',
        },
    }
    return groups
Exemplo n.º 8
0
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
Exemplo n.º 9
0
def test_process_inotify_event(firewall_flock_mock, active_service_groups_mock,
                               ensure_service_chains_mock, log_mock):
    active_service_groups_mock.return_value = {
        firewall.ServiceGroup('myservice', 'myinstance'):
        {'00:00:00:00:00:00'},
        firewall.ServiceGroup('anotherservice', 'instance'):
        {'11:11:11:11:11:11'},
        firewall.ServiceGroup('thirdservice', 'instance'):
        {'22:22:22:22:22:22'},
    }

    services_by_dependencies = {
        'mydep.depinstance': {('myservice', 'myinstance'),
                              ('anotherservice', 'instance')}
    }
    soa_dir = mock.Mock()
    synapse_service_dir = mock.Mock()
    firewall_update.process_inotify_event(
        (None, None, None, 'mydep.depinstance.json'), services_by_dependencies,
        soa_dir, synapse_service_dir)
    assert log_mock.debug.call_count == 2
    log_mock.debug.assert_any_call('Updated ', ('myservice', 'myinstance'))
    log_mock.debug.assert_any_call('Updated ', ('anotherservice', 'instance'))
    assert ensure_service_chains_mock.mock_calls == [
        mock.call(
            {
                firewall.ServiceGroup('myservice', 'myinstance'):
                {'00:00:00:00:00:00'},
                firewall.ServiceGroup('anotherservice', 'instance'):
                {'11:11:11:11:11:11'},
            }, soa_dir, synapse_service_dir)
    ]

    assert firewall_flock_mock.return_value.__enter__.called is True

    # Verify that tmp writes do not apply
    log_mock.reset_mock()
    ensure_service_chains_mock.reset_mock()
    firewall_update.process_inotify_event(
        (None, None, None, 'mydep.depinstance.tmp'), services_by_dependencies,
        soa_dir, synapse_service_dir)
    assert log_mock.debug.call_count == 0
    assert ensure_service_chains_mock.call_count == 0
Exemplo n.º 10
0
def mock_active_service_groups():
    groups = {
        firewall.ServiceGroup('cool_service', 'main', DEFAULT_SOA_DIR): {
            '02:42:a9:fe:00:02',
            'fe:a3:a3:da:2d:51',
            'fe:a3:a3:da:2d:50',
        },
        firewall.ServiceGroup('cool_service', 'main', DEFAULT_SOA_DIR): {
            'fe:a3:a3:da:2d:40',
        },
        firewall.ServiceGroup('dumb_service', 'other', DEFAULT_SOA_DIR): {
            'fe:a3:a3:da:2d:30',
            'fe:a3:a3:da:2d:31',
        },
    }
    with mock.patch.object(
            firewall,
            'active_service_groups',
            autospec=True,
            return_value=groups,
    ):
        yield
Exemplo n.º 11
0
def service_group():
    return firewall.ServiceGroup(
        service='my_cool_service',
        instance='web',
    )
Exemplo n.º 12
0
def service_group():
    return firewall.ServiceGroup(service="my_cool_service", instance="web")
Exemplo n.º 13
0
def service_group():
    return firewall.ServiceGroup(
        service='my_cool_service',
        instance='web',
        soa_dir=DEFAULT_SOA_DIR,
    )