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)
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 '')
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")
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)