)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e32be57fe9c608b093e3c488ee8090ceec16cb6b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Unregister some configuration options after test"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Configuraiton opitons in KSM\u0027s testcase is not registered by"},{"line_number":10,"context_line":"oslo_config.fixture.Config, so it will no be unregistered after"},{"line_number":11,"context_line":"testcases, this requires us to clean these options by ourselves."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba15a1d1_01edbe24","line":9,"updated":"2015-09-15 13:37:49.000000000","message":"change \"Configuraiton\" to \"Configuration\"\n\nchange \"opitons\" to \"options\"\n\nRemove KSM since the repo is already known.","commit_id":"bab6f6ac4e588ccc77474aeae4e4765355edb8bd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e32be57fe9c608b093e3c488ee8090ceec16cb6b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Configuraiton opitons in KSM\u0027s testcase is not registered by"},{"line_number":10,"context_line":"oslo_config.fixture.Config, so it will no be unregistered after"},{"line_number":11,"context_line":"testcases, this requires us to clean these options by ourselves."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In this patch, we clean these options which has been registered"},{"line_number":14,"context_line":"more than one times with different value since they will cause"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba15a1d1_81c0ee7d","line":11,"updated":"2015-09-15 13:37:49.000000000","message":"This isn\u0027t what\u0027s happening. The config options aren\u0027t being registered by the testcase they\u0027re being registered at runtime by the auth_token middleware.","commit_id":"bab6f6ac4e588ccc77474aeae4e4765355edb8bd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e32be57fe9c608b093e3c488ee8090ceec16cb6b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"oslo_config.fixture.Config, so it will no be unregistered after"},{"line_number":11,"context_line":"testcases, this requires us to clean these options by ourselves."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In this patch, we clean these options which has been registered"},{"line_number":14,"context_line":"more than one times with different value since they will cause"},{"line_number":15,"context_line":"DuplicateOptError exceptions."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba15a1d1_a141720d","line":13,"updated":"2015-09-15 13:37:49.000000000","message":"change \"has\" to \"have\"","commit_id":"bab6f6ac4e588ccc77474aeae4e4765355edb8bd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e32be57fe9c608b093e3c488ee8090ceec16cb6b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"testcases, this requires us to clean these options by ourselves."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In this patch, we clean these options which has been registered"},{"line_number":14,"context_line":"more than one times with different value since they will cause"},{"line_number":15,"context_line":"DuplicateOptError exceptions."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Co-Authored-By: Lin Hua Cheng \u003cos.lcheng@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba15a1d1_2156c2d2","line":14,"updated":"2015-09-15 13:37:49.000000000","message":"change \"times\" to \"time\"\n\nchange \"value\" to \"values\"","commit_id":"bab6f6ac4e588ccc77474aeae4e4765355edb8bd"}],"keystonemiddleware/tests/unit/auth_token/base.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7b72c781c632f132315289db008a7c0727dba042","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        resp.request \u003d req"},{"line_number":66,"context_line":"        return resp"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def clean_conf_outof_fixture(self):"},{"line_number":69,"context_line":"        opts \u003d set()"},{"line_number":70,"context_line":"        # NOTE(davechen): Since other configuration options such as"},{"line_number":71,"context_line":"        # \u0027auth_plugin\u0027, \u0027auth_url\u0027 are referenced in lot of testcases"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_24d5b742","line":68,"updated":"2015-09-14 02:21:00.000000000","message":"NIT: s/outof/out_of","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"d89fb1cbfe562bd3514a36ad8a4656d78bd3fdb5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        resp.request \u003d req"},{"line_number":66,"context_line":"        return resp"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def clean_conf_outof_fixture(self):"},{"line_number":69,"context_line":"        opts \u003d set()"},{"line_number":70,"context_line":"        # NOTE(davechen): Since other configuration options such as"},{"line_number":71,"context_line":"        # \u0027auth_plugin\u0027, \u0027auth_url\u0027 are referenced in lot of testcases"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_44fc6b3e","line":68,"in_reply_to":"ba15a1d1_24d5b742","updated":"2015-09-14 02:54:37.000000000","message":"will update this when there are other update needed, thanks Eric.","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"8f4ce95807fdc557eff4e417f5220907970d1485","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        resp.request \u003d req"},{"line_number":66,"context_line":"        return resp"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def clean_conf_outof_fixture(self):"},{"line_number":69,"context_line":"        opts \u003d set()"},{"line_number":70,"context_line":"        # NOTE(davechen): Since other configuration options such as"},{"line_number":71,"context_line":"        # \u0027auth_plugin\u0027, \u0027auth_url\u0027 are referenced in lot of testcases"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_badc49e5","line":68,"in_reply_to":"ba15a1d1_44fc6b3e","updated":"2015-09-15 08:35:12.000000000","message":"Done","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"6ccfe78d8c6408f5c2a3e0414b9e5ffae0195d03","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def clean_conf_outof_fixture(self):"},{"line_number":69,"context_line":"        opts \u003d set()"},{"line_number":70,"context_line":"        # NOTE(davechen): Since other configuration options such as"},{"line_number":71,"context_line":"        # \u0027auth_plugin\u0027, \u0027auth_url\u0027 are referenced in lot of testcases"},{"line_number":72,"context_line":"        # defaultly, these configuration options cannot be cleaned easily."},{"line_number":73,"context_line":"        password_plugin_conf \u003d [\u0027user_id\u0027, \u0027username\u0027, \u0027password\u0027]"},{"line_number":74,"context_line":"        group_name \u003d \u0027keystone_authtoken\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_9a3ab735","line":71,"updated":"2015-09-14 20:34:31.000000000","message":"nit: s/lot/a lot/","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"8f4ce95807fdc557eff4e417f5220907970d1485","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def clean_conf_outof_fixture(self):"},{"line_number":69,"context_line":"        opts \u003d set()"},{"line_number":70,"context_line":"        # NOTE(davechen): Since other configuration options such as"},{"line_number":71,"context_line":"        # \u0027auth_plugin\u0027, \u0027auth_url\u0027 are referenced in lot of testcases"},{"line_number":72,"context_line":"        # defaultly, these configuration options cannot be cleaned easily."},{"line_number":73,"context_line":"        password_plugin_conf \u003d [\u0027user_id\u0027, \u0027username\u0027, \u0027password\u0027]"},{"line_number":74,"context_line":"        group_name \u003d \u0027keystone_authtoken\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_1ad535b8","line":71,"in_reply_to":"ba15a1d1_9a3ab735","updated":"2015-09-15 08:35:12.000000000","message":"Done","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"3b2bfb677a4e9a411fde352f2d6c60786293f103","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        opts \u003d set()"},{"line_number":70,"context_line":"        # NOTE(davechen): Since other configuration options such as"},{"line_number":71,"context_line":"        # \u0027auth_plugin\u0027, \u0027auth_url\u0027 are referenced in lot of testcases"},{"line_number":72,"context_line":"        # defaultly, these configuration options cannot be cleaned easily."},{"line_number":73,"context_line":"        password_plugin_conf \u003d [\u0027user_id\u0027, \u0027username\u0027, \u0027password\u0027]"},{"line_number":74,"context_line":"        group_name \u003d \u0027keystone_authtoken\u0027"},{"line_number":75,"context_line":"        for group in self.cfg.conf._groups.keys():"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_71a033f5","line":72,"updated":"2015-09-14 16:24:56.000000000","message":"nit: s/defaultly/by default/","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"8f4ce95807fdc557eff4e417f5220907970d1485","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        opts \u003d set()"},{"line_number":70,"context_line":"        # NOTE(davechen): Since other configuration options such as"},{"line_number":71,"context_line":"        # \u0027auth_plugin\u0027, \u0027auth_url\u0027 are referenced in lot of testcases"},{"line_number":72,"context_line":"        # defaultly, these configuration options cannot be cleaned easily."},{"line_number":73,"context_line":"        password_plugin_conf \u003d [\u0027user_id\u0027, \u0027username\u0027, \u0027password\u0027]"},{"line_number":74,"context_line":"        group_name \u003d \u0027keystone_authtoken\u0027"},{"line_number":75,"context_line":"        for group in self.cfg.conf._groups.keys():"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_fad161ce","line":72,"in_reply_to":"ba15a1d1_71a033f5","updated":"2015-09-15 08:35:12.000000000","message":"Done","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"6ccfe78d8c6408f5c2a3e0414b9e5ffae0195d03","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        # NOTE(davechen): Since other configuration options such as"},{"line_number":71,"context_line":"        # \u0027auth_plugin\u0027, \u0027auth_url\u0027 are referenced in lot of testcases"},{"line_number":72,"context_line":"        # defaultly, these configuration options cannot be cleaned easily."},{"line_number":73,"context_line":"        password_plugin_conf \u003d [\u0027user_id\u0027, \u0027username\u0027, \u0027password\u0027]"},{"line_number":74,"context_line":"        group_name \u003d \u0027keystone_authtoken\u0027"},{"line_number":75,"context_line":"        for group in self.cfg.conf._groups.keys():"},{"line_number":76,"context_line":"            if group !\u003d group_name:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_3a55ab4f","line":73,"updated":"2015-09-14 20:34:31.000000000","message":"are these really the only 3? Should we not clean the whole section? Perhaps minus a couple things that keystonemiddleware does define... but there is a larger list of things that can get pulled in from keystoneclient auth than there are things we define in keystonemiddleware.","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"8f4ce95807fdc557eff4e417f5220907970d1485","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        # NOTE(davechen): Since other configuration options such as"},{"line_number":71,"context_line":"        # \u0027auth_plugin\u0027, \u0027auth_url\u0027 are referenced in lot of testcases"},{"line_number":72,"context_line":"        # defaultly, these configuration options cannot be cleaned easily."},{"line_number":73,"context_line":"        password_plugin_conf \u003d [\u0027user_id\u0027, \u0027username\u0027, \u0027password\u0027]"},{"line_number":74,"context_line":"        group_name \u003d \u0027keystone_authtoken\u0027"},{"line_number":75,"context_line":"        for group in self.cfg.conf._groups.keys():"},{"line_number":76,"context_line":"            if group !\u003d group_name:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_5acbad1e","line":73,"in_reply_to":"ba15a1d1_3a55ab4f","updated":"2015-09-15 08:35:12.000000000","message":"so far, what I can see if only these conf is effected, they are register when loading the plugin.","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"3b2bfb677a4e9a411fde352f2d6c60786293f103","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # defaultly, these configuration options cannot be cleaned easily."},{"line_number":73,"context_line":"        password_plugin_conf \u003d [\u0027user_id\u0027, \u0027username\u0027, \u0027password\u0027]"},{"line_number":74,"context_line":"        group_name \u003d \u0027keystone_authtoken\u0027"},{"line_number":75,"context_line":"        for group in self.cfg.conf._groups.keys():"},{"line_number":76,"context_line":"            if group !\u003d group_name:"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            for conf in password_plugin_conf:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_11ca17a2","line":75,"updated":"2015-09-14 16:24:56.000000000","message":"Isn\u0027t there any other way than to expose a private member?\n\nIt is possible to iterate through (group, info) rather than enumerate keys and then dig for every value.","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"55bfaa822f5d4b680b63b070f92409f41d9ef17a","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # defaultly, these configuration options cannot be cleaned easily."},{"line_number":73,"context_line":"        password_plugin_conf \u003d [\u0027user_id\u0027, \u0027username\u0027, \u0027password\u0027]"},{"line_number":74,"context_line":"        group_name \u003d \u0027keystone_authtoken\u0027"},{"line_number":75,"context_line":"        for group in self.cfg.conf._groups.keys():"},{"line_number":76,"context_line":"            if group !\u003d group_name:"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            for conf in password_plugin_conf:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_909e1355","line":75,"updated":"2015-09-14 23:22:27.000000000","message":"we can\u0027t use internal properties of ConfigOpts. They might change and break us.","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"8f4ce95807fdc557eff4e417f5220907970d1485","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # defaultly, these configuration options cannot be cleaned easily."},{"line_number":73,"context_line":"        password_plugin_conf \u003d [\u0027user_id\u0027, \u0027username\u0027, \u0027password\u0027]"},{"line_number":74,"context_line":"        group_name \u003d \u0027keystone_authtoken\u0027"},{"line_number":75,"context_line":"        for group in self.cfg.conf._groups.keys():"},{"line_number":76,"context_line":"            if group !\u003d group_name:"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            for conf in password_plugin_conf:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_b736a901","line":75,"in_reply_to":"ba15a1d1_909e1355","updated":"2015-09-15 08:35:12.000000000","message":"I will use the method \u0027_get_opt_info\u0027 to do that, but if this is also not acceptable, let\u0027s do the alternative.","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"3b2bfb677a4e9a411fde352f2d6c60786293f103","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if group !\u003d group_name:"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            for conf in password_plugin_conf:"},{"line_number":79,"context_line":"                info \u003d self.cfg.conf._groups[group]._opts.get(conf)"},{"line_number":80,"context_line":"                if info:"},{"line_number":81,"context_line":"                    opts.add(info[\u0027opt\u0027])"},{"line_number":82,"context_line":"        self.cfg.conf.unregister_opts(opts, group\u003dgroup_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_f123e303","line":79,"updated":"2015-09-14 16:24:56.000000000","message":"I can\u0027t see why not to do it this way:\n\ninfo \u003d self.cfg.conf.keystone_auth_token\n\nif info:\n\n    opts.add(info.user_id)\n\n    opts.add(info.username)\n\n    opts.add(info.password)","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"8f4ce95807fdc557eff4e417f5220907970d1485","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            if group !\u003d group_name:"},{"line_number":77,"context_line":"                continue"},{"line_number":78,"context_line":"            for conf in password_plugin_conf:"},{"line_number":79,"context_line":"                info \u003d self.cfg.conf._groups[group]._opts.get(conf)"},{"line_number":80,"context_line":"                if info:"},{"line_number":81,"context_line":"                    opts.add(info[\u0027opt\u0027])"},{"line_number":82,"context_line":"        self.cfg.conf.unregister_opts(opts, group\u003dgroup_name)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_5a640d48","line":79,"in_reply_to":"ba15a1d1_f123e303","updated":"2015-09-15 08:35:12.000000000","message":"Done","commit_id":"d0cdadc31bba9a5cdb863f1d8d422fa383f1d8f7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e32be57fe9c608b093e3c488ee8090ceec16cb6b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.requests_mock \u003d self.useFixture(rm_fixture.Fixture())"},{"line_number":30,"context_line":"        self.logger \u003d fixtures.FakeLogger(level\u003dlogging.DEBUG)"},{"line_number":31,"context_line":"        self.cfg \u003d self.useFixture(cfg_fixture.Config())"},{"line_number":32,"context_line":"        self.addCleanup(self.clean_conf_out_of_fixture)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def create_middleware(cls, cb, conf\u003dNone):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_e1820a52","line":32,"updated":"2015-09-15 13:37:49.000000000","message":"rather than addCleanup here, create a subclass of cfg_fixture.Config and do the cleanup in there.","commit_id":"bab6f6ac4e588ccc77474aeae4e4765355edb8bd"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5ab5cc7abb82bc397527defb196bf129dd35e5ba","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            return"},{"line_number":77,"context_line":"        for conf in password_plugin_conf:"},{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                info \u003d self.cfg.conf._get_opt_info(conf, group_name)"},{"line_number":80,"context_line":"            except Exception:"},{"line_number":81,"context_line":"                pass"},{"line_number":82,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_acee50b2","line":79,"updated":"2015-09-15 11:48:06.000000000","message":"internal properties like _get_opt_info are meant to be implementation details and not referenced by applications.","commit_id":"bab6f6ac4e588ccc77474aeae4e4765355edb8bd"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"ccda088514c80ad4559703a2ed83f2cd9fe3b637","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            return"},{"line_number":77,"context_line":"        for conf in password_plugin_conf:"},{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                info \u003d self.cfg.conf._get_opt_info(conf, group_name)"},{"line_number":80,"context_line":"            except Exception:"},{"line_number":81,"context_line":"                pass"},{"line_number":82,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_26ba5824","line":79,"in_reply_to":"ba15a1d1_acee50b2","updated":"2015-09-16 11:33:23.000000000","message":"agreed, but there seems no such public method to do this, let\u0027s do the alternative instead.","commit_id":"bab6f6ac4e588ccc77474aeae4e4765355edb8bd"},{"author":{"_account_id":1941,"name":"Lin Hua Cheng","email":"os.lcheng@gmail.com","username":"lin-hua-cheng"},"change_message_id":"76666159a513f4534ec9efc4f9d9132a14e672b6","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            return"},{"line_number":77,"context_line":"        for conf in password_plugin_conf:"},{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                info \u003d self.cfg.conf._get_opt_info(conf, group_name)"},{"line_number":80,"context_line":"            except Exception:"},{"line_number":81,"context_line":"                pass"},{"line_number":82,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_914ee06d","line":79,"in_reply_to":"ba15a1d1_acee50b2","updated":"2015-09-15 23:47:59.000000000","message":"yeah, there is no guarantee this will work on future releases. We should be accessing private methods.","commit_id":"bab6f6ac4e588ccc77474aeae4e4765355edb8bd"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"df2e98957194359a41ce799d7d1fe1e0b945b66b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            try:"},{"line_number":79,"context_line":"                info \u003d self.cfg.conf._get_opt_info(conf, group_name)"},{"line_number":80,"context_line":"            except Exception:"},{"line_number":81,"context_line":"                pass"},{"line_number":82,"context_line":"            else:"},{"line_number":83,"context_line":"                opts.add(info[\u0027opt\u0027])"},{"line_number":84,"context_line":"        self.cfg.conf.unregister_opts(opts, group\u003dgroup_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_56b701d8","line":81,"updated":"2015-09-15 11:29:47.000000000","message":"Generally it is not a good idea to ignore all possible exceptions silently. As I see in oslo.config, they raise  NoSuchOptError.","commit_id":"bab6f6ac4e588ccc77474aeae4e4765355edb8bd"}]}
