)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9bb11ba81fe9476dc8ea327f83c9e6663a501dcc","unresolved":false,"context_lines":[{"line_number":14,"context_line":"create consistent descriptions for all the policy rules."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Also, this patch adds description to policies in"},{"line_number":17,"context_line":"nova/policies/server_tags.py"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"blueprint policy-docs"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1a1ced50_2617afa4","line":17,"updated":"2017-03-17 18:49:21.000000000","message":"I would mention we plan to replace this once oslo.polcy releases its new version.","commit_id":"d67ca4f4417e17d7b4f85c9673938a18996135d3"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"99020e1a8ee8bff0976c4b493708ad05e680f72b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"create consistent descriptions for all the policy rules."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Also, this patch adds description to policies in"},{"line_number":17,"context_line":"nova/policies/server_tags.py"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"blueprint policy-docs"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1a1ced50_d9407559","line":17,"in_reply_to":"1a1ced50_2617afa4","updated":"2017-03-17 19:09:09.000000000","message":"Done","commit_id":"d67ca4f4417e17d7b4f85c9673938a18996135d3"}],"nova/policies/base.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"822eea08cabab328465d2128cc05064cfba2b057","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"SCOPE_PROJECT \u003d \"Project\""},{"line_number":32,"context_line":"SCOPE_PROJECT \u003d \"Global\""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"ACCESS_READ \u003d \"Read\""},{"line_number":35,"context_line":"ACCESS_WRITE \u003d \"Write\""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_e8c9dd5b","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":13},"updated":"2017-02-17 10:18:31.000000000","message":"typo","commit_id":"d6fe3f17353faf4d7e677be60cdc2fa4b16f6f18"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2e5f5e203b6a8a01f34ac4ab5c7f07f9be067c20","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \"scope\": scope,"},{"line_number":56,"context_line":"        \"access\": access,"},{"line_number":57,"context_line":"    }"},{"line_number":58,"context_line":"    return policy.RuleDefault(name, check_str, formatted_description)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"def list_rules():"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa31d9ce_38b5207e","line":58,"updated":"2017-02-16 18:12:52.000000000","message":"nit: looking at the method signature in oslo.policy, we could pass this in as a kwarg, which might aid in readability (even though it\u0027s pretty obvious what we\u0027re doing).\n\nhttps://github.com/openstack/oslo.policy/blob/master/oslo_policy/policy.py#L806","commit_id":"d6fe3f17353faf4d7e677be60cdc2fa4b16f6f18"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9bb11ba81fe9476dc8ea327f83c9e6663a501dcc","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    # formatted_description hack can be removed then."},{"line_number":35,"context_line":"    ops \u003d \"\""},{"line_number":36,"context_line":"    for operation in operations:"},{"line_number":37,"context_line":"            ops +\u003d (\u0027%(method)s %(path)s\\n\u0027 %"},{"line_number":38,"context_line":"                            {\u0027method\u0027: operation[\u0027method\u0027],"},{"line_number":39,"context_line":"                             \u0027path\u0027: operation[\u0027path\u0027]})"},{"line_number":40,"context_line":"    template \u003d \"\"\"%(description)s\\n%(operations)s\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a1ced50_c66c1b9f","line":37,"updated":"2017-03-17 18:49:21.000000000","message":"Nit: indented too far here I think.","commit_id":"d67ca4f4417e17d7b4f85c9673938a18996135d3"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"99020e1a8ee8bff0976c4b493708ad05e680f72b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    # formatted_description hack can be removed then."},{"line_number":35,"context_line":"    ops \u003d \"\""},{"line_number":36,"context_line":"    for operation in operations:"},{"line_number":37,"context_line":"            ops +\u003d (\u0027%(method)s %(path)s\\n\u0027 %"},{"line_number":38,"context_line":"                            {\u0027method\u0027: operation[\u0027method\u0027],"},{"line_number":39,"context_line":"                             \u0027path\u0027: operation[\u0027path\u0027]})"},{"line_number":40,"context_line":"    template \u003d \"\"\"%(description)s\\n%(operations)s\"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a1ced50_1923edbe","line":37,"in_reply_to":"1a1ced50_c66c1b9f","updated":"2017-03-17 19:09:09.000000000","message":"Done","commit_id":"d67ca4f4417e17d7b4f85c9673938a18996135d3"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"15708c959ae08987460a89465b80ea2b5b11be3c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"]"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def create_rule_default(name, check_str, description, operations):"},{"line_number":32,"context_line":"    # TODO(sneti): use DocumentedRuleDefault instead of RuleDefault"},{"line_number":33,"context_line":"    # when oslo.policy library with DocumentedRuleDefault change is released."},{"line_number":34,"context_line":"    # formatted_description hack can be removed then."}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_8a8738d6","line":31,"range":{"start_line":31,"start_character":30,"end_line":31,"end_character":64},"updated":"2017-03-21 01:29:16.000000000","message":"we should add doc string for these param, at least what type they accept string, List etc.\nThat will helpful to use this method easily.","commit_id":"e48e002264fca2ea44f282edcfac4f7e4655f410"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"386fb7e94404151316cd20769f72e6b7d697fc43","unresolved":false,"context_lines":[{"line_number":28,"context_line":"]"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def create_rule_default(name, check_str, description, operations):"},{"line_number":32,"context_line":"    # TODO(sneti): use DocumentedRuleDefault instead of RuleDefault"},{"line_number":33,"context_line":"    # when oslo.policy library with DocumentedRuleDefault change is released."},{"line_number":34,"context_line":"    # formatted_description hack can be removed then."}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_88b9f37b","line":31,"range":{"start_line":31,"start_character":30,"end_line":31,"end_character":64},"in_reply_to":"1a1ced50_2dd1fe57","updated":"2017-03-21 10:04:11.000000000","message":"So the idea is we delete this once oslo.polcy releases DocumentedRuleDefault and we have bumped the requirements minimum.","commit_id":"e48e002264fca2ea44f282edcfac4f7e4655f410"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"38aefed2c19fbe691258782f6ee5a4ed327aa3db","unresolved":false,"context_lines":[{"line_number":28,"context_line":"]"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def create_rule_default(name, check_str, description, operations):"},{"line_number":32,"context_line":"    # TODO(sneti): use DocumentedRuleDefault instead of RuleDefault"},{"line_number":33,"context_line":"    # when oslo.policy library with DocumentedRuleDefault change is released."},{"line_number":34,"context_line":"    # formatted_description hack can be removed then."}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_bcd35003","line":31,"range":{"start_line":31,"start_character":30,"end_line":31,"end_character":64},"in_reply_to":"1a1ced50_88b9f37b","updated":"2017-03-21 10:18:19.000000000","message":"This has already been released, I\u0027m told. However, if this is the case it would seem more sane to me to just wait for the oslo version to be bumped.","commit_id":"e48e002264fca2ea44f282edcfac4f7e4655f410"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f87bd9eecf884deb027625d2254051d003f6585d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"]"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def create_rule_default(name, check_str, description, operations):"},{"line_number":32,"context_line":"    # TODO(sneti): use DocumentedRuleDefault instead of RuleDefault"},{"line_number":33,"context_line":"    # when oslo.policy library with DocumentedRuleDefault change is released."},{"line_number":34,"context_line":"    # formatted_description hack can be removed then."}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_2dd1fe57","line":31,"range":{"start_line":31,"start_character":30,"end_line":31,"end_character":64},"in_reply_to":"1a1ced50_8a8738d6","updated":"2017-03-21 01:41:28.000000000","message":"Also add it create documented default rule","commit_id":"e48e002264fca2ea44f282edcfac4f7e4655f410"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"38c2aa5ac46b918b35d683e7df774565e5b39c01","unresolved":false,"context_lines":[{"line_number":28,"context_line":"]"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def create_rule_default(name, check_str, description, operations):"},{"line_number":32,"context_line":"    # TODO(sneti): use DocumentedRuleDefault instead of RuleDefault"},{"line_number":33,"context_line":"    # when oslo.policy library with DocumentedRuleDefault change is released."},{"line_number":34,"context_line":"    # formatted_description hack can be removed then."}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_ffb77a37","line":31,"range":{"start_line":31,"start_character":30,"end_line":31,"end_character":64},"in_reply_to":"1a1ced50_bcd35003","updated":"2017-03-21 10:35:21.000000000","message":"...but the rename can be done en masse as the signature is the same [1]. I\u0027d still rather see it done at once, but I can see the reasoning in doing it in two stages.\n\n[1] https://github.com/openstack/oslo.policy/blob/886d8c6dabc05937be9fbec840fc3849badc55cd/oslo_policy/policy.py#L845","commit_id":"e48e002264fca2ea44f282edcfac4f7e4655f410"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"15708c959ae08987460a89465b80ea2b5b11be3c","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def create_rule_default(name, check_str, description, operations):"},{"line_number":32,"context_line":"    # TODO(sneti): use DocumentedRuleDefault instead of RuleDefault"},{"line_number":33,"context_line":"    # when oslo.policy library with DocumentedRuleDefault change is released."},{"line_number":34,"context_line":"    # formatted_description hack can be removed then."},{"line_number":35,"context_line":"    ops \u003d \"\""},{"line_number":36,"context_line":"    for operation in operations:"},{"line_number":37,"context_line":"            ops +\u003d (\u0027%(method)s %(path)s\\n\u0027 %"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_4ac0e0e0","line":34,"range":{"start_line":32,"start_character":19,"end_line":34,"end_character":53},"updated":"2017-03-21 01:29:16.000000000","message":"+1, i thought of giving this method name to reflect that it will create documented rule something \u0027create_documented_rule_default\u0027 if it looks good to others too, otherwise i am fine with current name also.","commit_id":"e48e002264fca2ea44f282edcfac4f7e4655f410"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"386fb7e94404151316cd20769f72e6b7d697fc43","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def create_rule_default(name, check_str, description, operations):"},{"line_number":32,"context_line":"    # TODO(sneti): use DocumentedRuleDefault instead of RuleDefault"},{"line_number":33,"context_line":"    # when oslo.policy library with DocumentedRuleDefault change is released."},{"line_number":34,"context_line":"    # formatted_description hack can be removed then."},{"line_number":35,"context_line":"    ops \u003d \"\""},{"line_number":36,"context_line":"    for operation in operations:"},{"line_number":37,"context_line":"            ops +\u003d (\u0027%(method)s %(path)s\\n\u0027 %"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_686bd7f1","line":34,"range":{"start_line":32,"start_character":19,"end_line":34,"end_character":53},"in_reply_to":"1a1ced50_0dbb620f","updated":"2017-03-21 10:04:11.000000000","message":"To be clear, this whole method will get deleted very soon.","commit_id":"e48e002264fca2ea44f282edcfac4f7e4655f410"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f87bd9eecf884deb027625d2254051d003f6585d","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def create_rule_default(name, check_str, description, operations):"},{"line_number":32,"context_line":"    # TODO(sneti): use DocumentedRuleDefault instead of RuleDefault"},{"line_number":33,"context_line":"    # when oslo.policy library with DocumentedRuleDefault change is released."},{"line_number":34,"context_line":"    # formatted_description hack can be removed then."},{"line_number":35,"context_line":"    ops \u003d \"\""},{"line_number":36,"context_line":"    for operation in operations:"},{"line_number":37,"context_line":"            ops +\u003d (\u0027%(method)s %(path)s\\n\u0027 %"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_0dbb620f","line":34,"range":{"start_line":32,"start_character":19,"end_line":34,"end_character":53},"in_reply_to":"1a1ced50_4ac0e0e0","updated":"2017-03-21 01:41:28.000000000","message":"As discussed on IRC, current name is fine having clear doc string about what extra it does than policy.RuleDefault","commit_id":"e48e002264fca2ea44f282edcfac4f7e4655f410"}],"nova/policies/server_tags.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"dbc39a3e4cd3caef31bcf80028fc73250ae8f7cc","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    base.create_rule_default("},{"line_number":26,"context_line":"        POLICY_ROOT % \u0027delete_all\u0027,"},{"line_number":27,"context_line":"        base.RULE_ANY,"},{"line_number":28,"context_line":"        \"Delete all the server tags\","},{"line_number":29,"context_line":"        ["},{"line_number":30,"context_line":"            {"},{"line_number":31,"context_line":"                \u0027method\u0027: \u0027DELETE\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a1ced50_b9dd7944","line":28,"updated":"2017-03-17 18:51:21.000000000","message":"Love all these though...","commit_id":"d67ca4f4417e17d7b4f85c9673938a18996135d3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f061910cbbb6e90178661d10fce14e6bf17ed87b","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            }"},{"line_number":87,"context_line":"        ]"},{"line_number":88,"context_line":"    ),"},{"line_number":89,"context_line":"    # TODO(johngarbutt) leaving this as we will delete/deprecate it soon"},{"line_number":90,"context_line":"    policy.RuleDefault("},{"line_number":91,"context_line":"        name\u003dPOLICY_ROOT % \u0027discoverable\u0027,"},{"line_number":92,"context_line":"        check_str\u003dbase.RULE_ANY),"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a1ced50_ac87ec0d","line":89,"updated":"2017-03-18 11:18:02.000000000","message":"hope we can remove this in this release. so we needn\u0027t any doc for this.","commit_id":"54166356cf2feb3f8d7179e71241583936ee6ec1"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"86f5ce9bcbb1bacea3540c28a8ad8d4d187b6bd6","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            }"},{"line_number":87,"context_line":"        ]"},{"line_number":88,"context_line":"    ),"},{"line_number":89,"context_line":"    # TODO(johngarbutt) leaving this as we will delete/deprecate it soon"},{"line_number":90,"context_line":"    policy.RuleDefault("},{"line_number":91,"context_line":"        name\u003dPOLICY_ROOT % \u0027discoverable\u0027,"},{"line_number":92,"context_line":"        check_str\u003dbase.RULE_ANY),"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a1ced50_d5072d7f","line":89,"in_reply_to":"1a1ced50_ac87ec0d","updated":"2017-03-20 13:35:42.000000000","message":"I think we can remove it this release.","commit_id":"54166356cf2feb3f8d7179e71241583936ee6ec1"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"357ae11164f3c703eafcb01852a1c9c2094e4566","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            }"},{"line_number":87,"context_line":"        ]"},{"line_number":88,"context_line":"    ),"},{"line_number":89,"context_line":"    # TODO(johngarbutt) leaving this as we will delete/deprecate it soon"},{"line_number":90,"context_line":"    policy.RuleDefault("},{"line_number":91,"context_line":"        name\u003dPOLICY_ROOT % \u0027discoverable\u0027,"},{"line_number":92,"context_line":"        check_str\u003dbase.RULE_ANY),"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a1ced50_d5164854","line":89,"in_reply_to":"1a1ced50_d5072d7f","updated":"2017-03-20 15:29:06.000000000","message":"Done","commit_id":"54166356cf2feb3f8d7179e71241583936ee6ec1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"38c2aa5ac46b918b35d683e7df774565e5b39c01","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        base.RULE_ANY,"},{"line_number":28,"context_line":"        \"Delete all the server tags\","},{"line_number":29,"context_line":"        ["},{"line_number":30,"context_line":"            {"},{"line_number":31,"context_line":"                \u0027method\u0027: \u0027DELETE\u0027,"},{"line_number":32,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/tags\u0027"},{"line_number":33,"context_line":"            }"},{"line_number":34,"context_line":"        ]),"},{"line_number":35,"context_line":"    base.create_rule_default("},{"line_number":36,"context_line":"        POLICY_ROOT % \u0027index\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_dfc39e87","line":33,"range":{"start_line":30,"start_character":0,"end_line":33,"end_character":13},"updated":"2017-03-21 10:35:21.000000000","message":"A question more suited to the oslo.policy change, but how do we stop these getting stale?","commit_id":"e48e002264fca2ea44f282edcfac4f7e4655f410"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9a78dbc81f229fa76519610d05dd5eba4fd65029","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        base.RULE_ANY,"},{"line_number":28,"context_line":"        \"Delete all the server tags\","},{"line_number":29,"context_line":"        ["},{"line_number":30,"context_line":"            {"},{"line_number":31,"context_line":"                \u0027method\u0027: \u0027DELETE\u0027,"},{"line_number":32,"context_line":"                \u0027path\u0027: \u0027/servers/{server_id}/tags\u0027"},{"line_number":33,"context_line":"            }"},{"line_number":34,"context_line":"        ]),"},{"line_number":35,"context_line":"    base.create_rule_default("},{"line_number":36,"context_line":"        POLICY_ROOT % \u0027index\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1a1ced50_92f67df7","line":33,"range":{"start_line":30,"start_character":0,"end_line":33,"end_character":13},"in_reply_to":"1a1ced50_dfc39e87","updated":"2017-03-21 10:50:00.000000000","message":"The REST API is stable, so these shouldn\u0027t change.\n\nIf we could actually programatically fetch them, it would be great, but that routing code is a mess right now.","commit_id":"e48e002264fca2ea44f282edcfac4f7e4655f410"}],"nova/tests/unit/test_policy.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f061910cbbb6e90178661d10fce14e6bf17ed87b","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"class PolicyDocsTestCase(test.NoDBTestCase):"},{"line_number":240,"context_line":"    def test_create_rule_default(self):"},{"line_number":241,"context_line":"        rule_default \u003d base.create_rule_default("},{"line_number":242,"context_line":"            \"name\", \"check_str\", \"description goes in here\","},{"line_number":243,"context_line":"            [{\u0027method\u0027: \u0027verb\u0027, \u0027path\u0027: \u0027url\u0027},"},{"line_number":244,"context_line":"             {\u0027method\u0027: \u0027post\u0027, \u0027path\u0027: \u0027test\u0027}])"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        expected \u003d \"\"\"description goes in here"},{"line_number":247,"context_line":"verb url"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a1ced50_0cc9e078","line":244,"range":{"start_line":241,"start_character":8,"end_line":244,"end_character":49},"updated":"2017-03-18 11:18:02.000000000","message":"I would prefer to write the test case like in the real world. Like\n\n[{\u0027method\u0027: \u0027GET\u0027, \u0027path\u0027: \u0027/test_url\u0027}]\n\n\nThis will help us to understand the unittest easliy.\n\nBut anyway, it is a nit.","commit_id":"54166356cf2feb3f8d7179e71241583936ee6ec1"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"86f5ce9bcbb1bacea3540c28a8ad8d4d187b6bd6","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"class PolicyDocsTestCase(test.NoDBTestCase):"},{"line_number":240,"context_line":"    def test_create_rule_default(self):"},{"line_number":241,"context_line":"        rule_default \u003d base.create_rule_default("},{"line_number":242,"context_line":"            \"name\", \"check_str\", \"description goes in here\","},{"line_number":243,"context_line":"            [{\u0027method\u0027: \u0027verb\u0027, \u0027path\u0027: \u0027url\u0027},"},{"line_number":244,"context_line":"             {\u0027method\u0027: \u0027post\u0027, \u0027path\u0027: \u0027test\u0027}])"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        expected \u003d \"\"\"description goes in here"},{"line_number":247,"context_line":"verb url"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a1ced50_1539c541","line":244,"range":{"start_line":241,"start_character":8,"end_line":244,"end_character":49},"in_reply_to":"1a1ced50_0cc9e078","updated":"2017-03-20 13:35:42.000000000","message":"+1 that.","commit_id":"54166356cf2feb3f8d7179e71241583936ee6ec1"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"357ae11164f3c703eafcb01852a1c9c2094e4566","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"class PolicyDocsTestCase(test.NoDBTestCase):"},{"line_number":240,"context_line":"    def test_create_rule_default(self):"},{"line_number":241,"context_line":"        rule_default \u003d base.create_rule_default("},{"line_number":242,"context_line":"            \"name\", \"check_str\", \"description goes in here\","},{"line_number":243,"context_line":"            [{\u0027method\u0027: \u0027verb\u0027, \u0027path\u0027: \u0027url\u0027},"},{"line_number":244,"context_line":"             {\u0027method\u0027: \u0027post\u0027, \u0027path\u0027: \u0027test\u0027}])"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        expected \u003d \"\"\"description goes in here"},{"line_number":247,"context_line":"verb url"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a1ced50_1509c031","line":244,"range":{"start_line":241,"start_character":8,"end_line":244,"end_character":49},"in_reply_to":"1a1ced50_1539c541","updated":"2017-03-20 15:29:06.000000000","message":"Done","commit_id":"54166356cf2feb3f8d7179e71241583936ee6ec1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f061910cbbb6e90178661d10fce14e6bf17ed87b","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        self.assertEqual(\"name\", rule_default.name)"},{"line_number":252,"context_line":"        self.assertEqual(\"check_str\", rule_default.check_str)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        # TODO(johngarbutt) clearly this bit is evil and must be removed"},{"line_number":255,"context_line":"        from oslo_policy import generator as oslo_generator"},{"line_number":256,"context_line":"        generator_text \u003d oslo_generator._format_rule_default_yaml(rule_default)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        # NOTE(johngarbutt) line is wrapped at 70 characters in nasty way"},{"line_number":259,"context_line":"        expected_gen_text \u003d \"\"\"# description goes in here"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a1ced50_8cab1089","line":256,"range":{"start_line":254,"start_character":8,"end_line":256,"end_character":79},"updated":"2017-03-18 11:18:02.000000000","message":"Do we really need to test the output of yaml. We already ensure the description in the rule object. That is kind of interface contract between Nova and oslo.policy.","commit_id":"54166356cf2feb3f8d7179e71241583936ee6ec1"},{"author":{"_account_id":18337,"name":"Sujitha","email":"sujitha.neti@intel.com","username":"Sujitha"},"change_message_id":"357ae11164f3c703eafcb01852a1c9c2094e4566","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        self.assertEqual(\"name\", rule_default.name)"},{"line_number":252,"context_line":"        self.assertEqual(\"check_str\", rule_default.check_str)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        # TODO(johngarbutt) clearly this bit is evil and must be removed"},{"line_number":255,"context_line":"        from oslo_policy import generator as oslo_generator"},{"line_number":256,"context_line":"        generator_text \u003d oslo_generator._format_rule_default_yaml(rule_default)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        # NOTE(johngarbutt) line is wrapped at 70 characters in nasty way"},{"line_number":259,"context_line":"        expected_gen_text \u003d \"\"\"# description goes in here"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a1ced50_35acfc33","line":256,"range":{"start_line":254,"start_character":8,"end_line":256,"end_character":79},"in_reply_to":"1a1ced50_354081a5","updated":"2017-03-20 15:29:06.000000000","message":"I was thinking to remove it but forgot somehow. Removed it now.","commit_id":"54166356cf2feb3f8d7179e71241583936ee6ec1"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"86f5ce9bcbb1bacea3540c28a8ad8d4d187b6bd6","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        self.assertEqual(\"name\", rule_default.name)"},{"line_number":252,"context_line":"        self.assertEqual(\"check_str\", rule_default.check_str)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        # TODO(johngarbutt) clearly this bit is evil and must be removed"},{"line_number":255,"context_line":"        from oslo_policy import generator as oslo_generator"},{"line_number":256,"context_line":"        generator_text \u003d oslo_generator._format_rule_default_yaml(rule_default)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        # NOTE(johngarbutt) line is wrapped at 70 characters in nasty way"},{"line_number":259,"context_line":"        expected_gen_text \u003d \"\"\"# description goes in here"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a1ced50_354081a5","line":256,"range":{"start_line":254,"start_character":8,"end_line":256,"end_character":79},"in_reply_to":"1a1ced50_8cab1089","updated":"2017-03-20 13:35:42.000000000","message":"Not any more, we should drop this part of the test now.","commit_id":"54166356cf2feb3f8d7179e71241583936ee6ec1"}]}
