Exemple #1
0
    def test_snmpwalk_by_cl(self):
        oid = "BRIDGE-MIB::dot1dTpFdbPort"
        # the result of SNMPWALK is None
        utils.exec_command = Mock(return_value=(0, None, None))
        result = utils.snmpwalk_by_cl(self.host, self.credentials, oid)
        self.assertEqual([], result)

        # Successfully execute SNMPWALK
        return_value = "xxx.0.12.41.112.143.193 = INTEGER: 47\n" "xxx.0.12.41.139.17.124 = INTEGER: 47\n"
        expected_result = [{"iid": "0.12.41.112.143.193", "value": "47"}, {"iid": "0.12.41.139.17.124", "value": "47"}]
        utils.exec_command = Mock(return_value=(0, return_value, None))
        result = utils.snmpwalk_by_cl(self.host, self.credentials, oid)
        self.assertEqual(expected_result, result)
Exemple #2
0
    def scan(self):
        """
        Implemnets the scan method in BasePlugin class. In this mac module,
        mac addesses were retrieved by snmpwalk commandline.
        """
        results = utils.snmpwalk_by_cl(self.host, self.credential, self.oid)

        if not results:
            logging.info("[Huawei][mac] No results returned from SNMP walk!")
            return None

        mac_list = []

        for entity in results:
            # The format of 'iid' is like '248.192.1.214.34.15.31.1.48'
            # The first 6 numbers will be the MAC address
            # The 7th number is its vlan ID
            numbers = entity['iid'].split('.')
            mac = self.get_mac_address(numbers[:6])
            vlan = numbers[6]
            port = self.get_port(entity['value'])

            tmp = {}
            tmp['port'] = port
            tmp['mac'] = mac
            tmp['vlan'] = vlan
            mac_list.append(tmp)

        return mac_list
Exemple #3
0
    def scan(self):
        """Implemnets the scan method in BasePlugin class.

           .. note::
              In this mac module, mac addesses were retrieved by
              snmpwalk commandline.
        """
        results = utils.snmpwalk_by_cl(self.host, self.credential, self.oid)

        if not results:
            logging.info("[Huawei][mac] No results returned from SNMP walk!")
            return None

        mac_list = []

        for entity in results:
            # The format of 'iid' is like '248.192.1.214.34.15.31.1.48'
            # The first 6 numbers will be the MAC address
            # The 7th number is its vlan ID
            numbers = entity['iid'].split('.')
            mac = self.get_mac_address(numbers[:6])
            vlan = numbers[6]
            port = self.get_port(entity['value'])

            tmp = {}
            tmp['port'] = port
            tmp['mac'] = mac
            tmp['vlan'] = vlan
            mac_list.append(tmp)

        return mac_list
    def test_snmpwalk_by_cl(self):
        oid = "BRIDGE-MIB::dot1dTpFdbPort"
        # the result of SNMPWALK is None
        utils.exec_command = Mock(return_value=(0, None, None))
        result = utils.snmpwalk_by_cl(self.host, self.credentials, oid)
        self.assertEqual([], result)

        # Successfully execute SNMPWALK
        return_value = ("xxx.0.12.41.112.143.193 = INTEGER: 47\n"
                        "xxx.0.12.41.139.17.124 = INTEGER: 47\n")
        expected_result = [{
            "iid": "0.12.41.112.143.193",
            "value": "47"
        }, {
            "iid": "0.12.41.139.17.124",
            "value": "47"
        }]
        utils.exec_command = Mock(return_value=(0, return_value, None))
        result = utils.snmpwalk_by_cl(self.host, self.credentials, oid)
        self.assertEqual(expected_result, result)
Exemple #5
0
    def scan(self):
        results = None
        try:
            results = utils.snmpwalk_by_cl(self.host, self.credential,
                                           self.oid)
        except TimeoutError as e:
            logging.debug("PluginMac:scan snmpwalk_by_cl failed: %s",
                          e.message)
            return None

        mac_list = []
        for entity in results:
            ifIndex = entity['value']
            if entity and int(ifIndex):
                tmp = {}
                mac_numbers = entity['iid'].split('.')
                tmp['mac'] = self.get_mac_address(mac_numbers)
                tmp['port'] = self.get_port(ifIndex)
                tmp['vlan'] = self.get_vlan_id(ifIndex)
                mac_list.append(tmp)

        return mac_list
Exemple #6
0
    def scan(self, **kwargs):
        """scan."""
        results = None
        try:
            results = utils.snmpwalk_by_cl(self.host, self.credential,
                                           self.oid)
        except TimeoutError as error:
            logging.debug("PluginMac:scan snmpwalk_by_cl failed: %s",
                          error.message)
            return None

        mac_list = []
        for entity in results:
            if_index = entity['value']
            if entity and int(if_index):
                tmp = {}
                mac_numbers = entity['iid'].split('.')
                tmp['mac'] = self.get_mac_address(mac_numbers)
                tmp['port'] = self.get_port(if_index)
                tmp['vlan'] = self.get_vlan_id(if_index)
                mac_list.append(tmp)

        return mac_list