)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9e51e288c7929cfc98816d85130d0ba0fc56818b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"if the flavor is public."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements blueprint check-flavor-type-before-add-tenant"},{"line_number":15,"context_line":"Closes-Bug: #1361476"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I461175e9969a0dd5b2b7ef75ea7d9f36f3a306d0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba3cc151_e0026272","line":15,"updated":"2015-07-03 16:22:23.000000000","message":"Needs:\n\n APIImpact: Adds new 2.6 API microversion due to new error condition\n in flavor access API","commit_id":"bd671b0b5fea1e0335aa0098a4d6954a0763ebed"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"e9ab1f38eb7d0eca77d7cb202bee9b176768e057","unresolved":false,"context_lines":[{"line_number":12,"context_line":"if the flavor is public."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements blueprint check-flavor-type-before-add-tenant"},{"line_number":15,"context_line":"Closes-Bug: #1361476"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I461175e9969a0dd5b2b7ef75ea7d9f36f3a306d0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba3cc151_918138fe","line":15,"in_reply_to":"ba3cc151_e0026272","updated":"2015-07-06 15:50:53.000000000","message":"ok, updated it, thanks","commit_id":"bd671b0b5fea1e0335aa0098a4d6954a0763ebed"}],"nova/api/openstack/compute/contrib/flavor_access.py":[{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"6fbba55e86bc3aae8190803b3e7996367d92a741","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        try:"},{"line_number":176,"context_line":"            if flavor.is_public:"},{"line_number":177,"context_line":"                exp \u003d _(\"Access list not available for public flavors.\")"},{"line_number":178,"context_line":"                raise webob.exc.HTTPNotFound(explanation\u003dexp)"},{"line_number":179,"context_line":"            flavor.add_access(tenant)"},{"line_number":180,"context_line":"        except exception.FlavorAccessExists as err:"},{"line_number":181,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003derr.format_message())"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_cc6e032f","line":178,"updated":"2014-09-26 11:09:03.000000000","message":"I don\u0027t think NotFound is appropriate here. That\u0027s the same error as if the flavor did not exist.  HTTPConflict makes more sense: You can\u0027t add an access list to this flavor (which does exist), because that conflicts with the current (ie public) state of the flavor.","commit_id":"0a6dccad7a2d5c9968dcf8f37496bfc8e03e88b8"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"f4767403aabb43a80d61955dbf2545c216aac7c2","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        try:"},{"line_number":176,"context_line":"            if flavor.is_public:"},{"line_number":177,"context_line":"                exp \u003d _(\"Access list not available for public flavors.\")"},{"line_number":178,"context_line":"                raise webob.exc.HTTPNotFound(explanation\u003dexp)"},{"line_number":179,"context_line":"            flavor.add_access(tenant)"},{"line_number":180,"context_line":"        except exception.FlavorAccessExists as err:"},{"line_number":181,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003derr.format_message())"}],"source_content_type":"text/x-python","patch_set":1,"id":"da9df570_375d1c16","line":178,"in_reply_to":"da9df570_cc6e032f","updated":"2014-09-26 11:26:13.000000000","message":"make sense to me ,will update it ,thx","commit_id":"0a6dccad7a2d5c9968dcf8f37496bfc8e03e88b8"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d73e6e74455a1166b279626ea01389c712d95a8d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            msg \u003d _(\"Missing tenant parameter\")"},{"line_number":113,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        flavor \u003d objects.Flavor.get_by_flavor_id(context, id)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        try:"},{"line_number":118,"context_line":"            if flavor.is_public:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9af37de9_23094b2d","line":115,"updated":"2015-05-11 13:44:33.000000000","message":"now this API is frozen, I guess we shouldn\u0027t change anything here?","commit_id":"5244423bfb22fa9c03ff4a5ace291dc683045573"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"00dd9a47178c87110f3e7643f9fa4c1c437d7177","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            msg \u003d _(\"Missing tenant parameter\")"},{"line_number":116,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        flavor \u003d common.get_flavor(context, id)"},{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            flavor.add_access(tenant)"},{"line_number":121,"context_line":"        except exception.FlavorAccessExists as err:"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_b9d6beef","line":118,"updated":"2015-07-10 12:22:30.000000000","message":"Nit: seem like an unrelated change.","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8266b9177f942b6c5f1ae39ff039dca9ee42f88c","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            msg \u003d _(\"Missing tenant parameter\")"},{"line_number":116,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        flavor \u003d common.get_flavor(context, id)"},{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            flavor.add_access(tenant)"},{"line_number":121,"context_line":"        except exception.FlavorAccessExists as err:"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a41bdd9_4300b101","line":118,"in_reply_to":"ba3cc151_829d680c","updated":"2015-07-14 10:18:57.000000000","message":"requested at PS#9, will update commit message, thanks","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"f57b426cdb2baaf6b922adf5403907fec6b90a7e","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            msg \u003d _(\"Missing tenant parameter\")"},{"line_number":116,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        flavor \u003d common.get_flavor(context, id)"},{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            flavor.add_access(tenant)"},{"line_number":121,"context_line":"        except exception.FlavorAccessExists as err:"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_829d680c","line":118,"in_reply_to":"ba3cc151_b9d6beef","updated":"2015-07-10 21:49:54.000000000","message":"Agreed.","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"990dfa9820abc6346c85cb812c6054c2eed2cb7f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            msg \u003d _(\"Missing tenant parameter\")"},{"line_number":116,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        flavor \u003d common.get_flavor(context, id)"},{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            flavor.add_access(tenant)"},{"line_number":121,"context_line":"        except exception.FlavorAccessExists as err:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a41bdd9_1bcd8530","line":118,"updated":"2015-07-16 10:28:39.000000000","message":"I think John and Andrew is right. This is unrelated change.\n\nThis is different with v2.1 code. In v2.1, for check is_public, you have to get flavor from the db.\n\nFor v2, you needn\u0027t get flavor from the db. \"objects.Flavor(context\u003dcontext, flavorid\u003did)\" just create flavor the object, it didn\u0027t access the db. This is why this unrelated change.\n\nThat is also explain why I ask you add unittest in previous patchset, because the v2.1 behavior is changed.","commit_id":"5412f4a4f4058c984d12a80f6b11275cf9f78810"}],"nova/api/openstack/compute/plugins/v3/flavor_access.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"70d82150706939b5afedb6cce7e4b972c4faab0d","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            if flavor.is_public:"},{"line_number":122,"context_line":"                exp \u003d _(\"Can not add access to a public flavor.\")"},{"line_number":123,"context_line":"                raise webob.exc.HTTPConflict(explanation\u003dexp)"},{"line_number":124,"context_line":"            flavor.add_access(tenant)"},{"line_number":125,"context_line":"        except exception.FlavorNotFound as e:"},{"line_number":126,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":127,"context_line":"        except exception.FlavorAccessExists as err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_3f1ade17","line":124,"updated":"2014-09-29 20:29:30.000000000","message":"Couple things... first, why wouldn\u0027t we want flavor.add_access() to raise an exception if flavor.is_public is True? Secondly, this is the v2 API, and here, we\u0027re changing the behaviour of the API (by changing the return code...). Can we do that without some version increment?","commit_id":"b5ee03bc4c95712da8c18ee6b67ca601f09cacab"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c6756cfa67911b44c8276044c8def747ae0fd23e","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            if flavor.is_public:"},{"line_number":122,"context_line":"                exp \u003d _(\"Can not add access to a public flavor.\")"},{"line_number":123,"context_line":"                raise webob.exc.HTTPConflict(explanation\u003dexp)"},{"line_number":124,"context_line":"            flavor.add_access(tenant)"},{"line_number":125,"context_line":"        except exception.FlavorNotFound as e:"},{"line_number":126,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":127,"context_line":"        except exception.FlavorAccessExists as err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_4164eb21","line":124,"in_reply_to":"baa201ad_1dd190fb","updated":"2014-10-02 00:26:41.000000000","message":"we port v3 as v2.1, v2.1 is back-compatibility with v2. so we can\u0027t change this for v3 also. Only can waiting for microversion","commit_id":"b5ee03bc4c95712da8c18ee6b67ca601f09cacab"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"d89b82bb0cf587d11820eebc317f25f0015e4c9f","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            if flavor.is_public:"},{"line_number":122,"context_line":"                exp \u003d _(\"Can not add access to a public flavor.\")"},{"line_number":123,"context_line":"                raise webob.exc.HTTPConflict(explanation\u003dexp)"},{"line_number":124,"context_line":"            flavor.add_access(tenant)"},{"line_number":125,"context_line":"        except exception.FlavorNotFound as e:"},{"line_number":126,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":127,"context_line":"        except exception.FlavorAccessExists as err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_e2998b6f","line":124,"in_reply_to":"baa201ad_202636b8","updated":"2014-09-30 14:11:06.000000000","message":"thanks Matt, #1 is what I want to mention\n#2 question from Jay, I was told that if we change behavior of v2 version only on error return code, then it\u0027s fine to do that, \nI will invite chris and get his opinion\n\nthanks a lot","commit_id":"b5ee03bc4c95712da8c18ee6b67ca601f09cacab"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"76208119fd7211fa703cc2874b115b8372ef2d56","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            if flavor.is_public:"},{"line_number":122,"context_line":"                exp \u003d _(\"Can not add access to a public flavor.\")"},{"line_number":123,"context_line":"                raise webob.exc.HTTPConflict(explanation\u003dexp)"},{"line_number":124,"context_line":"            flavor.add_access(tenant)"},{"line_number":125,"context_line":"        except exception.FlavorNotFound as e:"},{"line_number":126,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":127,"context_line":"        except exception.FlavorAccessExists as err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_202636b8","line":124,"in_reply_to":"baa201ad_3f1ade17","updated":"2014-09-30 07:44:43.000000000","message":"I think it makes sense to error here.  If we look at the original bug report it shows a nonsensical request to add tenant access to a public flavor being accepted.  This fixes that, although I can\u0027t answer your second question about API version increments.","commit_id":"b5ee03bc4c95712da8c18ee6b67ca601f09cacab"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"2a5d0f9fb62dc79b2e821a0af303e44773d52de3","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            if flavor.is_public:"},{"line_number":122,"context_line":"                exp \u003d _(\"Can not add access to a public flavor.\")"},{"line_number":123,"context_line":"                raise webob.exc.HTTPConflict(explanation\u003dexp)"},{"line_number":124,"context_line":"            flavor.add_access(tenant)"},{"line_number":125,"context_line":"        except exception.FlavorNotFound as e:"},{"line_number":126,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":127,"context_line":"        except exception.FlavorAccessExists as err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_1dd190fb","line":124,"in_reply_to":"baa201ad_7dc53c5a","updated":"2014-09-30 14:40:24.000000000","message":"ok, I understand the concern here\n\nso, I am going to keep this patch\nand ,when we have microversion, I will resubmit it \n\nand, I think it should be safe to submit code in v3 version? (instead of v2)","commit_id":"b5ee03bc4c95712da8c18ee6b67ca601f09cacab"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e965470a17ebdf8292d7b0afe6b6a202c58847e5","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            if flavor.is_public:"},{"line_number":122,"context_line":"                exp \u003d _(\"Can not add access to a public flavor.\")"},{"line_number":123,"context_line":"                raise webob.exc.HTTPConflict(explanation\u003dexp)"},{"line_number":124,"context_line":"            flavor.add_access(tenant)"},{"line_number":125,"context_line":"        except exception.FlavorNotFound as e:"},{"line_number":126,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":127,"context_line":"        except exception.FlavorAccessExists as err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baa201ad_7dc53c5a","line":124,"in_reply_to":"baa201ad_e2998b6f","updated":"2014-09-30 14:35:52.000000000","message":"So if a request is failing we can change what error code is returned, but we can\u0027t change something that formerly succeeded to now fail as that is a backwards incompatible api change. And could potentially break existing apps.\n\nSo we can\u0027t currently make this change. Maybe put it on the list of things to do for when we have microversions support. I agree its a nonsensical thing to do and should never have been permitted in the first place. But its too late now.","commit_id":"b5ee03bc4c95712da8c18ee6b67ca601f09cacab"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d73e6e74455a1166b279626ea01389c712d95a8d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            if flavor.is_public:"},{"line_number":113,"context_line":"                exp \u003d _(\"Can not add access to a public flavor.\")"},{"line_number":114,"context_line":"                raise webob.exc.HTTPConflict(explanation\u003dexp)"},{"line_number":115,"context_line":"            flavor.add_access(tenant)"},{"line_number":116,"context_line":"        except exception.FlavorNotFound as e:"},{"line_number":117,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003de.format_message())"},{"line_number":118,"context_line":"        except exception.FlavorAccessExists as err:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9af37de9_c02275b9","line":115,"updated":"2015-05-11 13:44:33.000000000","message":"would it be better for the object code to raise a useful exception in this case, just like all the other error cases?","commit_id":"5244423bfb22fa9c03ff4a5ace291dc683045573"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"fdd4eb57fcd55a477667eda966aac80514112013","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        vals \u003d body[\u0027addTenantAccess\u0027]"},{"line_number":105,"context_line":"        tenant \u003d vals[\u0027tenant\u0027]"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        flavor \u003d objects.Flavor.get_by_flavor_id(context, id)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        try:"},{"line_number":110,"context_line":"            req_ver \u003d req.api_version_request"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba3cc151_80c5f28e","line":107,"updated":"2015-07-08 15:08:15.000000000","message":"you need catch FlavorNotFound at here. Otherwise it will return 500.\n\nAnd I remember you create a common function to get flavor.\n\nAnd also we need unittest for this case.","commit_id":"ca5ba106686cab4c93248087c6cae7c779da4bd1"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"e330c653cb43f392915d8b5c41e77da97e4f935e","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        vals \u003d body[\u0027addTenantAccess\u0027]"},{"line_number":105,"context_line":"        tenant \u003d vals[\u0027tenant\u0027]"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        flavor \u003d objects.Flavor.get_by_flavor_id(context, id)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        try:"},{"line_number":110,"context_line":"            req_ver \u003d req.api_version_request"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba3cc151_a694ce8a","line":107,"in_reply_to":"ba3cc151_80c5f28e","updated":"2015-07-08 15:34:07.000000000","message":"yes, right, I can use the common function here\n\nwhy unit test? it\u0027s same to previous behavior...","commit_id":"ca5ba106686cab4c93248087c6cae7c779da4bd1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"50f2775fcefc4000e8dde82bde0759bba1c25719","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        vals \u003d body[\u0027addTenantAccess\u0027]"},{"line_number":105,"context_line":"        tenant \u003d vals[\u0027tenant\u0027]"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        flavor \u003d objects.Flavor.get_by_flavor_id(context, id)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        try:"},{"line_number":110,"context_line":"            req_ver \u003d req.api_version_request"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba3cc151_9e69bcc0","line":107,"in_reply_to":"ba3cc151_a694ce8a","updated":"2015-07-08 22:58:00.000000000","message":"It because we missing one unittest for this. This is reason why there isn\u0027t unittest failed when we forget caching exception at here.","commit_id":"ca5ba106686cab4c93248087c6cae7c779da4bd1"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"00dd9a47178c87110f3e7643f9fa4c1c437d7177","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        vals \u003d body[\u0027addTenantAccess\u0027]"},{"line_number":105,"context_line":"        tenant \u003d vals[\u0027tenant\u0027]"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        flavor \u003d common.get_flavor(context, id)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        try:"},{"line_number":110,"context_line":"            req_ver \u003d req.api_version_request"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_19fc8a71","line":107,"updated":"2015-07-10 12:22:30.000000000","message":"Nit: seem like an unrelated change.","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"00dd9a47178c87110f3e7643f9fa4c1c437d7177","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        try:"},{"line_number":110,"context_line":"            req_ver \u003d req.api_version_request"},{"line_number":111,"context_line":"            if req_ver \u003e api_version_request.APIVersionRequest(\"2.6\"):"},{"line_number":112,"context_line":"                if flavor.is_public:"},{"line_number":113,"context_line":"                    exp \u003d _(\"Can not add access to a public flavor.\")"},{"line_number":114,"context_line":"                    raise webob.exc.HTTPConflict(explanation\u003dexp)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_1997aa3b","line":111,"updated":"2015-07-10 12:22:30.000000000","message":"Nit: I would have gone for \u003e\u003d 2.7, but thats a silly debate really.","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8266b9177f942b6c5f1ae39ff039dca9ee42f88c","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        try:"},{"line_number":110,"context_line":"            req_ver \u003d req.api_version_request"},{"line_number":111,"context_line":"            if req_ver \u003e api_version_request.APIVersionRequest(\"2.6\"):"},{"line_number":112,"context_line":"                if flavor.is_public:"},{"line_number":113,"context_line":"                    exp \u003d _(\"Can not add access to a public flavor.\")"},{"line_number":114,"context_line":"                    raise webob.exc.HTTPConflict(explanation\u003dexp)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a41bdd9_e30f852c","line":111,"in_reply_to":"ba3cc151_02fb9848","updated":"2015-07-14 10:18:57.000000000","message":"agree, will change it","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"f57b426cdb2baaf6b922adf5403907fec6b90a7e","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        try:"},{"line_number":110,"context_line":"            req_ver \u003d req.api_version_request"},{"line_number":111,"context_line":"            if req_ver \u003e api_version_request.APIVersionRequest(\"2.6\"):"},{"line_number":112,"context_line":"                if flavor.is_public:"},{"line_number":113,"context_line":"                    exp \u003d _(\"Can not add access to a public flavor.\")"},{"line_number":114,"context_line":"                    raise webob.exc.HTTPConflict(explanation\u003dexp)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_02fb9848","line":111,"in_reply_to":"ba3cc151_1997aa3b","updated":"2015-07-10 21:49:54.000000000","message":"I think it\u0027s more clear if the version that this starts at is specified.  If I\u0027m scanning the code quickly and see \"2.x\" I want that to be the version this is used in.  I think that\u0027s a standard we should hold to.","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"1834f1d9ab9ca37cf2d944a04a9da285340d08e5","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            req_ver \u003d req.api_version_request"},{"line_number":111,"context_line":"            if req_ver \u003e\u003d api_version_request.APIVersionRequest(\"2.7\"):"},{"line_number":112,"context_line":"                if flavor.is_public:"},{"line_number":113,"context_line":"                    exp \u003d _(\"Can not add access to a public flavor.\")"},{"line_number":114,"context_line":"                    raise webob.exc.HTTPConflict(explanation\u003dexp)"},{"line_number":115,"context_line":"            flavor.add_access(tenant)"},{"line_number":116,"context_line":"        except exception.FlavorNotFound as e:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a50d1a3_c5733714","line":113,"updated":"2015-07-21 20:10:33.000000000","message":"nit: Can not -\u003e Cannot","commit_id":"fcb8f250559a52f5dc70f23453ac790a8c4cc8c8"}],"nova/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"f57b426cdb2baaf6b922adf5403907fec6b90a7e","unresolved":false,"context_lines":[{"line_number":94,"context_line":"2.7"},{"line_number":95,"context_line":"---"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"  Check flavor access ``is_public`` before add access to it. If ``is_public`` is true,"},{"line_number":98,"context_line":"  reject the request with HTTPConflict error."}],"source_content_type":"text/x-rst","patch_set":11,"id":"ba3cc151_e2ca341a","line":97,"updated":"2015-07-10 21:49:54.000000000","message":"This could be reworded as \"Check the ``is_public`` attribute of a flavor before adding tenant access to it. ...\"","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8266b9177f942b6c5f1ae39ff039dca9ee42f88c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"2.7"},{"line_number":95,"context_line":"---"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"  Check flavor access ``is_public`` before add access to it. If ``is_public`` is true,"},{"line_number":98,"context_line":"  reject the request with HTTPConflict error."}],"source_content_type":"text/x-rst","patch_set":11,"id":"9a41bdd9_e336a5e6","line":97,"in_reply_to":"ba3cc151_e2ca341a","updated":"2015-07-14 10:18:57.000000000","message":"ok , will update it","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"}],"nova/tests/unit/api/openstack/compute/contrib/test_flavor_access.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"00dd9a47178c87110f3e7643f9fa4c1c437d7177","unresolved":false,"context_lines":[{"line_number":395,"context_line":"                          req, \u0027fake\u0027)"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def test_add_tenant_access_is_public(self):"},{"line_number":398,"context_line":"        # V2 don\u0027t test public before add access"},{"line_number":399,"context_line":"        pass"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_59d1b22e","line":398,"updated":"2015-07-10 12:22:30.000000000","message":"I have a feeling we should test that it doesn\u0027t do the new behaviour? Maybe thats overkill.","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"8266b9177f942b6c5f1ae39ff039dca9ee42f88c","unresolved":false,"context_lines":[{"line_number":395,"context_line":"                          req, \u0027fake\u0027)"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def test_add_tenant_access_is_public(self):"},{"line_number":398,"context_line":"        # V2 don\u0027t test public before add access"},{"line_number":399,"context_line":"        pass"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a41bdd9_43751196","line":398,"in_reply_to":"ba3cc151_22457cb2","updated":"2015-07-14 10:18:57.000000000","message":"good suggestion, will do it","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"f57b426cdb2baaf6b922adf5403907fec6b90a7e","unresolved":false,"context_lines":[{"line_number":395,"context_line":"                          req, \u0027fake\u0027)"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    def test_add_tenant_access_is_public(self):"},{"line_number":398,"context_line":"        # V2 don\u0027t test public before add access"},{"line_number":399,"context_line":"        pass"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba3cc151_22457cb2","line":398,"in_reply_to":"ba3cc151_59d1b22e","updated":"2015-07-10 21:49:54.000000000","message":"I would like to see a test that it doesn\u0027t raise an exception for version 2.6.","commit_id":"2357060c694a8c383d6004c9d1f352308e59d235"}]}
