]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Python 3: specify a bytes to an argument for a format type 's' of struct.pack()
authorfumihiko kakuma <kakuma@valinux.co.jp>
Sat, 8 Aug 2015 14:20:45 +0000 (23:20 +0900)
committerfumihiko kakuma <kakuma@valinux.co.jp>
Wed, 12 Aug 2015 22:55:50 +0000 (07:55 +0900)
In python 3, a format type 's' of struct.pack() requires a bytes object to an argument.

Change-Id: Ia4640b31c31b5b7454cd1582af46562fb1885726
Blueprint: neutron-python3

neutron/agent/linux/utils.py
tox.ini

index 30d3f5cc0ffdc1aa64600c0140dce890842cb277..3594a1b388ab5a6abcbc25e51ae2445329a7303b 100644 (file)
@@ -33,6 +33,7 @@ from oslo_log import log as logging
 from oslo_log import loggers
 from oslo_rootwrap import client
 from oslo_utils import excutils
+import six
 from six.moves import http_client as httplib
 
 from neutron.agent.common import config
@@ -149,8 +150,10 @@ def get_interface_mac(interface):
     MAC_START = 18
     MAC_END = 24
     s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-    info = fcntl.ioctl(s.fileno(), 0x8927,
-        struct.pack('256s', interface[:constants.DEVICE_NAME_MAX_LEN]))
+    dev = interface[:constants.DEVICE_NAME_MAX_LEN]
+    if isinstance(dev, six.text_type):
+        dev = dev.encode('utf-8')
+    info = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', dev))
     return ''.join(['%02x:' % ord(char)
                     for char in info[MAC_START:MAC_END]])[:-1]
 
diff --git a/tox.ini b/tox.ini
index f5094b0cc1fe4fc02915c195af45580c11a50677..7cbbbe9b2ab158f0f099144936a47995d1c19f80 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -208,6 +208,7 @@ commands = python -m testtools.run \
     neutron.tests.unit.agent.linux.test_bridge_lib \
     neutron.tests.unit.agent.linux.test_ip_link_support \
     neutron.tests.unit.agent.linux.test_interface \
+    neutron.tests.unit.agent.linux.test_utils \
     neutron.tests.unit.agent.dhcp.test_agent \
     neutron.tests.unit.test_manager \
     neutron.tests.unit.test_service \