)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9a06f7f0e7308af178d4fb767de969b92e47d2ff","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    - float"},{"line_number":16,"context_line":"    - str"},{"line_number":17,"context_line":"    - getattr"},{"line_number":18,"context_line":"    - setattr"},{"line_number":19,"context_line":"  All other builtins have been disabled for safety"},{"line_number":20,"context_line":"* By default this parser is disabled.  To enable it, set"},{"line_number":21,"context_line":"  \u0027allow_eval_parser\u0027 in your cinder.conf."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_b6bd12b3","line":18,"range":{"start_line":18,"start_character":6,"end_line":18,"end_character":13},"updated":"2018-10-29 20:30:55.000000000","message":"hasattr, right?","commit_id":"052379a553006a415c0156b5e4bd01d78d4c26aa"}],"cinder/scheduler/evaluator/evaluator.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"39ef6328c3dd5b12e36d50a23a3d46ca8d3b6fa7","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import pyparsing"},{"line_number":20,"context_line":"import six"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_config import cfg"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_3966e7ef","line":21,"updated":"2018-10-28 15:34:07.000000000","message":"Get rid of extra blank line and move oslo_config import before pyparsing.","commit_id":"a2f70f3e7550a76197fdfc314d428094c2f4bc61"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1cebc497e0c6c191c1712687d3b30e04ac4e7bbe","unresolved":false,"context_lines":[{"line_number":28,"context_line":"                         default\u003dFalse,"},{"line_number":29,"context_line":"                         help\u003d\u0027Allow falling back to a stripped-down \u0027"},{"line_number":30,"context_line":"                              \u0027eval-based parser when the default parser \u0027"},{"line_number":31,"context_line":"                              \u0027fails\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"CONF \u003d cfg.CONF"},{"line_number":34,"context_line":"CONF.register_opt(parser_opt)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_f1fbe645","line":31,"updated":"2018-12-06 17:38:30.000000000","message":"I can\u0027t help but think that this needs more of a warning label on it... somebody is going to go typo a filter like \n    \"3\" * 99999 * 999999\n\nand not realize it, then have their cinder service fail later because it ran out of memory...","commit_id":"d0744b83fe32653a65cd295b764dc98a0c1760a2"}],"releasenotes/notes/bugfix-1800224-d0d9be767448d359.yaml":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ab9df84f7004b26f43f276a40d197ac174a470e3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adding support for fallback eval-based filter_func parser with a more broad"},{"line_number":4,"context_line":"    set of python syntax to be used with filter_function and goodness_function."},{"line_number":5,"context_line":"    Previously filter_func statements could not include common syntax like \":\""},{"line_number":6,"context_line":"    because the parser did not allow dictionary index syntax. The eval"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f79a3b5_118d427c","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":10},"updated":"2018-12-06 17:07:56.000000000","message":"Added","commit_id":"9aa3aaf71715bc72aac95fd1d62006639dd2af98"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ab9df84f7004b26f43f276a40d197ac174a470e3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    set of python syntax to be used with filter_function and goodness_function."},{"line_number":5,"context_line":"    Previously filter_func statements could not include common syntax like \":\""},{"line_number":6,"context_line":"    because the parser did not allow dictionary index syntax. The eval"},{"line_number":7,"context_line":"    implmentation only allows for five bultin functions, [int, float, str,"},{"line_number":8,"context_line":"    getattr, setattr].  All other bultins have been disabled for safety.  By"},{"line_number":9,"context_line":"    default this parser is disabled, to enable it, set \u0027allow_eval_parser\u0027 in"},{"line_number":10,"context_line":"    your cinder.conf.  Even with the parser enabled, the original parser will"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f79a3b5_91e63249","line":7,"range":{"start_line":7,"start_character":39,"end_line":7,"end_character":45},"updated":"2018-12-06 17:07:56.000000000","message":"builtin","commit_id":"9aa3aaf71715bc72aac95fd1d62006639dd2af98"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ab9df84f7004b26f43f276a40d197ac174a470e3","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    Previously filter_func statements could not include common syntax like \":\""},{"line_number":6,"context_line":"    because the parser did not allow dictionary index syntax. The eval"},{"line_number":7,"context_line":"    implmentation only allows for five bultin functions, [int, float, str,"},{"line_number":8,"context_line":"    getattr, setattr].  All other bultins have been disabled for safety.  By"},{"line_number":9,"context_line":"    default this parser is disabled, to enable it, set \u0027allow_eval_parser\u0027 in"},{"line_number":10,"context_line":"    your cinder.conf.  Even with the parser enabled, the original parser will"},{"line_number":11,"context_line":"    try to parse the statement first.  Only if this fails will the eval parser"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f79a3b5_31e71e47","line":8,"range":{"start_line":8,"start_character":34,"end_line":8,"end_character":41},"updated":"2018-12-06 17:07:56.000000000","message":"builtins","commit_id":"9aa3aaf71715bc72aac95fd1d62006639dd2af98"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ab9df84f7004b26f43f276a40d197ac174a470e3","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    because the parser did not allow dictionary index syntax. The eval"},{"line_number":7,"context_line":"    implmentation only allows for five bultin functions, [int, float, str,"},{"line_number":8,"context_line":"    getattr, setattr].  All other bultins have been disabled for safety.  By"},{"line_number":9,"context_line":"    default this parser is disabled, to enable it, set \u0027allow_eval_parser\u0027 in"},{"line_number":10,"context_line":"    your cinder.conf.  Even with the parser enabled, the original parser will"},{"line_number":11,"context_line":"    try to parse the statement first.  Only if this fails will the eval parser"},{"line_number":12,"context_line":"    be used.  This is to maintain backwards compatibility with the syntax"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f79a3b5_51c5fa8d","line":9,"range":{"start_line":9,"start_character":55,"end_line":9,"end_character":56},"updated":"2018-12-06 17:07:56.000000000","message":"Use `` instead to format this to make it a little more obvious that it is a config option.","commit_id":"9aa3aaf71715bc72aac95fd1d62006639dd2af98"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ab9df84f7004b26f43f276a40d197ac174a470e3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    dictated by the original parser.  This will continue until removal of the"},{"line_number":14,"context_line":"    original parser in the following release."},{"line_number":15,"context_line":"deprecations:"},{"line_number":16,"context_line":"  - Deprecating original filter_func parser for removal in next release"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f79a3b5_9134f2ac","line":16,"updated":"2018-12-06 17:07:56.000000000","message":"In the formatted output, this will be in a completely different section that the \u0027features\u0027 section above. It would be useful to elaborate on this a little more to at least mention this is related to filter and goodness filter functions. And end with a period.","commit_id":"9aa3aaf71715bc72aac95fd1d62006639dd2af98"}]}
