예제 #1
0
def test_oid_for_message_and_instance():
    logger = FakeLogger()
    config_name = 'instance_and_message_oid'
    lookups = {
        'instanceoid': 'lookedupinstance',
        'messageoid': 'lookedupmessage',
    }
    oid_lookup = FakeOidLookup(lookups=lookups)

    result = snmp_trap_handler.determine_action(
        oid=config_name,
        oid_lookup=oid_lookup,
        logger=logger,
    )

    expected_path = CONF_PATH.format(oid=config_name)
    assert logger.string_appears_in('debug', expected_path)

    assert logger.string_appears_in('debug', 'loading instance')
    assert logger.string_appears_in('debug', 'loading oid_for_message')

    assert result['instance'] == {
        'oid': lookups['instanceoid'],
        'finder': re.compile(u'testfinder'),
    }
    assert result['oid_for_message'] == lookups['messageoid']
def test_reaction_not_defined(nagios_utils, exit, snmp_utils, logging_utils):
    target_type = 'missing'
    trap_name = 'just_oid_for_message'

    lookups = deepcopy(BASE_LOOKUPS)
    lookups[BASIC_NOTIFICATION_TRAP_VALUE] = trap_name

    logger = FakeLogger()
    oid_lookup = FakeOidLookup(lookups=lookups)
    stdin = FakeStdin(deepcopy(BASIC_NOTIFICATION))

    logging_utils.Logger.return_value = logger
    snmp_utils.OIDLookup.return_value = oid_lookup
    snmp_trap_handler.sys.stdin = stdin
    nagios_utils.get_target_type_for_instance.return_value = target_type

    snmp_trap_handler.main()

    logging_utils.Logger.assert_called_once_with(
        'cloudify_nagios_snmp_trap_handler')

    assert logger.string_appears_in('info', (
        'trap',
        trap_name,
        'from',
        NOTIFICATION_SOURCE,
    ))

    assert logger.string_appears_in('debug', 'looking up target type')
    assert logger.string_appears_in('debug', ('target type', target_type))
    assert logger.string_appears_in('info', 'no reaction')
예제 #3
0
def test_just_oid_for_message():
    logger = FakeLogger()
    config_name = 'just_oid_for_message'
    oid_lookup = FakeOidLookup(default='looked_up_message_oid')

    result = snmp_trap_handler.determine_action(
        oid=config_name,
        oid_lookup=oid_lookup,
        logger=logger,
    )

    expected_path = CONF_PATH.format(oid=config_name)
    assert logger.string_appears_in('debug', expected_path)

    assert not logger.string_appears_in('debug', 'loading instance')
    assert logger.string_appears_in('debug', 'loading oid_for_message')

    assert result['oid_for_message'] == 'looked_up_message_oid'
def test_verbose_reaction(nagios_utils, exit, snmp_utils, logging_utils,
                          get_check_name):
    target_type = 'test_main_instance'
    trap_name = 'test_main_instance'
    check_name = 'thecheck'

    lookups = deepcopy(BASE_LOOKUPS)
    lookups[VERBOSE_NOTIFICATION_TRAP_VALUE] = trap_name

    logger = FakeLogger()
    oid_lookup = FakeOidLookup(lookups=lookups)
    stdin = FakeStdin(deepcopy(VERBOSE_NOTIFICATION))

    logging_utils.Logger.return_value = logger
    snmp_utils.OIDLookup.return_value = oid_lookup
    snmp_trap_handler.sys.stdin = stdin
    nagios_utils.get_target_type_for_instance.return_value = target_type
    get_check_name.return_value = check_name
    nagios_utils.get_services_for_host.return_value = [{
        "service_description": check_name,
        "current_state": "0",
    }]

    snmp_trap_handler.main()

    logging_utils.Logger.assert_called_once_with(
        'cloudify_nagios_snmp_trap_handler')

    assert logger.string_appears_in('info', (
        'trap',
        trap_name,
        'from',
        NOTIFICATION_SOURCE,
    ))

    assert logger.string_appears_in('debug', 'looking up target type')
    assert logger.string_appears_in('debug', ('target type', target_type))
    assert logger.string_appears_in('info',
                                    ('reaction defined', 'updating', 'check'))

    exit.assert_called_once_with(0)
def test_trap_in_details():
    logger = FakeLogger()
    lookups = {
        'system.sysUpTime.0': 'uptime',
        'enterprises.52312.900.0.0.1': 'cloudifything',
        snmp_trap_handler.SNMP_TRAP_OID: 'snmptrap',
        'snmp.1.1.4.1.0': 'snmptrap',
    }
    oid_lookup = FakeOidLookup(lookups=lookups)

    raw_details = [
        {
            'raw_oid': 'system.sysUpTime.0',
            'value': '1234'
        },
        {
            'raw_oid': 'snmp.1.1.4.1.0',
            'value': 'enterprises.52312.900.0.0.1'
        },
    ]

    result = snmp_trap_handler.normalise_oids_and_get_trap_value(
        raw_details=raw_details,
        oid_lookup=oid_lookup,
        logger=logger,
    )

    assert result == (
        'cloudifything',
        {
            lookups['system.sysUpTime.0']: '1234',
            lookups['snmp.1.1.4.1.0']: 'enterprises.52312.900.0.0.1',
        },
    )

    assert logger.string_appears_in('debug',
                                    ('trap identity', 'cloudifything'))
    assert logger.string_appears_in('debug', ('uptime', '1234'))
def test_no_trap():
    logger = FakeLogger()
    lookups = {
        'system.sysUpTime.0': 'uptime',
    }
    oid_lookup = FakeOidLookup(lookups=lookups)

    raw_details = [
        {
            'raw_oid': 'system.sysUpTime.0',
            'value': '1234'
        },
    ]

    result = snmp_trap_handler.normalise_oids_and_get_trap_value(
        raw_details=raw_details,
        oid_lookup=oid_lookup,
        logger=logger,
    )

    assert result == (None, {lookups['system.sysUpTime.0']: '1234'})

    assert not logger.string_appears_in('debug', 'trap identity')
    assert logger.string_appears_in('debug', ('uptime', '1234'))