diff --git a/ironic/api/controllers/v1/node.py b/ironic/api/controllers/v1/node.py index 67fdf288c3..c12410b0eb 100644 --- a/ironic/api/controllers/v1/node.py +++ b/ironic/api/controllers/v1/node.py @@ -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) diff --git a/ironic/common/driver_factory.py b/ironic/common/driver_factory.py index ac1ae9319d..6ffa8fe23d 100644 --- a/ironic/common/driver_factory.py +++ b/ironic/common/driver_factory.py @@ -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()) diff --git a/ironic/common/glance_service/base_image_service.py b/ironic/common/glance_service/base_image_service.py index 4c30035b7f..a41d69cb3e 100644 --- a/ironic/common/glance_service/base_image_service.py +++ b/ironic/common/glance_service/base_image_service.py @@ -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) diff --git a/ironic/common/glance_service/service_utils.py b/ironic/common/glance_service/service_utils.py index 849d088993..6803b606a3 100644 --- a/ironic/common/glance_service/service_utils.py +++ b/ironic/common/glance_service/service_utils.py @@ -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) diff --git a/ironic/conductor/manager.py b/ironic/conductor/manager.py index 29bc55d161..c5e956250e 100644 --- a/ironic/conductor/manager.py +++ b/ironic/conductor/manager.py @@ -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) diff --git a/ironic/conductor/utils.py b/ironic/conductor/utils.py index 083f6bd7b3..1214c90bf2 100644 --- a/ironic/conductor/utils.py +++ b/ironic/conductor/utils.py @@ -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 diff --git a/ironic/db/sqlalchemy/api.py b/ironic/db/sqlalchemy/api.py index d01b2359df..bf80fb7a7c 100644 --- a/ironic/db/sqlalchemy/api.py +++ b/ironic/db/sqlalchemy/api.py @@ -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) diff --git a/ironic/drivers/modules/deploy_utils.py b/ironic/drivers/modules/deploy_utils.py index 8901fe1fca..af3c1ec9e9 100644 --- a/ironic/drivers/modules/deploy_utils.py +++ b/ironic/drivers/modules/deploy_utils.py @@ -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 diff --git a/ironic/drivers/modules/ipminative.py b/ironic/drivers/modules/ipminative.py index ca3fb5e852..2505802cb5 100644 --- a/ironic/drivers/modules/ipminative.py +++ b/ironic/drivers/modules/ipminative.py @@ -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'], diff --git a/ironic/drivers/modules/ipmitool.py b/ironic/drivers/modules/ipmitool.py index 5cc60a58d1..1b9eddfd36 100644 --- a/ironic/drivers/modules/ipmitool.py +++ b/ironic/drivers/modules/ipmitool.py @@ -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: diff --git a/ironic/tests/api/test_hooks.py b/ironic/tests/api/test_hooks.py index 5b0bebe077..6ca18eef35 100644 --- a/ironic/tests/api/test_hooks.py +++ b/ironic/tests/api/test_hooks.py @@ -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) diff --git a/ironic/tests/api/v1/test_nodes.py b/ironic/tests/api/v1/test_nodes.py index ca9882f7b5..b766f96d16 100644 --- a/ironic/tests/api/v1/test_nodes.py +++ b/ironic/tests/api/v1/test_nodes.py @@ -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, diff --git a/ironic/tests/conductor/test_conductor_utils.py b/ironic/tests/conductor/test_conductor_utils.py index 9a761b2ab0..6e5b09aa59 100644 --- a/ironic/tests/conductor/test_conductor_utils.py +++ b/ironic/tests/conductor/test_conductor_utils.py @@ -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() diff --git a/ironic/tests/conductor/test_manager.py b/ironic/tests/conductor/test_manager.py index 631245d054..ba9bbaf85f 100644 --- a/ironic/tests/conductor/test_manager.py +++ b/ironic/tests/conductor/test_manager.py @@ -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) diff --git a/ironic/tests/conductor/utils.py b/ironic/tests/conductor/utils.py index 66fcee8b68..1b873fc8e7 100644 --- a/ironic/tests/conductor/utils.py +++ b/ironic/tests/conductor/utils.py @@ -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) diff --git a/ironic/tests/db/sqlalchemy/test_migrations.py b/ironic/tests/db/sqlalchemy/test_migrations.py index 1326b7ef1e..a24cc23505 100644 --- a/ironic/tests/db/sqlalchemy/test_migrations.py +++ b/ironic/tests/db/sqlalchemy/test_migrations.py @@ -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) diff --git a/ironic/tests/db/sqlalchemy/test_types.py b/ironic/tests/db/sqlalchemy/test_types.py index d0ed87d1f5..1757da6ccc 100644 --- a/ironic/tests/db/sqlalchemy/test_types.py +++ b/ironic/tests/db/sqlalchemy/test_types.py @@ -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): diff --git a/ironic/tests/drivers/test_pxe.py b/ironic/tests/drivers/test_pxe.py index 75dc5d0304..c3eea4dd57 100644 --- a/ironic/tests/drivers/test_pxe.py +++ b/ironic/tests/drivers/test_pxe.py @@ -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.") diff --git a/ironic/tests/drivers/test_ssh.py b/ironic/tests/drivers/test_ssh.py index 21d38481b4..22285fcb5d 100644 --- a/ironic/tests/drivers/test_ssh.py +++ b/ironic/tests/drivers/test_ssh.py @@ -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()) diff --git a/ironic/tests/objects/test_chassis.py b/ironic/tests/objects/test_chassis.py index cc7a596a36..f75f141c3e 100644 --- a/ironic/tests/objects/test_chassis.py +++ b/ironic/tests/objects/test_chassis.py @@ -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() diff --git a/ironic/tests/objects/test_port.py b/ironic/tests/objects/test_port.py index c9baa8cc71..e48a72ff4e 100644 --- a/ironic/tests/objects/test_port.py +++ b/ironic/tests/objects/test_port.py @@ -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() diff --git a/tox.ini b/tox.ini index 0065bf41ae..ec6b8b8dfc 100644 --- a/tox.ini +++ b/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]