)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"7b637c484427da26b922ed397a9791cb97636fdd","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding --check-defaults to validator"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When troubleshooting, it\u0027s often interesting to see the deltas between"},{"line_number":10,"context_line":"the default or sample configs and the running configuration. The"},{"line_number":11,"context_line":"oslo_config.validator is a great tool to integrate this feature across"},{"line_number":12,"context_line":"all projects. It can also be easily captured by data collection tools"},{"line_number":13,"context_line":"like sosreports with the current deployment packages."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I172d82f19a81282093b0d5f7ae4c1817801cd887"},{"line_number":16,"context_line":"Signed-off-by: David Vallee Delisle \u003cdvd@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f65232a_a2097bde","line":13,"range":{"start_line":9,"start_character":0,"end_line":13,"end_character":53},"updated":"2020-10-26 10:42:09.000000000","message":"Really interesting","commit_id":"e23f5b2f1112c32733c230d22fd5b226a8ea30f2"}],"doc/source/cli/validator.rst":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"7b637c484427da26b922ed397a9791cb97636fdd","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                            --namespace oslo.concurrency \\"},{"line_number":97,"context_line":"                            --namespace keystonemiddleware.auth_token \\"},{"line_number":98,"context_line":"                            --namespace osprofiler"},{"line_number":99,"context_line":"    WARNING:root:DEFAULT/debug Default value is empty but we have True"},{"line_number":100,"context_line":"    WARNING:root:DEFAULT/log_dir Default value is empty but we have /var/log/nova"},{"line_number":101,"context_line":"    WARNING:root:DEFAULT/allow_resize_to_same_host Default value is empty but we have False"},{"line_number":102,"context_line":"    WARNING:root:DEFAULT/ssl_only Default value is empty but we have False"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3f65232a_051ae77b","line":99,"range":{"start_line":99,"start_character":25,"end_line":99,"end_character":70},"updated":"2020-10-26 10:42:09.000000000","message":"By comparing this output with your code, it look like that this kind of line should be `DEFAULT/debug Sample value is empty but input-file has True`, isn\u0027t?\n\nIf yes then please update these lines to avoid misunderstanding.","commit_id":"0cef6f71d502ed1a032362cc938d3a00f968f12a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    INFO:root:Ignoring missing option \"project_name\" from group \"keystone_authtoken\" because the group is known to have incomplete sample config data and thus cannot be validated properly."},{"line_number":157,"context_line":"    INFO:root:Ignoring missing option \"project_domain_name\" from group \"keystone_authtoken\" because the group is known to have incomplete sample config data and thus cannot be validated properly."},{"line_number":158,"context_line":"    ERROR:root:service_user/region_name is not part of the sample config"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Handling Dynamic Groups"},{"line_number":164,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1f621f24_3176973f","line":161,"range":{"start_line":159,"start_character":0,"end_line":161,"end_character":0},"updated":"2020-11-16 18:02:59.000000000","message":"nit: you only need one or two newlines, not four :)","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"b50e08e6c68ecad6aa6ae947dbaedb75c4f3ecca","unresolved":true,"context_lines":[{"line_number":79,"context_line":"In addition to the ``--namespace``, we need to pass a ``--input-file`` as well"},{"line_number":80,"context_line":"as the ``--check-defaults``."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Some options are ignored by default but this behavior can be overriden with the"},{"line_number":83,"context_line":"``--exclude-options`` list argument."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Here\u0027s an example of using the validator on Nova::"}],"source_content_type":"text/x-rst","patch_set":11,"id":"27248e66_ed3b96e7","line":82,"range":{"start_line":82,"start_character":61,"end_line":82,"end_character":70},"updated":"2020-11-24 18:05:58.000000000","message":"Nit: *overridden","commit_id":"e0d09c9c85f1c6e8563edd267662b0074acd525b"}],"oslo_config/tests/test_validator.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"7b637c484427da26b922ed397a9791cb97636fdd","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from oslo_config import validator"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"OPT_DATA \u003d {\u0027options\u0027: {\u0027foo\u0027: {\u0027opts\u0027: [{\u0027name\u0027: \u0027opt\u0027, \u0027default\u0027: 1}]},"},{"line_number":25,"context_line":"                        \u0027bar\u0027: {\u0027opts\u0027: [{\u0027name\u0027: \u0027opt\u0027, \u0027default\u0027: 2}]},"},{"line_number":26,"context_line":"                        },"},{"line_number":27,"context_line":"            \u0027deprecated_options\u0027: {\u0027bar\u0027: [{\u0027name\u0027: \u0027opt\u0027, \u0027default\u0027: 3}]}}"},{"line_number":28,"context_line":"VALID_CONF \u003d \"\"\""},{"line_number":29,"context_line":"[foo]"},{"line_number":30,"context_line":"opt \u003d 1"},{"line_number":31,"context_line":"[bar]"},{"line_number":32,"context_line":"opt \u003d 3"},{"line_number":33,"context_line":"\"\"\""},{"line_number":34,"context_line":"DEPRECATED_CONF \u003d \"\"\""},{"line_number":35,"context_line":"[bar]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f65232a_c22d9747","line":32,"range":{"start_line":24,"start_character":0,"end_line":32,"end_character":7},"updated":"2020-10-26 10:42:09.000000000","message":"Can you add test that trigger the naming convention part (hyphen vs underscore)?\n\nIt could be worth to check this part here to ensure that we stay safe with that.","commit_id":"e23f5b2f1112c32733c230d22fd5b226a8ea30f2"}],"oslo_config/validator.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"7f5087ca70c40c5299ed43edaf1c5159bb93e354","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"import logging"},{"line_number":25,"context_line":"import sys"},{"line_number":26,"context_line":"import re"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"try:"},{"line_number":29,"context_line":"    # For Python 3.8 and later"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f65232a_4d4b7383","line":26,"updated":"2020-10-23 19:34:45.000000000","message":"pep8: H306: imports not in alphabetical order (sys, re)","commit_id":"ead07048ac2a144a0a7a1187c1c215d4633e0aca"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        if group in conf.exclude_group:"},{"line_number":111,"context_line":"            continue"},{"line_number":112,"context_line":"        if group not in sections:"},{"line_number":113,"context_line":"            logging.warn(\u0027Group %s from the sample config is not defined in\u0027"},{"line_number":114,"context_line":"                         \u0027 input-file\u0027, group)"},{"line_number":115,"context_line":"            continue"},{"line_number":116,"context_line":"        for opt in opts[\u0027opts\u0027]:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f621f24_d1912354","line":113,"range":{"start_line":113,"start_character":75,"end_line":113,"end_character":76},"updated":"2020-11-16 18:02:59.000000000","message":"We typically put spaces at the end of lines, not the beginning. Also, style nit but could you avoid the hanging indent if possible?\n\n  logging.warning(\n      \u0027Group %s from the sample config is not defined in \u0027\n      \u0027input-file\u0027, group)","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":127,"context_line":"            # options, \u0027name\u0027 is mostly with hyphens, and \u0027dest\u0027"},{"line_number":128,"context_line":"            # is represented with underscores."},{"line_number":129,"context_line":"            opt_names \u003d set([opt[\u0027name\u0027], opt.get(\u0027dest\u0027)])"},{"line_number":130,"context_line":"            if not opt_names.intersection(sections[group]):"},{"line_number":131,"context_line":"                continue"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                value \u003d sections[group][opt[\u0027name\u0027]]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f621f24_f1a41fa8","line":130,"range":{"start_line":130,"start_character":42,"end_line":130,"end_character":57},"updated":"2020-11-16 18:02:59.000000000","message":"I assume this is already a set?\n\nLater: actually, it doesn\u0027t matter. TIL.\n\n  \u003e\u003e\u003e x \u003d set(range(5))\n  \u003e\u003e\u003e x.intersection([4])\n  {4}","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                logging.info(\u0027%s/%s defined %s times\u0027, group,"},{"line_number":144,"context_line":"                             keyname, len(value))"},{"line_number":145,"context_line":"            if not opt[\u0027default\u0027]:"},{"line_number":146,"context_line":"                logging.warn(\u0027%s/%s Sample value is empty but input-file\u0027"},{"line_number":147,"context_line":"                             \u0027 has %s\u0027,"},{"line_number":148,"context_line":"                             group, keyname, \", \".join(value))"},{"line_number":149,"context_line":"                warnings \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f621f24_91b32be9","line":146,"range":{"start_line":146,"start_character":24,"end_line":146,"end_character":28},"updated":"2020-11-16 18:02:59.000000000","message":"log.warn is deprecated; use log.warning [1]\n\n[1] https://docs.python.org/3/library/logging.html#logging.Logger.warning","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                logging.info(\u0027%s/%s defined %s times\u0027, group,"},{"line_number":144,"context_line":"                             keyname, len(value))"},{"line_number":145,"context_line":"            if not opt[\u0027default\u0027]:"},{"line_number":146,"context_line":"                logging.warn(\u0027%s/%s Sample value is empty but input-file\u0027"},{"line_number":147,"context_line":"                             \u0027 has %s\u0027,"},{"line_number":148,"context_line":"                             group, keyname, \", \".join(value))"},{"line_number":149,"context_line":"                warnings \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f621f24_518fd328","line":146,"range":{"start_line":146,"start_character":36,"end_line":146,"end_character":42},"updated":"2020-11-16 18:02:59.000000000","message":"sample (lowercase)?","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                             keyname, len(value))"},{"line_number":145,"context_line":"            if not opt[\u0027default\u0027]:"},{"line_number":146,"context_line":"                logging.warn(\u0027%s/%s Sample value is empty but input-file\u0027"},{"line_number":147,"context_line":"                             \u0027 has %s\u0027,"},{"line_number":148,"context_line":"                             group, keyname, \", \".join(value))"},{"line_number":149,"context_line":"                warnings \u003d True"},{"line_number":150,"context_line":"            elif not frozenset(defaults).intersection(value):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f621f24_718c8f35","line":147,"range":{"start_line":147,"start_character":30,"end_line":147,"end_character":31},"updated":"2020-11-16 18:02:59.000000000","message":"ditto (use trailing, not leading, spaces)","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                             group, keyname, \", \".join(value))"},{"line_number":149,"context_line":"                warnings \u003d True"},{"line_number":150,"context_line":"            elif not frozenset(defaults).intersection(value):"},{"line_number":151,"context_line":"                logging.warn(\u0027%s/%s Sample value %s is not in %s\u0027,"},{"line_number":152,"context_line":"                             group, keyname, defaults, value)"},{"line_number":153,"context_line":"                warnings \u003d True"},{"line_number":154,"context_line":"    return warnings"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f621f24_9185eb09","line":151,"range":{"start_line":151,"start_character":36,"end_line":151,"end_character":42},"updated":"2020-11-16 18:02:59.000000000","message":"sample","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            continue"},{"line_number":190,"context_line":"        for option in options:"},{"line_number":191,"context_line":"            if _validate_deprecated_opt(section, option, opt_data):"},{"line_number":192,"context_line":"                logging.warn(\u0027Deprecated opt %s/%s found\u0027, section, option)"},{"line_number":193,"context_line":"                warnings \u003d True"},{"line_number":194,"context_line":"            elif not _validate_opt(section, option, opt_data):"},{"line_number":195,"context_line":"                if section in KNOWN_BAD_GROUPS:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f621f24_d1c80356","line":192,"range":{"start_line":192,"start_character":24,"end_line":192,"end_character":28},"updated":"2020-11-16 18:02:59.000000000","message":"This isn\u0027t on you, but while you\u0027re here could you change this to \u0027warning\u0027?","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"40c3cd29a83601fb9ebe8c988874a5211a62c31c","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                                 \u0027cannot be validated properly.\u0027,"},{"line_number":200,"context_line":"                                 option, section)"},{"line_number":201,"context_line":"                    continue"},{"line_number":202,"context_line":"                logging.error(\u0027%s/%s is not part of the sample config\u0027,"},{"line_number":203,"context_line":"                              section, option)"},{"line_number":204,"context_line":"                errors \u003d True"},{"line_number":205,"context_line":"    if errors or (warnings and conf.fatal_warnings):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f621f24_0e16da49","line":202,"updated":"2020-11-16 16:29:03.000000000","message":"nit : is it really needed to be changed, honestly?","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                                 \u0027cannot be validated properly.\u0027,"},{"line_number":200,"context_line":"                                 option, section)"},{"line_number":201,"context_line":"                    continue"},{"line_number":202,"context_line":"                logging.error(\u0027%s/%s is not part of the sample config\u0027,"},{"line_number":203,"context_line":"                              section, option)"},{"line_number":204,"context_line":"                errors \u003d True"},{"line_number":205,"context_line":"    if errors or (warnings and conf.fatal_warnings):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f621f24_f17fff11","line":202,"in_reply_to":"1f621f24_0e16da49","updated":"2020-11-16 18:02:59.000000000","message":"This is clearer, tbf","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0b0330c116c37f3953e2a82059f1118aabc86a82","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \u0027check-defaults\u0027,"},{"line_number":56,"context_line":"        default\u003dFalse,"},{"line_number":57,"context_line":"        help\u003d\u0027Report differences between the sample values and current values.\u0027"},{"line_number":58,"context_line":"             \u0027 This will also trigger --fatal-warnings and obeys to \u0027"},{"line_number":59,"context_line":"             \u0027--exclude-group.\u0027),"},{"line_number":60,"context_line":"    cfg.BoolOpt("},{"line_number":61,"context_line":"        \u0027fatal-warnings\u0027,"},{"line_number":62,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_be6b82b4","line":59,"range":{"start_line":58,"start_character":13,"end_line":59,"end_character":31},"updated":"2020-11-17 16:00:19.000000000","message":"I think this can probably be dropped. It\u0027s expected behavior, at least in my eyes.\n\nAlso, trailing space, not leading space","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"11773e181ec1dbfb7bd757c36400b3cf397b1e14","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \u0027check-defaults\u0027,"},{"line_number":56,"context_line":"        default\u003dFalse,"},{"line_number":57,"context_line":"        help\u003d\u0027Report differences between the sample values and current values.\u0027"},{"line_number":58,"context_line":"             \u0027 This will also trigger --fatal-warnings and obeys to \u0027"},{"line_number":59,"context_line":"             \u0027--exclude-group.\u0027),"},{"line_number":60,"context_line":"    cfg.BoolOpt("},{"line_number":61,"context_line":"        \u0027fatal-warnings\u0027,"},{"line_number":62,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_f96b4f82","line":59,"range":{"start_line":58,"start_character":13,"end_line":59,"end_character":31},"in_reply_to":"1f621f24_b9239c55","updated":"2020-11-18 02:39:28.000000000","message":"Ben, the help text isn\u0027t clear I agree, I\u0027ll just drop it as recommended by Stephen.","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"3c9cdcbefdc2efc174e71e0fde18ba6acee19114","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \u0027check-defaults\u0027,"},{"line_number":56,"context_line":"        default\u003dFalse,"},{"line_number":57,"context_line":"        help\u003d\u0027Report differences between the sample values and current values.\u0027"},{"line_number":58,"context_line":"             \u0027 This will also trigger --fatal-warnings and obeys to \u0027"},{"line_number":59,"context_line":"             \u0027--exclude-group.\u0027),"},{"line_number":60,"context_line":"    cfg.BoolOpt("},{"line_number":61,"context_line":"        \u0027fatal-warnings\u0027,"},{"line_number":62,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_b9239c55","line":59,"range":{"start_line":58,"start_character":13,"end_line":59,"end_character":31},"in_reply_to":"1f621f24_be6b82b4","updated":"2020-11-17 17:30:12.000000000","message":"The fatal warnings part isn\u0027t true either, is it? I don\u0027t see anything below that would make warnings fatal when this option is enabled.\n\nWhich I\u0027m fine with, to be clear. If this is primarily a debugging tool where we expect the deployer to look at the output for reference then I think it should be up to them how the warnings behave. There\u0027s no reason to force fatal warnings here.","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"2e0ce148f159b41479fdeaecd27774b3fd6b14c7","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \u0027check-defaults\u0027,"},{"line_number":56,"context_line":"        default\u003dFalse,"},{"line_number":57,"context_line":"        help\u003d\u0027Report differences between the sample values and current values.\u0027"},{"line_number":58,"context_line":"             \u0027 This will also trigger --fatal-warnings and obeys to \u0027"},{"line_number":59,"context_line":"             \u0027--exclude-group.\u0027),"},{"line_number":60,"context_line":"    cfg.BoolOpt("},{"line_number":61,"context_line":"        \u0027fatal-warnings\u0027,"},{"line_number":62,"context_line":"        default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_a73b72c6","line":59,"range":{"start_line":58,"start_character":13,"end_line":59,"end_character":31},"in_reply_to":"1f621f24_f96b4f82","updated":"2020-11-18 02:49:27.000000000","message":"Done","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"3c9cdcbefdc2efc174e71e0fde18ba6acee19114","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"KNOWN_BAD_GROUPS \u003d [\u0027keystone_authtoken\u0027]"},{"line_number":74,"context_line":"VALIDATE_DEFAULTS_EXCLUSIONS \u003d ["},{"line_number":75,"context_line":"    re.compile(r\u0027.*_ur(i|l)$\u0027),"},{"line_number":76,"context_line":"    re.compile(r\u0027.*connection$\u0027),"},{"line_number":77,"context_line":"    re.compile(r\u0027password\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_f9eeb4ea","line":74,"updated":"2020-11-17 17:30:12.000000000","message":"What is the reason for this, and do we need to add an option so deployers can specify what they do and don\u0027t care about? \n\nFor example, in some cases the default connection string is what most people will want to use so I could see this suppressing relevant warnings. From a sosreport standpoint, there are cases where I want to see my_ip and host. I can always go look it up in the full config, but since this is a convenience tool to show only the changed options it would be nice if it could include all the things that got changed, even the ones we expect to differ from defaults.\n\nMaybe we add these regex strings as the default to a list opt so users can add or remove entries as they desire?","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"2e0ce148f159b41479fdeaecd27774b3fd6b14c7","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"KNOWN_BAD_GROUPS \u003d [\u0027keystone_authtoken\u0027]"},{"line_number":74,"context_line":"VALIDATE_DEFAULTS_EXCLUSIONS \u003d ["},{"line_number":75,"context_line":"    re.compile(r\u0027.*_ur(i|l)$\u0027),"},{"line_number":76,"context_line":"    re.compile(r\u0027.*connection$\u0027),"},{"line_number":77,"context_line":"    re.compile(r\u0027password\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_c73e6eb8","line":74,"in_reply_to":"1f621f24_39882721","updated":"2020-11-18 02:49:27.000000000","message":"Done","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"11773e181ec1dbfb7bd757c36400b3cf397b1e14","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"KNOWN_BAD_GROUPS \u003d [\u0027keystone_authtoken\u0027]"},{"line_number":74,"context_line":"VALIDATE_DEFAULTS_EXCLUSIONS \u003d ["},{"line_number":75,"context_line":"    re.compile(r\u0027.*_ur(i|l)$\u0027),"},{"line_number":76,"context_line":"    re.compile(r\u0027.*connection$\u0027),"},{"line_number":77,"context_line":"    re.compile(r\u0027password\u0027),"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_39882721","line":74,"in_reply_to":"1f621f24_f9eeb4ea","updated":"2020-11-18 02:39:28.000000000","message":"The reason why I added this is because these were, imho, always flagging. I like the idea of listOpt, working on it.","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0b0330c116c37f3953e2a82059f1118aabc86a82","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"KNOWN_BAD_GROUPS \u003d [\u0027keystone_authtoken\u0027]"},{"line_number":74,"context_line":"VALIDATE_DEFAULTS_EXCLUSIONS \u003d ["},{"line_number":75,"context_line":"    re.compile(r\u0027.*_ur(i|l)$\u0027),"},{"line_number":76,"context_line":"    re.compile(r\u0027.*connection$\u0027),"},{"line_number":77,"context_line":"    re.compile(r\u0027password\u0027),"},{"line_number":78,"context_line":"    re.compile(r\u0027username\u0027),"},{"line_number":79,"context_line":"    re.compile(r\u0027my_ip\u0027),"},{"line_number":80,"context_line":"    re.compile(r\u0027host\u0027),"},{"line_number":81,"context_line":"    re.compile(r\u0027glance_api_servers\u0027),"},{"line_number":82,"context_line":"    re.compile(r\u0027osapi_volume_listen\u0027),"},{"line_number":83,"context_line":"    re.compile(r\u0027osapi_compute_listen\u0027),"},{"line_number":84,"context_line":"]"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_de5c7e1a","line":83,"range":{"start_line":75,"start_character":0,"end_line":83,"end_character":40},"updated":"2020-11-17 16:00:19.000000000","message":"nit: I don\u0027t see any escaping in the string so I don\u0027t think any of these need to be marked as raw (the \u0027r\u0027 prefix)","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"2e0ce148f159b41479fdeaecd27774b3fd6b14c7","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"KNOWN_BAD_GROUPS \u003d [\u0027keystone_authtoken\u0027]"},{"line_number":74,"context_line":"VALIDATE_DEFAULTS_EXCLUSIONS \u003d ["},{"line_number":75,"context_line":"    re.compile(r\u0027.*_ur(i|l)$\u0027),"},{"line_number":76,"context_line":"    re.compile(r\u0027.*connection$\u0027),"},{"line_number":77,"context_line":"    re.compile(r\u0027password\u0027),"},{"line_number":78,"context_line":"    re.compile(r\u0027username\u0027),"},{"line_number":79,"context_line":"    re.compile(r\u0027my_ip\u0027),"},{"line_number":80,"context_line":"    re.compile(r\u0027host\u0027),"},{"line_number":81,"context_line":"    re.compile(r\u0027glance_api_servers\u0027),"},{"line_number":82,"context_line":"    re.compile(r\u0027osapi_volume_listen\u0027),"},{"line_number":83,"context_line":"    re.compile(r\u0027osapi_compute_listen\u0027),"},{"line_number":84,"context_line":"]"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_675afa2a","line":83,"range":{"start_line":75,"start_character":0,"end_line":83,"end_character":40},"in_reply_to":"1f621f24_de5c7e1a","updated":"2020-11-18 02:49:27.000000000","message":"Done","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0b0330c116c37f3953e2a82059f1118aabc86a82","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    return option in name_data"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"def _validate_defaults(sections, opt_data, conf):"},{"line_number":108,"context_line":"    warnings \u003d False"},{"line_number":109,"context_line":"    for group, opts in opt_data[\u0027options\u0027].items():"},{"line_number":110,"context_line":"        if group in conf.exclude_group:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_5e7fce64","line":107,"range":{"start_line":107,"start_character":43,"end_line":107,"end_character":47},"updated":"2020-11-17 16:00:19.000000000","message":"nit: since you don\u0027t need any more attributes of this, you could just pass through an explicit \"exclude_groups\" option?\n\nnit: a docstring describing what this function an each parameter in it does would be nice","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"2e0ce148f159b41479fdeaecd27774b3fd6b14c7","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    return option in name_data"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"def _validate_defaults(sections, opt_data, conf):"},{"line_number":108,"context_line":"    warnings \u003d False"},{"line_number":109,"context_line":"    for group, opts in opt_data[\u0027options\u0027].items():"},{"line_number":110,"context_line":"        if group in conf.exclude_group:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_e730caeb","line":107,"range":{"start_line":107,"start_character":43,"end_line":107,"end_character":47},"in_reply_to":"1f621f24_3977870b","updated":"2020-11-18 02:49:27.000000000","message":"Done","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"11773e181ec1dbfb7bd757c36400b3cf397b1e14","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    return option in name_data"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"def _validate_defaults(sections, opt_data, conf):"},{"line_number":108,"context_line":"    warnings \u003d False"},{"line_number":109,"context_line":"    for group, opts in opt_data[\u0027options\u0027].items():"},{"line_number":110,"context_line":"        if group in conf.exclude_group:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_3977870b","line":107,"range":{"start_line":107,"start_character":43,"end_line":107,"end_character":47},"in_reply_to":"1f621f24_5e7fce64","updated":"2020-11-18 02:39:28.000000000","message":"docstring added. I\u0027ll keep the conf there for now since I just added an --exclude-options listOpt to have userprovided exclusions and it\u0027s better to compile them under this function, imho.","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0b0330c116c37f3953e2a82059f1118aabc86a82","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                value \u003d sections[group][opt.get(\u0027dest\u0027)]"},{"line_number":138,"context_line":"                keyname \u003d opt.get(\u0027dest\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            if any(rex.match(keyname) for rex in VALIDATE_DEFAULTS_EXCLUSIONS):"},{"line_number":141,"context_line":"                continue"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"            if len(value) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_7e3f2a86","line":140,"range":{"start_line":140,"start_character":12,"end_line":140,"end_character":79},"updated":"2020-11-17 16:00:19.000000000","message":"Because you haven\u0027t post-fixed the regexes, this will match on any option starting with the regex string. For example:\n\n  \u003e\u003e\u003e import re\n  \u003e\u003e\u003e rex \u003d re.compile(\u0027host\u0027)\n  \u003e\u003e\u003e rex.match(\u0027hostname\u0027)\n  \u003cre.Match object; span\u003d(0, 4), match\u003d\u0027host\u0027\u003e\n\nIs this intentional? If not, you might want to look at \u0027re.fullmatch\u0027 [1], as an alternative to adding \u0027$\u0027 to each of the regexes. Don\u0027t forget to drop any trailing \u0027$\u0027 from the regexes you have.\n\n[1] https://docs.python.org/3/library/re.html#re.fullmatch","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"11773e181ec1dbfb7bd757c36400b3cf397b1e14","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                value \u003d sections[group][opt.get(\u0027dest\u0027)]"},{"line_number":138,"context_line":"                keyname \u003d opt.get(\u0027dest\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            if any(rex.match(keyname) for rex in VALIDATE_DEFAULTS_EXCLUSIONS):"},{"line_number":141,"context_line":"                continue"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"            if len(value) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_b986f7b9","line":140,"range":{"start_line":140,"start_character":12,"end_line":140,"end_character":79},"in_reply_to":"1f621f24_7e3f2a86","updated":"2020-11-18 02:39:28.000000000","message":"re.fullmatch is indeed a better choice here, I just went with what I always use.","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"2e0ce148f159b41479fdeaecd27774b3fd6b14c7","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                value \u003d sections[group][opt.get(\u0027dest\u0027)]"},{"line_number":138,"context_line":"                keyname \u003d opt.get(\u0027dest\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            if any(rex.match(keyname) for rex in VALIDATE_DEFAULTS_EXCLUSIONS):"},{"line_number":141,"context_line":"                continue"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"            if len(value) \u003e 1:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_474b7e5e","line":140,"range":{"start_line":140,"start_character":12,"end_line":140,"end_character":79},"in_reply_to":"1f621f24_b986f7b9","updated":"2020-11-18 02:49:27.000000000","message":"Done","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"3c9cdcbefdc2efc174e71e0fde18ba6acee19114","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                keyname \u003d opt.get(\u0027dest\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            if any(rex.match(keyname) for rex in VALIDATE_DEFAULTS_EXCLUSIONS):"},{"line_number":141,"context_line":"                continue"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"            if len(value) \u003e 1:"},{"line_number":144,"context_line":"                logging.info(\u0027%s/%s defined %s times\u0027, group,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_79b464f2","line":141,"updated":"2020-11-17 17:30:12.000000000","message":"I think there should be an info level log message here to let the user know that we\u0027re skipping validation of something. A similar thing is done on line 198 for the ignored sections.","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"2e0ce148f159b41479fdeaecd27774b3fd6b14c7","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                keyname \u003d opt.get(\u0027dest\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            if any(rex.match(keyname) for rex in VALIDATE_DEFAULTS_EXCLUSIONS):"},{"line_number":141,"context_line":"                continue"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"            if len(value) \u003e 1:"},{"line_number":144,"context_line":"                logging.info(\u0027%s/%s defined %s times\u0027, group,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_2750020b","line":141,"in_reply_to":"1f621f24_79b464f2","updated":"2020-11-18 02:49:27.000000000","message":"Done","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"11773e181ec1dbfb7bd757c36400b3cf397b1e14","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                keyname \u003d opt.get(\u0027dest\u0027)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            if any(rex.match(keyname) for rex in VALIDATE_DEFAULTS_EXCLUSIONS):"},{"line_number":141,"context_line":"                continue"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"            if len(value) \u003e 1:"},{"line_number":144,"context_line":"                logging.info(\u0027%s/%s defined %s times\u0027, group,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_b97437d2","line":141,"in_reply_to":"1f621f24_79b464f2","updated":"2020-11-18 02:39:28.000000000","message":"I agree, added.","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0b0330c116c37f3953e2a82059f1118aabc86a82","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                continue"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"            if len(value) \u003e 1:"},{"line_number":144,"context_line":"                logging.info(\u0027%s/%s defined %s times\u0027, group,"},{"line_number":145,"context_line":"                             keyname, len(value))"},{"line_number":146,"context_line":"            if not opt[\u0027default\u0027]:"},{"line_number":147,"context_line":"                logging.warning("}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_9e47a61d","line":144,"range":{"start_line":144,"start_character":29,"end_line":144,"end_character":30},"updated":"2020-11-17 16:00:19.000000000","message":"style nit:\n\n  logging.info(\n      \u0027s/%s defined %s times\u0027, group, keyname, len(value))","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"},{"author":{"_account_id":27419,"name":"David Vallee Delisle","email":"me@dvd.dev","username":"dvd"},"change_message_id":"2e0ce148f159b41479fdeaecd27774b3fd6b14c7","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                continue"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"            if len(value) \u003e 1:"},{"line_number":144,"context_line":"                logging.info(\u0027%s/%s defined %s times\u0027, group,"},{"line_number":145,"context_line":"                             keyname, len(value))"},{"line_number":146,"context_line":"            if not opt[\u0027default\u0027]:"},{"line_number":147,"context_line":"                logging.warning("}],"source_content_type":"text/x-python","patch_set":10,"id":"1f621f24_875596fd","line":144,"range":{"start_line":144,"start_character":29,"end_line":144,"end_character":30},"in_reply_to":"1f621f24_9e47a61d","updated":"2020-11-18 02:49:27.000000000","message":"Done","commit_id":"f185994b843ea020bdeeff5a4f4bf3b1233c6413"}],"releasenotes/notes/validator-check-defaults-e7b596a2fde781a8.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Troubleshooting an issue can be cumbersome and it can be complicated to"},{"line_number":4,"context_line":"    identify the source of an issue. Being able to quickly find discrepancies"},{"line_number":5,"context_line":"    between a deployment\u0027s configuration and the sample configuration can help"},{"line_number":6,"context_line":"    operators to identify a lead and isolate an issue."},{"line_number":7,"context_line":"features:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The ``--check-defaults`` argument will compare the ``input-file`` with the"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f621f24_d1e3e303","line":6,"range":{"start_line":2,"start_character":0,"end_line":6,"end_character":54},"updated":"2020-11-16 18:02:59.000000000","message":"Only one prelude can exist per release, and it\u0027s not something we should include in a standard release note. Can you drop this?","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    operators to identify a lead and isolate an issue."},{"line_number":7,"context_line":"features:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The ``--check-defaults`` argument will compare the ``input-file`` with the"},{"line_number":10,"context_line":"    sample generate configuration and flag these discrepancies. It also obeys"},{"line_number":11,"context_line":"    the standard ``--exclude-group`` and ``--fatal-warning`` options."},{"line_number":12,"context_line":"fixes:"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f621f24_31efb7e9","line":9,"range":{"start_line":9,"start_character":29,"end_line":9,"end_character":37},"updated":"2020-11-16 18:02:59.000000000","message":"argument of what?\n\nYou should say that you\u0027ve added this flag too. At present, you\u0027re simply saying how it works. How about:\n\n  Add a ``--check-defaults`` flag to ``foo``. When specified,\n  ``foo`` will compare the ``input-file``...","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"features:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The ``--check-defaults`` argument will compare the ``input-file`` with the"},{"line_number":10,"context_line":"    sample generate configuration and flag these discrepancies. It also obeys"},{"line_number":11,"context_line":"    the standard ``--exclude-group`` and ``--fatal-warning`` options."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f621f24_91b7abf5","line":10,"range":{"start_line":10,"start_character":43,"end_line":10,"end_character":48},"updated":"2020-11-16 18:02:59.000000000","message":"any","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"features:"},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    The ``--check-defaults`` argument will compare the ``input-file`` with the"},{"line_number":10,"context_line":"    sample generate configuration and flag these discrepancies. It also obeys"},{"line_number":11,"context_line":"    the standard ``--exclude-group`` and ``--fatal-warning`` options."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f621f24_b1b467f3","line":10,"range":{"start_line":10,"start_character":11,"end_line":10,"end_character":19},"updated":"2020-11-16 18:02:59.000000000","message":"generated","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d5d5c6375a9767a9e4d88afde2284cd7c2e425e0","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    The ``--check-defaults`` argument will compare the ``input-file`` with the"},{"line_number":10,"context_line":"    sample generate configuration and flag these discrepancies. It also obeys"},{"line_number":11,"context_line":"    the standard ``--exclude-group`` and ``--fatal-warning`` options."},{"line_number":12,"context_line":"fixes:"},{"line_number":13,"context_line":"  - |"},{"line_number":14,"context_line":"    This release also clarifies an unclear message when a key is not part of"},{"line_number":15,"context_line":"    the sample configuration."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f621f24_91accb9f","line":15,"range":{"start_line":12,"start_character":0,"end_line":15,"end_character":29},"updated":"2020-11-16 18:02:59.000000000","message":"I don\u0027t think this is necessary, tbh. Can you drop it?","commit_id":"495997eaf46a2f64431c64b04713639b25274eac"}]}
