Merge "Add Python3 support"

This commit is contained in:
Jenkins 2015-07-20 12:32:22 +00:00 committed by Gerrit Code Review
commit 9e43dc64f8
8 changed files with 35 additions and 37 deletions

@ -80,7 +80,7 @@ class SyncCommandResult(BaseCommandResult):
super(SyncCommandResult, self).__init__(command_name, super(SyncCommandResult, self).__init__(command_name,
command_params) command_params)
if type(result_or_error) in (str, unicode): if isinstance(result_or_error, (bytes, six.text_type)):
result_key = 'result' if success else 'error' result_key = 'result' if success else 'error'
result_or_error = {result_key: result_or_error} result_or_error = {result_key: result_or_error}
@ -148,7 +148,7 @@ class AsyncCommandResult(BaseCommandResult):
try: try:
result = self.execute_method(**self.command_params) result = self.execute_method(**self.command_params)
if type(result) in (str, unicode): if isinstance(result, (bytes, six.text_type)):
result = {'result': '{}: {}'.format(self.command_name, result)} result = {'result': '{}: {}'.format(self.command_name, result)}
with self.command_state_lock: with self.command_state_lock:

@ -18,7 +18,6 @@ import hashlib
import os import os
import requests import requests
import six import six
import StringIO
import time import time
from oslo_concurrency import processutils from oslo_concurrency import processutils
@ -76,7 +75,7 @@ def _download_configdrive_to_file(configdrive, filename):
def _write_configdrive_to_file(configdrive, filename): def _write_configdrive_to_file(configdrive, filename):
LOG.debug('Writing configdrive to {0}'.format(filename)) LOG.debug('Writing configdrive to {0}'.format(filename))
# configdrive data is base64'd, decode it first # configdrive data is base64'd, decode it first
data = StringIO.StringIO(base64.b64decode(configdrive)) data = six.StringIO(base64.b64decode(configdrive))
gunzipped = gzip.GzipFile('configdrive', 'rb', 9, data) gunzipped = gzip.GzipFile('configdrive', 'rb', 9, data)
with open(filename, 'wb') as f: with open(filename, 'wb') as f:
f.write(gunzipped.read()) f.write(gunzipped.read())

@ -30,7 +30,6 @@ from ironic_python_agent.cmd import agent # noqa
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
CONF = cfg.CONF CONF = cfg.CONF
LLDP_ETHERTYPE = 0x88cc LLDP_ETHERTYPE = 0x88cc
IFF_PROMISC = 0x100 IFF_PROMISC = 0x100
SIOCGIFFLAGS = 0x8913 SIOCGIFFLAGS = 0x8913
@ -66,7 +65,7 @@ class RawPromiscuousSockets(object):
LOG.info('Interface %s entering promiscuous mode to capture ', LOG.info('Interface %s entering promiscuous mode to capture ',
interface_name) interface_name)
try: try:
ifr.ifr_ifrn = interface_name ifr.ifr_ifrn = interface_name.encode()
# Get current flags # Get current flags
fcntl.ioctl(sock.fileno(), SIOCGIFFLAGS, ifr) # G for Get fcntl.ioctl(sock.fileno(), SIOCGIFFLAGS, ifr) # G for Get
# bitwise or the flags with promiscuous mode, set the new flags # bitwise or the flags with promiscuous mode, set the new flags
@ -91,7 +90,7 @@ class RawPromiscuousSockets(object):
def __exit__(self, exception_type, exception_val, trace): def __exit__(self, exception_type, exception_val, trace):
if exception_type: if exception_type:
LOG.exception('Error while using raw socket: %(type)s: %(val)', LOG.exception('Error while using raw socket: %(type)s: %(val)s',
{'type': exception_type, 'val': exception_val}) {'type': exception_type, 'val': exception_val})
for _name, sock, ifr in self.interfaces: for _name, sock, ifr in self.interfaces:

@ -204,7 +204,7 @@ class TestStandbyExtension(test_base.BaseTestCase):
response = requests_mock.return_value response = requests_mock.return_value
response.status_code = 200 response.status_code = 200
response.iter_content.return_value = ['some', 'content'] response.iter_content.return_value = ['some', 'content']
file_mock = mock.Mock(spec=file) file_mock = mock.Mock()
open_mock.return_value.__enter__.return_value = file_mock open_mock.return_value.__enter__.return_value = file_mock
file_mock.read.return_value = None file_mock.read.return_value = None
hexdigest_mock = md5_mock.return_value.hexdigest hexdigest_mock = md5_mock.return_value.hexdigest
@ -247,7 +247,7 @@ class TestStandbyExtension(test_base.BaseTestCase):
image_info = self._build_fake_image_info() image_info = self._build_fake_image_info()
hexdigest_mock = md5_mock.return_value.hexdigest hexdigest_mock = md5_mock.return_value.hexdigest
hexdigest_mock.return_value = image_info['checksum'] hexdigest_mock.return_value = image_info['checksum']
file_mock = mock.Mock(spec=file) file_mock = mock.Mock()
file_mock.read.return_value = None file_mock.read.return_value = None
open_mock.return_value.__enter__.return_value = file_mock open_mock.return_value.__enter__.return_value = file_mock
image_location = '/foo/bar' image_location = '/foo/bar'
@ -261,7 +261,7 @@ class TestStandbyExtension(test_base.BaseTestCase):
def test_verify_image_failure(self, md5_mock, open_mock): def test_verify_image_failure(self, md5_mock, open_mock):
image_info = self._build_fake_image_info() image_info = self._build_fake_image_info()
md5_mock.return_value.hexdigest.return_value = 'wrong hash' md5_mock.return_value.hexdigest.return_value = 'wrong hash'
file_mock = mock.Mock(spec=file) file_mock = mock.Mock()
file_mock.read.return_value = None file_mock.read.return_value = None
open_mock.return_value.__enter__.return_value = file_mock open_mock.return_value.__enter__.return_value = file_mock
image_location = '/foo/bar' image_location = '/foo/bar'

@ -39,15 +39,15 @@ class TestNetutils(test_base.BaseTestCase):
def test_get_lldp_info(self, sock_mock, select_mock, fcntl_mock): def test_get_lldp_info(self, sock_mock, select_mock, fcntl_mock):
expected_lldp = { expected_lldp = {
'eth1': [ 'eth1': [
(0, ''), (0, b''),
(1, '\x04\x88Z\x92\xecTY'), (1, b'\x04\x88Z\x92\xecTY'),
(2, '\x05Ethernet1/18'), (2, b'\x05Ethernet1/18'),
(3, '\x00x')], (3, b'\x00x')],
'eth0': [ 'eth0': [
(0, ''), (0, b''),
(1, '\x04\x88Z\x92\xecTY'), (1, b'\x04\x88Z\x92\xecTY'),
(2, '\x05Ethernet1/18'), (2, b'\x05Ethernet1/18'),
(3, '\x00x')] (3, b'\x00x')]
} }
interface_names = ['eth0', 'eth1'] interface_names = ['eth0', 'eth1']
@ -87,15 +87,15 @@ class TestNetutils(test_base.BaseTestCase):
def test_get_lldp_info_multiple(self, sock_mock, select_mock, fcntl_mock): def test_get_lldp_info_multiple(self, sock_mock, select_mock, fcntl_mock):
expected_lldp = { expected_lldp = {
'eth1': [ 'eth1': [
(0, ''), (0, b''),
(1, '\x04\x88Z\x92\xecTY'), (1, b'\x04\x88Z\x92\xecTY'),
(2, '\x05Ethernet1/18'), (2, b'\x05Ethernet1/18'),
(3, '\x00x')], (3, b'\x00x')],
'eth0': [ 'eth0': [
(0, ''), (0, b''),
(1, '\x04\x88Z\x92\xecTY'), (1, b'\x04\x88Z\x92\xecTY'),
(2, '\x05Ethernet1/18'), (2, b'\x05Ethernet1/18'),
(3, '\x00x')] (3, b'\x00x')]
} }
interface_names = ['eth0', 'eth1'] interface_names = ['eth0', 'eth1']
@ -136,10 +136,10 @@ class TestNetutils(test_base.BaseTestCase):
expected_lldp = { expected_lldp = {
'eth1': [], 'eth1': [],
'eth0': [ 'eth0': [
(0, ''), (0, b''),
(1, '\x04\x88Z\x92\xecTY'), (1, b'\x04\x88Z\x92\xecTY'),
(2, '\x05Ethernet1/18'), (2, b'\x05Ethernet1/18'),
(3, '\x00x')] (3, b'\x00x')]
} }
interface_names = ['eth0', 'eth1'] interface_names = ['eth0', 'eth1']

@ -69,7 +69,7 @@ exit 1
self.assertRaises(processutils.ProcessExecutionError, self.assertRaises(processutils.ProcessExecutionError,
utils.execute, utils.execute,
tmpfilename, tmpfilename2, attempts=10, tmpfilename, tmpfilename2, attempts=10,
process_input='foo', process_input=b'foo',
delay_on_retry=False) delay_on_retry=False)
except OSError as e: except OSError as e:
if e.errno == errno.EACCES: if e.errno == errno.EACCES:
@ -120,7 +120,7 @@ grep foo
try: try:
utils.execute(tmpfilename, utils.execute(tmpfilename,
tmpfilename2, tmpfilename2,
process_input='foo', process_input=b'foo',
attempts=2) attempts=2)
except OSError as e: except OSError as e:
if e.errno == errno.EACCES: if e.errno == errno.EACCES:
@ -181,8 +181,8 @@ class GetAgentParamsTestCase(test_base.BaseTestCase):
get_cache_mock.return_value = {} get_cache_mock.return_value = {}
kernel_params = {'boot_method': 'vmedia'} kernel_params = {'boot_method': 'vmedia'}
vmedia_params = {'a': 'b'} vmedia_params = {'a': 'b'}
expected_params = dict(kernel_params.items() + expected_params = dict(list(kernel_params.items()) +
vmedia_params.items()) list(vmedia_params.items()))
read_params_mock.return_value = kernel_params read_params_mock.return_value = kernel_params
get_vmedia_params_mock.return_value = vmedia_params get_vmedia_params_mock.return_value = vmedia_params
@ -210,7 +210,7 @@ class GetAgentParamsTestCase(test_base.BaseTestCase):
'/sys/class/block/sdb/device/model', '/sys/class/block/sdb/device/model',
'/sys/class/block/sdc/device/model'] '/sys/class/block/sdc/device/model']
fobj_mock = mock.MagicMock() fobj_mock = mock.MagicMock()
mock_file_handle = mock.MagicMock(spec=file) mock_file_handle = mock.MagicMock()
mock_file_handle.__enter__.return_value = fobj_mock mock_file_handle.__enter__.return_value = fobj_mock
open_mock.return_value = mock_file_handle open_mock.return_value = mock_file_handle

@ -228,7 +228,7 @@ def parse_root_device_hints():
raise errors.DeviceNotFound(error_msg) raise errors.DeviceNotFound(error_msg)
# Normalise the values # Normalise the values
hints = {k: normalize(v) for k, v in hints.iteritems()} hints = {k: normalize(v) for k, v in hints.items()}
if 'size' in hints: if 'size' in hints:
# NOTE(lucasagomes): Ironic should validate before passing to # NOTE(lucasagomes): Ironic should validate before passing to

@ -1,7 +1,7 @@
[tox] [tox]
minversion = 1.6 minversion = 1.6
skipsdist = True skipsdist = True
envlist = py27,pep8 envlist = py27,py34,pep8
[testenv] [testenv]
usedevelop = True usedevelop = True