)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b76dabdae58fcd975aea94ca40745d02b8a3a09d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The deprecated_name option gets the - changed to a _, and this means he output"},{"line_number":10,"context_line":"of --help is wrong."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"https://bugs.launchpad.net/oslo/+bug/1279973"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ib67bcf8a4917eb9474ac415a48aea3b3672f1b6d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAUX%2F%2FNuI%3D","line":12,"updated":"2014-02-14 20:18:48.000000000","message":"revise the commit message to simply include:\n\n  Closes-Bug: 1279973\n\nas a footer along with the Change-Id below, and our automation will be able to track the two against each other","commit_id":"c9be16919cc7584825ccef785b628556230dc44c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"da07e1e438efa063c6bf83df8930ee624883c98b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"deprecated cli option has _ rather than -"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The deprecated_name option gets the - changed to a _, and this means he output"},{"line_number":10,"context_line":"of --help is wrong."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"https://bugs.launchpad.net/oslo/+bug/1279973"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAUX%2F%2BgJA%3D","line":9,"updated":"2014-02-20 20:44:25.000000000","message":"s/he/the/","commit_id":"f6da6db0ec8d5394ea194ab5900527a9861c6adf"},{"author":{"_account_id":10378,"name":"Luis de Bethencourt","email":"luis@debethencourt.com","username":"luisbg"},"change_message_id":"1a19c484627e92db573751ad234773b8c633aca5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"deprecated cli option has _ rather than -"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The deprecated_name option gets the - changed to a _, and this means he output"},{"line_number":10,"context_line":"of --help is wrong."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"https://bugs.launchpad.net/oslo/+bug/1279973"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAU3%2F%2Fcgs%3D","line":9,"in_reply_to":"AAAAUX%2F%2BgJA%3D","updated":"2014-02-26 15:57:52.000000000","message":"Done","commit_id":"f6da6db0ec8d5394ea194ab5900527a9861c6adf"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"726509ca381890fe50c4445720be95fd079994c9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"deprecated cli option has _ rather than -"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The deprecated_name option gets the - changed to a _, and this means the output"},{"line_number":10,"context_line":"of --help is wrong."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib67bcf8a4917eb9474ac415a48aea3b3672f1b6d"},{"line_number":13,"context_line":"Closes-Bug: 1279973"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAVn%2F%2Ff2E%3D","line":10,"updated":"2014-03-05 19:09:01.000000000","message":"Actually it\u0027s not wrong.  The existing code only recognized the _ form of deprecated names, so the help text is accurate.  It\u0027s just that our behavior is inconsistent here.","commit_id":"1fadb6587456a9bae15150bc01438779ebb9fc5f"},{"author":{"_account_id":10378,"name":"Luis de Bethencourt","email":"luis@debethencourt.com","username":"luisbg"},"change_message_id":"94ef14ee73f6b3d49466d7c301dcc2006ce2caac","unresolved":false,"context_lines":[{"line_number":7,"context_line":"deprecated cli option has _ rather than -"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The deprecated_name option gets the - changed to a _, and this means the output"},{"line_number":10,"context_line":"of --help is wrong."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ib67bcf8a4917eb9474ac415a48aea3b3672f1b6d"},{"line_number":13,"context_line":"Closes-Bug: 1279973"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAAVn%2F%2FftI%3D","line":10,"in_reply_to":"AAAAVn%2F%2Ff2E%3D","updated":"2014-03-05 19:23:38.000000000","message":"I will fix this when we decide what to do with the backwards compatibility.","commit_id":"1fadb6587456a9bae15150bc01438779ebb9fc5f"}],"oslo/config/cfg.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"3d80aa0a92b9352a08af438f76e487bb1d50b586","unresolved":false,"context_lines":[{"line_number":606,"context_line":"        self.secret \u003d secret"},{"line_number":607,"context_line":"        self.required \u003d required"},{"line_number":608,"context_line":"        if deprecated_name is not None:"},{"line_number":609,"context_line":"            deprecated_name \u003d deprecated_name.replace(\u0027_\u0027, \u0027-\u0027)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        self.deprecated_opts \u003d copy.deepcopy(deprecated_opts) or []"},{"line_number":612,"context_line":"        self.deprecated_opts.append(DeprecatedOpt(deprecated_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2Fhp4%3D","line":609,"updated":"2014-02-26 05:10:57.000000000","message":"why don\u0027t you just remove this replace()?","commit_id":"f6da6db0ec8d5394ea194ab5900527a9861c6adf"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"d825adacd0b362c5b199d7466ca92881e0596c0a","unresolved":false,"context_lines":[{"line_number":606,"context_line":"        self.secret \u003d secret"},{"line_number":607,"context_line":"        self.required \u003d required"},{"line_number":608,"context_line":"        if deprecated_name is not None:"},{"line_number":609,"context_line":"            deprecated_name \u003d deprecated_name.replace(\u0027_\u0027, \u0027-\u0027)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        self.deprecated_opts \u003d copy.deepcopy(deprecated_opts) or []"},{"line_number":612,"context_line":"        self.deprecated_opts.append(DeprecatedOpt(deprecated_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVX%2F%2F9Bk%3D","line":609,"in_reply_to":"AAAAU3%2F%2FcgY%3D","updated":"2014-02-27 06:50:40.000000000","message":"i don\u0027t understand.\nold code which uses deprecated_name\u003d\u0027foo_bar\u0027 won\u0027t work after this change.\ncan you explain a bit more?","commit_id":"f6da6db0ec8d5394ea194ab5900527a9861c6adf"},{"author":{"_account_id":10378,"name":"Luis de Bethencourt","email":"luis@debethencourt.com","username":"luisbg"},"change_message_id":"1a19c484627e92db573751ad234773b8c633aca5","unresolved":false,"context_lines":[{"line_number":606,"context_line":"        self.secret \u003d secret"},{"line_number":607,"context_line":"        self.required \u003d required"},{"line_number":608,"context_line":"        if deprecated_name is not None:"},{"line_number":609,"context_line":"            deprecated_name \u003d deprecated_name.replace(\u0027_\u0027, \u0027-\u0027)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        self.deprecated_opts \u003d copy.deepcopy(deprecated_opts) or []"},{"line_number":612,"context_line":"        self.deprecated_opts.append(DeprecatedOpt(deprecated_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2FcgY%3D","line":609,"in_reply_to":"AAAAU3%2F%2Fhp4%3D","updated":"2014-02-26 15:57:52.000000000","message":"We need to support any old scripts that use the old format with \u0027_\u0027.","commit_id":"f6da6db0ec8d5394ea194ab5900527a9861c6adf"},{"author":{"_account_id":10378,"name":"Luis de Bethencourt","email":"luis@debethencourt.com","username":"luisbg"},"change_message_id":"4c769812047d14f382c48618d1a8f5e3005a02f8","unresolved":false,"context_lines":[{"line_number":606,"context_line":"        self.secret \u003d secret"},{"line_number":607,"context_line":"        self.required \u003d required"},{"line_number":608,"context_line":"        if deprecated_name is not None:"},{"line_number":609,"context_line":"            deprecated_name \u003d deprecated_name.replace(\u0027_\u0027, \u0027-\u0027)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        self.deprecated_opts \u003d copy.deepcopy(deprecated_opts) or []"},{"line_number":612,"context_line":"        self.deprecated_opts.append(DeprecatedOpt(deprecated_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVX%2F%2F5yo%3D","line":609,"in_reply_to":"AAAAVX%2F%2F9Bk%3D","updated":"2014-02-27 14:09:00.000000000","message":"There was a switch recently from --all_options_using_underscores to --all-options-using-hyphens-instead. So this replace was meant to make old config files that use the old system remain working.\n\nBut now that I think of it, that old config file would break in all other names, since this underscore-to-hyphen replace doesn\u0027t happen for other parameters.\n\nWill remove this. Thanks.","commit_id":"f6da6db0ec8d5394ea194ab5900527a9861c6adf"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"559f84ea384f48ee1a07a4d0bd27e06c1e5565f7","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        self.secret \u003d secret"},{"line_number":605,"context_line":"        self.required \u003d required"},{"line_number":606,"context_line":"        if deprecated_name is not None:"},{"line_number":607,"context_line":"            deprecated_name \u003d deprecated_name.replace(\u0027-\u0027, \u0027_\u0027)"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"        self.deprecated_opts \u003d copy.deepcopy(deprecated_opts) or []"},{"line_number":610,"context_line":"        self.deprecated_opts.append(DeprecatedOpt(deprecated_name,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_2860f9a3","side":"PARENT","line":607,"updated":"2014-06-14 08:34:47.000000000","message":"The idea with this is simply to make the attribute name valid - i.e. CONF.old_foo rather than CONF.old-foo\n\nSee how e.g. namedtuple just outright rejects names with a hypen\n\n \u003e\u003e\u003e t \u003d collections.namedtuple(\u0027Foo\u0027, [\u0027bar\u0027, \u0027old-foo\u0027])\n Traceback (most recent call last):\n   File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n   File \"/usr/lib64/python2.7/collections.py\", line 325, in namedtuple\n     \u0027alphanumeric characters and underscores: %r\u0027 % name)\n ValueError: Type names and field names can only contain alphanumeric characters and underscores: \u0027old-foo\u0027\n\nHowever, you\u0027re right that it shouldn\u0027t affect the name of the CLI option","commit_id":"4b8b206b44d385265cad0bb5e7b3c62259381754"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"badd9bb5e6af3ddc55bbd0cc6588f1103b0d824d","unresolved":false,"context_lines":[{"line_number":605,"context_line":"        self.required \u003d required"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"        self.deprecated_opts \u003d copy.deepcopy(deprecated_opts) or []"},{"line_number":608,"context_line":"        self.deprecated_opts.append(DeprecatedOpt(deprecated_name,"},{"line_number":609,"context_line":"                                                  group\u003ddeprecated_group))"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"    def __ne__(self, another):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_fd5ad181","line":608,"updated":"2014-06-10 20:32:33.000000000","message":"What if we add both the - and _ forms here instead?  I don\u0027t know that we can drop support for the existing behavior, but I think adding both would be okay.\n\nThe only potential problem I see with that would be if someone had an opt named new_foo with a deprecated name old_foo, but they also have a completely separate opt named old-foo.  That\u0027s unlikely, to say the least, and I\u0027d be less concerned about breaking a user in that situation than I would leaving this broken for someone who wants a deprecated opt named with a -, as is currently the case.\n\nSo my suggestion would be to leave this change the way it is, but add something like:\n\n if \u0027-\u0027 in deprecated_name:\n   self.deprecated_opts.append(DeprecatedOpt(deprecated_name.replace(\u0027-\u0027, \u0027_\u0027), group\u003ddeprecated_group))","commit_id":"5a43e71b9a4f0b67be27103f43ef51e89494ee50"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"559f84ea384f48ee1a07a4d0bd27e06c1e5565f7","unresolved":false,"context_lines":[{"line_number":606,"context_line":""},{"line_number":607,"context_line":"        self.deprecated_opts \u003d copy.deepcopy(deprecated_opts) or []"},{"line_number":608,"context_line":"        self.deprecated_opts.append(DeprecatedOpt(deprecated_name,"},{"line_number":609,"context_line":"                                                  group\u003ddeprecated_group))"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"    def __ne__(self, another):"},{"line_number":612,"context_line":"        return vars(self) !\u003d vars(another)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_486385b0","line":609,"updated":"2014-06-14 08:34:47.000000000","message":"Yeah, good point Ben - let\u0027s leave the existing behavior but support the hyphenated version too\n\nIf we could hide the underscore version of the CLI option, that would be gravy","commit_id":"5a43e71b9a4f0b67be27103f43ef51e89494ee50"}],"tests/test_cfg.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"46a619a44dfd2318b34416bd26049fec8e42beb0","unresolved":false,"context_lines":[{"line_number":667,"context_line":"    def test_conf_file_str_value_deprecated_underscore(self):"},{"line_number":668,"context_line":"        \"\"\"deprecated names with underscores should work.\"\"\""},{"line_number":669,"context_line":"        self.conf.register_cli_opt("},{"line_number":670,"context_line":"            cfg.StrOpt(\u0027newfoo\u0027, deprecated_name\u003d\u0027old_foo\u0027))"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        self.conf([\u0027--old_foo\u0027, \u0027bar\u0027])"},{"line_number":673,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVX%2F%2F0OI%3D","line":670,"updated":"2014-02-28 03:57:30.000000000","message":"can you consider to add a test for the bug this commit fixes, too?\ni.e --old-bar","commit_id":"1499f3722a1c63222555eb3f962850cb5a2a64fb"},{"author":{"_account_id":10378,"name":"Luis de Bethencourt","email":"luis@debethencourt.com","username":"luisbg"},"change_message_id":"b302d5bb6440c401ac4f3b58ac614b0442f322b6","unresolved":false,"context_lines":[{"line_number":667,"context_line":"    def test_conf_file_str_value_deprecated_underscore(self):"},{"line_number":668,"context_line":"        \"\"\"deprecated names with underscores should work.\"\"\""},{"line_number":669,"context_line":"        self.conf.register_cli_opt("},{"line_number":670,"context_line":"            cfg.StrOpt(\u0027newfoo\u0027, deprecated_name\u003d\u0027old_foo\u0027))"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        self.conf([\u0027--old_foo\u0027, \u0027bar\u0027])"},{"line_number":673,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAVX%2F%2Fvig%3D","line":670,"in_reply_to":"AAAAVX%2F%2F0OI%3D","updated":"2014-02-28 16:20:14.000000000","message":"Done","commit_id":"1499f3722a1c63222555eb3f962850cb5a2a64fb"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"559f84ea384f48ee1a07a4d0bd27e06c1e5565f7","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                                        \u0027newfoo \u003d middle\\n\u0027),"},{"line_number":655,"context_line":"                                       (\u00271\u0027,"},{"line_number":656,"context_line":"                                        \u0027[DEFAULT]\\n\u0027"},{"line_number":657,"context_line":"                                        \u0027old-foo \u003d last\\n\u0027)])"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        self.conf([\u0027--newfoo\u0027, \u0027first\u0027,"},{"line_number":660,"context_line":"                   \u0027--config-file\u0027, paths[0],"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_c847951b","line":657,"updated":"2014-06-14 08:34:47.000000000","message":"I\u0027d be inclined to say we shouldn\u0027t support hyphenated names in the config files - it looks odd to me","commit_id":"5a43e71b9a4f0b67be27103f43ef51e89494ee50"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"559f84ea384f48ee1a07a4d0bd27e06c1e5565f7","unresolved":false,"context_lines":[{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        self.conf([\u0027--newfoo\u0027, \u0027first\u0027,"},{"line_number":660,"context_line":"                   \u0027--config-file\u0027, paths[0],"},{"line_number":661,"context_line":"                   \u0027--config-file\u0027, paths[1]])"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027newfoo\u0027))"},{"line_number":664,"context_line":"        self.assertFalse(hasattr(self.conf, \u0027old-foo\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_e85291dc","line":661,"updated":"2014-06-14 08:34:47.000000000","message":"We want to test that --old-foo actually works","commit_id":"5a43e71b9a4f0b67be27103f43ef51e89494ee50"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"559f84ea384f48ee1a07a4d0bd27e06c1e5565f7","unresolved":false,"context_lines":[{"line_number":661,"context_line":"                   \u0027--config-file\u0027, paths[1]])"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027newfoo\u0027))"},{"line_number":664,"context_line":"        self.assertFalse(hasattr(self.conf, \u0027old-foo\u0027))"},{"line_number":665,"context_line":"        self.assertEqual(self.conf.newfoo, \u0027last\u0027)"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def test_conf_file_str_value_deprecated_underscore(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_084edd37","line":664,"updated":"2014-06-14 08:34:47.000000000","message":"old-foo isn\u0027t a valid attribute name - perhaps test access explicitly with self.conf.old_foo","commit_id":"5a43e71b9a4f0b67be27103f43ef51e89494ee50"},{"author":{"_account_id":1247,"name":"Mark McLoughlin","email":"markmc@redhat.com","username":"markmc"},"change_message_id":"7c6f6aa3e98ab6b16c485cfb60a68dcb06725ae4","unresolved":false,"context_lines":[{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        self.assertTrue(hasattr(self.conf, \u0027newfoo\u0027))"},{"line_number":664,"context_line":"        self.assertFalse(hasattr(self.conf, \u0027old-foo\u0027))"},{"line_number":665,"context_line":"        self.assertEqual(self.conf.newfoo, \u0027last\u0027)"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def test_conf_file_str_value_deprecated_underscore(self):"},{"line_number":668,"context_line":"        \"\"\"deprecated names with underscores should work.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"1ae5cdf2_8884add3","line":665,"updated":"2014-06-14 09:48:52.000000000","message":"Gah, my mistake - I forgot that deprecated names are *not* available as attributes ... but we still want to test for the non-availability of \u0027old_foo\u0027 because that would have been the attribute name for an option called \u0027old-foo\u0027","commit_id":"5a43e71b9a4f0b67be27103f43ef51e89494ee50"}]}
