)]}'
{"cinder/context.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"aebefc1efbc425df5aa5f765853acc91afc09f30","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                   user_domain\u003dvalues.get(\u0027user_domain\u0027),"},{"line_number":148,"context_line":"                   project_domain\u003dvalues.get(\u0027project_domain\u0027))"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def can(self, action, target\u003dNone, target_obj\u003dNone, fatal\u003dTrue):"},{"line_number":151,"context_line":"        \"\"\"Verifies that the given action is valid on the target in this context."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        :param action: string representing the action to be checked."}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_779f5a03","line":150,"range":{"start_line":150,"start_character":8,"end_line":150,"end_character":11},"updated":"2017-09-25 14:41:31.000000000","message":"Is this the same name that the Nova code used?  Doesn\u0027t seem descriptive enough.","commit_id":"8c564618769dfe0b46a71b1f383c1ec7298eb559"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"0e0974072c6929cc5fdba89a67e548291410c8ac","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                   user_domain\u003dvalues.get(\u0027user_domain\u0027),"},{"line_number":148,"context_line":"                   project_domain\u003dvalues.get(\u0027project_domain\u0027))"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def can(self, action, target\u003dNone, target_obj\u003dNone, fatal\u003dTrue):"},{"line_number":151,"context_line":"        \"\"\"Verifies that the given action is valid on the target in this context."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        :param action: string representing the action to be checked."}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_c3c07b2d","line":150,"range":{"start_line":150,"start_character":8,"end_line":150,"end_character":11},"in_reply_to":"7f515b1d_779f5a03","updated":"2017-09-26 01:44:24.000000000","message":"Ha, it\u0027s the same with nova\u0027s choice, as a none native English speaker I can\u0027t tell which is better, how about \"authorize\" here?","commit_id":"8c564618769dfe0b46a71b1f383c1ec7298eb559"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"aebefc1efbc425df5aa5f765853acc91afc09f30","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        :param fatal: if False, will return False when an"},{"line_number":162,"context_line":"            exception.NotAuthorized occurs."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        :raises nova.exception.Forbidden: if verification fails and fatal is"},{"line_number":165,"context_line":"            True."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        :return: returns a non-False value (not necessarily \"True\") if"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_97cad617","line":164,"range":{"start_line":164,"start_character":16,"end_line":164,"end_character":21},"updated":"2017-09-25 14:41:31.000000000","message":"Copy paste error?","commit_id":"8c564618769dfe0b46a71b1f383c1ec7298eb559"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"0e0974072c6929cc5fdba89a67e548291410c8ac","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        :param fatal: if False, will return False when an"},{"line_number":162,"context_line":"            exception.NotAuthorized occurs."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        :raises nova.exception.Forbidden: if verification fails and fatal is"},{"line_number":165,"context_line":"            True."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        :return: returns a non-False value (not necessarily \"True\") if"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_43b5abcc","line":164,"range":{"start_line":164,"start_character":16,"end_line":164,"end_character":21},"in_reply_to":"7f515b1d_97cad617","updated":"2017-09-26 01:44:24.000000000","message":"Exactly:)","commit_id":"8c564618769dfe0b46a71b1f383c1ec7298eb559"}],"cinder/policies/attachments.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ffc0a40cbe3c602109c3d71f14a43beb46ce9fc5","unresolved":false,"context_lines":[{"line_number":25,"context_line":"attachments_policies \u003d ["},{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003d\"\","},{"line_number":29,"context_line":"        description\u003d\"\"\"Create attachment.\"\"\","},{"line_number":30,"context_line":"        operations\u003d["},{"line_number":31,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f515b1d_5d9a98b8","line":28,"range":{"start_line":28,"start_character":18,"end_line":28,"end_character":20},"updated":"2017-10-02 14:35:45.000000000","message":"This can be pulled out into its own variable in cinder.policies.base and given a name to increase readability for developers. For example:\n\n  UNPROTECTED \u003d \u0027\u0027\n\nand then here you could use it like so:\n\n  from cinder.policies import base\n  ...\n  policy.DocumentedRuleDefault(\n      name\u003dCREATE_POLICY,\n      check_str\u003dbase.UNPROTECTED,\n      description\u003d\u0027...\u0027,\n      operations\u003d[...]\n  )","commit_id":"43a315258129037905b32c39428406038084e604"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"31f849518ee10ca9123600e30ed02ca1dcb4d9f2","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dCREATE_POLICY,"},{"line_number":28,"context_line":"        check_str\u003d\"\","},{"line_number":29,"context_line":"        description\u003d\"\"\"Create attachment.\"\"\","},{"line_number":30,"context_line":"        operations\u003d["},{"line_number":31,"context_line":"            {"},{"line_number":32,"context_line":"                \u0027method\u0027: \u0027POST\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f515b1d_dc636341","line":29,"range":{"start_line":29,"start_character":20,"end_line":29,"end_character":23},"updated":"2017-09-28 14:22:01.000000000","message":"Why the use of triple quotes?","commit_id":"43a315258129037905b32c39428406038084e604"}],"cinder/policies/base.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ffc0a40cbe3c602109c3d71f14a43beb46ce9fc5","unresolved":false,"context_lines":[{"line_number":19,"context_line":"RULE_ADMIN_API \u003d \u0027rule:admin_api\u0027"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"rules \u003d ["},{"line_number":22,"context_line":"    policy.RuleDefault(\u0027context_is_admin\u0027, \u0027role:admin\u0027),"},{"line_number":23,"context_line":"    policy.RuleDefault(\u0027admin_or_owner\u0027,"},{"line_number":24,"context_line":"                       \u0027is_admin:True or (role:admin and \u0027"},{"line_number":25,"context_line":"                       \u0027is_admin_project:True) or  project_id:%(project_id)s\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f515b1d_bdd74c4b","line":22,"range":{"start_line":22,"start_character":23,"end_line":22,"end_character":55},"updated":"2017-10-02 14:35:45.000000000","message":"Using kwargs when possible helps ensure this code doesn\u0027t break if the method signature of oslo.policy ever changes. It also aids in readability for developers trying to understand this code.\n\n  ROLE_ADMIN \u003d \u0027role:admin\u0027\n  ...\n  policy.RuleDefault(\n      name\u003d\u0027context_is_admin\u0027,\n      check_str\u003dROLE_ADMIN\n  ),","commit_id":"43a315258129037905b32c39428406038084e604"}],"cinder/policy.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"aebefc1efbc425df5aa5f765853acc91afc09f30","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            LOG.exception(\u0027Policy not registered\u0027)"},{"line_number":184,"context_line":"    except Exception:"},{"line_number":185,"context_line":"        with excutils.save_and_reraise_exception():"},{"line_number":186,"context_line":"            LOG.debug(\u0027Policy check for %(action)s failed with credentials \u0027"},{"line_number":187,"context_line":"                      \u0027%(credentials)s\u0027,"},{"line_number":188,"context_line":"                      {\u0027action\u0027: action, \u0027credentials\u0027: credentials})"},{"line_number":189,"context_line":"    return result"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_42b25a96","line":186,"range":{"start_line":186,"start_character":16,"end_line":186,"end_character":21},"updated":"2017-09-25 14:41:31.000000000","message":"Seems like this would be more appropriate as a LOG.error.","commit_id":"8c564618769dfe0b46a71b1f383c1ec7298eb559"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"0e0974072c6929cc5fdba89a67e548291410c8ac","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            LOG.exception(\u0027Policy not registered\u0027)"},{"line_number":184,"context_line":"    except Exception:"},{"line_number":185,"context_line":"        with excutils.save_and_reraise_exception():"},{"line_number":186,"context_line":"            LOG.debug(\u0027Policy check for %(action)s failed with credentials \u0027"},{"line_number":187,"context_line":"                      \u0027%(credentials)s\u0027,"},{"line_number":188,"context_line":"                      {\u0027action\u0027: action, \u0027credentials\u0027: credentials})"},{"line_number":189,"context_line":"    return result"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_831723a4","line":186,"range":{"start_line":186,"start_character":16,"end_line":186,"end_character":21},"in_reply_to":"7f515b1d_42b25a96","updated":"2017-09-26 01:44:24.000000000","message":"Done","commit_id":"8c564618769dfe0b46a71b1f383c1ec7298eb559"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"31f849518ee10ca9123600e30ed02ca1dcb4d9f2","unresolved":false,"context_lines":[{"line_number":43,"context_line":"def init(policy_file\u003dNone, rules\u003dNone, default_rule\u003dNone, use_conf\u003dTrue):"},{"line_number":44,"context_line":"    \"\"\"Init an Enforcer class."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        :param policy_file: Custom policy file to use, if none is specified,"},{"line_number":47,"context_line":"                          `CONF.policy_file` will be used."},{"line_number":48,"context_line":"        :param rules: Default dictionary / Rules to use. It will be"},{"line_number":49,"context_line":"                    considered just in the first instantiation."}],"source_content_type":"text/x-python","patch_set":8,"id":"7f515b1d_dc648324","line":46,"range":{"start_line":46,"start_character":4,"end_line":46,"end_character":8},"updated":"2017-09-28 14:22:01.000000000","message":"nit: I don\u0027t believe these should be indented.","commit_id":"43a315258129037905b32c39428406038084e604"}],"etc/cinder/README-policy.generate.md":[{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"515004cf198b517f99f77b93351af11ebfb96d6a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"# Use generated policy file"},{"line_number":8,"context_line":"Cinder recognize ``/etc/cinder/policy.yaml`` as default policy file."},{"line_number":9,"context_line":"To specify your own policy file in order to overwrite the default policy value, "},{"line_number":10,"context_line":"add this in cinder config file:"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    [oslo_policy]"}],"source_content_type":"text/x-markdown","patch_set":5,"id":"7f515b1d_78dab417","line":9,"range":{"start_line":9,"start_character":79,"end_line":9,"end_character":80},"updated":"2017-09-25 09:20:10.000000000","message":"white space","commit_id":"7633a1c975cb59fd627b14fe16f6a415aca5d84f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"aebefc1efbc425df5aa5f765853acc91afc09f30","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    tox -egenpolicy"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"# Use generated policy file"},{"line_number":8,"context_line":"Cinder recognize ``/etc/cinder/policy.yaml`` as default policy file."},{"line_number":9,"context_line":"To specify your own policy file in order to overwrite the default policy value,"},{"line_number":10,"context_line":"add this in cinder config file:"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":6,"id":"7f515b1d_8214d24f","line":8,"range":{"start_line":8,"start_character":45,"end_line":8,"end_character":55},"updated":"2017-09-25 14:41:31.000000000","message":"as the default","commit_id":"8c564618769dfe0b46a71b1f383c1ec7298eb559"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"aebefc1efbc425df5aa5f765853acc91afc09f30","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    tox -egenpolicy"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"# Use generated policy file"},{"line_number":8,"context_line":"Cinder recognize ``/etc/cinder/policy.yaml`` as default policy file."},{"line_number":9,"context_line":"To specify your own policy file in order to overwrite the default policy value,"},{"line_number":10,"context_line":"add this in cinder config file:"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":6,"id":"7f515b1d_c21aca7b","line":8,"range":{"start_line":8,"start_character":6,"end_line":8,"end_character":16},"updated":"2017-09-25 14:41:31.000000000","message":"recognizes","commit_id":"8c564618769dfe0b46a71b1f383c1ec7298eb559"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"0e0974072c6929cc5fdba89a67e548291410c8ac","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    tox -egenpolicy"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"# Use generated policy file"},{"line_number":8,"context_line":"Cinder recognize ``/etc/cinder/policy.yaml`` as default policy file."},{"line_number":9,"context_line":"To specify your own policy file in order to overwrite the default policy value,"},{"line_number":10,"context_line":"add this in cinder config file:"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-markdown","patch_set":6,"id":"7f515b1d_23286fe0","line":8,"range":{"start_line":8,"start_character":6,"end_line":8,"end_character":16},"in_reply_to":"7f515b1d_c21aca7b","updated":"2017-09-26 01:44:24.000000000","message":"Done","commit_id":"8c564618769dfe0b46a71b1f383c1ec7298eb559"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"aebefc1efbc425df5aa5f765853acc91afc09f30","unresolved":false,"context_lines":[{"line_number":7,"context_line":"# Use generated policy file"},{"line_number":8,"context_line":"Cinder recognize ``/etc/cinder/policy.yaml`` as default policy file."},{"line_number":9,"context_line":"To specify your own policy file in order to overwrite the default policy value,"},{"line_number":10,"context_line":"add this in cinder config file:"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    [oslo_policy]"},{"line_number":13,"context_line":"    policy_file \u003d path/to/policy/file"}],"source_content_type":"text/x-markdown","patch_set":6,"id":"7f515b1d_420eda3b","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":18},"updated":"2017-09-25 14:41:31.000000000","message":"in the Cinder","commit_id":"8c564618769dfe0b46a71b1f383c1ec7298eb559"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"0e0974072c6929cc5fdba89a67e548291410c8ac","unresolved":false,"context_lines":[{"line_number":7,"context_line":"# Use generated policy file"},{"line_number":8,"context_line":"Cinder recognize ``/etc/cinder/policy.yaml`` as default policy file."},{"line_number":9,"context_line":"To specify your own policy file in order to overwrite the default policy value,"},{"line_number":10,"context_line":"add this in cinder config file:"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    [oslo_policy]"},{"line_number":13,"context_line":"    policy_file \u003d path/to/policy/file"}],"source_content_type":"text/x-markdown","patch_set":6,"id":"7f515b1d_03233307","line":10,"range":{"start_line":10,"start_character":8,"end_line":10,"end_character":18},"in_reply_to":"7f515b1d_420eda3b","updated":"2017-09-26 01:44:24.000000000","message":"Done","commit_id":"8c564618769dfe0b46a71b1f383c1ec7298eb559"}],"tox.ini":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"31f849518ee10ca9123600e30ed02ca1dcb4d9f2","unresolved":false,"context_lines":[{"line_number":83,"context_line":"envdir \u003d {toxworkdir}/pep8"},{"line_number":84,"context_line":"commands \u003d oslo-config-generator --config-file\u003dtools/config/cinder-config-generator.conf"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"[testenv:genpolicy]"},{"line_number":88,"context_line":"commands \u003d oslopolicy-sample-generator --config-file\u003detc/cinder/cinder-policy-generator.conf"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-properties","patch_set":8,"id":"7f515b1d_57faacbc","line":86,"updated":"2017-09-28 14:22:01.000000000","message":"Extra blank line can be removed.","commit_id":"43a315258129037905b32c39428406038084e604"}]}
