)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"5d5fa1bc7cdb60714088034015f78af14350d0e9","unresolved":false,"context_lines":[{"line_number":14,"context_line":"This commit merge the flavor extensions code into main"},{"line_number":15,"context_line":"controller view."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Note: test_flavor_rxtx.py is removed as those tests are now"},{"line_number":18,"context_line":"covered in test_flavors.py"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Partially implements: blueprint api-extensions-merge-queens"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f4b6375_bf3b47c6","line":18,"range":{"start_line":17,"start_character":0,"end_line":18,"end_character":26},"updated":"2017-11-01 08:27:59.000000000","message":"I agree we can consider merge those cases, but we seems only test os_compute_api:os-flavor-access ,but not on os_compute_api:os-flavor-rxtx policy?","commit_id":"ef15908564ea43c9a0f7b287de19d4ca8faf8cc6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"bca4dcc807816f8d4cbdf451c456ee7a69527222","unresolved":false,"context_lines":[{"line_number":14,"context_line":"This commit merge the flavor extensions code into main"},{"line_number":15,"context_line":"controller view."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Note: test_flavor_rxtx.py is removed as those tests are now"},{"line_number":18,"context_line":"covered in test_flavors.py"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Partially implements: blueprint api-extensions-merge-queens"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f4b6375_1f001b67","line":18,"range":{"start_line":17,"start_character":0,"end_line":18,"end_character":26},"in_reply_to":"3f4b6375_bf3b47c6","updated":"2017-11-01 08:53:05.000000000","message":"i think we can add those but separately as those are missing. First we can get those merge and improve coverage later if needed.","commit_id":"ef15908564ea43c9a0f7b287de19d4ca8faf8cc6"}],"nova/api/openstack/compute/views/flavors.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"87f0064c2c9e72079cd338b3dce94a5a63599567","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            },"},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def show(self, request, flavor, enforce_policy\u003dFalse):"},{"line_number":37,"context_line":"        flavor_dict \u003d {"},{"line_number":38,"context_line":"            \"flavor\": {"},{"line_number":39,"context_line":"                \"id\": flavor[\"flavorid\"],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_9068a321","line":36,"range":{"start_line":36,"start_character":36,"end_line":36,"end_character":56},"updated":"2017-10-31 02:16:02.000000000","message":"Where we set the \u0027enforce_policy\u0027 as False, I didn\u0027t found anywhere use it as False, I may missed something.","commit_id":"d2741d335c4a769d14f7354c8cc789fbb12280b6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b53e7af04b084806004bf9c079401b24e448f45c","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            },"},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def show(self, request, flavor, enforce_policy\u003dFalse):"},{"line_number":37,"context_line":"        flavor_dict \u003d {"},{"line_number":38,"context_line":"            \"flavor\": {"},{"line_number":39,"context_line":"                \"id\": flavor[\"flavorid\"],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_e6f16103","line":36,"range":{"start_line":36,"start_character":36,"end_line":36,"end_character":56},"in_reply_to":"3f4b6375_0b0928dc","updated":"2017-10-31 04:28:36.000000000","message":"done","commit_id":"d2741d335c4a769d14f7354c8cc789fbb12280b6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"21830739962255d09feac5a65f95fc55e26664ef","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            },"},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def show(self, request, flavor, enforce_policy\u003dFalse):"},{"line_number":37,"context_line":"        flavor_dict \u003d {"},{"line_number":38,"context_line":"            \"flavor\": {"},{"line_number":39,"context_line":"                \"id\": flavor[\"flavorid\"],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_f0b6b78a","line":36,"range":{"start_line":36,"start_character":36,"end_line":36,"end_character":56},"in_reply_to":"3f4b6375_9068a321","updated":"2017-10-31 02:23:53.000000000","message":"yea, it is not anywhere till now. I made this False by default because of 2 reason: \n1. we are going to deprecate these policies soon\n2. any API using this view method (PUT flavor in [1]) should not be enforced to policy by default. they need to explicitly tell they want to have policy control over extended attribute.   \n\nkeeping it True here might enforce policy in hidden way. \n\n..1 https://review.openstack.org/#/c/515213/","commit_id":"d2741d335c4a769d14f7354c8cc789fbb12280b6"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"9eb7d500dab0853677867146fddf4f0d89660585","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            },"},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def show(self, request, flavor, enforce_policy\u003dFalse):"},{"line_number":37,"context_line":"        flavor_dict \u003d {"},{"line_number":38,"context_line":"            \"flavor\": {"},{"line_number":39,"context_line":"                \"id\": flavor[\"flavorid\"],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_0b0928dc","line":36,"range":{"start_line":36,"start_character":36,"end_line":36,"end_character":56},"in_reply_to":"3f4b6375_f0b6b78a","updated":"2017-10-31 02:41:12.000000000","message":"I feel this shouldn\u0027t be part of your patch, since your patch only uses the True value at here.","commit_id":"d2741d335c4a769d14f7354c8cc789fbb12280b6"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"5d5fa1bc7cdb60714088034015f78af14350d0e9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        update_rxtx_factor \u003d context.can(fr_policies.BASE_POLICY_NAME,"},{"line_number":56,"context_line":"                                         fatal\u003dFalse)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        # NOTE(gmann): After above policy are removed, \u0027is_public\u0027 and"},{"line_number":59,"context_line":"        # \u0027rxtx_factor\u0027 needs to be added in response without any check."},{"line_number":60,"context_line":"        if update_is_public:"},{"line_number":61,"context_line":"            flavor_dict[\u0027flavor\u0027].update({"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_e48816c7","line":58,"range":{"start_line":58,"start_character":55,"end_line":58,"end_character":66},"updated":"2017-11-01 08:27:59.000000000","message":"better use os-flavor-access:is_public","commit_id":"ef15908564ea43c9a0f7b287de19d4ca8faf8cc6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"15cc378a124eba3dda95226ffea92320b85cabc0","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        if update_is_public:"},{"line_number":62,"context_line":"            flavor_dict[\u0027flavor\u0027].update({"},{"line_number":63,"context_line":"                \"os-flavor-access:is_public\": flavor[\u0027is_public\u0027]})"},{"line_number":64,"context_line":"        if update_rxtx_factor:"},{"line_number":65,"context_line":"            flavor_dict[\u0027flavor\u0027].update("},{"line_number":66,"context_line":"                {\"rxtx_factor\": flavor[\u0027rxtx_factor\u0027] or \"\"})"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        return flavor_dict"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_c3103b51","line":66,"range":{"start_line":64,"start_character":8,"end_line":66,"end_character":61},"updated":"2017-11-02 18:26:40.000000000","message":"Do we have a test for when update_rxtx_factor is False so rxtx_factor is not in the response?","commit_id":"dcde1e4f80f7ae3378a3ed34203f2a1c6a58d78f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"838ba84036de26aa5e88f08cdaffdd301536537f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        if update_is_public:"},{"line_number":62,"context_line":"            flavor_dict[\u0027flavor\u0027].update({"},{"line_number":63,"context_line":"                \"os-flavor-access:is_public\": flavor[\u0027is_public\u0027]})"},{"line_number":64,"context_line":"        if update_rxtx_factor:"},{"line_number":65,"context_line":"            flavor_dict[\u0027flavor\u0027].update("},{"line_number":66,"context_line":"                {\"rxtx_factor\": flavor[\u0027rxtx_factor\u0027] or \"\"})"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        return flavor_dict"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_edcbc46e","line":66,"range":{"start_line":64,"start_character":8,"end_line":66,"end_character":61},"in_reply_to":"3f4b6375_c3103b51","updated":"2017-11-08 03:55:03.000000000","message":"i think no, let me add  one. But current policy test are not what we expect which needs improvement and ll start those sometime. But anyways let\u0027s cover this case in current coverage at least.","commit_id":"dcde1e4f80f7ae3378a3ed34203f2a1c6a58d78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"15cc378a124eba3dda95226ffea92320b85cabc0","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def detail(self, request, flavors):"},{"line_number":76,"context_line":"        \"\"\"Return the \u0027detail\u0027 view of flavors.\"\"\""},{"line_number":77,"context_line":"        coll_name \u003d self._collection_name + \u0027/detail\u0027"},{"line_number":78,"context_line":"        return self._list_view(self.show, request, flavors, coll_name)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _list_view(self, func, request, flavors, coll_name):"},{"line_number":81,"context_line":"        \"\"\"Provide a view for a list of flavors."}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_10a1f746","line":78,"range":{"start_line":78,"start_character":31,"end_line":78,"end_character":40},"updated":"2017-11-02 18:26:40.000000000","message":"This means we\u0027re going to be checking the flavor_access and rxtx policies for each flavor in a loop, which is bad for performance since the policy check reads from a file every time.\n\nLook at change I036623ae7409c2e6c6a754b4c8d5c9120f777774 for example.\n\nIf we\u0027re iterating over a list of flavors, we should check the policies up front and pass those in as boolean parameters to the show() method, something like show_is_public, show_rxtx_factor, etc.","commit_id":"dcde1e4f80f7ae3378a3ed34203f2a1c6a58d78f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"838ba84036de26aa5e88f08cdaffdd301536537f","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def detail(self, request, flavors):"},{"line_number":76,"context_line":"        \"\"\"Return the \u0027detail\u0027 view of flavors.\"\"\""},{"line_number":77,"context_line":"        coll_name \u003d self._collection_name + \u0027/detail\u0027"},{"line_number":78,"context_line":"        return self._list_view(self.show, request, flavors, coll_name)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _list_view(self, func, request, flavors, coll_name):"},{"line_number":81,"context_line":"        \"\"\"Provide a view for a list of flavors."}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_cd18081f","line":78,"range":{"start_line":78,"start_character":31,"end_line":78,"end_character":40},"in_reply_to":"3f4b6375_10a1f746","updated":"2017-11-08 03:55:03.000000000","message":"yea i thought about that but was just skipping that as those policies are going away soon but that\u0027s 1 cycle.\n\nI will change that. thanks","commit_id":"dcde1e4f80f7ae3378a3ed34203f2a1c6a58d78f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"77ced2524f045a59f1f10b22f8e3c1ef52702b93","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def detail(self, request, flavors):"},{"line_number":76,"context_line":"        \"\"\"Return the \u0027detail\u0027 view of flavors.\"\"\""},{"line_number":77,"context_line":"        coll_name \u003d self._collection_name + \u0027/detail\u0027"},{"line_number":78,"context_line":"        return self._list_view(self.show, request, flavors, coll_name)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _list_view(self, func, request, flavors, coll_name):"},{"line_number":81,"context_line":"        \"\"\"Provide a view for a list of flavors."}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_5e35dcf5","line":78,"range":{"start_line":78,"start_character":31,"end_line":78,"end_character":40},"in_reply_to":"3f4b6375_cd18081f","updated":"2017-11-08 08:30:28.000000000","message":"ah, I should keep that in mind","commit_id":"dcde1e4f80f7ae3378a3ed34203f2a1c6a58d78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b3354aed0ddf42468e5e52852b04dae13b42d2f5","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    _collection_name \u003d \"flavors\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def basic(self, request, flavor, include_description\u003dFalse,"},{"line_number":29,"context_line":"              update_is_public\u003dFalse, update_rxtx_factor\u003dFalse):"},{"line_number":30,"context_line":"        flavor_dict \u003d {"},{"line_number":31,"context_line":"            \"flavor\": {"},{"line_number":32,"context_line":"                \"id\": flavor[\"flavorid\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f485f77_52e877e0","line":29,"updated":"2017-11-17 00:36:47.000000000","message":"nit: might be good to have a note in here that these are never used since basic() is used by index() and we never return those keys in the response for GET /flavors, only GET /flavors/detail.","commit_id":"46bfea440c7cddbfdfc30298d1c67c0423ef52ed"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f8ae0d6fb109e1de4744870392ee36e81f60cbf7","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    _collection_name \u003d \"flavors\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def basic(self, request, flavor, include_description\u003dFalse,"},{"line_number":29,"context_line":"              update_is_public\u003dFalse, update_rxtx_factor\u003dFalse):"},{"line_number":30,"context_line":"        flavor_dict \u003d {"},{"line_number":31,"context_line":"            \"flavor\": {"},{"line_number":32,"context_line":"                \"id\": flavor[\"flavorid\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f485f77_cb6152ab","line":29,"in_reply_to":"1f485f77_52e877e0","updated":"2017-11-17 03:54:32.000000000","message":"Done","commit_id":"46bfea440c7cddbfdfc30298d1c67c0423ef52ed"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b3354aed0ddf42468e5e52852b04dae13b42d2f5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        return flavor_dict"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def show(self, request, flavor, include_description\u003dFalse,"},{"line_number":46,"context_line":"             update_is_public\u003dFalse, update_rxtx_factor\u003dFalse):"},{"line_number":47,"context_line":"        flavor_dict \u003d {"},{"line_number":48,"context_line":"            \"flavor\": {"},{"line_number":49,"context_line":"                \"id\": flavor[\"flavorid\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f485f77_32ce1b82","line":46,"updated":"2017-11-17 00:36:47.000000000","message":"We could follow how the servers view builder does this and default these to None, which means, this code would do the policy check. If a boolean value is passed, like in the case of detail(), then we wouldn\u0027t check the policy in this method.\n\nThen we wouldn\u0027t have to change flavor-manage to do the policy check for both create() and update() - it\u0027s just a lot of duplicated policy check code.","commit_id":"46bfea440c7cddbfdfc30298d1c67c0423ef52ed"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f8ae0d6fb109e1de4744870392ee36e81f60cbf7","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        return flavor_dict"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def show(self, request, flavor, include_description\u003dFalse,"},{"line_number":46,"context_line":"             update_is_public\u003dFalse, update_rxtx_factor\u003dFalse):"},{"line_number":47,"context_line":"        flavor_dict \u003d {"},{"line_number":48,"context_line":"            \"flavor\": {"},{"line_number":49,"context_line":"                \"id\": flavor[\"flavorid\"],"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f485f77_cb06f2ce","line":46,"in_reply_to":"1f485f77_32ce1b82","updated":"2017-11-17 03:54:32.000000000","message":"yea we can do that. I did not put policy checks by default in show method in case new user of this method does not want to check those policy like PUT flavor but that API also need so we can add policy checks here only.","commit_id":"46bfea440c7cddbfdfc30298d1c67c0423ef52ed"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"66dcb2a8c5e912c13c91fdae643e266f7166b814","unresolved":false,"context_lines":[{"line_number":29,"context_line":"              update_is_public\u003dNone, update_rxtx_factor\u003dNone):"},{"line_number":30,"context_line":"        # update_is_public \u0026 update_rxtx_factor are placeholder param"},{"line_number":31,"context_line":"        # which are not used in this method as basic() method is used by"},{"line_number":32,"context_line":"        # index() which does not return those keys in response."},{"line_number":33,"context_line":"        flavor_dict \u003d {"},{"line_number":34,"context_line":"            \"flavor\": {"},{"line_number":35,"context_line":"                \"id\": flavor[\"flavorid\"],"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff82abbf_0a47cd4d","line":32,"range":{"start_line":32,"start_character":10,"end_line":32,"end_character":17},"updated":"2017-11-20 19:34:24.000000000","message":"nit: I\u0027d add \"index() (GET /flavors) which does not...\" to be a bit more clear here, but it\u0027s OK.","commit_id":"8b502ebf25854ef6d12140ec2be9a722d3d96d36"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"66dcb2a8c5e912c13c91fdae643e266f7166b814","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        context \u003d request.environ[\u0027nova.context\u0027]"},{"line_number":76,"context_line":"        if update_is_public is None:"},{"line_number":77,"context_line":"            update_is_public \u003d context.can(fa_policies.BASE_POLICY_NAME,"},{"line_number":78,"context_line":"                                       fatal\u003dFalse)"},{"line_number":79,"context_line":"        if update_rxtx_factor is None:"},{"line_number":80,"context_line":"            update_rxtx_factor \u003d context.can(fr_policies.BASE_POLICY_NAME,"},{"line_number":81,"context_line":"                                         fatal\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff82abbf_6a6f79c5","line":78,"updated":"2017-11-20 19:34:24.000000000","message":"alignment","commit_id":"8b502ebf25854ef6d12140ec2be9a722d3d96d36"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"66dcb2a8c5e912c13c91fdae643e266f7166b814","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                                       fatal\u003dFalse)"},{"line_number":79,"context_line":"        if update_rxtx_factor is None:"},{"line_number":80,"context_line":"            update_rxtx_factor \u003d context.can(fr_policies.BASE_POLICY_NAME,"},{"line_number":81,"context_line":"                                         fatal\u003dFalse)"},{"line_number":82,"context_line":"        if update_is_public:"},{"line_number":83,"context_line":"            flavor_dict[\u0027flavor\u0027].update({"},{"line_number":84,"context_line":"                \"os-flavor-access:is_public\": flavor[\u0027is_public\u0027]})"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff82abbf_8a743d9b","line":81,"updated":"2017-11-20 19:34:24.000000000","message":"same","commit_id":"8b502ebf25854ef6d12140ec2be9a722d3d96d36"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"66dcb2a8c5e912c13c91fdae643e266f7166b814","unresolved":false,"context_lines":[{"line_number":121,"context_line":"        :param flavors: List of flavors in dictionary format"},{"line_number":122,"context_line":"        :param coll_name: Name of collection, used to generate the next link"},{"line_number":123,"context_line":"                          for a pagination query"},{"line_number":124,"context_line":"        :param include_description: If the flavor.description should be"},{"line_number":125,"context_line":"                                    included in the response dict."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        :returns: Flavor reply data in dictionary format"},{"line_number":128,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ff82abbf_ca880573","line":125,"range":{"start_line":124,"start_character":8,"end_line":125,"end_character":66},"updated":"2017-11-20 19:34:24.000000000","message":"Should probably add a param to the docstring to keep this consistent.","commit_id":"8b502ebf25854ef6d12140ec2be9a722d3d96d36"}],"nova/tests/unit/api/openstack/compute/test_flavor_access.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"48321e845a711c4c03f1f430a4a76045dca532c6","unresolved":false,"context_lines":[{"line_number":405,"context_line":"            \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":406,"context_line":"            exc.format_message())"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def test_extend_show_policy_failed(self):"},{"line_number":409,"context_line":"        rule_name \u003d \"os_compute_api:os-flavor-access\""},{"line_number":410,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":411,"context_line":"        self.flavor_controller.show(self.req, \u00271\u0027)"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    def test_extend_detail_policy_failed(self):"},{"line_number":414,"context_line":"        rule_name \u003d \"os_compute_api:os-flavor-access\""},{"line_number":415,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":416,"context_line":"        self.flavor_controller.detail(self.req)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def test_index_policy_failed(self):"},{"line_number":419,"context_line":"        rule_name \u003d \"os_compute_api:os-flavor-access\""},{"line_number":420,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":421,"context_line":"        exc \u003d self.assertRaises("},{"line_number":422,"context_line":"            exception.PolicyNotAuthorized,"},{"line_number":423,"context_line":"            self.access_controller.index, self.req,"},{"line_number":424,"context_line":"            fakes.FAKE_UUID)"},{"line_number":425,"context_line":"        self.assertEqual("},{"line_number":426,"context_line":"            \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":427,"context_line":"            exc.format_message())"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_a02a2a7b","line":427,"range":{"start_line":408,"start_character":8,"end_line":427,"end_character":33},"updated":"2017-10-31 08:26:02.000000000","message":"should we merge those to the test_flavors.py?","commit_id":"a406732478e61d43752774d630425d43cc51f00e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"26885f6629f3222a5b8b90358fb772894be5947f","unresolved":false,"context_lines":[{"line_number":405,"context_line":"            \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":406,"context_line":"            exc.format_message())"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def test_extend_show_policy_failed(self):"},{"line_number":409,"context_line":"        rule_name \u003d \"os_compute_api:os-flavor-access\""},{"line_number":410,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":411,"context_line":"        self.flavor_controller.show(self.req, \u00271\u0027)"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    def test_extend_detail_policy_failed(self):"},{"line_number":414,"context_line":"        rule_name \u003d \"os_compute_api:os-flavor-access\""},{"line_number":415,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":416,"context_line":"        self.flavor_controller.detail(self.req)"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"    def test_index_policy_failed(self):"},{"line_number":419,"context_line":"        rule_name \u003d \"os_compute_api:os-flavor-access\""},{"line_number":420,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":421,"context_line":"        exc \u003d self.assertRaises("},{"line_number":422,"context_line":"            exception.PolicyNotAuthorized,"},{"line_number":423,"context_line":"            self.access_controller.index, self.req,"},{"line_number":424,"context_line":"            fakes.FAKE_UUID)"},{"line_number":425,"context_line":"        self.assertEqual("},{"line_number":426,"context_line":"            \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":427,"context_line":"            exc.format_message())"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4b6375_f6710546","line":427,"range":{"start_line":408,"start_character":8,"end_line":427,"end_character":33},"in_reply_to":"3f4b6375_a02a2a7b","updated":"2017-10-31 11:47:03.000000000","message":"we can do that, i think that much cleaner.","commit_id":"a406732478e61d43752774d630425d43cc51f00e"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"aadd28737da884c89a5e82c9e2d2fcf074b5734e","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        super(FlavorAccessPolicyEnforcementV21, self).setUp()"},{"line_number":375,"context_line":"        self.act_controller \u003d flavor_access_v21.FlavorActionController()"},{"line_number":376,"context_line":"        self.access_controller \u003d flavor_access_v21.FlavorAccessController()"},{"line_number":377,"context_line":"        self.flavor_controller \u003d flavors_api.FlavorsController()"},{"line_number":378,"context_line":"        self.stub_out(\u0027nova.objects.Flavor._flavor_get_by_flavor_id_from_db\u0027,"},{"line_number":379,"context_line":"                      fake_get_flavor_by_flavor_id)"},{"line_number":380,"context_line":"        self.stub_out(\u0027nova.objects.flavor._flavor_get_all_from_db\u0027,"},{"line_number":381,"context_line":"                      fake_get_all_flavors_sorted_list)"},{"line_number":382,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    def test_add_tenant_access_policy_failed(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_b755ab52","line":381,"range":{"start_line":377,"start_character":7,"end_line":381,"end_character":55},"updated":"2017-11-01 11:06:16.000000000","message":"I guess you forget to remove this.","commit_id":"ef15908564ea43c9a0f7b287de19d4ca8faf8cc6"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"546ca54e2effff35e96c74ee4bdaadee9f57fac0","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        super(FlavorAccessPolicyEnforcementV21, self).setUp()"},{"line_number":375,"context_line":"        self.act_controller \u003d flavor_access_v21.FlavorActionController()"},{"line_number":376,"context_line":"        self.access_controller \u003d flavor_access_v21.FlavorAccessController()"},{"line_number":377,"context_line":"        self.flavor_controller \u003d flavors_api.FlavorsController()"},{"line_number":378,"context_line":"        self.stub_out(\u0027nova.objects.Flavor._flavor_get_by_flavor_id_from_db\u0027,"},{"line_number":379,"context_line":"                      fake_get_flavor_by_flavor_id)"},{"line_number":380,"context_line":"        self.stub_out(\u0027nova.objects.flavor._flavor_get_all_from_db\u0027,"},{"line_number":381,"context_line":"                      fake_get_all_flavors_sorted_list)"},{"line_number":382,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    def test_add_tenant_access_policy_failed(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_1d724e4a","line":381,"range":{"start_line":377,"start_character":7,"end_line":381,"end_character":55},"in_reply_to":"3f4b6375_b755ab52","updated":"2017-11-01 23:28:10.000000000","message":"oh, thanks","commit_id":"ef15908564ea43c9a0f7b287de19d4ca8faf8cc6"}],"nova/tests/unit/api/openstack/compute/test_flavors.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"15cc378a124eba3dda95226ffea92320b85cabc0","unresolved":false,"context_lines":[{"line_number":508,"context_line":"    def test_extend_show_policy_failed(self):"},{"line_number":509,"context_line":"        rule_name \u003d \"os_compute_api:os-flavor-access\""},{"line_number":510,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":511,"context_line":"        self.flavor_controller.show(self.req, \u00271\u0027)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def test_extend_detail_policy_failed(self):"},{"line_number":514,"context_line":"        rule_name \u003d \"os_compute_api:os-flavor-access\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_d00b5f27","line":511,"updated":"2017-11-02 18:26:40.000000000","message":"Were you going to assert that is_public is not in the response?","commit_id":"dcde1e4f80f7ae3378a3ed34203f2a1c6a58d78f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"838ba84036de26aa5e88f08cdaffdd301536537f","unresolved":false,"context_lines":[{"line_number":508,"context_line":"    def test_extend_show_policy_failed(self):"},{"line_number":509,"context_line":"        rule_name \u003d \"os_compute_api:os-flavor-access\""},{"line_number":510,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":511,"context_line":"        self.flavor_controller.show(self.req, \u00271\u0027)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"    def test_extend_detail_policy_failed(self):"},{"line_number":514,"context_line":"        rule_name \u003d \"os_compute_api:os-flavor-access\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_0dd18023","line":511,"in_reply_to":"3f4b6375_d00b5f27","updated":"2017-11-08 03:55:03.000000000","message":"these tests are not actually doing what we expect from these policies test as we do not pass project target in policy checks.\n\nbut i will check if we can make that rule fail and check no is_public in response.","commit_id":"dcde1e4f80f7ae3378a3ed34203f2a1c6a58d78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"15cc378a124eba3dda95226ffea92320b85cabc0","unresolved":false,"context_lines":[{"line_number":513,"context_line":"    def test_extend_detail_policy_failed(self):"},{"line_number":514,"context_line":"        rule_name \u003d \"os_compute_api:os-flavor-access\""},{"line_number":515,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":516,"context_line":"        self.flavor_controller.detail(self.req)"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"class DisabledFlavorsWithRealDBTestV21(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_b0046319","line":516,"updated":"2017-11-02 18:26:40.000000000","message":"same","commit_id":"dcde1e4f80f7ae3378a3ed34203f2a1c6a58d78f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b3354aed0ddf42468e5e52852b04dae13b42d2f5","unresolved":false,"context_lines":[{"line_number":527,"context_line":"    expect_description \u003d True"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"class FlavorsPolicyEnforcementV21(test.NoDBTestCase):"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def setUp(self):"},{"line_number":533,"context_line":"        super(FlavorsPolicyEnforcementV21, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f485f77_32a17b95","line":530,"range":{"start_line":530,"start_character":6,"end_line":530,"end_character":33},"updated":"2017-11-17 00:36:47.000000000","message":"Why don\u0027t we have similar tests for disabling both policies and running the create and update methods, and verifying that the values aren\u0027t in the response?","commit_id":"46bfea440c7cddbfdfc30298d1c67c0423ef52ed"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f8ae0d6fb109e1de4744870392ee36e81f60cbf7","unresolved":false,"context_lines":[{"line_number":527,"context_line":"    expect_description \u003d True"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"class FlavorsPolicyEnforcementV21(test.NoDBTestCase):"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def setUp(self):"},{"line_number":533,"context_line":"        super(FlavorsPolicyEnforcementV21, self).setUp()"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f485f77_4bfa02bd","line":530,"range":{"start_line":530,"start_character":6,"end_line":530,"end_character":33},"in_reply_to":"1f485f77_32a17b95","updated":"2017-11-17 03:54:32.000000000","message":"done","commit_id":"46bfea440c7cddbfdfc30298d1c67c0423ef52ed"}]}
