)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"dfe57b8e263581af312099a54b69f4d899bfc2d4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"similar to the oslo.config validator tool that operators can use to"},{"line_number":11,"context_line":"look for basic errors in their policy files."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"It\u0027s very similar to the redundant rule tool, but I decided not to"},{"line_number":14,"context_line":"combine them because I feel like the target use cases are enough"},{"line_number":15,"context_line":"different to warrant separate tools. Specifically, the redundant"},{"line_number":16,"context_line":"rule tool is looking for perfectly valid rules that just happen to"},{"line_number":17,"context_line":"be unnecessary. The validator is looking for errors in the policy"},{"line_number":18,"context_line":"file. While it\u0027s unlikely someone looking for redundant rules wouldn\u0027t"},{"line_number":19,"context_line":"also want to know if there is something broken in their policy file,"},{"line_number":20,"context_line":"it\u0027s likely that someone just looking to sanity check their policy"},{"line_number":21,"context_line":"before deployment wouldn\u0027t want to see a bunch of messages about"},{"line_number":22,"context_line":"redundant rules that won\u0027t cause any problems."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I799a754aceac080c11baffd7ff635b2a9cb825f7"},{"line_number":25,"context_line":"Closes-Bug: 1853038"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bf51134e_2c4e4f37","line":22,"range":{"start_line":13,"start_character":0,"end_line":22,"end_character":46},"updated":"2020-06-26 11:54:28.000000000","message":"Make sense","commit_id":"2794dc26b419e06cb418b9501753886252e46c75"}],"oslo_policy/generator.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"dfe57b8e263581af312099a54b69f4d899bfc2d4","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"def _validate_policy(namespace):"},{"line_number":338,"context_line":"    \"\"\"Perform basic sanity checks on a policy file"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    Checks for the following errors in the configured policy file:"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    * A missing policy file"},{"line_number":343,"context_line":"    * Rules which have invalid syntax"},{"line_number":344,"context_line":"    * Rules which reference non-existent other rules"},{"line_number":345,"context_line":"    * Rules which form a cyclical reference with another rule"},{"line_number":346,"context_line":"    * Rules which do not exist in the specified namespace"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    :returns: 0 if all policies validated correctly, 1 if not."},{"line_number":349,"context_line":"    \"\"\""},{"line_number":350,"context_line":"    return_code \u003d 0"},{"line_number":351,"context_line":"    enforcer \u003d _get_enforcer(namespace)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_ece3b703","line":348,"range":{"start_line":338,"start_character":4,"end_line":348,"end_character":62},"updated":"2020-06-26 11:54:28.000000000","message":"The param is missing:\n\n```\n    :param namespace: a namespace under oslo.policy.....\n```\n\nOther functions defined params in docstring.","commit_id":"2794dc26b419e06cb418b9501753886252e46c75"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"d0ba27ab3ef7f8988c4ab1ca48c78ae6b233e572","unresolved":false,"context_lines":[{"line_number":335,"context_line":""},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"def _validate_policy(namespace):"},{"line_number":338,"context_line":"    \"\"\"Perform basic sanity checks on a policy file"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    Checks for the following errors in the configured policy file:"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    * A missing policy file"},{"line_number":343,"context_line":"    * Rules which have invalid syntax"},{"line_number":344,"context_line":"    * Rules which reference non-existent other rules"},{"line_number":345,"context_line":"    * Rules which form a cyclical reference with another rule"},{"line_number":346,"context_line":"    * Rules which do not exist in the specified namespace"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    :returns: 0 if all policies validated correctly, 1 if not."},{"line_number":349,"context_line":"    \"\"\""},{"line_number":350,"context_line":"    return_code \u003d 0"},{"line_number":351,"context_line":"    enforcer \u003d _get_enforcer(namespace)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_55d9821f","line":348,"range":{"start_line":338,"start_character":4,"end_line":348,"end_character":62},"in_reply_to":"bf51134e_ece3b703","updated":"2020-06-26 14:55:56.000000000","message":"Done","commit_id":"2794dc26b419e06cb418b9501753886252e46c75"}]}
