)]}'
{"nova/compute/utils.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"aa7d2f5e79ae61be66519cb28260c781e9bf1789","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"def get_image_metadata(context, image_api, image_id_or_uri, instance):"},{"line_number":199,"context_line":"    image_system_meta \u003d {}"},{"line_number":200,"context_line":"    if image_id_or_uri:"},{"line_number":201,"context_line":"        # If the base image is still available, get its metadata"},{"line_number":202,"context_line":"        try:"},{"line_number":203,"context_line":"            image \u003d image_api.get(context, image_id_or_uri)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_f608862f","line":200,"updated":"2014-09-29 17:11:24.000000000","message":"0 is actually a valid image ID. You should use:\n\n if image_id_or_uri is not None:\n\nhere. You may also want to put a code comment above it:\n\n # In case of boot from volume, image_id_or_uri may be None","commit_id":"86c54b8e1474182c49c71a54eae6a6656a592c58"}],"nova/tests/compute/test_compute_utils.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"53e44c427745ec6306d3b83d97e2bf8c4c0535ea","unresolved":false,"context_lines":[{"line_number":694,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("},{"line_number":695,"context_line":"            self.ctx, self.mock_image_api, None, self.instance_obj)"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"        self.assertEqual(0, self.mock_image_api.get.call_count)"},{"line_number":698,"context_line":"        self.assertNotIn(\u0027fake_property\u0027, image_meta[\u0027properties\u0027])"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    def _test_get_image_meta_exception(self, error):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_b088ba23","line":697,"updated":"2014-09-22 14:54:44.000000000","message":"flavors.extract_flavor and utils.get_system_metadata_from_image should not get called either since image_id_or_uri is None.","commit_id":"1e4c491a4c42ca5883aa2e71c91abb9acaa8a30e"},{"author":{"_account_id":10300,"name":"Pranali Deore","email":"pranalideore@gmail.com","username":"PranaliDeore"},"change_message_id":"bd123169fcb4ad1a39d7079681de70cc3121733b","unresolved":false,"context_lines":[{"line_number":694,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("},{"line_number":695,"context_line":"            self.ctx, self.mock_image_api, None, self.instance_obj)"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"        self.assertEqual(0, self.mock_image_api.get.call_count)"},{"line_number":698,"context_line":"        self.assertNotIn(\u0027fake_property\u0027, image_meta[\u0027properties\u0027])"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    def _test_get_image_meta_exception(self, error):"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_29a52653","line":697,"in_reply_to":"da9df570_b088ba23","updated":"2014-09-23 11:16:08.000000000","message":"Done","commit_id":"1e4c491a4c42ca5883aa2e71c91abb9acaa8a30e"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"e58b6686b0c809f46b4930d076968ec9dbea06bb","unresolved":false,"context_lines":[{"line_number":690,"context_line":"        self.assertThat(self.image, matchers.DictMatches(image_meta))"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def test_get_image_meta_with_image_id_none(self):"},{"line_number":693,"context_line":"        \"\"\"Test get_image_metadata method with image id as none.\"\"\""},{"line_number":694,"context_line":"        self.image[\u0027properties\u0027] \u003d {\u0027fake_property\u0027: \u0027fake_value\u0027}"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        with mock.patch.object(flavors,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da9df570_12cde55d","line":693,"updated":"2014-09-23 15:36:26.000000000","message":"I think test doesn\u0027t need such docstring","commit_id":"86c54b8e1474182c49c71a54eae6a6656a592c58"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"43057338792ac8cb956f358d4372cc33948f5680","unresolved":false,"context_lines":[{"line_number":690,"context_line":"        self.assertThat(self.image, matchers.DictMatches(image_meta))"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":"    def test_get_image_meta_with_image_id_none(self):"},{"line_number":693,"context_line":"        \"\"\"Test get_image_metadata method with image id as none.\"\"\""},{"line_number":694,"context_line":"        self.image[\u0027properties\u0027] \u003d {\u0027fake_property\u0027: \u0027fake_value\u0027}"},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"        with mock.patch.object(flavors,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da9df570_0e5afef2","line":693,"in_reply_to":"da9df570_12cde55d","updated":"2014-09-24 14:43:45.000000000","message":"Agreed; the test name is descriptive enough.","commit_id":"86c54b8e1474182c49c71a54eae6a6656a592c58"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"aa7d2f5e79ae61be66519cb28260c781e9bf1789","unresolved":false,"context_lines":[{"line_number":703,"context_line":"                self.assertEqual(0, self.mock_image_api.get.call_count)"},{"line_number":704,"context_line":"                self.assertEqual(0, mock_extract_flavor.call_count)"},{"line_number":705,"context_line":"                self.assertEqual(0, mock_get_sys_metadata.call_count)"},{"line_number":706,"context_line":"                self.assertNotIn(\u0027fake_property\u0027, image_meta[\u0027properties\u0027])"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"    def _test_get_image_meta_exception(self, error):"},{"line_number":709,"context_line":"        self.mock_image_api.get.side_effect \u003d error"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_1606ea20","line":706,"updated":"2014-09-29 17:11:24.000000000","message":"Might be worth adding some test lines in here that pass 0 as the image ID and checks to see that the mock_image_api_get is actually called in that case.","commit_id":"86c54b8e1474182c49c71a54eae6a6656a592c58"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"4847a0bbbe0d2a61701ebc83f278090f3d8aa169","unresolved":false,"context_lines":[{"line_number":694,"context_line":""},{"line_number":695,"context_line":"        with mock.patch.object(flavors,"},{"line_number":696,"context_line":"                               \"extract_flavor\") as mock_extract_flavor:"},{"line_number":697,"context_line":"            with mock.patch.object(utils, \"get_system_metadata_from_image\") \\"},{"line_number":698,"context_line":"                as mock_get_sys_metadata:"},{"line_number":699,"context_line":"                image_meta \u003d compute_utils.get_image_metadata("},{"line_number":700,"context_line":"                    self.ctx, self.mock_image_api, None, self.instance_obj)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_d4eb41ae","line":697,"updated":"2014-10-01 17:14:43.000000000","message":"maybe it will be better to use brackets and avoid backslash here","commit_id":"66d5619ad9bd2686ddc1c5e4bf2bc8b7500871ef"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"f2afbbd785d890ae18a930a2e2e6d63827d747b3","unresolved":false,"context_lines":[{"line_number":694,"context_line":""},{"line_number":695,"context_line":"        with mock.patch.object(flavors,"},{"line_number":696,"context_line":"                               \"extract_flavor\") as mock_extract_flavor:"},{"line_number":697,"context_line":"            with mock.patch.object(utils, \"get_system_metadata_from_image\") \\"},{"line_number":698,"context_line":"                as mock_get_sys_metadata:"},{"line_number":699,"context_line":"                image_meta \u003d compute_utils.get_image_metadata("},{"line_number":700,"context_line":"                    self.ctx, self.mock_image_api, None, self.instance_obj)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_7a80bf46","line":697,"in_reply_to":"baa201ad_d4eb41ae","updated":"2014-10-01 17:46:31.000000000","message":"Or simply use the mock.patch decorator instead.","commit_id":"66d5619ad9bd2686ddc1c5e4bf2bc8b7500871ef"}]}
