)]}'
{"keystonemiddleware/_common/config.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"d8250102b316348914dfe7d770b1870e2f7360d6","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            for group, opts in all_options:"},{"line_number":96,"context_line":"                local_oslo_config.register_opts(opts, group\u003dgroup)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        self.oslo_conf_obj \u003d local_oslo_config or cfg.CONF"},{"line_number":99,"context_line":"        self.group_name \u003d group_name"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def get(self, name, group\u003d_NOT_SET):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_271a136f","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":58},"updated":"2016-06-10 05:38:35.000000000","message":"We support either local oslo conf or global oslo conf, but not both? The old _conf_get() see to check all three.\n\nhttps://github.com/openstack/keystonemiddleware/blob/master/keystonemiddleware/auth_token/__init__.py#L732","commit_id":"37e7df3e534c5580e58017e73de9b9741003de86"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"455944e7d6f86bbf87539baeab75ffdc8a55181e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            for group, opts in all_options:"},{"line_number":96,"context_line":"                local_oslo_config.register_opts(opts, group\u003dgroup)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        self.oslo_conf_obj \u003d local_oslo_config or cfg.CONF"},{"line_number":99,"context_line":"        self.group_name \u003d group_name"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def get(self, name, group\u003d_NOT_SET):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_e6d52943","line":98,"range":{"start_line":98,"start_character":8,"end_line":98,"end_character":58},"in_reply_to":"7aa08908_271a136f","updated":"2016-06-14 05:13:05.000000000","message":"no, it checks for the presence of local_oslo_config and if available it always reads from that. There is no fallback from local oslo config object to global oslo config object, and there can\u0027t be because we don\u0027t know if we got a default value or a not set.","commit_id":"37e7df3e534c5580e58017e73de9b9741003de86"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"d8250102b316348914dfe7d770b1870e2f7360d6","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                # oslo.config. It will only be set when the project"},{"line_number":128,"context_line":"                # calls CONF(...) and when not set oslo.config oddly"},{"line_number":129,"context_line":"                # raises a NoSuchOptError exception."},{"line_number":130,"context_line":"                return self.oslo_conf_obj.project"},{"line_number":131,"context_line":"            except cfg.NoSuchOptError:"},{"line_number":132,"context_line":"                return None"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_a75ba32d","line":130,"range":{"start_line":130,"start_character":23,"end_line":130,"end_character":49},"updated":"2016-06-10 05:38:35.000000000","message":"same as above","commit_id":"37e7df3e534c5580e58017e73de9b9741003de86"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"73351c398fc57e051bea8458ee39563276e9df84","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                # raises a NoSuchOptError exception."},{"line_number":130,"context_line":"                return self.oslo_conf_obj.project"},{"line_number":131,"context_line":"            except cfg.NoSuchOptError:"},{"line_number":132,"context_line":"                return None"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_00f3590b","line":132,"updated":"2016-06-10 18:21:14.000000000","message":"If this returned an \u0027\u0027 (empty string), the tests would pass. The subsequent patchset ORs this None with an empty string to resolve the project name as an empty string here:\n\n  https://review.openstack.org/#/c/319717/3/keystonemiddleware/_common/config.py","commit_id":"37e7df3e534c5580e58017e73de9b9741003de86"}],"keystonemiddleware/auth_token/__init__.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"73351c398fc57e051bea8458ee39563276e9df84","unresolved":false,"context_lines":[{"line_number":809,"context_line":"        return plugin_loader.load_from_options_getter(getter)"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    def _build_useragent_string(self):"},{"line_number":812,"context_line":"        project \u003d self._conf.project"},{"line_number":813,"context_line":"        if project:"},{"line_number":814,"context_line":"            project_version \u003d _get_project_version(project)"},{"line_number":815,"context_line":"            project \u003d \u0027{project}/{project_version} \u0027.format("}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_005879f9","line":812,"updated":"2016-06-10 18:21:14.000000000","message":"If self._conf.project returns None, this should be OR\u0027d with an empty string so that the name comes out correctly, as done in the user agent consolidation patch.","commit_id":"37e7df3e534c5580e58017e73de9b9741003de86"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"455944e7d6f86bbf87539baeab75ffdc8a55181e","unresolved":false,"context_lines":[{"line_number":809,"context_line":"        return plugin_loader.load_from_options_getter(getter)"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    def _build_useragent_string(self):"},{"line_number":812,"context_line":"        project \u003d self._conf.project"},{"line_number":813,"context_line":"        if project:"},{"line_number":814,"context_line":"            project_version \u003d _get_project_version(project)"},{"line_number":815,"context_line":"            project \u003d \u0027{project}/{project_version} \u0027.format("}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_a6b84112","line":812,"in_reply_to":"7aa08908_005879f9","updated":"2016-06-14 05:13:05.000000000","message":"ah, thanks","commit_id":"37e7df3e534c5580e58017e73de9b9741003de86"}],"keystonemiddleware/auth_token/_config.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"7e56cd4fceb8772f5d2abdbac5a798ccafef3843","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_170b0c7e","line":1,"updated":"2016-06-09 05:35:31.000000000","message":"Shouldn\u0027t this be in a common module higher up so audit.py can use it?","commit_id":"337a9f6b528e192e40aeeaa5f260927531b6d2b5"}]}
