)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"87567f8b683a5bc0a965c7c5861d48847dbd03ba","unresolved":false,"context_lines":[{"line_number":11,"context_line":"1. It\u0027s a dict while creating a server from a image"},{"line_number":12,"context_line":"2. It\u0027s a empty string while creating a server from a volume"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"We should modify the type to dict consistend, otherwise someone who call"},{"line_number":15,"context_line":"the api will be confused about the value or can\u0027t parse the value"},{"line_number":16,"context_line":"in the same way."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAT3%2F%2F%2B5w%3D","line":14,"updated":"2013-12-25 14:18:52.000000000","message":"dict consistend \u003d\u003e dict","commit_id":"bab0a18c3b3d789a94ef689d314de8705c9f899e"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"90e48dd6f0dc5d4dd9a9bf7a6ab85babf1e763bc","unresolved":false,"context_lines":[{"line_number":11,"context_line":"1. It\u0027s a dict while creating a server from a image"},{"line_number":12,"context_line":"2. It\u0027s a empty string while creating a server from a volume"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"We should modify the type to dict consistend, otherwise someone who call"},{"line_number":15,"context_line":"the api will be confused about the value or can\u0027t parse the value"},{"line_number":16,"context_line":"in the same way."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAT3%2F%2F9vg%3D","line":14,"in_reply_to":"AAAAT3%2F%2F%2B5w%3D","updated":"2013-12-26 07:00:02.000000000","message":"Done.","commit_id":"bab0a18c3b3d789a94ef689d314de8705c9f899e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"87567f8b683a5bc0a965c7c5861d48847dbd03ba","unresolved":false,"context_lines":[{"line_number":15,"context_line":"the api will be confused about the value or can\u0027t parse the value"},{"line_number":16,"context_line":"in the same way."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The patch just modify the v3 api."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I0d7ce59f64adec0933353af58dc5b5170390674b"},{"line_number":21,"context_line":"Closes-Bug: #1262039"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAT3%2F%2F%2B5s%3D","line":18,"updated":"2013-12-25 14:18:52.000000000","message":"modify \u003d\u003e modifies","commit_id":"bab0a18c3b3d789a94ef689d314de8705c9f899e"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"90e48dd6f0dc5d4dd9a9bf7a6ab85babf1e763bc","unresolved":false,"context_lines":[{"line_number":15,"context_line":"the api will be confused about the value or can\u0027t parse the value"},{"line_number":16,"context_line":"in the same way."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The patch just modify the v3 api."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I0d7ce59f64adec0933353af58dc5b5170390674b"},{"line_number":21,"context_line":"Closes-Bug: #1262039"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAT3%2F%2F9vc%3D","line":18,"in_reply_to":"AAAAT3%2F%2F%2B5s%3D","updated":"2013-12-26 07:00:02.000000000","message":"Done.","commit_id":"bab0a18c3b3d789a94ef689d314de8705c9f899e"}],"nova/api/openstack/compute/views/servers.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"a7c289f7912e2f2a2295b7727a8dba26c7aca7ff","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        networks \u003d common.get_networks_for_instance(context, instance)"},{"line_number":167,"context_line":"        return self._address_builder.index(networks)[\"addresses\"]"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def _get_image(self, request, instance, afterV2\u003dFalse):"},{"line_number":170,"context_line":"        image_ref \u003d instance[\"image_ref\"]"},{"line_number":171,"context_line":"        if image_ref:"},{"line_number":172,"context_line":"            image_id \u003d str(common.get_id_from_href(image_ref))"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F8oYQ%3D","line":169,"updated":"2013-12-24 01:47:30.000000000","message":"rather than afterV2 I think it would be better to name it after what it does. Maybe something like no_image_ref_is_empty_dict","commit_id":"1f65ee14da7317431ecf29f55c844d98538d9788"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"a7c289f7912e2f2a2295b7727a8dba26c7aca7ff","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                }],"},{"line_number":182,"context_line":"            }"},{"line_number":183,"context_line":"        else:"},{"line_number":184,"context_line":"            if afterV2:"},{"line_number":185,"context_line":"                return {}"},{"line_number":186,"context_line":"            return \"\""},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F8oYI%3D","line":184,"updated":"2013-12-24 01:47:30.000000000","message":"I\u0027d leave a NOTE in here explaining why we have this oddity here","commit_id":"1f65ee14da7317431ecf29f55c844d98538d9788"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"a7c289f7912e2f2a2295b7727a8dba26c7aca7ff","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                \"user_id\": instance.get(\"user_id\") or \"\","},{"line_number":249,"context_line":"                \"metadata\": self._get_metadata(instance),"},{"line_number":250,"context_line":"                \"host_id\": self._get_host_id(instance) or \"\","},{"line_number":251,"context_line":"                \"image\": self._get_image(request, instance, afterV2\u003dTrue),"},{"line_number":252,"context_line":"                \"flavor\": self._get_flavor(request, instance),"},{"line_number":253,"context_line":"                \"created\": timeutils.isotime(instance[\"created_at\"]),"},{"line_number":254,"context_line":"                \"updated\": timeutils.isotime(instance[\"updated_at\"]),"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F8oX8%3D","line":251,"updated":"2013-12-24 01:47:30.000000000","message":"Actually I wonder if it would be much cleaner just to implement a _get_image in ViewBuilderV3 which calls the inherited _get_image and checks what is returned. If the empty string is returned, then convert it to an empty dict. The more I think about it, the better I think this option is, as the current solution looks a bit ugly to me.","commit_id":"1f65ee14da7317431ecf29f55c844d98538d9788"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"87567f8b683a5bc0a965c7c5861d48847dbd03ba","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        if server[\"server\"][\"status\"] in self._progress_statuses:"},{"line_number":265,"context_line":"            server[\"server\"][\"progress\"] \u003d instance.get(\"progress\", 0)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        # We should modify the \"image\" to dict consistent"},{"line_number":268,"context_line":"        if server[\"server\"][\"image\"] \u003d\u003d \"\":"},{"line_number":269,"context_line":"            server[\"server\"][\"image\"] \u003d {}"},{"line_number":270,"context_line":"        return server"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAT3%2F%2F%2B6g%3D","line":267,"updated":"2013-12-25 14:18:52.000000000","message":"to dict consistent \u003d\u003e to empty dictionary","commit_id":"bab0a18c3b3d789a94ef689d314de8705c9f899e"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"90e48dd6f0dc5d4dd9a9bf7a6ab85babf1e763bc","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        if server[\"server\"][\"status\"] in self._progress_statuses:"},{"line_number":265,"context_line":"            server[\"server\"][\"progress\"] \u003d instance.get(\"progress\", 0)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        # We should modify the \"image\" to dict consistent"},{"line_number":268,"context_line":"        if server[\"server\"][\"image\"] \u003d\u003d \"\":"},{"line_number":269,"context_line":"            server[\"server\"][\"image\"] \u003d {}"},{"line_number":270,"context_line":"        return server"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAT3%2F%2F9vM%3D","line":267,"in_reply_to":"AAAAT3%2F%2F%2B6g%3D","updated":"2013-12-26 07:00:02.000000000","message":"Done.","commit_id":"bab0a18c3b3d789a94ef689d314de8705c9f899e"},{"author":{"_account_id":8282,"name":"Dong Liu","email":"willowd878@gmail.com","username":"liudong"},"change_message_id":"7afcf363b9890a94cea99588ca3f2575ccb81c96","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            server[\"server\"][\"progress\"] \u003d instance.get(\"progress\", 0)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        # We should modify the \"image\" to empty dictionary"},{"line_number":268,"context_line":"        if server[\"server\"][\"image\"] \u003d\u003d \"\":"},{"line_number":269,"context_line":"            server[\"server\"][\"image\"] \u003d {}"},{"line_number":270,"context_line":"        return server"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2F7Lc%3D","line":268,"updated":"2013-12-27 02:10:51.000000000","message":"nit: I think \"if not server[\"server\"][\"image\"] :\" is better.","commit_id":"36c9f5912ca24b1be4b56977a7938b0c890d118e"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"1de14ebcdc6c5950a416de3676d936b63225b4ff","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            server[\"server\"][\"progress\"] \u003d instance.get(\"progress\", 0)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        # We should modify the \"image\" to empty dictionary"},{"line_number":268,"context_line":"        if server[\"server\"][\"image\"] \u003d\u003d \"\":"},{"line_number":269,"context_line":"            server[\"server\"][\"image\"] \u003d {}"},{"line_number":270,"context_line":"        return server"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAT3%2F%2F4t8%3D","line":268,"in_reply_to":"AAAAT3%2F%2F7Lc%3D","updated":"2013-12-28 01:08:22.000000000","message":"I agree with Dong Liu","commit_id":"36c9f5912ca24b1be4b56977a7938b0c890d118e"}],"nova/tests/api/openstack/compute/plugins/v3/test_servers.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"87567f8b683a5bc0a965c7c5861d48847dbd03ba","unresolved":false,"context_lines":[{"line_number":3533,"context_line":"        root \u003d etree.XML(output)"},{"line_number":3534,"context_line":"        # Only need to verify the \"image\""},{"line_number":3535,"context_line":"        image_root \u003d root.find(\u0027{0}image\u0027.format(NS))"},{"line_number":3536,"context_line":"        self.assertEqual(image_root.get(\u0027id\u0027), None)"},{"line_number":3537,"context_line":"        link_nodes \u003d image_root.findall(\u0027{0}link\u0027.format(ATOMNS))"},{"line_number":3538,"context_line":"        self.assertEqual(len(link_nodes), 0)"},{"line_number":3539,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAT3%2F%2F%2B6c%3D","line":3536,"updated":"2013-12-25 14:18:52.000000000","message":"please use - assertIsNone","commit_id":"bab0a18c3b3d789a94ef689d314de8705c9f899e"},{"author":{"_account_id":8289,"name":"huangtianhua","email":"tiantian223@163.com","username":"huangtianhua"},"change_message_id":"90e48dd6f0dc5d4dd9a9bf7a6ab85babf1e763bc","unresolved":false,"context_lines":[{"line_number":3533,"context_line":"        root \u003d etree.XML(output)"},{"line_number":3534,"context_line":"        # Only need to verify the \"image\""},{"line_number":3535,"context_line":"        image_root \u003d root.find(\u0027{0}image\u0027.format(NS))"},{"line_number":3536,"context_line":"        self.assertEqual(image_root.get(\u0027id\u0027), None)"},{"line_number":3537,"context_line":"        link_nodes \u003d image_root.findall(\u0027{0}link\u0027.format(ATOMNS))"},{"line_number":3538,"context_line":"        self.assertEqual(len(link_nodes), 0)"},{"line_number":3539,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAT3%2F%2F9vI%3D","line":3536,"in_reply_to":"AAAAT3%2F%2F%2B6c%3D","updated":"2013-12-26 07:00:02.000000000","message":"Done.","commit_id":"bab0a18c3b3d789a94ef689d314de8705c9f899e"}]}
