def test_execute_flow_fail_empty_snmp_community(self):
        """ SNMP Community should not be empty """

        snmp_parameters = SNMPV2Parameters(ip="127.0.0.1", snmp_community="")

        with self.assertRaisesRegexp(Exception, "SNMP community cannot be empty"):
            self.tested_instance.execute_flow(snmp_parameters)
    def test_execute_flow_skip_empty_community(self, snmp_actions_class):
        """ Disable SNMP Read Community skipped. SNMP Read Community is Empty """

        snmp_parameters = SNMPV2Parameters(ip="127.0.0.1", snmp_community="")
        snmp_actions = mock.MagicMock()
        snmp_actions_class.return_value = snmp_actions

        self.tested_instance.execute_flow(snmp_parameters)
        snmp_actions.disable_snmp.assert_not_called()
    def test_execute_flow_success(self, snmp_actions_class):
        """ SNMP Community already configured """

        test_snmp_community = "snmp_community"

        snmp_parameters = SNMPV2Parameters(ip="127.0.0.1", snmp_community=test_snmp_community)
        snmp_actions = mock.MagicMock()
        snmp_actions_class.return_value = snmp_actions

        self.tested_instance.execute_flow(snmp_parameters)
        snmp_actions.disable_snmp.assert_called_once_with(test_snmp_community)
Exemple #4
0
    def _get_snmp_parameters(self, action):
        if '3' in self.version:
            return SNMPV3Parameters(ip=self.address,
                                    snmp_user=self.user,
                                    snmp_password=self.password,
                                    snmp_private_key=self.private_key)
        else:
            if action.lower() == 'set':
                community = self.community_write
            else:
                community = self.community_read

            return SNMPV2Parameters(ip=self.address, snmp_community=community)
    def test_execute_flow_success(self, snmp_actions_class):
        """ Unsupported SNMP Version """

        test_snmp_community = "snmp_community"

        snmp_parameters = SNMPV2Parameters(ip="127.0.0.1", snmp_community=test_snmp_community)
        snmp_actions = mock.MagicMock()
        snmp_actions_class.return_value = snmp_actions
        snmp_actions.get_current_snmp_communities.return_value = test_snmp_community

        self.tested_instance.execute_flow(snmp_parameters)
        snmp_actions.get_current_snmp_communities.assert_called_once()
        snmp_actions.enable_snmp.assert_not_called()
    def test_execute_flow_success_already_configured(self, snmp_actions_class):
        """ SNMP Community already configured """

        test_snmp_community = "snmp_community"

        snmp_parameters = SNMPV2Parameters(ip="127.0.0.1", snmp_community=test_snmp_community)
        snmp_actions = mock.MagicMock()
        snmp_actions_class.return_value = snmp_actions
        snmp_actions.get_current_snmp_communities.return_value = "some information about already configured communities"

        self.tested_instance.execute_flow(snmp_parameters)
        snmp_actions.get_current_snmp_communities.assert_called_once()
        snmp_actions.enable_snmp.assert_called_once_with(test_snmp_community)
def get_snmp_parameters_from_command_context(resource_config, api):
    """
    :param ResourceCommandContext command_context: command context
    :return:
    """

    if '3' in resource_config.snmp_version:
        return SNMPV3Parameters(ip=resource_config.address,
                                snmp_user=resource_config.snmp_v3_user or '',
                                snmp_password=api.DecryptPassword(resource_config.snmp_v3_password).Value or '',
                                snmp_private_key=resource_config.snmp_v3_private_key or '')
    else:
        return SNMPV2Parameters(ip=resource_config.address,
                                snmp_community=api.DecryptPassword(resource_config.snmp_read_community).Value or '')
Exemple #8
0
    def _get_snmp_parameters(self, action):
        action = action.lower()

        if '3' in self.version:
            return SNMPV3Parameters(ip=self.address,
                                    snmp_user=self.user,
                                    snmp_password=self.password,
                                    snmp_private_key=self.private_key)
        else:
            if action == 'set':
                community = self.community_write
            elif action == 'get':
                community = self.community_read
            else:
                raise Exception('Unsupported SNMP action: %s' % action)

            return SNMPV2Parameters(ip=self.address, snmp_community=community)
    def _get_snmp_handler(self, device_ip, snmp_comunity_strings):
        """Get SNMP Handler and valid community string for the device

        :param str device_ip:
        :param list[str] snmp_comunity_strings:
        :return: tuple with QualiSnmp instance and valid SNMP community string
        :rtype: (QualiSnmp, str)
        """
        for snmp_community in snmp_comunity_strings:
            self.logger.info(
                "Trying community string '{}' for device with IP {}".format(
                    snmp_community, device_ip))
            snmp_parameters = SNMPV2Parameters(ip=device_ip,
                                               snmp_community=snmp_community)

            try:
                return QualiSnmp(snmp_parameters, self.logger), snmp_community
            except Exception:
                self.logger.warning(
                    "SNMP Community string '{}' is not valid for device with IP {}"
                    .format(snmp_community, device_ip))

        raise ReportableException("SNMP timeout - no resource detected")
Exemple #10
0
def get_snmp_parameters_from_command_context(command_context, write):
    snmp_version = get_attribute_by_name(context=command_context,
                                         attribute_name='SNMP Version')
    ip = command_context.resource.address

    if '3' in snmp_version:
        return SNMPV3Parameters(
            ip=ip,
            snmp_user=get_attribute_by_name(context=command_context,
                                            attribute_name='SNMP User') or '',
            snmp_password=get_attribute_by_name(
                context=command_context, attribute_name='SNMP Password') or '',
            snmp_private_key=get_attribute_by_name(
                context=command_context, attribute_name='SNMP Private Key'))
    else:
        if write:
            community = get_attribute_by_name(
                context=command_context,
                attribute_name='SNMP Write Community') or 'private'
        else:
            community = get_attribute_by_name(
                context=command_context,
                attribute_name='SNMP Read Community') or 'public'
        return SNMPV2Parameters(ip=ip, snmp_community=community)