summaryrefslogtreecommitdiff
path: root/ironic
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-09-30 09:06:34 +0000
committerGerrit Code Review <review@openstack.org>2020-09-30 09:06:34 +0000
commit672c61938ed23ea54afcebca8e032d01edb5f665 (patch)
treefae5ac1bfed30dcb54ab4b92e7714b4d3d6c734e /ironic
parent1f2b0b6bcd9fe89e894426fb942924d00d5a1201 (diff)
parent0e399f750ad88823c4d8c6355b70f23d98797ee8 (diff)
downloadironic-672c61938ed23ea54afcebca8e032d01edb5f665.tar.gz
Merge "Fix handling OctetString for pysnmp"
Diffstat (limited to 'ironic')
-rw-r--r--ironic/drivers/modules/irmc/inspect.py2
-rw-r--r--ironic/tests/unit/drivers/modules/irmc/test_inspect.py23
2 files changed, 19 insertions, 6 deletions
diff --git a/ironic/drivers/modules/irmc/inspect.py b/ironic/drivers/modules/irmc/inspect.py
index 5d438a6c8..4204ac95b 100644
--- a/ironic/drivers/modules/irmc/inspect.py
+++ b/ironic/drivers/modules/irmc/inspect.py
@@ -110,7 +110,7 @@ def _get_mac_addresses(node):
d_info['irmc_snmp_security'])
node_classes = snmp_client.get_next(NODE_CLASS_OID)
- mac_addresses = [':'.join(['%02x' % ord(x) for x in mac])
+ mac_addresses = [':'.join(['%02x' % x for x in mac])
for mac in snmp_client.get_next(MAC_ADDRESS_OID)]
return [a for c, a in zip(node_classes, mac_addresses)
diff --git a/ironic/tests/unit/drivers/modules/irmc/test_inspect.py b/ironic/tests/unit/drivers/modules/irmc/test_inspect.py
index 0a6eeb399..9eb8dbb85 100644
--- a/ironic/tests/unit/drivers/modules/irmc/test_inspect.py
+++ b/ironic/tests/unit/drivers/modules/irmc/test_inspect.py
@@ -18,6 +18,8 @@ Test class for iRMC Inspection Driver
from unittest import mock
+from pysnmp.proto import rfc1902
+
from ironic.common import exception
from ironic.common import states
from ironic.common import utils
@@ -38,12 +40,23 @@ class IRMCInspectInternalMethodsTestCase(test_common.BaseIRMCTest):
@mock.patch('ironic.drivers.modules.irmc.inspect.snmp.SNMPClient',
spec_set=True, autospec=True)
def test__get_mac_addresses(self, snmpclient_mock):
+
+ # NOTE(yushiro): In pysnmp 4.4.12, SNMPClient returns following type:
+ # node classes: pysnmp.proto.rfc1902.Integer32
+ # mac addresses: pysnmp.proto.rfc1902.OctetString
snmpclient_mock.return_value = mock.Mock(
- **{'get_next.side_effect': [[2, 2, 7],
- ['\xaa\xaa\xaa\xaa\xaa\xaa',
- '\xbb\xbb\xbb\xbb\xbb\xbb',
- '\xcc\xcc\xcc\xcc\xcc\xcc']]})
- inspected_macs = ['aa:aa:aa:aa:aa:aa', 'bb:bb:bb:bb:bb:bb']
+ **{'get_next.side_effect': [
+ [
+ rfc1902.Integer32(2),
+ rfc1902.Integer32(2),
+ rfc1902.Integer32(7)
+ ], [
+ rfc1902.OctetString('\x90\x1b\x0e\xa5\x70\x37'),
+ rfc1902.OctetString('\x90\x1b\x0e\xa5\x70\x38'),
+ rfc1902.OctetString('\x90\x1b\x0e\xa5\x70\x39')
+ ]]}
+ )
+ inspected_macs = ['90:1b:0e:a5:70:37', '90:1b:0e:a5:70:38']
with task_manager.acquire(self.context, self.node.uuid,
shared=True) as task:
result = irmc_inspect._get_mac_addresses(task.node)