)]}'
{"nova/api/openstack/compute/access_ips.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"d4e11c418333899e116ed7611430cc4013b7ba5b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @wsgi.extends"},{"line_number":32,"context_line":"    def show(self, req, resp_obj, id):"},{"line_number":33,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":34,"context_line":"        if context.can(access_ips_policies.get_name()):"},{"line_number":35,"context_line":"            server \u003d resp_obj.obj[\u0027server\u0027]"},{"line_number":36,"context_line":"            self._extend_server(req, server)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_c45f8d3f","line":34,"updated":"2016-06-23 13:10:37.000000000","message":"This is a soft authorizer so it shouldn\u0027t be switched to just using can(). In talking with sdague on irc we were thinking that can should have a \u0027fatal\u003dTrue\u0027 default parameter that affects whether it raises an exception or returns True/False. Then soft authorization just needs to pass fatal\u003dFalse.","commit_id":"4256d4d48fb2466b9a2b34b63cd7bdea79a2045e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f1bc07254c6710fd92afa458433dbc2b69b94dfe","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @wsgi.extends"},{"line_number":32,"context_line":"    def show(self, req, resp_obj, id):"},{"line_number":33,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":34,"context_line":"        if context.can(access_ips_policies.get_name()):"},{"line_number":35,"context_line":"            server \u003d resp_obj.obj[\u0027server\u0027]"},{"line_number":36,"context_line":"            self._extend_server(req, server)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3aaa91ec_979f754f","line":34,"in_reply_to":"3aaa91ec_c45f8d3f","updated":"2016-06-23 13:20:50.000000000","message":"+1\n\nWhat about ensure_allowed vs is_allowed? Hmm, feels too wordy.","commit_id":"4256d4d48fb2466b9a2b34b63cd7bdea79a2045e"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"392fcfd4bfd75abbeba36472b2a39e247784baa2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @wsgi.extends"},{"line_number":32,"context_line":"    def show(self, req, resp_obj, id):"},{"line_number":33,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":34,"context_line":"        if context.can(access_ips_policies.BASE_POLICY_NAME, False):"},{"line_number":35,"context_line":"            server \u003d resp_obj.obj[\u0027server\u0027]"},{"line_number":36,"context_line":"            self._extend_server(req, server)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_3154b81f","line":34,"updated":"2016-06-23 19:12:47.000000000","message":"yeah, it should be force\u003dFalse, as it is the 3rd argument.","commit_id":"df5802c19211678114859099a6d0704780d8c924"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"71e3ae3d800abd3845dafc6378fe93e73b525d75","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @wsgi.extends"},{"line_number":32,"context_line":"    def show(self, req, resp_obj, id):"},{"line_number":33,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":34,"context_line":"        if context.can(access_ips_policies.BASE_POLICY_NAME, False):"},{"line_number":35,"context_line":"            server \u003d resp_obj.obj[\u0027server\u0027]"},{"line_number":36,"context_line":"            self._extend_server(req, server)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_b8d34b03","line":34,"in_reply_to":"3aaa91ec_313e5b28","updated":"2016-06-24 10:36:22.000000000","message":"I will have to omit this file anyways, since access_ips will be removed.","commit_id":"df5802c19211678114859099a6d0704780d8c924"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"6a7788b80cd359f11f470dc988642ab75821a076","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @wsgi.extends"},{"line_number":32,"context_line":"    def show(self, req, resp_obj, id):"},{"line_number":33,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":34,"context_line":"        if context.can(access_ips_policies.BASE_POLICY_NAME, False):"},{"line_number":35,"context_line":"            server \u003d resp_obj.obj[\u0027server\u0027]"},{"line_number":36,"context_line":"            self._extend_server(req, server)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_d6bb8de3","line":34,"in_reply_to":"3aaa91ec_3154b81f","updated":"2016-06-24 08:53:38.000000000","message":"yeah, target is omitted","commit_id":"df5802c19211678114859099a6d0704780d8c924"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f6a2f35d02c599520a942657959cca77c6b1c528","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    @wsgi.extends"},{"line_number":32,"context_line":"    def show(self, req, resp_obj, id):"},{"line_number":33,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":34,"context_line":"        if context.can(access_ips_policies.BASE_POLICY_NAME, False):"},{"line_number":35,"context_line":"            server \u003d resp_obj.obj[\u0027server\u0027]"},{"line_number":36,"context_line":"            self._extend_server(req, server)"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_313e5b28","line":34,"in_reply_to":"3aaa91ec_d6bb8de3","updated":"2016-06-24 09:12:04.000000000","message":"I also quite like using the named arg so its clear what is happening.","commit_id":"df5802c19211678114859099a6d0704780d8c924"}],"nova/api/openstack/compute/admin_actions.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"e435ecabec2aa46b6832c90ab8b9ae0b39cfdbdc","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova import compute"},{"line_number":23,"context_line":"from nova.compute import vm_states"},{"line_number":24,"context_line":"from nova import exception"},{"line_number":25,"context_line":"from nova.policies import admin_actions as admin_actions_policies"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"ALIAS \u003d \"os-admin-actions\""},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_46d408bc","line":25,"range":{"start_line":25,"start_character":43,"end_line":25,"end_character":56},"updated":"2016-06-24 11:34:34.000000000","message":"this gets a little cumbersome, what about aa_policies instead?","commit_id":"ba32997165cafde4c18a5131dd6808c961f19b3f"}],"nova/api/openstack/compute/availability_zone.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"e435ecabec2aa46b6832c90ab8b9ae0b39cfdbdc","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from nova import availability_zones"},{"line_number":19,"context_line":"import nova.conf"},{"line_number":20,"context_line":"from nova import objects"},{"line_number":21,"context_line":"from nova.policies import availability_zone as az_policies"},{"line_number":22,"context_line":"from nova import servicegroup"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF \u003d nova.conf.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_6658248b","line":21,"range":{"start_line":21,"start_character":47,"end_line":21,"end_character":58},"updated":"2016-06-24 11:34:34.000000000","message":"I actually like this model for shortening, and I think we should use it in the other patches. Like aa_policies, ai_policies, etc.","commit_id":"ba32997165cafde4c18a5131dd6808c961f19b3f"}],"nova/context.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"6a7788b80cd359f11f470dc988642ab75821a076","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        return context"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def can(self, rule, target\u003dNone, fatal\u003dTrue):"},{"line_number":222,"context_line":"        if target is None:"},{"line_number":223,"context_line":"            target \u003d {\u0027project_id\u0027: self.project_id,"},{"line_number":224,"context_line":"                      \u0027user_id\u0027: self.user_id}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_f685e9ce","line":221,"range":{"start_line":221,"start_character":37,"end_line":221,"end_character":42},"updated":"2016-06-24 08:53:38.000000000","message":"this is force?","commit_id":"df5802c19211678114859099a6d0704780d8c924"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"2040f6f4e395dda823c85d957ad9e80685e49c88","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        return context"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def can(self, rule, target\u003dNone, fatal\u003dTrue):"},{"line_number":222,"context_line":"        if target is None:"},{"line_number":223,"context_line":"            target \u003d {\u0027project_id\u0027: self.project_id,"},{"line_number":224,"context_line":"                      \u0027user_id\u0027: self.user_id}"}],"source_content_type":"text/x-python","patch_set":4,"id":"3aaa91ec_986c8f36","line":221,"range":{"start_line":221,"start_character":37,"end_line":221,"end_character":42},"in_reply_to":"3aaa91ec_f685e9ce","updated":"2016-06-24 10:38:23.000000000","message":"yep. sorry. I forgot how it was named.","commit_id":"df5802c19211678114859099a6d0704780d8c924"}],"nova/tests/unit/test_context.py":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"492eca347fd681fb5b55f446c47067097350071f","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_context import fixture as o_fixture"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from nova import context"},{"line_number":20,"context_line":"from nova import exception"},{"line_number":21,"context_line":"from nova import objects"},{"line_number":22,"context_line":"from nova import test"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_c14902b9","line":20,"updated":"2016-06-24 11:57:11.000000000","message":"hm, should be moved to part 2.","commit_id":"ba32997165cafde4c18a5131dd6808c961f19b3f"}]}
