)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"f791091a0b29a060d84c515b07af9ab7ac7c0230","unresolved":false,"context_lines":[{"line_number":12,"context_line":"1. autospec\u003dTrue"},{"line_number":13,"context_line":"2. spec_set\u003d some specification"},{"line_number":14,"context_line":"3. spec\u003d some specification"},{"line_number":15,"context_line":"4. autospec\u003dFalse to indicate to future developers that an attempt had"},{"line_number":16,"context_line":"   been previously made."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"If unable to set \u0027autospec\u003dTrue\u0027 on @classmethod functions or possibly"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1aca2d91_8bcb3ca5","line":15,"updated":"2015-05-08 06:27:19.000000000","message":"I think we needn\u0027t have autospec\u003dFalse as per comments.  Please remove it if you are planning to get rid of autospec\u003dFalse everywhere.","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8aa671b812b635f83d6ec2243635d66c8c12167d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"1. autospec\u003dTrue"},{"line_number":13,"context_line":"2. spec_set\u003d some specification"},{"line_number":14,"context_line":"3. spec\u003d some specification"},{"line_number":15,"context_line":"4. autospec\u003dFalse to indicate to future developers that an attempt had"},{"line_number":16,"context_line":"   been previously made."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"If unable to set \u0027autospec\u003dTrue\u0027 on @classmethod functions or possibly"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1aca2d91_2e80a445","line":15,"in_reply_to":"1aca2d91_8bcb3ca5","updated":"2015-05-08 16:16:11.000000000","message":"I think I have at least one case where none of the first three cases work.  In test_seamicro.py","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"}],"ironic/tests/drivers/test_agent_base_vendor.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"92d9e2763fa896108f5488c5a03f8982a9b6f214","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                              version\u003d\u00272\u0027,"},{"line_number":130,"context_line":"                              inventory\u003d{\u0027interfaces\u0027: []})"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @mock.patch.object(objects.Port, \u0027get_by_address\u0027, autospec\u003dFalse)"},{"line_number":133,"context_line":"    def test_find_ports_by_macs(self, mock_get_port):"},{"line_number":134,"context_line":"        fake_port \u003d object_utils.get_test_port(self.context)"},{"line_number":135,"context_line":"        mock_get_port.return_value \u003d fake_port"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_7118811e","line":132,"updated":"2015-04-27 02:39:52.000000000","message":"I am not sure why mock doesn\u0027t allow autospec\u003dTrue for static methods, but I think following can be done:\n\n* instead of using objects.Port, use objects.port.Ports (it still doesn\u0027t work, but it seems better to me to avoid this indirection)\n* we can import types and put spec\u003dtypes.Function to say to mock that objects.port.Port.get_by_address is a method and make the spec according to that.  I just found this works.\n\nNot sure if there is a better way. Ditto for all other places with autospec\u003dFalse","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                              version\u003d\u00272\u0027,"},{"line_number":130,"context_line":"                              inventory\u003d{\u0027interfaces\u0027: []})"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @mock.patch.object(objects.Port, \u0027get_by_address\u0027, autospec\u003dFalse)"},{"line_number":133,"context_line":"    def test_find_ports_by_macs(self, mock_get_port):"},{"line_number":134,"context_line":"        fake_port \u003d object_utils.get_test_port(self.context)"},{"line_number":135,"context_line":"        mock_get_port.return_value \u003d fake_port"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_b1e979e8","line":132,"updated":"2015-04-27 02:52:37.000000000","message":"autospec\u003dFalse is redundant because it\u0027s default.\nIf you cannot set autospec\u003dTrue due to some reason, doesn\u0027t that mean the test code would be something  incorrect?","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8dd4d9f6970a13347d0961ee8c793a4404c0a0df","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                              version\u003d\u00272\u0027,"},{"line_number":130,"context_line":"                              inventory\u003d{\u0027interfaces\u0027: []})"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @mock.patch.object(objects.Port, \u0027get_by_address\u0027, autospec\u003dFalse)"},{"line_number":133,"context_line":"    def test_find_ports_by_macs(self, mock_get_port):"},{"line_number":134,"context_line":"        fake_port \u003d object_utils.get_test_port(self.context)"},{"line_number":135,"context_line":"        mock_get_port.return_value \u003d fake_port"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad32947_0dd1d7cd","line":132,"in_reply_to":"bab921fb_7118811e","updated":"2015-04-27 21:33:18.000000000","message":"Done","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self.assertEqual(fake_port.uuid, ports[0].uuid)"},{"line_number":144,"context_line":"        self.assertEqual(fake_port.node_id, ports[0].node_id)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @mock.patch.object(objects.Port, \u0027get_by_address\u0027, autospec\u003dFalse)"},{"line_number":147,"context_line":"    def test_find_ports_by_macs_bad_params(self, mock_get_port):"},{"line_number":148,"context_line":"        mock_get_port.side_effect \u003d exception.PortNotFound(port\u003d\"123\")"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_f1b13102","line":146,"updated":"2015-04-27 02:52:37.000000000","message":"ditto.","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            empty_ids \u003d self.passthru._find_ports_by_macs(task, macs)"},{"line_number":154,"context_line":"        self.assertEqual([], empty_ids)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    @mock.patch(\u0027ironic.objects.node.Node.get_by_id\u0027, autospec\u003dFalse)"},{"line_number":157,"context_line":"    @mock.patch(\u0027ironic.drivers.modules.agent_base_vendor.BaseAgentVendor\u0027"},{"line_number":158,"context_line":"                \u0027._get_node_id\u0027, autospec\u003dTrue)"},{"line_number":159,"context_line":"    @mock.patch(\u0027ironic.drivers.modules.agent_base_vendor.BaseAgentVendor\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_91cd5587","line":156,"updated":"2015-04-27 02:52:37.000000000","message":"ditto.","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                              task,"},{"line_number":183,"context_line":"                              macs)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    @mock.patch(\u0027ironic.objects.node.Node.get_by_uuid\u0027, autospec\u003dFalse)"},{"line_number":186,"context_line":"    @mock.patch(\u0027ironic.drivers.modules.agent_base_vendor.BaseAgentVendor\u0027"},{"line_number":187,"context_line":"                \u0027._get_node_id\u0027, autospec\u003dTrue)"},{"line_number":188,"context_line":"    @mock.patch(\u0027ironic.drivers.modules.agent_base_vendor.BaseAgentVendor\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_917b1528","line":185,"updated":"2015-04-27 02:52:37.000000000","message":"ditto.","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"92d9e2763fa896108f5488c5a03f8982a9b6f214","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                              self.passthru.configure_local_boot,"},{"line_number":456,"context_line":"                              task, root_uuid\u003d\u0027some-root-uuid\u0027)"},{"line_number":457,"context_line":"            install_bootloader_mock.assert_called_once_with("},{"line_number":458,"context_line":"                mock.ANY, task.node, root_uuid\u003d\u0027some-root-uuid\u0027,"},{"line_number":459,"context_line":"                efi_system_part_uuid\u003dNone)"},{"line_number":460,"context_line":"            try_set_boot_device_mock.assert_called_once_with("},{"line_number":461,"context_line":"                task, boot_devices.DISK)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_71ef61e9","line":458,"updated":"2015-04-27 02:39:52.000000000","message":"s/mock.ANY/task.driver.vendor","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8dd4d9f6970a13347d0961ee8c793a4404c0a0df","unresolved":false,"context_lines":[{"line_number":455,"context_line":"                              self.passthru.configure_local_boot,"},{"line_number":456,"context_line":"                              task, root_uuid\u003d\u0027some-root-uuid\u0027)"},{"line_number":457,"context_line":"            install_bootloader_mock.assert_called_once_with("},{"line_number":458,"context_line":"                mock.ANY, task.node, root_uuid\u003d\u0027some-root-uuid\u0027,"},{"line_number":459,"context_line":"                efi_system_part_uuid\u003dNone)"},{"line_number":460,"context_line":"            try_set_boot_device_mock.assert_called_once_with("},{"line_number":461,"context_line":"                task, boot_devices.DISK)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad32947_a2a3139e","line":458,"in_reply_to":"bab921fb_71ef61e9","updated":"2015-04-27 21:33:18.000000000","message":"Does not work:\n\n AssertionError: Expected call: install_bootloader(\u003cironic.drivers.modules.agent.AgentVendorInterface object at 0x5f5c1d0\u003e, \u003cironic.objects.node.Node object at 0x453c410\u003e, root_uuid\u003d\u0027some-root-uuid\u0027, efi_system_part_uuid\u003dNone)\n Actual call: install_bootloader(\u003cironic.drivers.modules.agent_client.AgentClient object at 0x5f54210\u003e, \u003cironic.objects.node.Node object at 0x453c410\u003e, root_uuid\u003d\u0027some-root-uuid\u0027, efi_system_part_uuid\u003dNone)","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"92d9e2763fa896108f5488c5a03f8982a9b6f214","unresolved":false,"context_lines":[{"line_number":566,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":567,"context_line":"            self.passthru.continue_cleaning(task)"},{"line_number":568,"context_line":"            steps_mock.assert_called_once_with(task)"},{"line_number":569,"context_line":"            notify_mock.assert_called_once_with(mock.ANY, task)"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"    @mock.patch(\u0027ironic.conductor.manager.cleaning_error_handler\u0027,"},{"line_number":572,"context_line":"                autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_91e67513","line":569,"updated":"2015-04-27 02:39:52.000000000","message":"s/mock.ANY/task.driver.vendor/","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8dd4d9f6970a13347d0961ee8c793a4404c0a0df","unresolved":false,"context_lines":[{"line_number":566,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":567,"context_line":"            self.passthru.continue_cleaning(task)"},{"line_number":568,"context_line":"            steps_mock.assert_called_once_with(task)"},{"line_number":569,"context_line":"            notify_mock.assert_called_once_with(mock.ANY, task)"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"    @mock.patch(\u0027ironic.conductor.manager.cleaning_error_handler\u0027,"},{"line_number":572,"context_line":"                autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad32947_c2ebafaf","line":569,"in_reply_to":"bab921fb_91e67513","updated":"2015-04-27 21:33:18.000000000","message":"That does not work.\n\n AssertionError: Expected call: _notify_conductor_resume_clean(\u003cironic.drivers.modules.agent.AgentVendorInterface object at 0x5ce5a10\u003e, \u003cironic.conductor.task_manager.TaskManager object at 0x5ce5e90\u003e)\n Actual call: _notify_conductor_resume_clean(\u003cironic.drivers.modules.agent_base_vendor.BaseAgentVendor object at 0x6572b50\u003e, \u003cironic.conductor.task_manager.TaskManager object at 0x5ce5e90\u003e)","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"}],"ironic/tests/drivers/test_deploy_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e9889ac5dc1008693cec504f101aaf04aea3555c","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"    def test_fetch_images(self, mock_clean_up_caches):"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"        mock_cache \u003d mock.MagicMock("},{"line_number":1342,"context_line":"            spec_set\u003d[\u0027fetch_image\u0027, \u0027master_dir\u0027], master_dir\u003d\u0027master_dir\u0027)"},{"line_number":1343,"context_line":"        utils.fetch_images(None, mock_cache, [(\u0027uuid\u0027, \u0027path\u0027)])"},{"line_number":1344,"context_line":"        mock_clean_up_caches.assert_called_once_with(None, \u0027master_dir\u0027,"},{"line_number":1345,"context_line":"                                                     [(\u0027uuid\u0027, \u0027path\u0027)])"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_83c68b47","line":1342,"updated":"2015-04-24 11:12:14.000000000","message":"can\u0027t we use specs\u003dImageCache? I remember using something like that","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8dd4d9f6970a13347d0961ee8c793a4404c0a0df","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"    def test_fetch_images(self, mock_clean_up_caches):"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"        mock_cache \u003d mock.MagicMock("},{"line_number":1342,"context_line":"            spec_set\u003d[\u0027fetch_image\u0027, \u0027master_dir\u0027], master_dir\u003d\u0027master_dir\u0027)"},{"line_number":1343,"context_line":"        utils.fetch_images(None, mock_cache, [(\u0027uuid\u0027, \u0027path\u0027)])"},{"line_number":1344,"context_line":"        mock_clean_up_caches.assert_called_once_with(None, \u0027master_dir\u0027,"},{"line_number":1345,"context_line":"                                                     [(\u0027uuid\u0027, \u0027path\u0027)])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad32947_243150a3","line":1342,"in_reply_to":"bab921fb_83c68b47","updated":"2015-04-27 21:33:18.000000000","message":"If use spec_set\u003dimage_cache.ImageCache, then it doesn\u0027t know about the master_dir attribute.  And the test fails.","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e9889ac5dc1008693cec504f101aaf04aea3555c","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"                                              actual\u003d1)"},{"line_number":1356,"context_line":""},{"line_number":1357,"context_line":"        mock_cache \u003d mock.MagicMock("},{"line_number":1358,"context_line":"            spec_set\u003d[\u0027master_dir\u0027], master_dir\u003d\u0027master_dir\u0027)"},{"line_number":1359,"context_line":"        mock_clean_up_caches.side_effect \u003d [exc]"},{"line_number":1360,"context_line":"        self.assertRaises(exception.InstanceDeployFailure,"},{"line_number":1361,"context_line":"                          utils.fetch_images,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_03e15bd0","line":1358,"updated":"2015-04-24 11:12:14.000000000","message":"ditto","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":1584,"context_line":"            }"},{"line_number":1585,"context_line":"        }"},{"line_number":1586,"context_line":""},{"line_number":1587,"context_line":"    @mock.patch(\u0027ironic.objects.Port.list_by_node_id\u0027, autospec\u003dFalse)"},{"line_number":1588,"context_line":"    @mock.patch.object(agent_client.AgentClient, \u0027get_clean_steps\u0027,"},{"line_number":1589,"context_line":"                       autospec\u003dTrue)"},{"line_number":1590,"context_line":"    def test_get_clean_steps(self, client_mock, list_ports_mock):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_b1a5f9a2","line":1587,"updated":"2015-04-27 02:52:37.000000000","message":"autospec\u003dFalse is redundant.","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":1608,"context_line":"            self.assertIn(self.clean_steps[\u0027clean_steps\u0027]["},{"line_number":1609,"context_line":"                \u0027SpecificHardwareManager\u0027][0], response)"},{"line_number":1610,"context_line":""},{"line_number":1611,"context_line":"    @mock.patch(\u0027ironic.objects.Port.list_by_node_id\u0027, autospec\u003dFalse)"},{"line_number":1612,"context_line":"    @mock.patch.object(agent_client.AgentClient, \u0027get_clean_steps\u0027,"},{"line_number":1613,"context_line":"                       autospec\u003dTrue)"},{"line_number":1614,"context_line":"    def test_get_clean_steps_missing_steps(self, client_mock,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_11bdc5b6","line":1611,"updated":"2015-04-27 02:52:37.000000000","message":"ditto.","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":1626,"context_line":"            client_mock.assert_called_once_with(mock.ANY, task.node,"},{"line_number":1627,"context_line":"                                                self.ports)"},{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"    @mock.patch(\u0027ironic.objects.Port.list_by_node_id\u0027, autospec\u003dFalse)"},{"line_number":1630,"context_line":"    @mock.patch.object(agent_client.AgentClient, \u0027execute_clean_step\u0027,"},{"line_number":1631,"context_line":"                       autospec\u003dTrue)"},{"line_number":1632,"context_line":"    def test_execute_clean_step(self, client_mock, list_ports_mock):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_f1adb184","line":1629,"updated":"2015-04-27 02:52:37.000000000","message":"ditto.","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"                self.clean_steps[\u0027clean_steps\u0027][\u0027GenericHardwareManager\u0027][0])"},{"line_number":1642,"context_line":"            self.assertEqual(states.CLEANING, response)"},{"line_number":1643,"context_line":""},{"line_number":1644,"context_line":"    @mock.patch(\u0027ironic.objects.Port.list_by_node_id\u0027, autospec\u003dFalse)"},{"line_number":1645,"context_line":"    @mock.patch.object(agent_client.AgentClient, \u0027execute_clean_step\u0027,"},{"line_number":1646,"context_line":"                       autospec\u003dTrue)"},{"line_number":1647,"context_line":"    def test_execute_clean_step_running(self, client_mock, list_ports_mock):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_b1ccd96a","line":1644,"updated":"2015-04-27 02:52:37.000000000","message":"ditto.","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":1656,"context_line":"                self.clean_steps[\u0027clean_steps\u0027][\u0027GenericHardwareManager\u0027][0])"},{"line_number":1657,"context_line":"            self.assertEqual(states.CLEANING, response)"},{"line_number":1658,"context_line":""},{"line_number":1659,"context_line":"    @mock.patch(\u0027ironic.objects.Port.list_by_node_id\u0027, autospec\u003dFalse)"},{"line_number":1660,"context_line":"    @mock.patch.object(agent_client.AgentClient, \u0027execute_clean_step\u0027,"},{"line_number":1661,"context_line":"                       autospec\u003dTrue)"},{"line_number":1662,"context_line":"    def test_execute_clean_step_version_mismatch(self, client_mock,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_51bfbda9","line":1659,"updated":"2015-04-27 02:52:37.000000000","message":"ditto","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"f791091a0b29a060d84c515b07af9ab7ac7c0230","unresolved":false,"context_lines":[{"line_number":226,"context_line":"class PhysicalWorkTestCase(tests_base.TestCase):"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _mock_calls(self, name_list):"},{"line_number":229,"context_line":"        patch_list \u003d [mock.patch.object(utils, name, autospec\u003dFalse)"},{"line_number":230,"context_line":"                      for name in name_list]"},{"line_number":231,"context_line":"        mock_list \u003d [patcher.start() for patcher in patch_list]"},{"line_number":232,"context_line":"        for patcher in patch_list:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_a835def7","line":229,"updated":"2015-05-08 06:27:19.000000000","message":"spec_set\u003dtypes.FunctionType because all of them are methods.  It works:\n\n  (venv)stack@ubuntu:~/ironic$ testr run PhysicalWorkTestCase\n  running\u003dOS_STDOUT_CAPTURE\u003d${OS_STDOUT_CAPTURE:-1} OS_STDERR_CAPTURE\u003d${OS_STDE\n  running\u003dOS_STDOUT_CAPTURE\u003d${OS_STDOUT_CAPTURE:-1} OS_STDERR_CAPTURE\u003d${OS_STDE\n  Ran 20 (+14) tests in 1.205s (+0.308s)\n  PASSED (id\u003d68)\n  (venv)stack@ubuntu:~/ironic$ git diff ironic/tests/drivers/test_deploy_utils.py\n  diff --git a/ironic/tests/drivers/test_deploy_utils.py b/ironic/tests/drivers/test_deploy_utils.py\n  index c412fff..fbf9a77 100644\n  --- a/ironic/tests/drivers/test_deploy_utils.py\n  +++ b/ironic/tests/drivers/test_deploy_utils.py\n  @@ -226,7 +226,8 @@ image\u003dchain.c32\n   class PhysicalWorkTestCase(tests_base.TestCase):\n  \n       def _mock_calls(self, name_list):\n  -        patch_list \u003d [mock.patch.object(utils, name, autospec\u003dFalse)\n  +        patch_list \u003d [mock.patch.object(utils, name,\n  +                                        spec_set\u003dtypes.FunctionType)\n                         for name in name_list]\n           mock_list \u003d [patcher.start() for patcher in patch_list]\n           for patcher in patch_list:\n  @@ -812,7 +813,8 @@ class PhysicalWorkTestCase(tests_base.TestCase):\n  \n           name_list \u003d [\u0027get_dev\u0027, \u0027get_image_mb\u0027, \u0027discovery\u0027, \u0027login_iscsi\u0027,\n                        \u0027logout_iscsi\u0027, \u0027delete_iscsi\u0027, \u0027work_on_disk\u0027]\n  -        patch_list \u003d [mock.patch.object(utils, name, autospec\u003dFalse)\n  +        patch_list \u003d [mock.patch.object(utils, name,\n  +                                        spec_set\u003dtypes.FunctionType)\n                         for name in name_list]\n           mock_list \u003d [patcher.start() for patcher in patch_list]\n           for patcher in patch_list:\n  (venv)stack@ubuntu:~/ironic$","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8aa671b812b635f83d6ec2243635d66c8c12167d","unresolved":false,"context_lines":[{"line_number":226,"context_line":"class PhysicalWorkTestCase(tests_base.TestCase):"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _mock_calls(self, name_list):"},{"line_number":229,"context_line":"        patch_list \u003d [mock.patch.object(utils, name, autospec\u003dFalse)"},{"line_number":230,"context_line":"                      for name in name_list]"},{"line_number":231,"context_line":"        mock_list \u003d [patcher.start() for patcher in patch_list]"},{"line_number":232,"context_line":"        for patcher in patch_list:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_f3cdf55d","line":229,"in_reply_to":"1aca2d91_a835def7","updated":"2015-05-08 16:16:11.000000000","message":"Done and thanks.  I got stuck on autospec\u003dTrue breaking it.","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"f791091a0b29a060d84c515b07af9ab7ac7c0230","unresolved":false,"context_lines":[{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        name_list \u003d [\u0027get_dev\u0027, \u0027get_image_mb\u0027, \u0027discovery\u0027, \u0027login_iscsi\u0027,"},{"line_number":814,"context_line":"                     \u0027logout_iscsi\u0027, \u0027delete_iscsi\u0027, \u0027work_on_disk\u0027]"},{"line_number":815,"context_line":"        patch_list \u003d [mock.patch.object(utils, name, autospec\u003dFalse)"},{"line_number":816,"context_line":"                      for name in name_list]"},{"line_number":817,"context_line":"        mock_list \u003d [patcher.start() for patcher in patch_list]"},{"line_number":818,"context_line":"        for patcher in patch_list:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_ab783890","line":815,"updated":"2015-05-08 06:27:19.000000000","message":"spec_set\u003dtypes.FunctionType","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8aa671b812b635f83d6ec2243635d66c8c12167d","unresolved":false,"context_lines":[{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        name_list \u003d [\u0027get_dev\u0027, \u0027get_image_mb\u0027, \u0027discovery\u0027, \u0027login_iscsi\u0027,"},{"line_number":814,"context_line":"                     \u0027logout_iscsi\u0027, \u0027delete_iscsi\u0027, \u0027work_on_disk\u0027]"},{"line_number":815,"context_line":"        patch_list \u003d [mock.patch.object(utils, name, autospec\u003dFalse)"},{"line_number":816,"context_line":"                      for name in name_list]"},{"line_number":817,"context_line":"        mock_list \u003d [patcher.start() for patcher in patch_list]"},{"line_number":818,"context_line":"        for patcher in patch_list:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_53e9497f","line":815,"in_reply_to":"1aca2d91_ab783890","updated":"2015-05-08 16:16:11.000000000","message":"Done","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"}],"ironic/tests/drivers/test_iboot.py":[{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                              task, states.NOSTATE)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    @mock.patch.object(iboot, \u0027_power_status\u0027, autospec\u003dTrue)"},{"line_number":289,"context_line":"    @mock.patch.object(iboot, \u0027_switch\u0027, autospec\u003dFalse)"},{"line_number":290,"context_line":"    def test_reboot_good(self, mock_switch, mock_power_status):"},{"line_number":291,"context_line":"        manager \u003d mock.MagicMock(spec_set\u003d[\u0027switch\u0027])"},{"line_number":292,"context_line":"        mock_power_status.return_value \u003d states.POWER_ON"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_b1d3b903","line":289,"updated":"2015-04-27 02:52:37.000000000","message":"autospec\u003dFalse is redundant.","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":301,"context_line":"        self.assertEqual(manager.mock_calls, expected)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    @mock.patch.object(iboot, \u0027_power_status\u0027, autospec\u003dTrue)"},{"line_number":304,"context_line":"    @mock.patch.object(iboot, \u0027_switch\u0027, autospec\u003dFalse)"},{"line_number":305,"context_line":"    def test_reboot_bad(self, mock_switch, mock_power_status):"},{"line_number":306,"context_line":"        manager \u003d mock.MagicMock(spec_set\u003d[\u0027switch\u0027])"},{"line_number":307,"context_line":"        mock_power_status.return_value \u003d states.POWER_OFF"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_71d9a121","line":304,"updated":"2015-04-27 02:52:37.000000000","message":"ditto.","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"}],"ironic/tests/drivers/test_image_cache.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"f791091a0b29a060d84c515b07af9ab7ac7c0230","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        mock_unlink.assert_called_once_with(self.dest_path)"},{"line_number":103,"context_line":"        self.assertFalse(mock_fetch.called)"},{"line_number":104,"context_line":"        mock_download.assert_called_once_with("},{"line_number":105,"context_line":"            mock.ANY, self.uuid, self.master_path, self.dest_path,"},{"line_number":106,"context_line":"            ctx\u003dNone, force_raw\u003dTrue)"},{"line_number":107,"context_line":"        self.assertTrue(mock_clean_up.called)"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_ab9f18b3","line":105,"updated":"2015-05-08 06:27:19.000000000","message":"self.cache","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8aa671b812b635f83d6ec2243635d66c8c12167d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        mock_unlink.assert_called_once_with(self.dest_path)"},{"line_number":103,"context_line":"        self.assertFalse(mock_fetch.called)"},{"line_number":104,"context_line":"        mock_download.assert_called_once_with("},{"line_number":105,"context_line":"            mock.ANY, self.uuid, self.master_path, self.dest_path,"},{"line_number":106,"context_line":"            ctx\u003dNone, force_raw\u003dTrue)"},{"line_number":107,"context_line":"        self.assertTrue(mock_clean_up.called)"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_b34addaa","line":105,"in_reply_to":"1aca2d91_ab9f18b3","updated":"2015-05-08 16:16:11.000000000","message":"Done","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"f791091a0b29a060d84c515b07af9ab7ac7c0230","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        self.cache.fetch_image(self.uuid, self.dest_path)"},{"line_number":129,"context_line":"        self.assertFalse(mock_fetch.called)"},{"line_number":130,"context_line":"        mock_download.assert_called_once_with("},{"line_number":131,"context_line":"            mock.ANY, self.uuid, self.master_path, self.dest_path,"},{"line_number":132,"context_line":"            ctx\u003dNone, force_raw\u003dTrue)"},{"line_number":133,"context_line":"        self.assertTrue(mock_clean_up.called)"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_4bb1a446","line":131,"updated":"2015-05-08 06:27:19.000000000","message":"self.cache","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8aa671b812b635f83d6ec2243635d66c8c12167d","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        self.cache.fetch_image(self.uuid, self.dest_path)"},{"line_number":129,"context_line":"        self.assertFalse(mock_fetch.called)"},{"line_number":130,"context_line":"        mock_download.assert_called_once_with("},{"line_number":131,"context_line":"            mock.ANY, self.uuid, self.master_path, self.dest_path,"},{"line_number":132,"context_line":"            ctx\u003dNone, force_raw\u003dTrue)"},{"line_number":133,"context_line":"        self.assertTrue(mock_clean_up.called)"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_53d269d3","line":131,"in_reply_to":"1aca2d91_4bb1a446","updated":"2015-05-08 16:16:11.000000000","message":"Done","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"f791091a0b29a060d84c515b07af9ab7ac7c0230","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        self.cache.fetch_image(href, self.dest_path)"},{"line_number":145,"context_line":"        self.assertFalse(mock_fetch.called)"},{"line_number":146,"context_line":"        mock_download.assert_called_once_with("},{"line_number":147,"context_line":"            mock.ANY, href, master_path, self.dest_path,"},{"line_number":148,"context_line":"            ctx\u003dNone, force_raw\u003dTrue)"},{"line_number":149,"context_line":"        self.assertTrue(mock_clean_up.called)"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_2bac28ec","line":147,"updated":"2015-05-08 06:27:19.000000000","message":"self.cache","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8aa671b812b635f83d6ec2243635d66c8c12167d","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        self.cache.fetch_image(href, self.dest_path)"},{"line_number":145,"context_line":"        self.assertFalse(mock_fetch.called)"},{"line_number":146,"context_line":"        mock_download.assert_called_once_with("},{"line_number":147,"context_line":"            mock.ANY, href, master_path, self.dest_path,"},{"line_number":148,"context_line":"            ctx\u003dNone, force_raw\u003dTrue)"},{"line_number":149,"context_line":"        self.assertTrue(mock_clean_up.called)"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_f3d735bd","line":147,"in_reply_to":"1aca2d91_2bac28ec","updated":"2015-05-08 16:16:11.000000000","message":"Done","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"f791091a0b29a060d84c515b07af9ab7ac7c0230","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        with mock.patch.object(time, \u0027time\u0027, lambda: new_current_time):"},{"line_number":190,"context_line":"            self.cache.clean_up()"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        mock_clean_size.assert_called_once_with(mock.ANY, mock.ANY, None)"},{"line_number":193,"context_line":"        survived \u003d mock_clean_size.call_args[0][1]"},{"line_number":194,"context_line":"        self.assertEqual(1, len(survived))"},{"line_number":195,"context_line":"        self.assertEqual(files[0], survived[0][0])"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_0bbbac28","line":192,"updated":"2015-05-08 06:27:19.000000000","message":"self.cache","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8aa671b812b635f83d6ec2243635d66c8c12167d","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        with mock.patch.object(time, \u0027time\u0027, lambda: new_current_time):"},{"line_number":190,"context_line":"            self.cache.clean_up()"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        mock_clean_size.assert_called_once_with(mock.ANY, mock.ANY, None)"},{"line_number":193,"context_line":"        survived \u003d mock_clean_size.call_args[0][1]"},{"line_number":194,"context_line":"        self.assertEqual(1, len(survived))"},{"line_number":195,"context_line":"        self.assertEqual(files[0], survived[0][0])"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_b3e1bd9c","line":192,"in_reply_to":"1aca2d91_0bbbac28","updated":"2015-05-08 16:16:11.000000000","message":"Done","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"}],"ironic/tests/drivers/test_ipmitool.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e9889ac5dc1008693cec504f101aaf04aea3555c","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":1201,"context_line":"            self.driver.vendor.send_raw(task, http_method\u003d\u0027POST\u0027,"},{"line_number":1202,"context_line":"                                        raw_bytes\u003d\u00270x00 0x01\u0027)"},{"line_number":1203,"context_line":"            # self.assertEqual(None, self.driver.vendor.send_raw)"},{"line_number":1204,"context_line":"            raw_bytes_mock.assert_called_once_with("},{"line_number":1205,"context_line":"                self.driver.vendor, task, http_method\u003d\u0027POST\u0027,"},{"line_number":1206,"context_line":"                raw_bytes\u003d\u00270x00 0x01\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_c301236c","line":1203,"updated":"2015-04-24 11:12:14.000000000","message":"should be deleted?","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8dd4d9f6970a13347d0961ee8c793a4404c0a0df","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":1201,"context_line":"            self.driver.vendor.send_raw(task, http_method\u003d\u0027POST\u0027,"},{"line_number":1202,"context_line":"                                        raw_bytes\u003d\u00270x00 0x01\u0027)"},{"line_number":1203,"context_line":"            # self.assertEqual(None, self.driver.vendor.send_raw)"},{"line_number":1204,"context_line":"            raw_bytes_mock.assert_called_once_with("},{"line_number":1205,"context_line":"                self.driver.vendor, task, http_method\u003d\u0027POST\u0027,"},{"line_number":1206,"context_line":"                raw_bytes\u003d\u00270x00 0x01\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad32947_84c4a440","line":1203,"in_reply_to":"bab921fb_c301236c","updated":"2015-04-27 21:33:18.000000000","message":"Done","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"}],"ironic/tests/drivers/test_iscsi_deploy.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"92d9e2763fa896108f5488c5a03f8982a9b6f214","unresolved":false,"context_lines":[{"line_number":749,"context_line":"                                        continue_deploy_mock):"},{"line_number":750,"context_line":"        build_options_mock.return_value \u003d {\u0027deployment_key\u0027: \u0027abcdef\u0027,"},{"line_number":751,"context_line":"                                           \u0027iscsi_target_iqn\u0027: \u0027iqn-qweqwe\u0027}"},{"line_number":752,"context_line":"        agent_client_mock \u003d mock.MagicMock(spec_set\u003d[\u0027start_iscsi_target\u0027])"},{"line_number":753,"context_line":"        agent_client_mock.start_iscsi_target.return_value \u003d {"},{"line_number":754,"context_line":"            \u0027command_status\u0027: \u0027SUCCESS\u0027, \u0027command_error\u0027: None}"},{"line_number":755,"context_line":"        driver_internal_info \u003d {\u0027agent_url\u0027: \u0027http://1.2.3.4:1234\u0027}"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_11a8258c","line":752,"updated":"2015-04-27 02:39:52.000000000","message":"s/[\u0027start_iscsi_target\u0027]/agent_client.AgentClient/","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8dd4d9f6970a13347d0961ee8c793a4404c0a0df","unresolved":false,"context_lines":[{"line_number":749,"context_line":"                                        continue_deploy_mock):"},{"line_number":750,"context_line":"        build_options_mock.return_value \u003d {\u0027deployment_key\u0027: \u0027abcdef\u0027,"},{"line_number":751,"context_line":"                                           \u0027iscsi_target_iqn\u0027: \u0027iqn-qweqwe\u0027}"},{"line_number":752,"context_line":"        agent_client_mock \u003d mock.MagicMock(spec_set\u003d[\u0027start_iscsi_target\u0027])"},{"line_number":753,"context_line":"        agent_client_mock.start_iscsi_target.return_value \u003d {"},{"line_number":754,"context_line":"            \u0027command_status\u0027: \u0027SUCCESS\u0027, \u0027command_error\u0027: None}"},{"line_number":755,"context_line":"        driver_internal_info \u003d {\u0027agent_url\u0027: \u0027http://1.2.3.4:1234\u0027}"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad32947_2d6373b3","line":752,"in_reply_to":"bab921fb_11a8258c","updated":"2015-04-27 21:33:18.000000000","message":"Done","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"92d9e2763fa896108f5488c5a03f8982a9b6f214","unresolved":false,"context_lines":[{"line_number":779,"context_line":"                                                       build_options_mock):"},{"line_number":780,"context_line":"        build_options_mock.return_value \u003d {\u0027deployment_key\u0027: \u0027abcdef\u0027,"},{"line_number":781,"context_line":"                                           \u0027iscsi_target_iqn\u0027: \u0027iqn-qweqwe\u0027}"},{"line_number":782,"context_line":"        agent_client_mock \u003d mock.MagicMock(spec_set\u003d[\u0027start_iscsi_target\u0027])"},{"line_number":783,"context_line":"        agent_client_mock.start_iscsi_target.return_value \u003d {"},{"line_number":784,"context_line":"            \u0027command_status\u0027: \u0027FAILED\u0027, \u0027command_error\u0027: \u0027booom\u0027}"},{"line_number":785,"context_line":"        self.node.provision_state \u003d states.DEPLOYING"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_d1ad0d9c","line":782,"updated":"2015-04-27 02:39:52.000000000","message":"s/[\u0027start_iscsi_target\u0027]/agent_client.AgentClient/","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8dd4d9f6970a13347d0961ee8c793a4404c0a0df","unresolved":false,"context_lines":[{"line_number":779,"context_line":"                                                       build_options_mock):"},{"line_number":780,"context_line":"        build_options_mock.return_value \u003d {\u0027deployment_key\u0027: \u0027abcdef\u0027,"},{"line_number":781,"context_line":"                                           \u0027iscsi_target_iqn\u0027: \u0027iqn-qweqwe\u0027}"},{"line_number":782,"context_line":"        agent_client_mock \u003d mock.MagicMock(spec_set\u003d[\u0027start_iscsi_target\u0027])"},{"line_number":783,"context_line":"        agent_client_mock.start_iscsi_target.return_value \u003d {"},{"line_number":784,"context_line":"            \u0027command_status\u0027: \u0027FAILED\u0027, \u0027command_error\u0027: \u0027booom\u0027}"},{"line_number":785,"context_line":"        self.node.provision_state \u003d states.DEPLOYING"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad32947_cd72bf7c","line":782,"in_reply_to":"bab921fb_d1ad0d9c","updated":"2015-04-27 21:33:18.000000000","message":"Done","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"}],"ironic/tests/drivers/test_pxe.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"92d9e2763fa896108f5488c5a03f8982a9b6f214","unresolved":false,"context_lines":[{"line_number":1320,"context_line":"        do_agent_iscsi_deploy_mock.assert_called_once_with("},{"line_number":1321,"context_line":"            self.task, self.driver.vendor._client)"},{"line_number":1322,"context_line":"        configure_local_boot_mock.assert_called_once_with("},{"line_number":1323,"context_line":"            mock.ANY, self.task, root_uuid\u003d\u0027some-root-uuid\u0027,"},{"line_number":1324,"context_line":"            efi_system_part_uuid\u003dNone)"},{"line_number":1325,"context_line":"        clean_up_pxe_config_mock.assert_called_once_with(self.task)"},{"line_number":1326,"context_line":"        reboot_and_finish_deploy_mock.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_719d2165","line":1323,"updated":"2015-04-27 02:39:52.000000000","message":"s/mock.ANY/task.driver.vendor/","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8dd4d9f6970a13347d0961ee8c793a4404c0a0df","unresolved":false,"context_lines":[{"line_number":1320,"context_line":"        do_agent_iscsi_deploy_mock.assert_called_once_with("},{"line_number":1321,"context_line":"            self.task, self.driver.vendor._client)"},{"line_number":1322,"context_line":"        configure_local_boot_mock.assert_called_once_with("},{"line_number":1323,"context_line":"            mock.ANY, self.task, root_uuid\u003d\u0027some-root-uuid\u0027,"},{"line_number":1324,"context_line":"            efi_system_part_uuid\u003dNone)"},{"line_number":1325,"context_line":"        clean_up_pxe_config_mock.assert_called_once_with(self.task)"},{"line_number":1326,"context_line":"        reboot_and_finish_deploy_mock.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad32947_cdce3f83","line":1323,"in_reply_to":"bab921fb_719d2165","updated":"2015-04-27 21:33:18.000000000","message":"Done","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"92d9e2763fa896108f5488c5a03f8982a9b6f214","unresolved":false,"context_lines":[{"line_number":1324,"context_line":"            efi_system_part_uuid\u003dNone)"},{"line_number":1325,"context_line":"        clean_up_pxe_config_mock.assert_called_once_with(self.task)"},{"line_number":1326,"context_line":"        reboot_and_finish_deploy_mock.assert_called_once_with("},{"line_number":1327,"context_line":"            mock.ANY, self.task)"},{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"    @mock.patch.object(agent_base_vendor.BaseAgentVendor,"},{"line_number":1330,"context_line":"                       \u0027reboot_and_finish_deploy\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_519a1d6f","line":1327,"updated":"2015-04-27 02:39:52.000000000","message":"s/mock.ANY/task.driver.vendor/","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8dd4d9f6970a13347d0961ee8c793a4404c0a0df","unresolved":false,"context_lines":[{"line_number":1324,"context_line":"            efi_system_part_uuid\u003dNone)"},{"line_number":1325,"context_line":"        clean_up_pxe_config_mock.assert_called_once_with(self.task)"},{"line_number":1326,"context_line":"        reboot_and_finish_deploy_mock.assert_called_once_with("},{"line_number":1327,"context_line":"            mock.ANY, self.task)"},{"line_number":1328,"context_line":""},{"line_number":1329,"context_line":"    @mock.patch.object(agent_base_vendor.BaseAgentVendor,"},{"line_number":1330,"context_line":"                       \u0027reboot_and_finish_deploy\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad32947_adcb0372","line":1327,"in_reply_to":"bab921fb_519a1d6f","updated":"2015-04-27 21:33:18.000000000","message":"Done","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"92d9e2763fa896108f5488c5a03f8982a9b6f214","unresolved":false,"context_lines":[{"line_number":1351,"context_line":"        do_agent_iscsi_deploy_mock.assert_called_once_with("},{"line_number":1352,"context_line":"            self.task, self.driver.vendor._client)"},{"line_number":1353,"context_line":"        configure_local_boot_mock.assert_called_once_with("},{"line_number":1354,"context_line":"            mock.ANY, self.task, root_uuid\u003d\u0027some-root-uuid\u0027,"},{"line_number":1355,"context_line":"            efi_system_part_uuid\u003d\u0027efi-part-uuid\u0027)"},{"line_number":1356,"context_line":"        clean_up_pxe_config_mock.assert_called_once_with(self.task)"},{"line_number":1357,"context_line":"        reboot_and_finish_deploy_mock.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_318a091c","line":1354,"updated":"2015-04-27 02:39:52.000000000","message":"s/mock.ANY/task.driver.vendor/","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8dd4d9f6970a13347d0961ee8c793a4404c0a0df","unresolved":false,"context_lines":[{"line_number":1351,"context_line":"        do_agent_iscsi_deploy_mock.assert_called_once_with("},{"line_number":1352,"context_line":"            self.task, self.driver.vendor._client)"},{"line_number":1353,"context_line":"        configure_local_boot_mock.assert_called_once_with("},{"line_number":1354,"context_line":"            mock.ANY, self.task, root_uuid\u003d\u0027some-root-uuid\u0027,"},{"line_number":1355,"context_line":"            efi_system_part_uuid\u003d\u0027efi-part-uuid\u0027)"},{"line_number":1356,"context_line":"        clean_up_pxe_config_mock.assert_called_once_with(self.task)"},{"line_number":1357,"context_line":"        reboot_and_finish_deploy_mock.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad32947_8dc84776","line":1354,"in_reply_to":"bab921fb_318a091c","updated":"2015-04-27 21:33:18.000000000","message":"Done","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"92d9e2763fa896108f5488c5a03f8982a9b6f214","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"            efi_system_part_uuid\u003d\u0027efi-part-uuid\u0027)"},{"line_number":1356,"context_line":"        clean_up_pxe_config_mock.assert_called_once_with(self.task)"},{"line_number":1357,"context_line":"        reboot_and_finish_deploy_mock.assert_called_once_with("},{"line_number":1358,"context_line":"            mock.ANY, self.task)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_118f052b","line":1358,"updated":"2015-04-27 02:39:52.000000000","message":"s/mock.ANY/task.driver.vendor/","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8dd4d9f6970a13347d0961ee8c793a4404c0a0df","unresolved":false,"context_lines":[{"line_number":1355,"context_line":"            efi_system_part_uuid\u003d\u0027efi-part-uuid\u0027)"},{"line_number":1356,"context_line":"        clean_up_pxe_config_mock.assert_called_once_with(self.task)"},{"line_number":1357,"context_line":"        reboot_and_finish_deploy_mock.assert_called_once_with("},{"line_number":1358,"context_line":"            mock.ANY, self.task)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7ad32947_4da10fa9","line":1358,"in_reply_to":"bab921fb_118f052b","updated":"2015-04-27 21:33:18.000000000","message":"Done","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"}],"ironic/tests/drivers/test_seamicro.py":[{"author":{"_account_id":13719,"name":"Naohiro Tamura","email":"naohirot.openstack@gmail.com","username":"nao"},"change_message_id":"1af7b445ca90a8b5ba28c5ee0a92a92a9584e5a5","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                          self.info, 2)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    @mock.patch.object(seamicro, \"_get_pools\", autospec\u003dTrue)"},{"line_number":261,"context_line":"    @mock.patch.object(seamicro, \"_get_client\", autospec\u003dFalse)"},{"line_number":262,"context_line":"    def test__create_volume_good(self, mock_get_client, mock_get_pools):"},{"line_number":263,"context_line":"        pools \u003d [self.Pool(1), self.Pool(6), self.Pool(5)]"},{"line_number":264,"context_line":"        with mock.patch.object(mock_get_client, \"volume.create\","}],"source_content_type":"text/x-python","patch_set":1,"id":"bab921fb_71f08191","line":261,"updated":"2015-04-27 02:52:37.000000000","message":"autospec\u003dFalse is redundant.","commit_id":"085522a6abb48c4f92f54fc5655b3691cf5cc139"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"e8dc558a8771e31887fdfa7e6ba276f2e535da21","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                          self.info, 2)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    @mock.patch.object(seamicro, \"_get_pools\", autospec\u003dTrue)"},{"line_number":261,"context_line":"    # @mock.patch.object(seamicro, \"_get_client\", spec_set\u003dtypes.FunctionType)"},{"line_number":262,"context_line":"    @mock.patch.object(seamicro, \"_get_client\", set\u003dtypes.FunctionType)"},{"line_number":263,"context_line":"    def test__create_volume_good(self, mock_get_client, mock_get_pools):"},{"line_number":264,"context_line":"        pools \u003d [self.Pool(1), self.Pool(6), self.Pool(5)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_3ad04753","line":261,"updated":"2015-04-29 21:57:29.000000000","message":"nit: worth removing this line.","commit_id":"72f55a6c290b5a5e79e254000a178fce751eed9c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6e4a7dc40ed47e14d4f4f001b66d2866c5fd93a8","unresolved":false,"context_lines":[{"line_number":258,"context_line":"                          self.info, 2)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    @mock.patch.object(seamicro, \"_get_pools\", autospec\u003dTrue)"},{"line_number":261,"context_line":"    # @mock.patch.object(seamicro, \"_get_client\", spec_set\u003dtypes.FunctionType)"},{"line_number":262,"context_line":"    @mock.patch.object(seamicro, \"_get_client\", set\u003dtypes.FunctionType)"},{"line_number":263,"context_line":"    def test__create_volume_good(self, mock_get_client, mock_get_pools):"},{"line_number":264,"context_line":"        pools \u003d [self.Pool(1), self.Pool(6), self.Pool(5)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3acd31a7_35c73814","line":261,"in_reply_to":"3acd31a7_3ad04753","updated":"2015-04-29 22:33:53.000000000","message":"Thank you!  Done.","commit_id":"72f55a6c290b5a5e79e254000a178fce751eed9c"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"f791091a0b29a060d84c515b07af9ab7ac7c0230","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                          self.info, 2)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @mock.patch.object(seamicro, \"_get_pools\", autospec\u003dTrue)"},{"line_number":260,"context_line":"    @mock.patch.object(seamicro, \"_get_client\", autospec\u003dFalse)"},{"line_number":261,"context_line":"    def test__create_volume_good(self, mock_get_client, mock_get_pools):"},{"line_number":262,"context_line":"        pools \u003d [self.Pool(1), self.Pool(6), self.Pool(5)]"},{"line_number":263,"context_line":"        with mock.patch.object(mock_get_client, \"volume.create\","}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_cbea540f","line":260,"updated":"2015-05-08 06:27:19.000000000","message":"Why autospec\u003dFalse here ? If for some reason it doesn\u0027t work, can we at least have types.FunctionType","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8aa671b812b635f83d6ec2243635d66c8c12167d","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                          self.info, 2)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @mock.patch.object(seamicro, \"_get_pools\", autospec\u003dTrue)"},{"line_number":260,"context_line":"    @mock.patch.object(seamicro, \"_get_client\", autospec\u003dFalse)"},{"line_number":261,"context_line":"    def test__create_volume_good(self, mock_get_client, mock_get_pools):"},{"line_number":262,"context_line":"        pools \u003d [self.Pool(1), self.Pool(6), self.Pool(5)]"},{"line_number":263,"context_line":"        with mock.patch.object(mock_get_client, \"volume.create\","}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_4e0ac022","line":260,"in_reply_to":"1aca2d91_cbea540f","updated":"2015-05-08 16:16:11.000000000","message":"I tried both spec_set\u003dtypes.FunctionType and spec\u003dtypes.FunctionType\n\n Traceback (most recent call last):\n   File \"/home/john/openstack/ironic/.tox/py27/lib/python2.7/site-packages/mock.py\", line 1201, in patched\n     return func(*args, **keywargs)\n   File \"ironic/tests/drivers/test_seamicro.py\", line 265, in test__create_volume_good\n     spec_set\u003d[]):\n   File \"/home/john/openstack/ironic/.tox/py27/lib/python2.7/site-packages/mock.py\", line 1268, in __enter__\n     original, local \u003d self.get_original()\n   File \"/home/john/openstack/ironic/.tox/py27/lib/python2.7/site-packages/mock.py\", line 1242, in get_original\n     \"%s does not have the attribute %r\" % (target, name)\n AttributeError: \u003cMagicMock name\u003d\u0027_get_client\u0027 spec\u003d\u0027function\u0027 id\u003d\u002783136912\u0027\u003e does not have the attribute \u0027volume.create\u0027\n Ran 2208 tests in 12.020s (-1.508s)\n FAILED (id\u003d893, failures\u003d1, skips\u003d15)\n error: testr failed (1)\n ERROR: InvocationError: \"/usr/bin/bash -c TESTS_DIR\u003d./ironic/tests/ python setup.py testr --slowest --testr-args\u003d\u0027\u0027\"\n py27 finish: runtests after 21.78 seconds\n _____________________________________________________________________________________________________ summary _____________________________________________________________________________________________________\n ERROR:   py27: commands failed\n \n real\t0m25.785s\n user\t2m48.645s\n sys\t0m8.623s\n [john@linuxjohn4 drivers]$ git diff test_seamicro.py\n diff --git a/ironic/tests/drivers/test_seamicro.py b/ironic/tests/drivers/test_seamicro.py\n index 02eb8d4..acf14ef 100644\n --- a/ironic/tests/drivers/test_seamicro.py\n +++ b/ironic/tests/drivers/test_seamicro.py\n @@ -12,6 +12,7 @@\n  \n  \"\"\"Test class for Ironic SeaMicro driver.\"\"\"\n  \n +import types\n  import uuid\n  \n  import mock\n @@ -257,7 +258,7 @@ class SeaMicroPrivateMethodsTestCase(db_base.DbTestCase):\n                            self.info, 2)\n  \n      @mock.patch.object(seamicro, \"_get_pools\", autospec\u003dTrue)\n -    @mock.patch.object(seamicro, \"_get_client\", autospec\u003dFalse)\n +    @mock.patch.object(seamicro, \"_get_client\", spec\u003dtypes.FunctionType)\n      def test__create_volume_good(self, mock_get_client, mock_get_pools):\n          pools \u003d [self.Pool(1), self.Pool(6), self.Pool(5)]\n          with mock.patch.object(mock_get_client, \"volume.create\",","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2fde7349688a67339040f15e3a6d6833bee18bed","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                          self.info, 2)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @mock.patch.object(seamicro, \"_get_pools\", autospec\u003dTrue)"},{"line_number":260,"context_line":"    @mock.patch.object(seamicro, \"_get_client\", autospec\u003dFalse)"},{"line_number":261,"context_line":"    def test__create_volume_good(self, mock_get_client, mock_get_pools):"},{"line_number":262,"context_line":"        pools \u003d [self.Pool(1), self.Pool(6), self.Pool(5)]"},{"line_number":263,"context_line":"        with mock.patch.object(mock_get_client, \"volume.create\","}],"source_content_type":"text/x-python","patch_set":7,"id":"9af37de9_42f9f74c","line":260,"updated":"2015-05-11 06:56:22.000000000","message":"Just noticed what\u0027s going on.  I think the second mocking in line 263 can be done in a different way.  We need to inform mock that client.volume and client.volume.create and two different things.  This seems to work.\n\n  $ git diff ironic/tests/drivers/test_seamicro.py\n  diff --git a/ironic/tests/drivers/test_seamicro.py b/ironic/tests/drivers/test_seamicro.py\n  index 02eb8d4..e39737e 100644\n  --- a/ironic/tests/drivers/test_seamicro.py\n  +++ b/ironic/tests/drivers/test_seamicro.py\n  @@ -257,13 +257,14 @@ class SeaMicroPrivateMethodsTestCase(db_base.DbTestCase):\n                             self.info, 2)\n  \n       @mock.patch.object(seamicro, \"_get_pools\", autospec\u003dTrue)\n  -    @mock.patch.object(seamicro, \"_get_client\", autospec\u003dFalse)\n  +    @mock.patch.object(seamicro, \"_get_client\", autospec\u003dTrue)\n       def test__create_volume_good(self, mock_get_client, mock_get_pools):\n           pools \u003d [self.Pool(1), self.Pool(6), self.Pool(5)]\n  -        with mock.patch.object(mock_get_client, \"volume.create\",\n  -                               spec_set\u003d[]):\n  -            mock_get_pools.return_value \u003d pools\n  -            seamicro._create_volume(self.info, 2)\n  +        mock_seamicro_volumes \u003d mock.MagicMock(spec_set\u003d[\u0027create\u0027])\n  +        mock_get_client.return_value \u003d mock.MagicMock(\n  +            volumes\u003dmock_seamicro_volumes, spec_set\u003d[\u0027volumes\u0027])\n  +        mock_get_pools.return_value \u003d pools\n  +        seamicro._create_volume(self.info, 2)\n  \n  \n   class SeaMicroPowerDriverTestCase(db_base.DbTestCase):","commit_id":"fc125a5aa50028a89753b805ecbf642d167dbd5e"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"fe0e62f9a8f3a7d011f0b4c16eb4bd269d72d3c6","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                          self.info, 2)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @mock.patch.object(seamicro, \"_get_pools\", autospec\u003dTrue)"},{"line_number":260,"context_line":"    @mock.patch.object(seamicro, \"_get_client\", autospec\u003dFalse)"},{"line_number":261,"context_line":"    def test__create_volume_good(self, mock_get_client, mock_get_pools):"},{"line_number":262,"context_line":"        pools \u003d [self.Pool(1), self.Pool(6), self.Pool(5)]"},{"line_number":263,"context_line":"        with mock.patch.object(mock_get_client, \"volume.create\","}],"source_content_type":"text/x-python","patch_set":7,"id":"9af37de9_eb10b550","line":260,"in_reply_to":"9af37de9_42f9f74c","updated":"2015-05-11 15:35:19.000000000","message":"Thanks.  Great idea :)","commit_id":"fc125a5aa50028a89753b805ecbf642d167dbd5e"}],"ironic/tests/drivers/test_utils.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"f791091a0b29a060d84c515b07af9ab7ac7c0230","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"},{"line_number":48,"context_line":"            self.driver.vendor.validate(task, method\u003d\u0027first_method\u0027)"},{"line_number":49,"context_line":"            mock_fakea_validate.assert_called_once_with("},{"line_number":50,"context_line":"                mock.ANY, task, method\u003d\u0027first_method\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_vendor_interface_validate_bad_method(self):"},{"line_number":53,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_0be96c14","line":50,"updated":"2015-05-08 06:27:19.000000000","message":"self.driver.vendor","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"8aa671b812b635f83d6ec2243635d66c8c12167d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"},{"line_number":48,"context_line":"            self.driver.vendor.validate(task, method\u003d\u0027first_method\u0027)"},{"line_number":49,"context_line":"            mock_fakea_validate.assert_called_once_with("},{"line_number":50,"context_line":"                mock.ANY, task, method\u003d\u0027first_method\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_vendor_interface_validate_bad_method(self):"},{"line_number":53,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_8e27b8b5","line":50,"in_reply_to":"1aca2d91_0be96c14","updated":"2015-05-08 16:16:11.000000000","message":"Traceback (most recent call last):\n   File \"/home/john/openstack/ironic/.tox/py27/lib/python2.7/site-packages/mock.py\", line 1201, in patched\n     return func(*args, **keywargs)\n   File \"ironic/tests/drivers/test_utils.py\", line 50, in test_vendor_interface_validate_valid_methods\n     self.driver.vendor, task, method\u003d\u0027first_method\u0027)\n   File \"/home/john/openstack/ironic/.tox/py27/lib/python2.7/site-packages/mock.py\", line 303, in assert_called_once_with\n     return mock.assert_called_once_with(*args, **kwargs)\n   File \"/home/john/openstack/ironic/.tox/py27/lib/python2.7/site-packages/mock.py\", line 846, in assert_called_once_with\n     return self.assert_called_with(*args, **kwargs)\n   File \"/home/john/openstack/ironic/.tox/py27/lib/python2.7/site-packages/mock.py\", line 835, in assert_called_with\n     raise AssertionError(msg)\n AssertionError: Expected call: validate(\u003cironic.drivers.utils.MixinVendorInterface object at 0x4464350\u003e, \u003cironic.conductor.task_manager.TaskManager object at 0x4470750\u003e, method\u003d\u0027first_method\u0027)\n Actual call: validate(\u003cironic.drivers.modules.fake.FakeVendorA object at 0x44648d0\u003e, \u003cironic.conductor.task_manager.TaskManager object at 0x4470750\u003e, method\u003d\u0027first_method\u0027)\n Ran 2208 tests in 9.543s (+0.147s)\n FAILED (id\u003d895, failures\u003d1, skips\u003d15)\n error: testr failed (1)\n ERROR: InvocationError: \"/usr/bin/bash -c TESTS_DIR\u003d./ironic/tests/ python setup.py testr --slowest --testr-args\u003d\u0027\u0027\"\n py27 finish: runtests after 17.20 seconds\n _____________________________________________________________________________________________________ summary _____________________________________________________________________________________________________\n ERROR:   py27: commands failed\n \n real\t0m20.950s\n user\t2m10.281s\n sys\t0m6.964s\n [john@linuxjohn4 drivers]$ git diff test_utils.py\n diff --git a/ironic/tests/drivers/test_utils.py b/ironic/tests/drivers/test_utils.py\n index e3ad6b9..26a39c9 100644\n --- a/ironic/tests/drivers/test_utils.py\n +++ b/ironic/tests/drivers/test_utils.py\n @@ -47,7 +47,7 @@ class UtilsTestCase(db_base.DbTestCase):\n          with task_manager.acquire(self.context, self.node.uuid) as task:\n              self.driver.vendor.validate(task, method\u003d\u0027first_method\u0027)\n              mock_fakea_validate.assert_called_once_with(\n -                mock.ANY, task, method\u003d\u0027first_method\u0027)\n +                self.driver.vendor, task, method\u003d\u0027first_method\u0027)\n  \n      def test_vendor_interface_validate_bad_method(self):\n          with task_manager.acquire(self.context, self.node.uuid) as task:","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2fde7349688a67339040f15e3a6d6833bee18bed","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"},{"line_number":48,"context_line":"            self.driver.vendor.validate(task, method\u003d\u0027first_method\u0027)"},{"line_number":49,"context_line":"            mock_fakea_validate.assert_called_once_with("},{"line_number":50,"context_line":"                mock.ANY, task, method\u003d\u0027first_method\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_vendor_interface_validate_bad_method(self):"},{"line_number":53,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9af37de9_82091f34","line":50,"updated":"2015-05-11 06:56:22.000000000","message":"This works.  But it\u0027s going into internals of Mixin.\n\n  $ git diff ironic/tests/drivers/test_utils.py\n  diff --git a/ironic/tests/drivers/test_utils.py b/ironic/tests/drivers/test_utils.py\n  index e3ad6b9..4e98070 100644\n  --- a/ironic/tests/drivers/test_utils.py\n  +++ b/ironic/tests/drivers/test_utils.py\n  @@ -47,7 +47,8 @@ class UtilsTestCase(db_base.DbTestCase):\n           with task_manager.acquire(self.context, self.node.uuid) as task:\n               self.driver.vendor.validate(task, method\u003d\u0027first_method\u0027)\n               mock_fakea_validate.assert_called_once_with(\n  -                mock.ANY, task, method\u003d\u0027first_method\u0027)\n  +                self.driver.vendor.mapping[\u0027first_method\u0027],\n  +                task, method\u003d\u0027first_method\u0027)\n  \n       def test_vendor_interface_validate_bad_method(self):\n           with task_manager.acquire(self.context, self.node.uuid) as task:\n  (venv)stack@ubuntu:~/ironic$","commit_id":"fc125a5aa50028a89753b805ecbf642d167dbd5e"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"fe0e62f9a8f3a7d011f0b4c16eb4bd269d72d3c6","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"},{"line_number":48,"context_line":"            self.driver.vendor.validate(task, method\u003d\u0027first_method\u0027)"},{"line_number":49,"context_line":"            mock_fakea_validate.assert_called_once_with("},{"line_number":50,"context_line":"                mock.ANY, task, method\u003d\u0027first_method\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def test_vendor_interface_validate_bad_method(self):"},{"line_number":53,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9af37de9_ab486d5c","line":50,"in_reply_to":"9af37de9_82091f34","updated":"2015-05-11 15:35:19.000000000","message":"Thank you.  I will implement.","commit_id":"fc125a5aa50028a89753b805ecbf642d167dbd5e"}],"ironic/tests/drivers/third_party_driver_mock_specs.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"415f0179e96ae4f69b10517c1d3e4abd1f04547b","unresolved":false,"context_lines":[{"line_number":108,"context_line":"SEAMICRO_EXC_SPEC \u003d ("},{"line_number":109,"context_line":"    \u0027ClientException\u0027,"},{"line_number":110,"context_line":"    \u0027UnsupportedVersion\u0027,"},{"line_number":111,"context_line":")"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aca2d91_25834358","line":111,"updated":"2015-05-07 20:49:58.000000000","message":"thanks for the (almost) alpha order :-)","commit_id":"964dae5bea691b9bfc60f8f6698b45fde7c3ac10"}]}
