)]}'
{"ironic_python_agent/tests/hardware.py":[{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"973f36e29724f7971ac54597bf389ae0b97a2155","unresolved":false,"context_lines":[{"line_number":114,"context_line":")"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class CustomHardwareManager(hardware.GenericHardwareManager):"},{"line_number":118,"context_line":"    def __init__(self, hardware_support):"},{"line_number":119,"context_line":"        self._hardware_support \u003d hardware_support"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_03db894f","line":117,"updated":"2014-06-11 12:55:15.000000000","message":"I think it\u0027s better to rename it to FakeHardwareManager. CustomHardwareManager sounds a bit confusing.","commit_id":"331ca81946dd6d1c16e7dd5d8870a472d5892a5d"},{"author":{"_account_id":10626,"name":"Russell Haering","email":"russellhaering@gmail.com","username":"russell_h"},"change_message_id":"22d34e35ab0935c16bc2b114c1980d01e48f30d5","unresolved":false,"context_lines":[{"line_number":114,"context_line":")"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"class CustomHardwareManager(hardware.GenericHardwareManager):"},{"line_number":118,"context_line":"    def __init__(self, hardware_support):"},{"line_number":119,"context_line":"        self._hardware_support \u003d hardware_support"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_1f658cb4","line":117,"in_reply_to":"1ae5cdf2_03db894f","updated":"2014-06-11 17:32:39.000000000","message":"Agreed, fixed.","commit_id":"331ca81946dd6d1c16e7dd5d8870a472d5892a5d"},{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"973f36e29724f7971ac54597bf389ae0b97a2155","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        # make_test_instance() before it gets mocked. Inside of the test case"},{"line_number":132,"context_line":"        # we set this as the return value of the mocked constructor, so we can"},{"line_number":133,"context_line":"        # verify that the constructor is called correctly while still using a"},{"line_number":134,"context_line":"        # more realistic (?) ExtensionManager"},{"line_number":135,"context_line":"        ext1 \u003d mock.Mock()"},{"line_number":136,"context_line":"        ext1.obj \u003d CustomHardwareManager(hardware.HardwareSupport.MAINLINE)"},{"line_number":137,"context_line":"        ext2 \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_a3701541","line":134,"updated":"2014-06-11 12:55:15.000000000","message":"is this comment still actual?","commit_id":"331ca81946dd6d1c16e7dd5d8870a472d5892a5d"},{"author":{"_account_id":10626,"name":"Russell Haering","email":"russellhaering@gmail.com","username":"russell_h"},"change_message_id":"22d34e35ab0935c16bc2b114c1980d01e48f30d5","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        # make_test_instance() before it gets mocked. Inside of the test case"},{"line_number":132,"context_line":"        # we set this as the return value of the mocked constructor, so we can"},{"line_number":133,"context_line":"        # verify that the constructor is called correctly while still using a"},{"line_number":134,"context_line":"        # more realistic (?) ExtensionManager"},{"line_number":135,"context_line":"        ext1 \u003d mock.Mock()"},{"line_number":136,"context_line":"        ext1.obj \u003d CustomHardwareManager(hardware.HardwareSupport.MAINLINE)"},{"line_number":137,"context_line":"        ext2 \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_3f24085f","line":134,"in_reply_to":"1ae5cdf2_a3701541","updated":"2014-06-11 17:32:39.000000000","message":"Yes, clarified it slightly.","commit_id":"331ca81946dd6d1c16e7dd5d8870a472d5892a5d"},{"author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"change_message_id":"973f36e29724f7971ac54597bf389ae0b97a2155","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        ext3.obj \u003d CustomHardwareManager(hardware.HardwareSupport.GENERIC)"},{"line_number":142,"context_line":"        self.correct_extension \u003d ext2.obj"},{"line_number":143,"context_line":"        self.fake_ext_mgr \u003d stevedore.ExtensionManager.make_test_instance(["},{"line_number":144,"context_line":"            ext1,"},{"line_number":145,"context_line":"            ext2,"},{"line_number":146,"context_line":"            ext3,"},{"line_number":147,"context_line":"        ])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_7e46a0c1","line":144,"updated":"2014-06-11 12:55:15.000000000","message":"ext1, ext2, ext3 should be stevedore extension instances. There is no need in creating of extN.obj attributes explicitly.\n\nI mean something like -\u003e http://paste.openstack.org/show/83642/","commit_id":"331ca81946dd6d1c16e7dd5d8870a472d5892a5d"},{"author":{"_account_id":10626,"name":"Russell Haering","email":"russellhaering@gmail.com","username":"russell_h"},"change_message_id":"22d34e35ab0935c16bc2b114c1980d01e48f30d5","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        ext3.obj \u003d CustomHardwareManager(hardware.HardwareSupport.GENERIC)"},{"line_number":142,"context_line":"        self.correct_extension \u003d ext2.obj"},{"line_number":143,"context_line":"        self.fake_ext_mgr \u003d stevedore.ExtensionManager.make_test_instance(["},{"line_number":144,"context_line":"            ext1,"},{"line_number":145,"context_line":"            ext2,"},{"line_number":146,"context_line":"            ext3,"},{"line_number":147,"context_line":"        ])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_1f33ccab","line":144,"in_reply_to":"1ae5cdf2_7e46a0c1","updated":"2014-06-11 17:32:39.000000000","message":"Done.","commit_id":"331ca81946dd6d1c16e7dd5d8870a472d5892a5d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"94d9385000f86017ab389cc8198ae4e4587519ed","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        ])"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    @mock.patch(\u0027stevedore.ExtensionManager\u0027)"},{"line_number":150,"context_line":"    def test_hardware_manager_loading(self, MockedExtensionManager):"},{"line_number":151,"context_line":"        hardware._global_manager \u003d None"},{"line_number":152,"context_line":"        MockedExtensionManager.return_value \u003d self.fake_ext_mgr"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_6a2ad091","line":150,"updated":"2014-06-16 14:31:54.000000000","message":"MockedExtensionManager is a variable and should be named lowercase+underscore (despite it contains mock for constructor)","commit_id":"33e8c0dab2dea307a8314c8c366b0c91f9c7c671"},{"author":{"_account_id":10626,"name":"Russell Haering","email":"russellhaering@gmail.com","username":"russell_h"},"change_message_id":"9bcccf1e1585d2d70ba33496227ca235813c61fd","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        ])"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    @mock.patch(\u0027stevedore.ExtensionManager\u0027)"},{"line_number":150,"context_line":"    def test_hardware_manager_loading(self, MockedExtensionManager):"},{"line_number":151,"context_line":"        hardware._global_manager \u003d None"},{"line_number":152,"context_line":"        MockedExtensionManager.return_value \u003d self.fake_ext_mgr"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_39d57bb9","line":150,"in_reply_to":"1ae5cdf2_6a2ad091","updated":"2014-06-16 18:14:53.000000000","message":"Fixed, thanks.","commit_id":"33e8c0dab2dea307a8314c8c366b0c91f9c7c671"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"94d9385000f86017ab389cc8198ae4e4587519ed","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        hardware._global_manager \u003d None"},{"line_number":152,"context_line":"        MockedExtensionManager.return_value \u003d self.fake_ext_mgr"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        preferred_manager \u003d hardware.get_manager()"},{"line_number":155,"context_line":"        MockedExtensionManager.assert_called_once_with("},{"line_number":156,"context_line":"            namespace\u003d\u0027ironic_python_agent.hardware_managers\u0027,"},{"line_number":157,"context_line":"            invoke_on_load\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_e571b3a9","line":154,"updated":"2014-06-16 14:31:54.000000000","message":"Variable name confuses me a bit: it\u0027s not a manager, it\u0027s an extension, no?","commit_id":"33e8c0dab2dea307a8314c8c366b0c91f9c7c671"},{"author":{"_account_id":10626,"name":"Russell Haering","email":"russellhaering@gmail.com","username":"russell_h"},"change_message_id":"9bcccf1e1585d2d70ba33496227ca235813c61fd","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        hardware._global_manager \u003d None"},{"line_number":152,"context_line":"        MockedExtensionManager.return_value \u003d self.fake_ext_mgr"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        preferred_manager \u003d hardware.get_manager()"},{"line_number":155,"context_line":"        MockedExtensionManager.assert_called_once_with("},{"line_number":156,"context_line":"            namespace\u003d\u0027ironic_python_agent.hardware_managers\u0027,"},{"line_number":157,"context_line":"            invoke_on_load\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_b98eebce","line":154,"in_reply_to":"1ae5cdf2_e571b3a9","updated":"2014-06-16 18:14:53.000000000","message":"This is a HardwareManager instance. I\u0027ve modified the variable names somewhat to clarify this.","commit_id":"33e8c0dab2dea307a8314c8c366b0c91f9c7c671"}]}
