)]}'
{"tempest/api/compute/images/test_list_images.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"aac0a8d1cf4f998b98f54cf82d99475ed1f4aca5","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        resp, images \u003d self.client.list_images()"},{"line_number":69,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":70,"context_line":"        images_count \u003d len(images)"},{"line_number":71,"context_line":"        self.assertGreater(images_count, 0)"},{"line_number":72,"context_line":"        self._verify_image_min_detail_attributes(images[0])"},{"line_number":73,"context_line":"        found \u003d any([i for i in images if i[\u0027id\u0027] \u003d\u003d self.image_ref])"},{"line_number":74,"context_line":"        self.assertTrue(found)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FQ%2FQ%3D","line":71,"updated":"2014-03-07 06:51:32.000000000","message":"images_count is used only here, and it is better to avoid using assertGreater() because py26 does not contain it.\n\nHow about the following?\n\n self.assertTrue(len(images) \u003e 0)","commit_id":"8be55808de52d0dd2102726827235232bf182bff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a350788d6ea26eeb749a94a7bb2b21491b23c45b","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        resp, images \u003d self.client.list_images()"},{"line_number":69,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":70,"context_line":"        images_count \u003d len(images)"},{"line_number":71,"context_line":"        self.assertGreater(images_count, 0)"},{"line_number":72,"context_line":"        self._verify_image_min_detail_attributes(images[0])"},{"line_number":73,"context_line":"        found \u003d any([i for i in images if i[\u0027id\u0027] \u003d\u003d self.image_ref])"},{"line_number":74,"context_line":"        self.assertTrue(found)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FQtc%3D","line":71,"in_reply_to":"AAAAVn%2F%2FQ%2FQ%3D","updated":"2014-03-07 07:41:20.000000000","message":"Actually I used that earlier but unittest2.TestCase has been added in base class for py26, link- https://review.openstack.org/#/c/72388/. So after this patch assertGreater() works for py26.\nPlease let me know your opinion.","commit_id":"8be55808de52d0dd2102726827235232bf182bff"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"7be9814cbaeabf468335d87e1740314719967a89","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        resp, images \u003d self.client.list_images()"},{"line_number":69,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":70,"context_line":"        images_count \u003d len(images)"},{"line_number":71,"context_line":"        self.assertGreater(images_count, 0)"},{"line_number":72,"context_line":"        self._verify_image_min_detail_attributes(images[0])"},{"line_number":73,"context_line":"        found \u003d any([i for i in images if i[\u0027id\u0027] \u003d\u003d self.image_ref])"},{"line_number":74,"context_line":"        self.assertTrue(found)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2B9yg%3D","line":71,"in_reply_to":"AAAAVn%2F%2FQDI%3D","updated":"2014-03-11 00:49:54.000000000","message":"I have not so strong opinion here.\nI\u0027m OK with\n self.assertTrue(len(images) \u003e 0)\n.","commit_id":"8be55808de52d0dd2102726827235232bf182bff"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2523ae044d209a845ec1893033f52692b67fd571","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        resp, images \u003d self.client.list_images()"},{"line_number":69,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":70,"context_line":"        images_count \u003d len(images)"},{"line_number":71,"context_line":"        self.assertGreater(images_count, 0)"},{"line_number":72,"context_line":"        self._verify_image_min_detail_attributes(images[0])"},{"line_number":73,"context_line":"        found \u003d any([i for i in images if i[\u0027id\u0027] \u003d\u003d self.image_ref])"},{"line_number":74,"context_line":"        self.assertTrue(found)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FQDI%3D","line":71,"in_reply_to":"AAAAVn%2F%2FQtc%3D","updated":"2014-03-07 09:07:52.000000000","message":"Thanks for your response,\n\nI have wrote a comment on  https://review.openstack.org/#/c/72388/.","commit_id":"8be55808de52d0dd2102726827235232bf182bff"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"aac0a8d1cf4f998b98f54cf82d99475ed1f4aca5","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        resp, images \u003d self.client.list_images_with_detail()"},{"line_number":80,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":81,"context_line":"        images_count \u003d len(images)"},{"line_number":82,"context_line":"        self.assertGreater(images_count, 0)"},{"line_number":83,"context_line":"        self._verify_image_detail_attributes(images[0])"},{"line_number":84,"context_line":"        found \u003d any([i for i in images if i[\u0027id\u0027] \u003d\u003d self.image_ref])"},{"line_number":85,"context_line":"        self.assertTrue(found)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FQ%2FE%3D","line":82,"updated":"2014-03-07 06:51:32.000000000","message":"ditto","commit_id":"8be55808de52d0dd2102726827235232bf182bff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a350788d6ea26eeb749a94a7bb2b21491b23c45b","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        resp, images \u003d self.client.list_images_with_detail()"},{"line_number":80,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":81,"context_line":"        images_count \u003d len(images)"},{"line_number":82,"context_line":"        self.assertGreater(images_count, 0)"},{"line_number":83,"context_line":"        self._verify_image_detail_attributes(images[0])"},{"line_number":84,"context_line":"        found \u003d any([i for i in images if i[\u0027id\u0027] \u003d\u003d self.image_ref])"},{"line_number":85,"context_line":"        self.assertTrue(found)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAVn%2F%2FQtY%3D","line":82,"in_reply_to":"AAAAVn%2F%2FQ%2FE%3D","updated":"2014-03-07 07:41:20.000000000","message":"Same as above","commit_id":"8be55808de52d0dd2102726827235232bf182bff"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"4ee493b2590eb6d92003eee6149be8f43c24b48c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.assertIn(\u0027minDisk\u0027, image)"},{"line_number":46,"context_line":"        self.assertIn(\u0027progress\u0027, image)"},{"line_number":47,"context_line":"        self.assertIn(\u0027minRam\u0027, image)"},{"line_number":48,"context_line":"        self.assertIn(\u0027metadata\u0027, image)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def _verify_image_min_detail_attributes(self, image):"},{"line_number":51,"context_line":"        # Verifying the image attributes which are fetched by"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B62Y%3D","line":48,"updated":"2014-03-11 09:46:14.000000000","message":"Instead of assertIn each attribute, it looks better to use a list to save attributes. Then use assertEqual to compare attributes list and image.keys()\n\n attr_list \u003d [...]\n self.assertEqual(sort(attr_list), sort(image.keys()))","commit_id":"b2e9f48702a10a240f3dc8e74d6949d631d96636"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"20493103cb48aa3997ca18f5a757007cae5fc39d","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.assertIn(\u0027minDisk\u0027, image)"},{"line_number":46,"context_line":"        self.assertIn(\u0027progress\u0027, image)"},{"line_number":47,"context_line":"        self.assertIn(\u0027minRam\u0027, image)"},{"line_number":48,"context_line":"        self.assertIn(\u0027metadata\u0027, image)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def _verify_image_min_detail_attributes(self, image):"},{"line_number":51,"context_line":"        # Verifying the image attributes which are fetched by"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B6CI%3D","line":48,"in_reply_to":"AAAAVn%2F%2B62Y%3D","updated":"2014-03-11 12:07:11.000000000","message":"Ok. Instead we are thinking of validating the JSON schema here. if not i will do the changes.","commit_id":"b2e9f48702a10a240f3dc8e74d6949d631d96636"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"4ee493b2590eb6d92003eee6149be8f43c24b48c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # GET- \"v2/images\" API"},{"line_number":53,"context_line":"        self.assertIn(\u0027id\u0027, image)"},{"line_number":54,"context_line":"        self.assertIn(\u0027links\u0027, image)"},{"line_number":55,"context_line":"        self.assertIn(\u0027name\u0027, image)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @attr(type\u003d\u0027smoke\u0027)"},{"line_number":58,"context_line":"    def test_get_image(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B61k%3D","line":55,"updated":"2014-03-11 09:46:14.000000000","message":"ditto","commit_id":"b2e9f48702a10a240f3dc8e74d6949d631d96636"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"4ee493b2590eb6d92003eee6149be8f43c24b48c","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        # The list of all images should contain the image"},{"line_number":68,"context_line":"        resp, images \u003d self.client.list_images()"},{"line_number":69,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":70,"context_line":"        self.assertTrue(len(images) \u003e 0)"},{"line_number":71,"context_line":"        self._verify_image_min_detail_attributes(images[0])"},{"line_number":72,"context_line":"        found \u003d any([i for i in images if i[\u0027id\u0027] \u003d\u003d self.image_ref])"},{"line_number":73,"context_line":"        self.assertTrue(found)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B64U%3D","line":70,"updated":"2014-03-11 09:46:14.000000000","message":"we need a message parameter in assertTrue to describe the error. this could help get clear error messages.","commit_id":"b2e9f48702a10a240f3dc8e74d6949d631d96636"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"20493103cb48aa3997ca18f5a757007cae5fc39d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        # The list of all images should contain the image"},{"line_number":68,"context_line":"        resp, images \u003d self.client.list_images()"},{"line_number":69,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":70,"context_line":"        self.assertTrue(len(images) \u003e 0)"},{"line_number":71,"context_line":"        self._verify_image_min_detail_attributes(images[0])"},{"line_number":72,"context_line":"        found \u003d any([i for i in images if i[\u0027id\u0027] \u003d\u003d self.image_ref])"},{"line_number":73,"context_line":"        self.assertTrue(found)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B6CE%3D","line":70,"in_reply_to":"AAAAVn%2F%2B64U%3D","updated":"2014-03-11 12:07:11.000000000","message":"Thanks. I will update in my next patch.","commit_id":"b2e9f48702a10a240f3dc8e74d6949d631d96636"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"4ee493b2590eb6d92003eee6149be8f43c24b48c","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        # Detailed list of all images should contain the expected images"},{"line_number":78,"context_line":"        resp, images \u003d self.client.list_images_with_detail()"},{"line_number":79,"context_line":"        self.assertEqual(200, resp.status)"},{"line_number":80,"context_line":"        self.assertTrue(len(images) \u003e 0)"},{"line_number":81,"context_line":"        self._verify_image_detail_attributes(images[0])"},{"line_number":82,"context_line":"        found \u003d any([i for i in images if i[\u0027id\u0027] \u003d\u003d self.image_ref])"},{"line_number":83,"context_line":"        self.assertTrue(found)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAVn%2F%2B64Q%3D","line":80,"updated":"2014-03-11 09:46:14.000000000","message":"ditto","commit_id":"b2e9f48702a10a240f3dc8e74d6949d631d96636"}],"tempest/api_schema/compute/v2/images.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fc3324dfa6565ac38341066a1ab428521356f3e2","unresolved":false,"context_lines":[{"line_number":20,"context_line":"            \u0027image\u0027: {"},{"line_number":21,"context_line":"                \u0027type\u0027: \u0027object\u0027,"},{"line_number":22,"context_line":"                \u0027properties\u0027: {"},{"line_number":23,"context_line":"                    # NOTE: Now the type of \u0027id\u0027 is integer, but here allows"},{"line_number":24,"context_line":"                    # \u0027string\u0027 also because we will be able to change it to"},{"line_number":25,"context_line":"                    # \u0027uuid\u0027 in the future."},{"line_number":26,"context_line":"                    \u0027id\u0027: {\u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027]},"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FY2Y%3D","line":23,"updated":"2014-03-18 07:41:36.000000000","message":"The same comment as https://review.openstack.org/78950\n\nWe need to confirm the types of a volume_id should include integer or not.","commit_id":"de88fe1ff03677fffc2d0638d36be45961d25ee7"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"24f7f374de23aee67175b82881312619cd4c55d9","unresolved":false,"context_lines":[{"line_number":20,"context_line":"            \u0027image\u0027: {"},{"line_number":21,"context_line":"                \u0027type\u0027: \u0027object\u0027,"},{"line_number":22,"context_line":"                \u0027properties\u0027: {"},{"line_number":23,"context_line":"                    # NOTE: Now the type of \u0027id\u0027 is integer, but here allows"},{"line_number":24,"context_line":"                    # \u0027string\u0027 also because we will be able to change it to"},{"line_number":25,"context_line":"                    # \u0027uuid\u0027 in the future."},{"line_number":26,"context_line":"                    \u0027id\u0027: {\u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027]},"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2FYOA%3D","line":23,"in_reply_to":"AAAAWH%2F%2FY2Y%3D","updated":"2014-03-18 09:09:13.000000000","message":"Thanks for noticing this. Yes image id is \u0027uuid\u0027 only. Below check is there while creating or rebuilding server from image.\n\nhttps://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L1214","commit_id":"de88fe1ff03677fffc2d0638d36be45961d25ee7"}]}
