)]}'
{"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"bf2fafc7351c37bbaa4c6b417c56064e6e372637","unresolved":false,"context_lines":[{"line_number":782,"context_line":"            # new scope check after we fetch the target."},{"line_number":783,"context_line":"            context.check_scope(scope\u003d{\u0027project_id\u0027: instance.project_id})"},{"line_number":784,"context_line":"        except exception.PolicyNotAuthorized:"},{"line_number":785,"context_line":"            # NOTE(johngarbutt) don\u0027t leak that this server exists with 403"},{"line_number":786,"context_line":"            msg \u003d _(\"Instance could not be found\")"},{"line_number":787,"context_line":"            # TODO(johngarbutt) should share code so message always the same"},{"line_number":788,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_287e1a19","line":785,"updated":"2017-02-23 19:09:44.000000000","message":"Why wouldn\u0027t we use exc.HTTPForbidden for all exception.PolicyNotAuthorized exceptions?","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"88a71f92f3405bac4776d184b032ef11805ff1d0","unresolved":false,"context_lines":[{"line_number":782,"context_line":"            # new scope check after we fetch the target."},{"line_number":783,"context_line":"            context.check_scope(scope\u003d{\u0027project_id\u0027: instance.project_id})"},{"line_number":784,"context_line":"        except exception.PolicyNotAuthorized:"},{"line_number":785,"context_line":"            # NOTE(johngarbutt) don\u0027t leak that this server exists with 403"},{"line_number":786,"context_line":"            msg \u003d _(\"Instance could not be found\")"},{"line_number":787,"context_line":"            # TODO(johngarbutt) should share code so message always the same"},{"line_number":788,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_43270712","line":785,"in_reply_to":"da36d5c6_287e1a19","updated":"2017-03-08 15:13:54.000000000","message":"Don\u0027t want people to probe for valid server uuids. And we used to return 404 before.","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c3ea7d53df5467ee4641a486a7610f86085626ab","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            # NOTE(johngarbutt) don\u0027t leak that this server exists with 403"},{"line_number":786,"context_line":"            msg \u003d _(\"Instance could not be found\")"},{"line_number":787,"context_line":"            # TODO(johngarbutt) should share code so message always the same"},{"line_number":788,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        if CONF.reclaim_instance_interval:"},{"line_number":791,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_d23291a6","line":788,"range":{"start_line":788,"start_character":12,"end_line":788,"end_character":51},"updated":"2017-02-23 18:21:04.000000000","message":"For \u0027context.can\u0027, we still need to return 401?","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"88a71f92f3405bac4776d184b032ef11805ff1d0","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            # NOTE(johngarbutt) don\u0027t leak that this server exists with 403"},{"line_number":786,"context_line":"            msg \u003d _(\"Instance could not be found\")"},{"line_number":787,"context_line":"            # TODO(johngarbutt) should share code so message always the same"},{"line_number":788,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        if CONF.reclaim_instance_interval:"},{"line_number":791,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_238773d8","line":788,"range":{"start_line":788,"start_character":12,"end_line":788,"end_character":51},"in_reply_to":"ba2be162_d7df9fd3","updated":"2017-03-08 15:13:54.000000000","message":"Currently we already return 404 for these failures.","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c6083d280af4809fa3d209513e0e2e05a5ba6dfd","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            # NOTE(johngarbutt) don\u0027t leak that this server exists with 403"},{"line_number":786,"context_line":"            msg \u003d _(\"Instance could not be found\")"},{"line_number":787,"context_line":"            # TODO(johngarbutt) should share code so message always the same"},{"line_number":788,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        if CONF.reclaim_instance_interval:"},{"line_number":791,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_ed431811","line":788,"range":{"start_line":788,"start_character":12,"end_line":788,"end_character":51},"in_reply_to":"da36d5c6_0d0c083a","updated":"2017-02-24 13:57:08.000000000","message":"We should put this lower down, and say sensitive_check\u003dTrue","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"874b4daf44aa36836635010d2faa40b97e33330d","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            # NOTE(johngarbutt) don\u0027t leak that this server exists with 403"},{"line_number":786,"context_line":"            msg \u003d _(\"Instance could not be found\")"},{"line_number":787,"context_line":"            # TODO(johngarbutt) should share code so message always the same"},{"line_number":788,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        if CONF.reclaim_instance_interval:"},{"line_number":791,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_0d0c083a","line":788,"range":{"start_line":788,"start_character":12,"end_line":788,"end_character":51},"in_reply_to":"da36d5c6_d23291a6","updated":"2017-02-24 13:53:14.000000000","message":"I think we need 404 to stop any information leakage.","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"ad70e46a7bd79a1fff01b96a9458c94bd258f54c","unresolved":false,"context_lines":[{"line_number":785,"context_line":"            # NOTE(johngarbutt) don\u0027t leak that this server exists with 403"},{"line_number":786,"context_line":"            msg \u003d _(\"Instance could not be found\")"},{"line_number":787,"context_line":"            # TODO(johngarbutt) should share code so message always the same"},{"line_number":788,"context_line":"            raise exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":789,"context_line":""},{"line_number":790,"context_line":"        if CONF.reclaim_instance_interval:"},{"line_number":791,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_d7df9fd3","line":788,"range":{"start_line":788,"start_character":12,"end_line":788,"end_character":51},"in_reply_to":"da36d5c6_ed431811","updated":"2017-03-06 09:31:58.000000000","message":"backward incompatible? from 401 to 404?","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"}],"nova/context.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"ad70e46a7bd79a1fff01b96a9458c94bd258f54c","unresolved":false,"context_lines":[{"line_number":289,"context_line":"                    context_matches_scope \u003d False"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        if context_matches_scope:"},{"line_number":292,"context_line":"            LOG.debug(\"Scope matches.\")"},{"line_number":293,"context_line":"            return True"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        LOG.debug(\"Scope doesn\u0027t match, check if global.\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_d78ddfd3","line":292,"range":{"start_line":292,"start_character":12,"end_line":292,"end_character":39},"updated":"2017-03-06 09:31:58.000000000","message":"maybe no need for this log?","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c3ea7d53df5467ee4641a486a7610f86085626ab","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            return True"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        LOG.debug(\"Scope doesn\u0027t match, check if global.\")"},{"line_number":296,"context_line":"        policy.authorize(self, \"compute:is_global_scope\", {})"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def to_policy_values(self):"},{"line_number":299,"context_line":"        policy \u003d super(RequestContext, self).to_policy_values()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_12b349ea","line":296,"range":{"start_line":296,"start_character":58,"end_line":296,"end_character":60},"updated":"2017-02-23 18:21:04.000000000","message":"We can put the \u0027scope\u0027 into the target directly?","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d8fb3e280dd9010fdaaa6456098b54926c0aa407","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            return True"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        LOG.debug(\"Scope doesn\u0027t match, check if global.\")"},{"line_number":296,"context_line":"        policy.authorize(self, \"compute:is_global_scope\", {})"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def to_policy_values(self):"},{"line_number":299,"context_line":"        policy \u003d super(RequestContext, self).to_policy_values()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_636539e0","line":296,"range":{"start_line":296,"start_character":25,"end_line":296,"end_character":29},"updated":"2017-02-28 17:09:15.000000000","message":"context\u003dself would be better here.","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"874b4daf44aa36836635010d2faa40b97e33330d","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            return True"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"        LOG.debug(\"Scope doesn\u0027t match, check if global.\")"},{"line_number":296,"context_line":"        policy.authorize(self, \"compute:is_global_scope\", {})"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def to_policy_values(self):"},{"line_number":299,"context_line":"        policy \u003d super(RequestContext, self).to_policy_values()"}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_cd2cb09b","line":296,"range":{"start_line":296,"start_character":58,"end_line":296,"end_character":60},"in_reply_to":"da36d5c6_12b349ea","updated":"2017-02-24 13:53:14.000000000","message":"I don\u0027t believe it works like that.","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"}],"nova/policies/base.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f131c47235f7ee069fda784c467d741ab6e6c29a","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # TODO(johngarbutt) initial hack for new policy rule"},{"line_number":30,"context_line":"    policy.RuleDefault(\u0027compute:is_global_scope\u0027,"},{"line_number":31,"context_line":"                       \u0027rule:context_is_admin or is_admin:True\u0027),"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_f8ede6ef","line":31,"updated":"2017-02-22 16:48:21.000000000","message":"role:compute-global-scope is meant to be here.","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a6102e299a01b4fe2831ff6a79d96c1e42114e84","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # TODO(johngarbutt) initial hack for new policy rule"},{"line_number":30,"context_line":"    policy.RuleDefault(\u0027compute:is_global_scope\u0027,"},{"line_number":31,"context_line":"                       \u0027rule:context_is_admin or is_admin:True\u0027),"},{"line_number":32,"context_line":"]"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da36d5c6_d8a022a2","line":31,"in_reply_to":"da36d5c6_f8ede6ef","updated":"2017-02-22 16:49:38.000000000","message":"is_admin_project should probably go here.","commit_id":"c0e195c714c7e38eecf871346bc53fb139e0c3f4"}]}
