Merge "Enable H904 PEP8 check"
This commit is contained in:
commit
b212144220
@ -773,8 +773,8 @@ class NodesController(rest.RestController):
|
||||
rpc_node = objects.Node.get_by_uuid(pecan.request.context, node_uuid)
|
||||
|
||||
# Check if node is transitioning state
|
||||
if rpc_node['target_power_state'] or \
|
||||
rpc_node['target_provision_state']:
|
||||
if (rpc_node['target_power_state'] or
|
||||
rpc_node['target_provision_state']):
|
||||
msg = _("Node %s can not be updated while a state transition "
|
||||
"is in progress.")
|
||||
raise wsme.exc.ClientSideError(msg % node_uuid, status_code=409)
|
||||
|
@ -112,12 +112,12 @@ class DriverFactory(object):
|
||||
def _check_func(ext):
|
||||
return ext.name in CONF.enabled_drivers
|
||||
|
||||
cls._extension_manager = \
|
||||
cls._extension_manager = (
|
||||
dispatch.NameDispatchExtensionManager(
|
||||
'ironic.drivers',
|
||||
_check_func,
|
||||
invoke_on_load=True,
|
||||
on_load_failure_callback=_catch_driver_not_found)
|
||||
on_load_failure_callback=_catch_driver_not_found))
|
||||
LOG.info(_LI("Loaded the following drivers: %s"),
|
||||
cls._extension_manager.names())
|
||||
|
||||
|
@ -205,8 +205,8 @@ class BaseImageService(object):
|
||||
(image_id, self.glance_host,
|
||||
self.glance_port, use_ssl) = service_utils.parse_image_ref(image_id)
|
||||
|
||||
if self.version == 2 \
|
||||
and 'file' in CONF.glance.allowed_direct_url_schemes:
|
||||
if (self.version == 2 and
|
||||
'file' in CONF.glance.allowed_direct_url_schemes):
|
||||
|
||||
location = self._get_location(image_id)
|
||||
url = urlparse.urlparse(location)
|
||||
|
@ -110,8 +110,8 @@ def _get_api_server():
|
||||
that will cycle through the list, looping around to the beginning
|
||||
if necessary.
|
||||
"""
|
||||
api_server = CONF.glance.glance_api_servers or \
|
||||
CONF.glance.glance_host + ':' + str(CONF.glance.glance_port)
|
||||
api_server = (CONF.glance.glance_api_servers or
|
||||
CONF.glance.glance_host + ':' + str(CONF.glance.glance_port))
|
||||
if '//' not in api_server:
|
||||
api_server = CONF.glance.glance_protocol + '://' + api_server
|
||||
url = urlparse.urlparse(api_server)
|
||||
|
@ -278,8 +278,7 @@ class ConductorManager(periodic_task.PeriodicTasks):
|
||||
# instance_uuid needs to be unset, and handle it.
|
||||
if 'instance_uuid' in delta:
|
||||
task.driver.power.validate(task)
|
||||
node_obj.power_state = \
|
||||
task.driver.power.get_power_state(task)
|
||||
node_obj.power_state = task.driver.power.get_power_state(task)
|
||||
|
||||
if node_obj.power_state != states.POWER_OFF:
|
||||
raise exception.NodeInWrongPowerState(
|
||||
@ -1214,8 +1213,9 @@ class ConductorManager(periodic_task.PeriodicTasks):
|
||||
'event_type': 'hardware.ipmi.metrics.update'}
|
||||
|
||||
try:
|
||||
with task_manager.acquire(context, node_uuid, shared=True) \
|
||||
as task:
|
||||
with task_manager.acquire(context,
|
||||
node_uuid,
|
||||
shared=True) as task:
|
||||
task.driver.management.validate(task)
|
||||
sensors_data = task.driver.management.get_sensors_data(
|
||||
task)
|
||||
|
@ -68,10 +68,9 @@ def node_power_action(task, new_state):
|
||||
curr_state = task.driver.power.get_power_state(task)
|
||||
except Exception as e:
|
||||
with excutils.save_and_reraise_exception():
|
||||
node['last_error'] = \
|
||||
_("Failed to change power state to '%(target)s'. "
|
||||
"Error: %(error)s") % {
|
||||
'target': new_state, 'error': e}
|
||||
node['last_error'] = _(
|
||||
"Failed to change power state to '%(target)s'. "
|
||||
"Error: %(error)s") % {'target': new_state, 'error': e}
|
||||
node['target_power_state'] = states.NOSTATE
|
||||
node.save()
|
||||
|
||||
@ -114,10 +113,9 @@ def node_power_action(task, new_state):
|
||||
task.driver.power.reboot(task)
|
||||
except Exception as e:
|
||||
with excutils.save_and_reraise_exception():
|
||||
node['last_error'] = \
|
||||
_("Failed to change power state to '%(target)s'. "
|
||||
"Error: %(error)s") % {
|
||||
'target': target_state, 'error': e}
|
||||
node['last_error'] = _(
|
||||
"Failed to change power state to '%(target)s'. "
|
||||
"Error: %(error)s") % {'target': target_state, 'error': e}
|
||||
else:
|
||||
# success!
|
||||
node['power_state'] = target_state
|
||||
|
@ -289,8 +289,8 @@ class Connection(api.Connection):
|
||||
if not utils.is_uuid_like(instance):
|
||||
raise exception.InvalidUUID(uuid=instance)
|
||||
|
||||
query = model_query(models.Node).\
|
||||
filter_by(instance_uuid=instance)
|
||||
query = (model_query(models.Node)
|
||||
.filter_by(instance_uuid=instance))
|
||||
|
||||
try:
|
||||
result = query.one()
|
||||
@ -505,8 +505,8 @@ class Connection(api.Connection):
|
||||
def register_conductor(self, values, update_existing=False):
|
||||
session = get_session()
|
||||
with session.begin():
|
||||
query = model_query(models.Conductor, session=session).\
|
||||
filter_by(hostname=values['hostname'])
|
||||
query = (model_query(models.Conductor, session=session)
|
||||
.filter_by(hostname=values['hostname']))
|
||||
try:
|
||||
ref = query.one()
|
||||
if ref.online is True and not update_existing:
|
||||
@ -524,19 +524,17 @@ class Connection(api.Connection):
|
||||
|
||||
def get_conductor(self, hostname):
|
||||
try:
|
||||
return model_query(models.Conductor).\
|
||||
filter_by(hostname=hostname,
|
||||
online=True).\
|
||||
one()
|
||||
return (model_query(models.Conductor)
|
||||
.filter_by(hostname=hostname, online=True)
|
||||
.one())
|
||||
except NoResultFound:
|
||||
raise exception.ConductorNotFound(conductor=hostname)
|
||||
|
||||
def unregister_conductor(self, hostname):
|
||||
session = get_session()
|
||||
with session.begin():
|
||||
query = model_query(models.Conductor, session=session).\
|
||||
filter_by(hostname=hostname,
|
||||
online=True)
|
||||
query = (model_query(models.Conductor, session=session)
|
||||
.filter_by(hostname=hostname, online=True))
|
||||
count = query.update({'online': False})
|
||||
if count == 0:
|
||||
raise exception.ConductorNotFound(conductor=hostname)
|
||||
@ -544,8 +542,8 @@ class Connection(api.Connection):
|
||||
def touch_conductor(self, hostname):
|
||||
session = get_session()
|
||||
with session.begin():
|
||||
query = model_query(models.Conductor, session=session).\
|
||||
filter_by(hostname=hostname)
|
||||
query = (model_query(models.Conductor, session=session)
|
||||
.filter_by(hostname=hostname))
|
||||
# since we're not changing any other field, manually set updated_at
|
||||
# and since we're heartbeating, make sure that online=True
|
||||
count = query.update({'updated_at': timeutils.utcnow(),
|
||||
@ -558,10 +556,10 @@ class Connection(api.Connection):
|
||||
interval = CONF.conductor.heartbeat_timeout
|
||||
|
||||
limit = timeutils.utcnow() - datetime.timedelta(seconds=interval)
|
||||
result = model_query(models.Conductor).\
|
||||
filter_by(online=True).\
|
||||
filter(models.Conductor.updated_at >= limit).\
|
||||
all()
|
||||
result = (model_query(models.Conductor)
|
||||
.filter_by(online=True)
|
||||
.filter(models.Conductor.updated_at >= limit)
|
||||
.all())
|
||||
|
||||
# build mapping of drivers to the set of hosts which support them
|
||||
d2c = collections.defaultdict(set)
|
||||
|
@ -195,8 +195,8 @@ def notify(address, port):
|
||||
|
||||
def get_dev(address, port, iqn, lun):
|
||||
"""Returns a device path for given parameters."""
|
||||
dev = "/dev/disk/by-path/ip-%s:%s-iscsi-%s-lun-%s" \
|
||||
% (address, port, iqn, lun)
|
||||
dev = ("/dev/disk/by-path/ip-%s:%s-iscsi-%s-lun-%s"
|
||||
% (address, port, iqn, lun))
|
||||
return dev
|
||||
|
||||
|
||||
|
@ -510,14 +510,14 @@ class NativeIPMIShellinaboxConsole(base.ConsoleInterface):
|
||||
pw_file = console_utils.make_persistent_password_file(
|
||||
path, driver_info['password'])
|
||||
|
||||
console_cmd = "/:%(uid)s:%(gid)s:HOME:pyghmicons %(bmc)s" \
|
||||
" %(user)s" \
|
||||
" %(passwd_file)s" \
|
||||
% {'uid': os.getuid(),
|
||||
'gid': os.getgid(),
|
||||
'bmc': driver_info['address'],
|
||||
'user': driver_info['username'],
|
||||
'passwd_file': pw_file}
|
||||
console_cmd = ("/:%(uid)s:%(gid)s:HOME:pyghmicons %(bmc)s"
|
||||
" %(user)s"
|
||||
" %(passwd_file)s"
|
||||
% {'uid': os.getuid(),
|
||||
'gid': os.getgid(),
|
||||
'bmc': driver_info['address'],
|
||||
'user': driver_info['username'],
|
||||
'passwd_file': pw_file})
|
||||
try:
|
||||
console_utils.start_shellinabox_console(driver_info['uuid'],
|
||||
driver_info['port'],
|
||||
|
@ -236,8 +236,8 @@ def _parse_driver_info(node):
|
||||
# check if ipmi_bridging has proper value
|
||||
if bridging_type == 'no':
|
||||
# if bridging is not selected, then set all bridging params to None
|
||||
local_address = transit_channel = transit_address = \
|
||||
target_channel = target_address = None
|
||||
(local_address, transit_channel, transit_address, target_channel,
|
||||
target_address) = (None,) * 5
|
||||
elif bridging_type in bridging_types:
|
||||
# check if the particular bridging option is supported on host
|
||||
if not _is_option_supported('%s_bridge' % bridging_type):
|
||||
@ -962,13 +962,13 @@ class IPMIShellinaboxConsole(base.ConsoleInterface):
|
||||
pw_file = console_utils.make_persistent_password_file(
|
||||
path, driver_info['password'])
|
||||
|
||||
ipmi_cmd = "/:%(uid)s:%(gid)s:HOME:ipmitool -H %(address)s" \
|
||||
" -I lanplus -U %(user)s -f %(pwfile)s" \
|
||||
% {'uid': os.getuid(),
|
||||
'gid': os.getgid(),
|
||||
'address': driver_info['address'],
|
||||
'user': driver_info['username'],
|
||||
'pwfile': pw_file}
|
||||
ipmi_cmd = ("/:%(uid)s:%(gid)s:HOME:ipmitool -H %(address)s"
|
||||
" -I lanplus -U %(user)s -f %(pwfile)s"
|
||||
% {'uid': os.getuid(),
|
||||
'gid': os.getgid(),
|
||||
'address': driver_info['address'],
|
||||
'user': driver_info['username'],
|
||||
'pwfile': pw_file})
|
||||
|
||||
for name, option in BRIDGING_OPTIONS:
|
||||
if driver_info[name] is not None:
|
||||
|
@ -60,8 +60,8 @@ class TestNoExceptionTracebackHook(base.FunctionalTest):
|
||||
# instead of'\n'.join(trace). But since RemoteError is kind of very
|
||||
# rare thing (happens due to wrong deserialization settings etc.)
|
||||
# we don't care about this garbage.
|
||||
expected_msg = "Remote error: %s %s" \
|
||||
% (test_exc_type, self.MSG_WITHOUT_TRACE) + "\n[u'"
|
||||
expected_msg = ("Remote error: %s %s"
|
||||
% (test_exc_type, self.MSG_WITHOUT_TRACE) + "\n[u'")
|
||||
actual_msg = json.loads(response.json['error_message'])['faultstring']
|
||||
self.assertEqual(expected_msg, actual_msg)
|
||||
|
||||
|
@ -273,8 +273,9 @@ class TestListNodes(base.FunctionalTest):
|
||||
self.assertEqual(400, response.status_code)
|
||||
|
||||
def test_associated_nodes_insensitive(self):
|
||||
associated_nodes = self._create_association_test_nodes().\
|
||||
get('associated')
|
||||
associated_nodes = (self
|
||||
._create_association_test_nodes()
|
||||
.get('associated'))
|
||||
|
||||
data = self.get_json('/nodes?associated=true')
|
||||
data1 = self.get_json('/nodes?associated=True')
|
||||
@ -292,8 +293,9 @@ class TestListNodes(base.FunctionalTest):
|
||||
self.assertTrue(response.json['error_message'])
|
||||
|
||||
def test_unassociated_nodes_insensitive(self):
|
||||
unassociated_nodes = self._create_association_test_nodes().\
|
||||
get('unassociated')
|
||||
unassociated_nodes = (self
|
||||
._create_association_test_nodes()
|
||||
.get('unassociated'))
|
||||
|
||||
data = self.get_json('/nodes?associated=false')
|
||||
data1 = self.get_json('/nodes?associated=FALSE')
|
||||
@ -304,8 +306,9 @@ class TestListNodes(base.FunctionalTest):
|
||||
self.assertEqual(sorted(unassociated_nodes), sorted(uuids))
|
||||
|
||||
def test_unassociated_nodes_with_limit(self):
|
||||
unassociated_nodes = self._create_association_test_nodes().\
|
||||
get('unassociated')
|
||||
unassociated_nodes = (self
|
||||
._create_association_test_nodes()
|
||||
.get('unassociated'))
|
||||
|
||||
data = self.get_json('/nodes?associated=False&limit=2')
|
||||
|
||||
@ -319,8 +322,9 @@ class TestListNodes(base.FunctionalTest):
|
||||
self.assertIn('associated=True', data['next'])
|
||||
|
||||
def test_detail_with_association_filter(self):
|
||||
associated_nodes = self._create_association_test_nodes().\
|
||||
get('associated')
|
||||
associated_nodes = (self
|
||||
._create_association_test_nodes()
|
||||
.get('associated'))
|
||||
data = self.get_json('/nodes/detail?associated=true')
|
||||
self.assertIn('driver', data['nodes'][0])
|
||||
self.assertEqual(len(associated_nodes), len(data['nodes']))
|
||||
@ -487,8 +491,10 @@ class TestPatch(base.FunctionalTest):
|
||||
|
||||
def test_update_ok(self):
|
||||
self.mock_update_node.return_value = self.node
|
||||
self.mock_update_node.return_value.updated_at = \
|
||||
"2013-12-03T06:20:41.184720+00:00"
|
||||
(self
|
||||
.mock_update_node
|
||||
.return_value
|
||||
.updated_at) = "2013-12-03T06:20:41.184720+00:00"
|
||||
response = self.patch_json('/nodes/%s' % self.node['uuid'],
|
||||
[{'path': '/instance_uuid',
|
||||
'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc',
|
||||
@ -1063,8 +1069,8 @@ class TestPut(base.FunctionalTest):
|
||||
self.assertEqual(400, ret.status_code)
|
||||
|
||||
def test_set_console_mode_enabled(self):
|
||||
with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \
|
||||
as mock_scm:
|
||||
with mock.patch.object(rpcapi.ConductorAPI,
|
||||
'set_console_mode') as mock_scm:
|
||||
ret = self.put_json('/nodes/%s/states/console' % self.node.uuid,
|
||||
{'enabled': "true"})
|
||||
self.assertEqual(202, ret.status_code)
|
||||
@ -1078,8 +1084,8 @@ class TestPut(base.FunctionalTest):
|
||||
expected_location)
|
||||
|
||||
def test_set_console_mode_disabled(self):
|
||||
with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \
|
||||
as mock_scm:
|
||||
with mock.patch.object(rpcapi.ConductorAPI,
|
||||
'set_console_mode') as mock_scm:
|
||||
ret = self.put_json('/nodes/%s/states/console' % self.node.uuid,
|
||||
{'enabled': "false"})
|
||||
self.assertEqual(202, ret.status_code)
|
||||
@ -1093,8 +1099,8 @@ class TestPut(base.FunctionalTest):
|
||||
expected_location)
|
||||
|
||||
def test_set_console_mode_bad_request(self):
|
||||
with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \
|
||||
as mock_scm:
|
||||
with mock.patch.object(rpcapi.ConductorAPI,
|
||||
'set_console_mode') as mock_scm:
|
||||
ret = self.put_json('/nodes/%s/states/console' % self.node.uuid,
|
||||
{'enabled': "invalid-value"},
|
||||
expect_errors=True)
|
||||
@ -1103,8 +1109,8 @@ class TestPut(base.FunctionalTest):
|
||||
assert not mock_scm.called
|
||||
|
||||
def test_set_console_mode_bad_request_missing_parameter(self):
|
||||
with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \
|
||||
as mock_scm:
|
||||
with mock.patch.object(rpcapi.ConductorAPI,
|
||||
'set_console_mode') as mock_scm:
|
||||
ret = self.put_json('/nodes/%s/states/console' % self.node.uuid,
|
||||
{}, expect_errors=True)
|
||||
self.assertEqual(400, ret.status_code)
|
||||
@ -1112,8 +1118,8 @@ class TestPut(base.FunctionalTest):
|
||||
assert not mock_scm.called
|
||||
|
||||
def test_set_console_mode_console_not_supported(self):
|
||||
with mock.patch.object(rpcapi.ConductorAPI, 'set_console_mode') \
|
||||
as mock_scm:
|
||||
with mock.patch.object(rpcapi.ConductorAPI,
|
||||
'set_console_mode') as mock_scm:
|
||||
mock_scm.side_effect = exception.UnsupportedDriverExtension(
|
||||
extension='console', driver='test-driver')
|
||||
ret = self.put_json('/nodes/%s/states/console' % self.node.uuid,
|
||||
|
@ -76,8 +76,8 @@ class NodePowerActionTestCase(base.DbTestCase):
|
||||
power_state=states.POWER_OFF)
|
||||
task = task_manager.TaskManager(self.context, node.uuid)
|
||||
|
||||
with mock.patch.object(self.driver.power, 'get_power_state') \
|
||||
as get_power_mock:
|
||||
with mock.patch.object(self.driver.power,
|
||||
'get_power_state') as get_power_mock:
|
||||
get_power_mock.return_value = states.POWER_OFF
|
||||
|
||||
conductor_utils.node_power_action(task, states.POWER_ON)
|
||||
@ -96,8 +96,8 @@ class NodePowerActionTestCase(base.DbTestCase):
|
||||
power_state=states.POWER_ON)
|
||||
task = task_manager.TaskManager(self.context, node.uuid)
|
||||
|
||||
with mock.patch.object(self.driver.power, 'get_power_state') \
|
||||
as get_power_mock:
|
||||
with mock.patch.object(self.driver.power,
|
||||
'get_power_state') as get_power_mock:
|
||||
get_power_mock.return_value = states.POWER_ON
|
||||
|
||||
conductor_utils.node_power_action(task, states.POWER_OFF)
|
||||
@ -135,8 +135,8 @@ class NodePowerActionTestCase(base.DbTestCase):
|
||||
power_state=states.POWER_ON)
|
||||
task = task_manager.TaskManager(self.context, node.uuid)
|
||||
|
||||
with mock.patch.object(self.driver.power, 'get_power_state') \
|
||||
as get_power_mock:
|
||||
with mock.patch.object(self.driver.power,
|
||||
'get_power_state') as get_power_mock:
|
||||
get_power_mock.return_value = states.POWER_ON
|
||||
|
||||
self.assertRaises(exception.InvalidParameterValue,
|
||||
@ -189,12 +189,12 @@ class NodePowerActionTestCase(base.DbTestCase):
|
||||
power_state=states.POWER_ON)
|
||||
task = task_manager.TaskManager(self.context, node.uuid)
|
||||
|
||||
with mock.patch.object(self.driver.power, 'get_power_state') \
|
||||
as get_power_mock:
|
||||
with mock.patch.object(self.driver.power,
|
||||
'get_power_state') as get_power_mock:
|
||||
get_power_mock.return_value = states.POWER_ON
|
||||
|
||||
with mock.patch.object(self.driver.power, 'set_power_state') \
|
||||
as set_power_mock:
|
||||
with mock.patch.object(self.driver.power,
|
||||
'set_power_state') as set_power_mock:
|
||||
conductor_utils.node_power_action(task, states.POWER_ON)
|
||||
|
||||
node.refresh()
|
||||
@ -215,10 +215,10 @@ class NodePowerActionTestCase(base.DbTestCase):
|
||||
power_state=states.POWER_ON)
|
||||
task = task_manager.TaskManager(self.context, node.uuid)
|
||||
|
||||
with mock.patch.object(self.driver.power, 'get_power_state') \
|
||||
as get_power_state_mock:
|
||||
get_power_state_mock.side_effect = \
|
||||
exception.InvalidParameterValue('failed getting power state')
|
||||
with mock.patch.object(self.driver.power,
|
||||
'get_power_state') as get_power_state_mock:
|
||||
get_power_state_mock.side_effect = (
|
||||
exception.InvalidParameterValue('failed getting power state'))
|
||||
|
||||
self.assertRaises(exception.InvalidParameterValue,
|
||||
conductor_utils.node_power_action,
|
||||
@ -241,10 +241,10 @@ class NodePowerActionTestCase(base.DbTestCase):
|
||||
power_state=states.POWER_OFF)
|
||||
task = task_manager.TaskManager(self.context, node.uuid)
|
||||
|
||||
with mock.patch.object(self.driver.power, 'get_power_state') \
|
||||
as get_power_mock:
|
||||
with mock.patch.object(self.driver.power, 'set_power_state') \
|
||||
as set_power_mock:
|
||||
with mock.patch.object(self.driver.power,
|
||||
'get_power_state') as get_power_mock:
|
||||
with mock.patch.object(self.driver.power,
|
||||
'set_power_state') as set_power_mock:
|
||||
get_power_mock.return_value = states.POWER_OFF
|
||||
set_power_mock.side_effect = exception.IronicException()
|
||||
|
||||
|
@ -224,8 +224,8 @@ class KeepAliveTestCase(_ServiceSetUpMixin, tests_db_base.DbTestCase):
|
||||
# avoid wasting time at the event.wait()
|
||||
CONF.set_override('heartbeat_interval', 0, 'conductor')
|
||||
with mock.patch.object(self.dbapi, 'touch_conductor') as mock_touch:
|
||||
with mock.patch.object(self.service._keepalive_evt, 'is_set') as \
|
||||
mock_is_set:
|
||||
with mock.patch.object(self.service._keepalive_evt,
|
||||
'is_set') as mock_is_set:
|
||||
mock_is_set.side_effect = [False, True]
|
||||
self.service._conductor_service_record_keepalive()
|
||||
mock_touch.assert_called_once_with(self.hostname)
|
||||
@ -243,8 +243,8 @@ class ChangeNodePowerStateTestCase(_ServiceSetUpMixin,
|
||||
power_state=states.POWER_OFF)
|
||||
self._start_service()
|
||||
|
||||
with mock.patch.object(self.driver.power, 'get_power_state') \
|
||||
as get_power_mock:
|
||||
with mock.patch.object(self.driver.power,
|
||||
'get_power_state') as get_power_mock:
|
||||
get_power_mock.return_value = states.POWER_OFF
|
||||
|
||||
self.service.change_node_power_state(self.context,
|
||||
@ -298,8 +298,8 @@ class ChangeNodePowerStateTestCase(_ServiceSetUpMixin,
|
||||
power_state=initial_state)
|
||||
self._start_service()
|
||||
|
||||
with mock.patch.object(self.service, '_spawn_worker') \
|
||||
as spawn_mock:
|
||||
with mock.patch.object(self.service,
|
||||
'_spawn_worker') as spawn_mock:
|
||||
spawn_mock.side_effect = exception.NoFreeConductorWorker()
|
||||
|
||||
exc = self.assertRaises(messaging.rpc.ExpectedException,
|
||||
@ -328,12 +328,12 @@ class ChangeNodePowerStateTestCase(_ServiceSetUpMixin,
|
||||
power_state=initial_state)
|
||||
self._start_service()
|
||||
|
||||
with mock.patch.object(self.driver.power, 'get_power_state') \
|
||||
as get_power_mock:
|
||||
with mock.patch.object(self.driver.power,
|
||||
'get_power_state') as get_power_mock:
|
||||
get_power_mock.return_value = states.POWER_OFF
|
||||
|
||||
with mock.patch.object(self.driver.power, 'set_power_state') \
|
||||
as set_power_mock:
|
||||
with mock.patch.object(self.driver.power,
|
||||
'set_power_state') as set_power_mock:
|
||||
new_state = states.POWER_ON
|
||||
set_power_mock.side_effect = exception.PowerStateFailure(
|
||||
pstate=new_state
|
||||
@ -362,8 +362,8 @@ class ChangeNodePowerStateTestCase(_ServiceSetUpMixin,
|
||||
power_state=initial_state)
|
||||
self._start_service()
|
||||
|
||||
with mock.patch.object(self.driver.power, 'validate') \
|
||||
as validate_mock:
|
||||
with mock.patch.object(self.driver.power,
|
||||
'validate') as validate_mock:
|
||||
validate_mock.side_effect = exception.InvalidParameterValue(
|
||||
'wrong power driver info')
|
||||
|
||||
@ -560,8 +560,8 @@ class VendorPassthruTestCase(_ServiceSetUpMixin, tests_db_base.DbTestCase):
|
||||
info = {'bar': 'baz'}
|
||||
self._start_service()
|
||||
|
||||
with mock.patch.object(self.service, '_spawn_worker') \
|
||||
as spawn_mock:
|
||||
with mock.patch.object(self.service,
|
||||
'_spawn_worker') as spawn_mock:
|
||||
spawn_mock.side_effect = exception.NoFreeConductorWorker()
|
||||
|
||||
exc = self.assertRaises(messaging.rpc.ExpectedException,
|
||||
@ -970,8 +970,9 @@ class MiscTestCase(_ServiceSetUpMixin, tests_db_base.DbTestCase):
|
||||
|
||||
def test_validate_driver_interfaces_validation_fail(self):
|
||||
node = obj_utils.create_test_node(self.context, driver='fake')
|
||||
with mock.patch('ironic.drivers.modules.fake.FakeDeploy.validate') \
|
||||
as deploy:
|
||||
with mock.patch(
|
||||
'ironic.drivers.modules.fake.FakeDeploy.validate'
|
||||
) as deploy:
|
||||
reason = 'fake reason'
|
||||
deploy.side_effect = exception.InvalidParameterValue(reason)
|
||||
ret = self.service.validate_driver_interfaces(self.context,
|
||||
@ -985,8 +986,8 @@ class ConsoleTestCase(_ServiceSetUpMixin, tests_db_base.DbTestCase):
|
||||
def test_set_console_mode_worker_pool_full(self):
|
||||
node = obj_utils.create_test_node(self.context, driver='fake')
|
||||
self._start_service()
|
||||
with mock.patch.object(self.service, '_spawn_worker') \
|
||||
as spawn_mock:
|
||||
with mock.patch.object(self.service,
|
||||
'_spawn_worker') as spawn_mock:
|
||||
spawn_mock.side_effect = exception.NoFreeConductorWorker()
|
||||
|
||||
exc = self.assertRaises(messaging.rpc.ExpectedException,
|
||||
@ -1045,8 +1046,8 @@ class ConsoleTestCase(_ServiceSetUpMixin, tests_db_base.DbTestCase):
|
||||
last_error=None,
|
||||
console_enabled=False)
|
||||
self._start_service()
|
||||
with mock.patch.object(self.driver.console, 'start_console') \
|
||||
as mock_sc:
|
||||
with mock.patch.object(self.driver.console,
|
||||
'start_console') as mock_sc:
|
||||
mock_sc.side_effect = exception.IronicException('test-error')
|
||||
self.service.set_console_mode(self.context, node.uuid, True)
|
||||
self.service._worker_pool.waitall()
|
||||
@ -1059,8 +1060,8 @@ class ConsoleTestCase(_ServiceSetUpMixin, tests_db_base.DbTestCase):
|
||||
last_error=None,
|
||||
console_enabled=True)
|
||||
self._start_service()
|
||||
with mock.patch.object(self.driver.console, 'stop_console') \
|
||||
as mock_sc:
|
||||
with mock.patch.object(self.driver.console,
|
||||
'stop_console') as mock_sc:
|
||||
mock_sc.side_effect = exception.IronicException('test-error')
|
||||
self.service.set_console_mode(self.context, node.uuid, False)
|
||||
self.service._worker_pool.waitall()
|
||||
@ -1072,8 +1073,8 @@ class ConsoleTestCase(_ServiceSetUpMixin, tests_db_base.DbTestCase):
|
||||
node = obj_utils.create_test_node(self.context, driver='fake',
|
||||
console_enabled=True)
|
||||
self._start_service()
|
||||
with mock.patch.object(self.driver.console, 'start_console') \
|
||||
as mock_sc:
|
||||
with mock.patch.object(self.driver.console,
|
||||
'start_console') as mock_sc:
|
||||
self.service.set_console_mode(self.context, node.uuid, True)
|
||||
self.service._worker_pool.waitall()
|
||||
self.assertFalse(mock_sc.called)
|
||||
@ -1082,8 +1083,8 @@ class ConsoleTestCase(_ServiceSetUpMixin, tests_db_base.DbTestCase):
|
||||
node = obj_utils.create_test_node(self.context, driver='fake',
|
||||
console_enabled=False)
|
||||
self._start_service()
|
||||
with mock.patch.object(self.driver.console, 'stop_console') \
|
||||
as mock_sc:
|
||||
with mock.patch.object(self.driver.console,
|
||||
'stop_console') as mock_sc:
|
||||
self.service.set_console_mode(self.context, node.uuid, False)
|
||||
self.service._worker_pool.waitall()
|
||||
self.assertFalse(mock_sc.called)
|
||||
@ -1334,8 +1335,8 @@ class UpdatePortTestCase(_ServiceSetUpMixin, tests_db_base.DbTestCase):
|
||||
def test_set_boot_device(self):
|
||||
node = obj_utils.create_test_node(self.context, driver='fake')
|
||||
with mock.patch.object(self.driver.management, 'validate') as mock_val:
|
||||
with mock.patch.object(self.driver.management, 'set_boot_device') \
|
||||
as mock_sbd:
|
||||
with mock.patch.object(self.driver.management,
|
||||
'set_boot_device') as mock_sbd:
|
||||
self.service.set_boot_device(self.context, node.uuid,
|
||||
boot_devices.PXE)
|
||||
mock_val.assert_called_once_with(mock.ANY)
|
||||
@ -2337,14 +2338,16 @@ class ManagerSyncLocalStateTestCase(_CommonMixIn, tests_db_base.DbTestCase):
|
||||
acquire_mock, get_authtoken_mock):
|
||||
get_ctx_mock.return_value = self.context
|
||||
mapped_mock.return_value = True
|
||||
acquire_mock.side_effect = \
|
||||
self._get_acquire_side_effect([self.task] * 3)
|
||||
self.task.spawn_after.side_effect = \
|
||||
[None, exception.NoFreeConductorWorker('error')]
|
||||
acquire_mock.side_effect = self._get_acquire_side_effect(
|
||||
[self.task] * 3)
|
||||
self.task.spawn_after.side_effect = [
|
||||
None,
|
||||
exception.NoFreeConductorWorker('error')
|
||||
]
|
||||
|
||||
# 3 nodes to be checked
|
||||
get_nodeinfo_mock.return_value = \
|
||||
self._get_nodeinfo_list_response([self.node] * 3)
|
||||
get_nodeinfo_mock.return_value = self._get_nodeinfo_list_response(
|
||||
[self.node] * 3)
|
||||
|
||||
self.service._sync_local_state(self.context)
|
||||
|
||||
@ -2379,8 +2382,8 @@ class ManagerSyncLocalStateTestCase(_CommonMixIn, tests_db_base.DbTestCase):
|
||||
self.task.spawn_after.side_effect = [None, None]
|
||||
|
||||
# 3 nodes to be checked
|
||||
get_nodeinfo_mock.return_value = \
|
||||
self._get_nodeinfo_list_response([self.node] * 3)
|
||||
get_nodeinfo_mock.return_value = self._get_nodeinfo_list_response(
|
||||
[self.node] * 3)
|
||||
|
||||
self.service._sync_local_state(self.context)
|
||||
|
||||
@ -2409,13 +2412,13 @@ class ManagerSyncLocalStateTestCase(_CommonMixIn, tests_db_base.DbTestCase):
|
||||
self.config(periodic_max_workers=1, group='conductor')
|
||||
get_ctx_mock.return_value = self.context
|
||||
mapped_mock.return_value = True
|
||||
acquire_mock.side_effect = \
|
||||
self._get_acquire_side_effect([self.task] * 3)
|
||||
acquire_mock.side_effect = self._get_acquire_side_effect(
|
||||
[self.task] * 3)
|
||||
self.task.spawn_after.side_effect = [None] * 3
|
||||
|
||||
# 3 nodes to be checked
|
||||
get_nodeinfo_mock.return_value = \
|
||||
self._get_nodeinfo_list_response([self.node] * 3)
|
||||
get_nodeinfo_mock.return_value = self._get_nodeinfo_list_response(
|
||||
[self.node] * 3)
|
||||
|
||||
self.service._sync_local_state(self.context)
|
||||
|
||||
|
@ -43,9 +43,9 @@ def mock_the_extension_manager(driver="fake", namespace="ironic.drivers"):
|
||||
# instantiaing a DriverFactory class to avoid
|
||||
# a real NameDispatchExtensionManager to be created
|
||||
# with the real namespace.
|
||||
driver_factory.DriverFactory._extension_manager = \
|
||||
dispatch.NameDispatchExtensionManager('ironic.no-such-namespace',
|
||||
lambda x: True)
|
||||
driver_factory.DriverFactory._extension_manager = (
|
||||
dispatch.NameDispatchExtensionManager('ironic.no-such-namespace',
|
||||
lambda x: True))
|
||||
mock_ext_mgr = driver_factory.DriverFactory()
|
||||
mock_ext = mock_ext_mgr._extension_manager._load_one_plugin(
|
||||
entry_point, True, [], {}, False)
|
||||
|
@ -229,8 +229,8 @@ class TestWalkVersions(base.TestCase, WalkVersionsMixin):
|
||||
@mock.patch.object(WalkVersionsMixin, '_migrate_down')
|
||||
def test_walk_versions_all_default(self, _migrate_up, _migrate_down,
|
||||
script_directory):
|
||||
script_directory.from_config().\
|
||||
walk_revisions.return_value = self.versions
|
||||
fc = script_directory.from_config()
|
||||
fc.walk_revisions.return_value = self.versions
|
||||
self.migration_api.version.return_value = None
|
||||
|
||||
self._walk_versions(self.engine, self.config)
|
||||
@ -250,8 +250,8 @@ class TestWalkVersions(base.TestCase, WalkVersionsMixin):
|
||||
@mock.patch.object(WalkVersionsMixin, '_migrate_down')
|
||||
def test_walk_versions_all_false(self, _migrate_up, _migrate_down,
|
||||
script_directory):
|
||||
script_directory.from_config().\
|
||||
walk_revisions.return_value = self.versions
|
||||
fc = script_directory.from_config()
|
||||
fc.walk_revisions.return_value = self.versions
|
||||
self.migration_api.version.return_value = None
|
||||
|
||||
self._walk_versions(self.engine, self.config, downgrade=False)
|
||||
|
@ -55,8 +55,10 @@ class SqlAlchemyCustomTypesTestCase(base.DbTestCase):
|
||||
'drivers': None,
|
||||
'id': cdr1_id})
|
||||
# Get conductor manually to test SA types in isolation from UOM.
|
||||
cdr1 = sa_api.model_query(models.Conductor).filter_by(id=cdr1_id)\
|
||||
.one()
|
||||
cdr1 = (sa_api
|
||||
.model_query(models.Conductor)
|
||||
.filter_by(id=cdr1_id)
|
||||
.one())
|
||||
self.assertEqual([], cdr1.drivers)
|
||||
|
||||
# Create conductor with drivers specified.
|
||||
@ -66,8 +68,10 @@ class SqlAlchemyCustomTypesTestCase(base.DbTestCase):
|
||||
'drivers': drivers,
|
||||
'id': cdr2_id})
|
||||
# Get conductor manually to test SA types in isolation from UOM.
|
||||
cdr2 = sa_api.model_query(models.Conductor).filter_by(id=cdr2_id)\
|
||||
.one()
|
||||
cdr2 = (sa_api
|
||||
.model_query(models.Conductor)
|
||||
.filter_by(id=cdr2_id)
|
||||
.one())
|
||||
self.assertEqual(drivers, cdr2.drivers)
|
||||
|
||||
def test_JSONEncodedList_type_check(self):
|
||||
|
@ -655,13 +655,13 @@ class PXEDriverTestCase(db_base.DbTestCase):
|
||||
|
||||
def test_lock_elevated(self):
|
||||
with task_manager.acquire(self.context, self.node.uuid) as task:
|
||||
with mock.patch.object(task.driver.vendor, '_continue_deploy') \
|
||||
as _continue_deploy_mock:
|
||||
with mock.patch.object(task.driver.vendor,
|
||||
'_continue_deploy') as _cont_deploy_mock:
|
||||
task.driver.vendor.vendor_passthru(task,
|
||||
method='pass_deploy_info', address='123456', iqn='aaa-bbb',
|
||||
key='fake-56789')
|
||||
# lock elevated w/o exception
|
||||
self.assertEqual(1, _continue_deploy_mock.call_count,
|
||||
self.assertEqual(1, _cont_deploy_mock.call_count,
|
||||
"_continue_deploy was not called once.")
|
||||
|
||||
|
||||
|
@ -522,8 +522,8 @@ class SSHPrivateMethodsTestCase(db_base.DbTestCase):
|
||||
def close(self):
|
||||
pass
|
||||
|
||||
with mock.patch.object(self.sshclient, 'exec_command') \
|
||||
as exec_command_mock:
|
||||
with mock.patch.object(self.sshclient,
|
||||
'exec_command') as exec_command_mock:
|
||||
exec_command_mock.return_value = (Stream(),
|
||||
Stream('hello'),
|
||||
Stream())
|
||||
@ -549,8 +549,8 @@ class SSHPrivateMethodsTestCase(db_base.DbTestCase):
|
||||
def close(self):
|
||||
pass
|
||||
|
||||
with mock.patch.object(self.sshclient, 'exec_command') \
|
||||
as exec_command_mock:
|
||||
with mock.patch.object(self.sshclient,
|
||||
'exec_command') as exec_command_mock:
|
||||
exec_command_mock.return_value = (Stream(),
|
||||
Stream('hello'),
|
||||
Stream())
|
||||
|
@ -80,8 +80,8 @@ class TestChassisObject(base.DbTestCase):
|
||||
dict(self.fake_chassis, uuid=new_uuid)]
|
||||
expected = [mock.call(uuid), mock.call(uuid)]
|
||||
with mock.patch.object(self.dbapi, 'get_chassis_by_uuid',
|
||||
side_effect=returns, autospec=True) \
|
||||
as mock_get_chassis:
|
||||
side_effect=returns,
|
||||
autospec=True) as mock_get_chassis:
|
||||
c = objects.Chassis.get_by_uuid(self.context, uuid)
|
||||
self.assertEqual(uuid, c.uuid)
|
||||
c.refresh()
|
||||
|
@ -87,8 +87,8 @@ class TestPortObject(base.DbTestCase):
|
||||
utils.get_test_port(address="c3:54:00:cf:2d:40")]
|
||||
expected = [mock.call(uuid), mock.call(uuid)]
|
||||
with mock.patch.object(self.dbapi, 'get_port_by_uuid',
|
||||
side_effect=returns, autospec=True) \
|
||||
as mock_get_port:
|
||||
side_effect=returns,
|
||||
autospec=True) as mock_get_port:
|
||||
p = objects.Port.get_by_uuid(self.context, uuid)
|
||||
self.assertEqual("52:54:00:cf:2d:31", p.address)
|
||||
p.refresh()
|
||||
|
2
tox.ini
2
tox.ini
@ -47,7 +47,7 @@ commands = {posargs}
|
||||
[flake8]
|
||||
# E711: ignored because it is normal to use "column == None" in sqlalchemy
|
||||
# TODO(yuriyz): Analyze or fix the warnings blacklisted below
|
||||
ignore = E12,E111,E113,E131,E265,E711,F812,H305,H307,H405,H702,H904
|
||||
ignore = E12,E111,E113,E131,E265,E711,F812,H305,H307,H405,H702
|
||||
exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools,*ironic/nova*
|
||||
|
||||
[hacking]
|
||||
|
Loading…
x
Reference in New Issue
Block a user