)]}'
{"etc/nova/policy.json":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9dc5e938e069b7090173cc54dbb8c9adae323165","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    \"compute_extension:v3:os-extended-volumes:swap\": \"\","},{"line_number":130,"context_line":"    \"compute_extension:v3:os-extended-volumes:discoverable\": \"\","},{"line_number":131,"context_line":"    \"compute_extension:v3:os-extended-volumes:attach\": \"\","},{"line_number":132,"context_line":"    \"compute_extension:v3:os-extended-volumes:detach\": \"\","},{"line_number":133,"context_line":"    \"compute_extension:fixed_ips\": \"rule:admin_api\","},{"line_number":134,"context_line":"    \"compute_extension:v3:os-fixed-ips\": \"rule:admin_api\","},{"line_number":135,"context_line":"    \"compute_extension:v3:os-fixed-ips:discoverable\": \"\","}],"source_content_type":"application/json","patch_set":18,"id":"9a80dd14_cd6c8639","side":"PARENT","line":132,"updated":"2015-03-12 02:35:16.000000000","message":"The above change is not related to this change, we forgot the removal on I20e0498ec187e9feafd2bfb1aa9646426b3609af and the above does.\n\nSo we need to describe the reason of the above removal in a commit message or separate a patch from this patch.","commit_id":"3e5062a8ddf94351389f7e201959591b26f338a4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"80ec82e7450d1bd05ae9b636a6b2e11d7df00c37","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    \"compute_extension:v3:os-extended-volumes:swap\": \"\","},{"line_number":130,"context_line":"    \"compute_extension:v3:os-extended-volumes:discoverable\": \"\","},{"line_number":131,"context_line":"    \"compute_extension:v3:os-extended-volumes:attach\": \"\","},{"line_number":132,"context_line":"    \"compute_extension:v3:os-extended-volumes:detach\": \"\","},{"line_number":133,"context_line":"    \"compute_extension:fixed_ips\": \"rule:admin_api\","},{"line_number":134,"context_line":"    \"compute_extension:v3:os-fixed-ips\": \"rule:admin_api\","},{"line_number":135,"context_line":"    \"compute_extension:v3:os-fixed-ips:discoverable\": \"\","}],"source_content_type":"application/json","patch_set":18,"id":"9a80dd14_c0536d6a","side":"PARENT","line":132,"in_reply_to":"9a80dd14_cd6c8639","updated":"2015-03-12 03:10:52.000000000","message":"ok, will separated them","commit_id":"3e5062a8ddf94351389f7e201959591b26f338a4"}],"nova/api/openstack/compute/plugins/v3/extended_volumes.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"bd2498e92841ad9e31a161a8911ab246cf534061","unresolved":false,"context_lines":[{"line_number":33,"context_line":"authorize_detach \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":34,"context_line":"                                                   \u0027v3:%s:detach\u0027 % ALIAS)"},{"line_number":35,"context_line":"authorize_swap \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":36,"context_line":"                                                 \u0027v3:%s:swap\u0027 % ALIAS)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class ExtendedVolumesController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_67333af6","line":36,"updated":"2015-02-26 00:13:32.000000000","message":"Isn\u0027t necessary to change the above lines like the other patches?\nOn this kind of patches, we are using exts.os_compute_authorizer().","commit_id":"e88f04328bcef2975402beedb65f670df7fb50ae"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"46102c1244b08a36d6ad921eec2b50a575a8a05f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"authorize_detach \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":34,"context_line":"                                                   \u0027v3:%s:detach\u0027 % ALIAS)"},{"line_number":35,"context_line":"authorize_swap \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":36,"context_line":"                                                 \u0027v3:%s:swap\u0027 % ALIAS)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"class ExtendedVolumesController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":14,"id":"ba7be1f8_39296637","line":36,"in_reply_to":"ba7be1f8_67333af6","updated":"2015-02-26 00:54:06.000000000","message":"yes, we need change it, I forget it. Thanks, will update soon.","commit_id":"e88f04328bcef2975402beedb65f670df7fb50ae"}],"nova/tests/unit/api/openstack/compute/contrib/test_extended_volumes.py":[{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"3765dda4f16bcdf2937bee42a03b5fc402398c0a","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova.api.openstack.compute.plugins.v3 import (extended_volumes"},{"line_number":21,"context_line":"                                                   as extended_volumes_v21)"},{"line_number":22,"context_line":"from nova.api.openstack import wsgi"},{"line_number":23,"context_line":"from nova import compute"},{"line_number":24,"context_line":"from nova import context"},{"line_number":25,"context_line":"from nova import db"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_7c3d7a8e","line":22,"updated":"2015-02-26 11:56:04.000000000","message":"Why you imported it? where it used?","commit_id":"17293f75fdef5750d40a3799a596b2be8dffc28c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"830b9fdfa4ae0154a4b1538f2b211bb86980f8c8","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from nova.api.openstack.compute.plugins.v3 import (extended_volumes"},{"line_number":21,"context_line":"                                                   as extended_volumes_v21)"},{"line_number":22,"context_line":"from nova.api.openstack import wsgi"},{"line_number":23,"context_line":"from nova import compute"},{"line_number":24,"context_line":"from nova import context"},{"line_number":25,"context_line":"from nova import db"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba7be1f8_3aa67f54","line":22,"in_reply_to":"ba7be1f8_7c3d7a8e","updated":"2015-02-27 03:03:50.000000000","message":"yes, I forget remove it.","commit_id":"17293f75fdef5750d40a3799a596b2be8dffc28c"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"1473f36cb47b6084bff122c71285a4de46d93fd5","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        rule_name \u003d \u0027compute_extension:v3:os-extended-volumes\u0027"},{"line_number":405,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":406,"context_line":"        # Pass ResponseObj as None, the code shouldn\u0027t touch the None."},{"line_number":407,"context_line":"        self.controller.show(self.req, None, fakes.FAKE_UUID)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def test_extend_detail_policy_failed(self):"},{"line_number":410,"context_line":"        rule_name \u003d \u0027compute_extension:v3:os-extended-volumes\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_7409e6dc","line":407,"updated":"2015-02-27 06:59:44.000000000","message":"hi alex,\nI don\u0027t think this case is sufficient.\nhow about assert self._extend_server is not called if the policy is not set correctly?","commit_id":"620cd6fcafe0bbe89507f6a8f74dabd4ef93035a"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"17fc0d0df5b1783c4937dcb6bb2760f050a9e251","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        rule_name \u003d \u0027compute_extension:v3:os-extended-volumes\u0027"},{"line_number":405,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":406,"context_line":"        # Pass ResponseObj as None, the code shouldn\u0027t touch the None."},{"line_number":407,"context_line":"        self.controller.show(self.req, None, fakes.FAKE_UUID)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def test_extend_detail_policy_failed(self):"},{"line_number":410,"context_line":"        rule_name \u003d \u0027compute_extension:v3:os-extended-volumes\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_54c6a217","line":407,"in_reply_to":"ba7be1f8_149eea63","updated":"2015-02-27 07:14:10.000000000","message":"okay , I get you now.\nif pass resp_obj is None and policy is passed, then it will raise exception when try to access a None object.\nkinds of tricky\n+1..","commit_id":"620cd6fcafe0bbe89507f6a8f74dabd4ef93035a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"97e1f9b002b12adfbc2cc754c087afe688d729d6","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        rule_name \u003d \u0027compute_extension:v3:os-extended-volumes\u0027"},{"line_number":405,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":406,"context_line":"        # Pass ResponseObj as None, the code shouldn\u0027t touch the None."},{"line_number":407,"context_line":"        self.controller.show(self.req, None, fakes.FAKE_UUID)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def test_extend_detail_policy_failed(self):"},{"line_number":410,"context_line":"        rule_name \u003d \u0027compute_extension:v3:os-extended-volumes\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_149eea63","line":407,"in_reply_to":"ba7be1f8_7409e6dc","updated":"2015-02-27 07:04:14.000000000","message":"Actually I pass the resp_obj as None. If the self._extend_server executed, the code will touch the None....then this case will be failed. Does make sense to you? Thanks Alex","commit_id":"620cd6fcafe0bbe89507f6a8f74dabd4ef93035a"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"1473f36cb47b6084bff122c71285a4de46d93fd5","unresolved":false,"context_lines":[{"line_number":406,"context_line":"        # Pass ResponseObj as None, the code shouldn\u0027t touch the None."},{"line_number":407,"context_line":"        self.controller.show(self.req, None, fakes.FAKE_UUID)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def test_extend_detail_policy_failed(self):"},{"line_number":410,"context_line":"        rule_name \u003d \u0027compute_extension:v3:os-extended-volumes\u0027"},{"line_number":411,"context_line":"        self.policy.set_rules({rule_name: \"project:non_fake\"})"},{"line_number":412,"context_line":"        # Pass ResponseObj as None, the code shouldn\u0027t touch the None."}],"source_content_type":"text/x-python","patch_set":16,"id":"ba7be1f8_34ff6eac","line":409,"updated":"2015-02-27 06:59:44.000000000","message":"ditto","commit_id":"620cd6fcafe0bbe89507f6a8f74dabd4ef93035a"}]}
