)]}'
{"bin/nova-manage":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"9dfa7bf86257d6efe919dfc926058a3f431f0b7c","unresolved":false,"context_lines":[{"line_number":940,"context_line":""},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"class InstanceTypeCommands(object):"},{"line_number":943,"context_line":"    \"\"\"Class for managing instance types / flavors.\"\"\""},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"    def _print_instance_types(self, name, val):"},{"line_number":946,"context_line":"        deleted \u003d (\u0027\u0027, \u0027, inactive\u0027)[val[\"deleted\"] \u003d\u003d 1]"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAALH%2F%2FwgE%3D","line":943,"updated":"2012-08-14 15:37:58.000000000","message":"Although nova-manage will be deprecated, I think it\u0027d be good if nova-manage can manipulate flavor-access\u0027.","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"42fd69fa424f424772ead72ab1cf1b91b4e1c27f","unresolved":false,"context_lines":[{"line_number":940,"context_line":""},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"class InstanceTypeCommands(object):"},{"line_number":943,"context_line":"    \"\"\"Class for managing instance types / flavors.\"\"\""},{"line_number":944,"context_line":""},{"line_number":945,"context_line":"    def _print_instance_types(self, name, val):"},{"line_number":946,"context_line":"        deleted \u003d (\u0027\u0027, \u0027, inactive\u0027)[val[\"deleted\"] \u003d\u003d 1]"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAALH%2F%2FwbI%3D","line":943,"in_reply_to":"AAAALH%2F%2FwgE%3D","updated":"2012-08-14 16:13:25.000000000","message":"To be frank, I\u0027ve also considered at the implementation. But not quite sure about the Nova strategy of nova-manage.\n\nAs I noticed recently added API, such as host aggregate, also has no nova-manage support.\n\nMy understanding is that client binding support through API is a much nature way. That\u0027s why I only added limited support to nova-manage. Better than nothing, right? ;)","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"}],"nova/api/openstack/compute/contrib/flavor_access.py":[{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"19f00ea067e6d3927f1596a3099172391367c857","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            return {\u0027flavor_access\u0027: rval}"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        # private flavor to listed projects only"},{"line_number":94,"context_line":"        return _marshall_flavor_access(flavor_id)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class FlavorActionController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FwQc%3D","line":94,"updated":"2012-08-14 17:27:10.000000000","message":"This needs an xml template/serializer and associated tests","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"d0573daaeaa02088f06a5a5069a8f0b9d073e576","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            return {\u0027flavor_access\u0027: rval}"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        # private flavor to listed projects only"},{"line_number":94,"context_line":"        return _marshall_flavor_access(flavor_id)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class FlavorActionController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FvFk%3D","line":94,"in_reply_to":"AAAALH%2F%2FwQc%3D","updated":"2012-08-15 15:20:29.000000000","message":"Done, also added corresponding test cases","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"9dfa7bf86257d6efe919dfc926058a3f431f0b7c","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                raise exception.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            self._extend_flavor(resp_obj.obj[\u0027flavor\u0027], flavor_ref)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @wsgi.action(\"add_tenant_access\")"},{"line_number":163,"context_line":"    def _add_tenant_access(self, req, id, body):"},{"line_number":164,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Fwf0%3D","line":161,"updated":"2012-08-14 15:37:58.000000000","message":"I\u0027m thinking maybe it\u0027s also a good idea to provide \u0027update\u0027 feature to allow admin to change \u0027is_public\u0027 from \u0027false\u0027 to \u0027true\u0027.  Otherwise, \u0027is_public\u0027 can never be changed.","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"42fd69fa424f424772ead72ab1cf1b91b4e1c27f","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                raise exception.HTTPNotFound(explanation\u003dexplanation)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            self._extend_flavor(resp_obj.obj[\u0027flavor\u0027], flavor_ref)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    @wsgi.action(\"add_tenant_access\")"},{"line_number":163,"context_line":"    def _add_tenant_access(self, req, id, body):"},{"line_number":164,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FwZ4%3D","line":161,"in_reply_to":"AAAALH%2F%2Fwf0%3D","updated":"2012-08-14 16:13:25.000000000","message":"This project specific flavor is designed this way, that private flavor type could not turned to public anyway. If needed, one can simply dispose the private flavor type, and create a public one with the same spec but public.\n\nWhat do you think?","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"5fada28d3082baf4a00d038ae08a54a9968a4f10","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            self._extend_flavor(resp_obj.obj[\u0027flavor\u0027], flavor_ref)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    @wsgi.serializers(xml\u003dFlavorAccessTemplate)"},{"line_number":182,"context_line":"    @wsgi.action(\"add_tenant_access\")"},{"line_number":183,"context_line":"    def _add_tenant_access(self, req, id, body):"},{"line_number":184,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":185,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FtpY%3D","line":182,"updated":"2012-08-16 20:00:50.000000000","message":"addTenantAccess would be more in line with e.g. addFloatingIp, addFixedIp and addSecurityGroup actions","commit_id":"7a32f10d10c1d23bfdc6bee0a3fa0ea8b08fe564"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"fc8dadaef13b308b93e48c77e2450e1528eb028a","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            self._extend_flavor(resp_obj.obj[\u0027flavor\u0027], flavor_ref)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    @wsgi.serializers(xml\u003dFlavorAccessTemplate)"},{"line_number":182,"context_line":"    @wsgi.action(\"add_tenant_access\")"},{"line_number":183,"context_line":"    def _add_tenant_access(self, req, id, body):"},{"line_number":184,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":185,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FtcU%3D","line":182,"in_reply_to":"AAAALH%2F%2FtpY%3D","updated":"2012-08-17 00:52:40.000000000","message":"Done","commit_id":"7a32f10d10c1d23bfdc6bee0a3fa0ea8b08fe564"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"5fada28d3082baf4a00d038ae08a54a9968a4f10","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        return _marshall_flavor_access(id)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    @wsgi.serializers(xml\u003dFlavorAccessTemplate)"},{"line_number":199,"context_line":"    @wsgi.action(\"remove_tenant_access\")"},{"line_number":200,"context_line":"    def _remove_tenant_access(self, req, id, body):"},{"line_number":201,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":202,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FtpU%3D","line":199,"updated":"2012-08-16 20:00:50.000000000","message":"removeTenantAccess","commit_id":"7a32f10d10c1d23bfdc6bee0a3fa0ea8b08fe564"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"fc8dadaef13b308b93e48c77e2450e1528eb028a","unresolved":false,"context_lines":[{"line_number":196,"context_line":"        return _marshall_flavor_access(id)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    @wsgi.serializers(xml\u003dFlavorAccessTemplate)"},{"line_number":199,"context_line":"    @wsgi.action(\"remove_tenant_access\")"},{"line_number":200,"context_line":"    def _remove_tenant_access(self, req, id, body):"},{"line_number":201,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":202,"context_line":"        authorize(context)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FtcY%3D","line":199,"in_reply_to":"AAAALH%2F%2FtpU%3D","updated":"2012-08-17 00:52:40.000000000","message":"Done","commit_id":"7a32f10d10c1d23bfdc6bee0a3fa0ea8b08fe564"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e44ab256fb8a4a20cf7e0822ceb5a6c7bfb37984","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # public flavor to all projects"},{"line_number":108,"context_line":"        if flavor[\u0027is_public\u0027]:"},{"line_number":109,"context_line":"            rval \u003d [{\u0027flavor_id\u0027: flavor_id, \u0027tenant_id\u0027: \u0027ALL TENANTS\u0027}]"},{"line_number":110,"context_line":"            return {\u0027flavor_access\u0027: rval}"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # private flavor to listed projects only"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoYw%3D","line":109,"updated":"2012-08-24 15:53:00.000000000","message":"I\u0027d rather see a cleaner sentinel than \"ALL TENANTS\"; couldn\u0027t we specify that the lack of a \u0027tenant_id\u0027 key means that the flavor is available to all tenants?","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"1b08b5ea1f4c914c3a1dc91d23ffcddc77a2f865","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # public flavor to all projects"},{"line_number":108,"context_line":"        if flavor[\u0027is_public\u0027]:"},{"line_number":109,"context_line":"            rval \u003d [{\u0027flavor_id\u0027: flavor_id, \u0027tenant_id\u0027: \u0027ALL TENANTS\u0027}]"},{"line_number":110,"context_line":"            return {\u0027flavor_access\u0027: rval}"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # private flavor to listed projects only"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoUQ%3D","line":109,"in_reply_to":"AAAALH%2F%2FoYw%3D","updated":"2012-08-24 16:52:24.000000000","message":"Actually this is where I struggled a little bit about which way to take.\n\nIt was intended to provide a human readable message. And another reason was to differentiate from a non-public flavor with no project access configured.\n\nI\u0027ll leave this code as it is, and wait for more inputs. Thanks for pointed out Kevin!","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"7c3499cdd7bc6b666f5dc46e45fd39c5361fd906","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # public flavor to all projects"},{"line_number":108,"context_line":"        if flavor[\u0027is_public\u0027]:"},{"line_number":109,"context_line":"            rval \u003d [{\u0027flavor_id\u0027: flavor_id, \u0027tenant_id\u0027: \u0027ALL TENANTS\u0027}]"},{"line_number":110,"context_line":"            return {\u0027flavor_access\u0027: rval}"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # private flavor to listed projects only"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2FoK8%3D","line":109,"updated":"2012-08-24 17:59:19.000000000","message":"Fair enough.  You might want to begin a discussion on the openstack-dev list…","commit_id":"9459e64c56f221a3d9ae30e2ef52c7ee71f4411f"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"dc544a3ea7fa2e6e1868c72f21ed1f220e801797","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # public flavor to all projects"},{"line_number":108,"context_line":"        if flavor[\u0027is_public\u0027]:"},{"line_number":109,"context_line":"            rval \u003d [{\u0027flavor_id\u0027: flavor_id, \u0027tenant_id\u0027: \u0027ALL TENANTS\u0027}]"},{"line_number":110,"context_line":"            return {\u0027flavor_access\u0027: rval}"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # private flavor to listed projects only"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAALH%2F%2Fnvs%3D","line":109,"in_reply_to":"AAAALH%2F%2FoK8%3D","updated":"2012-08-25 03:53:48.000000000","message":"Sure. Thanks for the suggestion. :)","commit_id":"9459e64c56f221a3d9ae30e2ef52c7ee71f4411f"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"9b12313e356b55a8d0d8367fb7d2cccad92d51cf","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # public flavor to all projects"},{"line_number":108,"context_line":"        if flavor[\u0027is_public\u0027]:"},{"line_number":109,"context_line":"            return webob.Response(status_int\u003d404)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # private flavor to listed projects only"},{"line_number":112,"context_line":"        return _marshall_flavor_access(flavor_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAALH%2F%2FnTw%3D","line":109,"updated":"2012-08-27 14:51:47.000000000","message":"Hmm, see above where we return a 404 by throwing an excaption.HTTPNotFound with a nice explanation. Think you should do the same for this case too","commit_id":"8278af29a904ab7dd737e0444e76d704c66a020b"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"3a193382e7d1d1ccdec08a2376045d977ae41107","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        # public flavor to all projects"},{"line_number":108,"context_line":"        if flavor[\u0027is_public\u0027]:"},{"line_number":109,"context_line":"            return webob.Response(status_int\u003d404)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # private flavor to listed projects only"},{"line_number":112,"context_line":"        return _marshall_flavor_access(flavor_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAALH%2F%2FnTM%3D","line":109,"in_reply_to":"AAAALH%2F%2FnTw%3D","updated":"2012-08-27 14:59:49.000000000","message":"Done","commit_id":"8278af29a904ab7dd737e0444e76d704c66a020b"}],"nova/api/openstack/compute/flavors.py":[{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"19f00ea067e6d3927f1596a3099172391367c857","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        elif is_public.lower() \u003d\u003d \u0027none\u0027:"},{"line_number":102,"context_line":"            \"\"\" value to match all flavors, ignore is_public \"\"\""},{"line_number":103,"context_line":"            return None"},{"line_number":104,"context_line":"        elif is_public.lower() in [\u0027t\u0027, \u0027true\u0027, \u0027yes\u0027, \u00271\u0027, True]:"},{"line_number":105,"context_line":"            return True"},{"line_number":106,"context_line":"        elif is_public.lower() in [\u0027f\u0027, \u0027false\u0027, \u0027no\u0027, \u00270\u0027, False]:"},{"line_number":107,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FwSA%3D","line":104,"updated":"2012-08-14 17:27:10.000000000","message":"is.public.lower() will not work if is_public is True.\n\nI think you want:\n elif is_public is True or is_public.lower() in [\u0027t\u0027, \u0027true\u0027,  \u0027yes\u0027, \u00271\u0027]","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"58dd1554b26f5d48b49b6094e9ae4138279581a9","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        elif is_public.lower() \u003d\u003d \u0027none\u0027:"},{"line_number":102,"context_line":"            \"\"\" value to match all flavors, ignore is_public \"\"\""},{"line_number":103,"context_line":"            return None"},{"line_number":104,"context_line":"        elif is_public.lower() in [\u0027t\u0027, \u0027true\u0027, \u0027yes\u0027, \u00271\u0027, True]:"},{"line_number":105,"context_line":"            return True"},{"line_number":106,"context_line":"        elif is_public.lower() in [\u0027f\u0027, \u0027false\u0027, \u0027no\u0027, \u00270\u0027, False]:"},{"line_number":107,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Fvg4%3D","line":104,"in_reply_to":"AAAALH%2F%2FwSA%3D","updated":"2012-08-15 09:51:12.000000000","message":"Done","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"19f00ea067e6d3927f1596a3099172391367c857","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        elif is_public.lower() in [\u0027t\u0027, \u0027true\u0027, \u0027yes\u0027, \u00271\u0027, True]:"},{"line_number":105,"context_line":"            return True"},{"line_number":106,"context_line":"        elif is_public.lower() in [\u0027f\u0027, \u0027false\u0027, \u0027no\u0027, \u00270\u0027, False]:"},{"line_number":107,"context_line":"            return False"},{"line_number":108,"context_line":"        else:"},{"line_number":109,"context_line":"            msg \u003d _(\u0027Invalid is_public filter [%s]\u0027) % req.params[\u0027is_public\u0027]"},{"line_number":110,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FwR8%3D","line":107,"updated":"2012-08-14 17:27:10.000000000","message":"same as above.\n\nAlso you should move these above the \u003d\u003d \u0027none\u0027 check or it will fail","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"58dd1554b26f5d48b49b6094e9ae4138279581a9","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        elif is_public.lower() in [\u0027t\u0027, \u0027true\u0027, \u0027yes\u0027, \u00271\u0027, True]:"},{"line_number":105,"context_line":"            return True"},{"line_number":106,"context_line":"        elif is_public.lower() in [\u0027f\u0027, \u0027false\u0027, \u0027no\u0027, \u00270\u0027, False]:"},{"line_number":107,"context_line":"            return False"},{"line_number":108,"context_line":"        else:"},{"line_number":109,"context_line":"            msg \u003d _(\u0027Invalid is_public filter [%s]\u0027) % req.params[\u0027is_public\u0027]"},{"line_number":110,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Fvg0%3D","line":107,"in_reply_to":"AAAALH%2F%2FwR8%3D","updated":"2012-08-15 09:51:12.000000000","message":"Done","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e44ab256fb8a4a20cf7e0822ceb5a6c7bfb37984","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        is_public \u003d req.params.get(\u0027is_public\u0027, None)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        if is_public is None:"},{"line_number":99,"context_line":"            \"\"\" preserve default value of showing only public flavors \"\"\""},{"line_number":100,"context_line":"            return True"},{"line_number":101,"context_line":"        elif is_public is True or \\"},{"line_number":102,"context_line":"            is_public.lower() in [\u0027t\u0027, \u0027true\u0027, \u0027yes\u0027, \u00271\u0027]:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoYo%3D","line":99,"updated":"2012-08-24 15:53:00.000000000","message":"Make this a comment instead of a docstring; docstrings have no syntactic meaning here.  (Additionally, this is a badly-formatted docstring to begin with; there should be no spaces between the text and the triple-quotes.)","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"1b08b5ea1f4c914c3a1dc91d23ffcddc77a2f865","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        is_public \u003d req.params.get(\u0027is_public\u0027, None)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        if is_public is None:"},{"line_number":99,"context_line":"            \"\"\" preserve default value of showing only public flavors \"\"\""},{"line_number":100,"context_line":"            return True"},{"line_number":101,"context_line":"        elif is_public is True or \\"},{"line_number":102,"context_line":"            is_public.lower() in [\u0027t\u0027, \u0027true\u0027, \u0027yes\u0027, \u00271\u0027]:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoTo%3D","line":99,"in_reply_to":"AAAALH%2F%2FoYo%3D","updated":"2012-08-24 16:52:24.000000000","message":"Done","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e44ab256fb8a4a20cf7e0822ceb5a6c7bfb37984","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            is_public.lower() in [\u0027f\u0027, \u0027false\u0027, \u0027no\u0027, \u00270\u0027]:"},{"line_number":106,"context_line":"            return False"},{"line_number":107,"context_line":"        elif is_public.lower() \u003d\u003d \u0027none\u0027:"},{"line_number":108,"context_line":"            \"\"\" value to match all flavors, ignore is_public \"\"\""},{"line_number":109,"context_line":"            return None"},{"line_number":110,"context_line":"        else:"},{"line_number":111,"context_line":"            msg \u003d _(\u0027Invalid is_public filter [%s]\u0027) % req.params[\u0027is_public\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoYk%3D","line":108,"updated":"2012-08-24 15:53:00.000000000","message":"Again, make this a comment.","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"1b08b5ea1f4c914c3a1dc91d23ffcddc77a2f865","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            is_public.lower() in [\u0027f\u0027, \u0027false\u0027, \u0027no\u0027, \u00270\u0027]:"},{"line_number":106,"context_line":"            return False"},{"line_number":107,"context_line":"        elif is_public.lower() \u003d\u003d \u0027none\u0027:"},{"line_number":108,"context_line":"            \"\"\" value to match all flavors, ignore is_public \"\"\""},{"line_number":109,"context_line":"            return None"},{"line_number":110,"context_line":"        else:"},{"line_number":111,"context_line":"            msg \u003d _(\u0027Invalid is_public filter [%s]\u0027) % req.params[\u0027is_public\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoTI%3D","line":108,"in_reply_to":"AAAALH%2F%2FoYk%3D","updated":"2012-08-24 16:52:24.000000000","message":"Done","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e44ab256fb8a4a20cf7e0822ceb5a6c7bfb37984","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":119,"context_line":"        if context.is_admin:"},{"line_number":120,"context_line":"            \"\"\" Only admin has query access to all flavor types \"\"\""},{"line_number":121,"context_line":"            filters[\u0027is_public\u0027] \u003d self._get_is_public(req)"},{"line_number":122,"context_line":"        else:"},{"line_number":123,"context_line":"            filters[\u0027is_public\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoYg%3D","line":120,"updated":"2012-08-24 15:53:00.000000000","message":"And again, make a comment.","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"1b08b5ea1f4c914c3a1dc91d23ffcddc77a2f865","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":119,"context_line":"        if context.is_admin:"},{"line_number":120,"context_line":"            \"\"\" Only admin has query access to all flavor types \"\"\""},{"line_number":121,"context_line":"            filters[\u0027is_public\u0027] \u003d self._get_is_public(req)"},{"line_number":122,"context_line":"        else:"},{"line_number":123,"context_line":"            filters[\u0027is_public\u0027] \u003d True"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoTE%3D","line":120,"in_reply_to":"AAAALH%2F%2FoYg%3D","updated":"2012-08-24 16:52:24.000000000","message":"Done","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"9afccfdbc66cd60cd23494888b33e51c4845620f","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        if is_public is None:"},{"line_number":99,"context_line":"            # preserve default value of showing only public flavors"},{"line_number":100,"context_line":"            return True"},{"line_number":101,"context_line":"        elif is_public is True or \\"},{"line_number":102,"context_line":"            is_public.lower() in [\u0027t\u0027, \u0027true\u0027, \u0027yes\u0027, \u00271\u0027]:"},{"line_number":103,"context_line":"            return True"},{"line_number":104,"context_line":"        elif is_public is False or \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAALH%2F%2FnTY%3D","line":101,"updated":"2012-08-27 15:00:57.000000000","message":"Hmmm…when would req.params[\u0027is_public\u0027] ever be the singleton True?  Won\u0027t it always be a string?","commit_id":"8278af29a904ab7dd737e0444e76d704c66a020b"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"87de1251d109cd7f270d142129254dcfd3ad2e0b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        if is_public is None:"},{"line_number":99,"context_line":"            # preserve default value of showing only public flavors"},{"line_number":100,"context_line":"            return True"},{"line_number":101,"context_line":"        elif is_public is True or \\"},{"line_number":102,"context_line":"            is_public.lower() in [\u0027t\u0027, \u0027true\u0027, \u0027yes\u0027, \u00271\u0027]:"},{"line_number":103,"context_line":"            return True"},{"line_number":104,"context_line":"        elif is_public is False or \\"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAALH%2F%2FnSE%3D","line":101,"in_reply_to":"AAAALH%2F%2FnTY%3D","updated":"2012-08-27 15:11:42.000000000","message":"Well, it is always a string. This part is modified based on Vish\u0027s suggestion on a version of earlier patchset. Just for safety.","commit_id":"8278af29a904ab7dd737e0444e76d704c66a020b"}],"nova/compute/instance_types.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e44ab256fb8a4a20cf7e0822ceb5a6c7bfb37984","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    kwargs[\u0027flavorid\u0027] \u003d unicode(flavorid)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    # ensure is_public attribute is boolean"},{"line_number":84,"context_line":"    kwargs[\u0027is_public\u0027] \u003d is_public in [\u0027t\u0027, \u0027true\u0027, \u0027yes\u0027, \u00271\u0027, True]"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    try:"},{"line_number":87,"context_line":"        return db.instance_type_create(context.get_admin_context(), kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoYY%3D","line":84,"updated":"2012-08-24 15:53:00.000000000","message":"You know, we already have utils.bool_from_str().  It doesn\u0027t handle all your options here, but it seems to me that we should use it across the board for this kind of thing, for consistency\u0027s sake.  (It could also be easily augmented to handle your additional options…)","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"1b08b5ea1f4c914c3a1dc91d23ffcddc77a2f865","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    kwargs[\u0027flavorid\u0027] \u003d unicode(flavorid)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    # ensure is_public attribute is boolean"},{"line_number":84,"context_line":"    kwargs[\u0027is_public\u0027] \u003d is_public in [\u0027t\u0027, \u0027true\u0027, \u0027yes\u0027, \u00271\u0027, True]"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    try:"},{"line_number":87,"context_line":"        return db.instance_type_create(context.get_admin_context(), kwargs)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoR0%3D","line":84,"in_reply_to":"AAAALH%2F%2FoYY%3D","updated":"2012-08-24 16:52:24.000000000","message":"Done","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"9dfa7bf86257d6efe919dfc926058a3f431f0b7c","unresolved":false,"context_lines":[{"line_number":4192,"context_line":"        if not access_ref:"},{"line_number":4193,"context_line":"            access_ref \u003d models.InstanceTypeProjects()"},{"line_number":4194,"context_line":"            access_ref.instance_type_id \u003d instance_type_id"},{"line_number":4195,"context_line":"            access_ref.project_id \u003d project_id"},{"line_number":4196,"context_line":"            access_ref.save(session\u003dsession)"},{"line_number":4197,"context_line":"        elif access_ref.deleted:"},{"line_number":4198,"context_line":"            access_ref.update({\u0027deleted\u0027: False,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Fwgk%3D","line":4195,"updated":"2012-08-14 15:37:58.000000000","message":"Do we need to check if \u0027project_id\u0027 exists?  Otherwise, adding any string as \u0027project_id\u0027 can be potential issue.","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"19f00ea067e6d3927f1596a3099172391367c857","unresolved":false,"context_lines":[{"line_number":4192,"context_line":"        if not access_ref:"},{"line_number":4193,"context_line":"            access_ref \u003d models.InstanceTypeProjects()"},{"line_number":4194,"context_line":"            access_ref.instance_type_id \u003d instance_type_id"},{"line_number":4195,"context_line":"            access_ref.project_id \u003d project_id"},{"line_number":4196,"context_line":"            access_ref.save(session\u003dsession)"},{"line_number":4197,"context_line":"        elif access_ref.deleted:"},{"line_number":4198,"context_line":"            access_ref.update({\u0027deleted\u0027: False,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FwSU%3D","line":4195,"in_reply_to":"AAAALH%2F%2FwZQ%3D","updated":"2012-08-14 17:27:10.000000000","message":"this is correct, we don\u0027t know inside of nova if project_id exists in keystone","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"42fd69fa424f424772ead72ab1cf1b91b4e1c27f","unresolved":false,"context_lines":[{"line_number":4192,"context_line":"        if not access_ref:"},{"line_number":4193,"context_line":"            access_ref \u003d models.InstanceTypeProjects()"},{"line_number":4194,"context_line":"            access_ref.instance_type_id \u003d instance_type_id"},{"line_number":4195,"context_line":"            access_ref.project_id \u003d project_id"},{"line_number":4196,"context_line":"            access_ref.save(session\u003dsession)"},{"line_number":4197,"context_line":"        elif access_ref.deleted:"},{"line_number":4198,"context_line":"            access_ref.update({\u0027deleted\u0027: False,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2FwZQ%3D","line":4195,"in_reply_to":"AAAALH%2F%2Fwgk%3D","updated":"2012-08-14 16:13:25.000000000","message":"At the implementation, I also referenced Glance image member feature, which does not check \u0027project_id\u0027 validity either.\n\nTo my understanding, \u0027project_id\u0027 could change (deleted for example) after adding to flavor\u0027s access list. So, there is no point checking project_id validity anyway.\n\nBesides, I\u0027m not quite sure if there is possibility to scan project_id existence if added project_id checking.\n\nSo, in conclusion, I\u0027d rather keep it current way, no project_id checking.","commit_id":"35d7d5b3926eb7398abf0cb15b59d5a5cd4fda0c"}],"nova/db/sqlalchemy/migrate_repo/versions/132_add_instance_type_projects.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"9afccfdbc66cd60cd23494888b33e51c4845620f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                nullable\u003dFalse),"},{"line_number":44,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":45,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":46,"context_line":"        #mysql_charset\u003d\u0027utf8\u0027"},{"line_number":47,"context_line":"        )"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAALH%2F%2FnTA%3D","line":46,"updated":"2012-08-27 15:00:57.000000000","message":"Why is this line commented out?  If it\u0027s not needed, I\u0027d rather see the line gone entirely…","commit_id":"8278af29a904ab7dd737e0444e76d704c66a020b"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"894fa79baac43de2d337a547b7ee3075c464e849","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                nullable\u003dFalse),"},{"line_number":44,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":45,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":46,"context_line":"        #mysql_charset\u003d\u0027utf8\u0027"},{"line_number":47,"context_line":"        )"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAALH%2F%2FnPc%3D","line":46,"in_reply_to":"AAAALH%2F%2FnPo%3D","updated":"2012-08-27 15:44:59.000000000","message":"Done","commit_id":"8278af29a904ab7dd737e0444e76d704c66a020b"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26b7b5c0e9eaff0c5c75abd82ec49c8cd226ec7f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                nullable\u003dFalse),"},{"line_number":44,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":45,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":46,"context_line":"        #mysql_charset\u003d\u0027utf8\u0027"},{"line_number":47,"context_line":"        )"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAALH%2F%2FnPo%3D","line":46,"in_reply_to":"AAAALH%2F%2FnRg%3D","updated":"2012-08-27 15:39:17.000000000","message":"I\u0027m not arguing about whether it needs to be here or not, I just don\u0027t like commented-out code being added to the repository…","commit_id":"8278af29a904ab7dd737e0444e76d704c66a020b"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"87de1251d109cd7f270d142129254dcfd3ad2e0b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                nullable\u003dFalse),"},{"line_number":44,"context_line":"        Column(\u0027project_id\u0027, String(length\u003d255)),"},{"line_number":45,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":46,"context_line":"        #mysql_charset\u003d\u0027utf8\u0027"},{"line_number":47,"context_line":"        )"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAALH%2F%2FnRg%3D","line":46,"in_reply_to":"AAAALH%2F%2FnTA%3D","updated":"2012-08-27 15:11:42.000000000","message":"This portion just follows other table\u0027s definition in Nova database.\n\nI think it is due to some legacy issue, not quite sure it is fixed. just follow the convention here.\n\nFollowing message in 082_essex.py\n--\n    # NOTE(dprince): Trying to create a fresh utf8 dns_domains tables\n    # with a domain primary key length of 512 fails w/\n    # \u0027Specified key was too long; max key length is 767 bytes\u0027.\n    # See:  https://bugs.launchpad.net/nova/+bug/993663\n    # If we fix this during Folsom we can set mysql_charset\u003dutf8 inline...\n    # and remove the unsightly loop that does it below during \"E\" compaction.\n\nand...\n\n    # Hopefully this entire loop to set the charset can go away during\n    # the \"E\" release compaction. See the notes on the dns_domains\n    # table above for why this is required vs. setting mysql_charset inline.","commit_id":"8278af29a904ab7dd737e0444e76d704c66a020b"}],"nova/tests/api/openstack/compute/contrib/test_flavor_access.py":[{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"341b038ad31db2562693dd96d47e04ee9777187d","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        access_list \u003d [{\u0027flavor_id\u0027: \u00272\u0027, \u0027tenant_id\u0027: \u0027proj2\u0027}]"},{"line_number":268,"context_line":"        serializer \u003d flavor_access.FlavorAccessTemplate()"},{"line_number":269,"context_line":"        output \u003d serializer.serialize(access_list)"},{"line_number":270,"context_line":"        print output"},{"line_number":271,"context_line":"        has_dec \u003d output.startswith(\"\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e\")"},{"line_number":272,"context_line":"        self.assertTrue(has_dec)"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FvFE%3D","line":270,"updated":"2012-08-15 15:22:40.000000000","message":"leftover print.","commit_id":"c0109eb1b579f63518e37c9db282537ffab0c1e7"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"30d2a3c5ac947da01244023edbb8274a093da33c","unresolved":false,"context_lines":[{"line_number":267,"context_line":"        access_list \u003d [{\u0027flavor_id\u0027: \u00272\u0027, \u0027tenant_id\u0027: \u0027proj2\u0027}]"},{"line_number":268,"context_line":"        serializer \u003d flavor_access.FlavorAccessTemplate()"},{"line_number":269,"context_line":"        output \u003d serializer.serialize(access_list)"},{"line_number":270,"context_line":"        print output"},{"line_number":271,"context_line":"        has_dec \u003d output.startswith(\"\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e\")"},{"line_number":272,"context_line":"        self.assertTrue(has_dec)"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FvE4%3D","line":270,"in_reply_to":"AAAALH%2F%2FvFE%3D","updated":"2012-08-15 15:32:03.000000000","message":"Done","commit_id":"c0109eb1b579f63518e37c9db282537ffab0c1e7"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e44ab256fb8a4a20cf7e0822ceb5a6c7bfb37984","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _verify_flavor_list(self, result, expected):"},{"line_number":117,"context_line":"        # result already sorted by flavor_id"},{"line_number":118,"context_line":"        self.assertEquals(len(result), len(expected))"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        for d1, d2 in zip(result, expected):"},{"line_number":121,"context_line":"            self.assertEquals(d1[\u0027id\u0027], d2[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoYQ%3D","line":118,"updated":"2012-08-24 15:53:00.000000000","message":"The canonical method is assertEqual(), no \u0027s\u0027; the assertEquals() method is deprecated.","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"1b08b5ea1f4c914c3a1dc91d23ffcddc77a2f865","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def _verify_flavor_list(self, result, expected):"},{"line_number":117,"context_line":"        # result already sorted by flavor_id"},{"line_number":118,"context_line":"        self.assertEquals(len(result), len(expected))"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        for d1, d2 in zip(result, expected):"},{"line_number":121,"context_line":"            self.assertEquals(d1[\u0027id\u0027], d2[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAALH%2F%2FoRw%3D","line":118,"in_reply_to":"AAAALH%2F%2FoYQ%3D","updated":"2012-08-24 16:52:24.000000000","message":"Done","commit_id":"e8aa2b8b44834c164aa34c8fc1b8e7419f72f109"}]}
