)]}'
{"keystone/cmd/cli.py":[{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"accfee6750493a0a7c8a8a62fb9197d21cb65e8a","unresolved":false,"context_lines":[{"line_number":396,"context_line":"    name \u003d \u0027fernet_setup\u0027"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    @classmethod"},{"line_number":399,"context_line":"    def initialize_fernet_key_repository(cls, keystone_user_id,"},{"line_number":400,"context_line":"                                         keystone_group_id, config_group\u003dNone):"},{"line_number":401,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":402,"context_line":"            CONF.fernet_tokens.key_repository,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f769fc5_fa5fc1e2","line":399,"range":{"start_line":399,"start_character":8,"end_line":399,"end_character":40},"updated":"2018-12-27 08:42:23.000000000","message":"1. ReceiptSetup can reuse this as well I think, if you move it to base class\n2. I prefer this is a staticmethod.\n3. TBH, instead of just optimize FernetSetup. I\u0027d like to see a change about optimizing FernetSetup, FernetRotate, ReceiptSetup, ReceiptRotate together, there are much duplicate code indeed.","commit_id":"6beb2699851d4673990d3a01bdcf1396f23c0da3"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"449a440c6fb400d198060e120c733d5c08637d90","unresolved":false,"context_lines":[{"line_number":396,"context_line":"    name \u003d \u0027fernet_setup\u0027"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    @classmethod"},{"line_number":399,"context_line":"    def initialize_fernet_key_repository(cls, keystone_user_id,"},{"line_number":400,"context_line":"                                         keystone_group_id, config_group\u003dNone):"},{"line_number":401,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":402,"context_line":"            CONF.fernet_tokens.key_repository,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f769fc5_b60ddd38","line":399,"range":{"start_line":399,"start_character":8,"end_line":399,"end_character":40},"in_reply_to":"1f769fc5_fa5fc1e2","updated":"2018-12-28 06:24:15.000000000","message":"Done","commit_id":"6beb2699851d4673990d3a01bdcf1396f23c0da3"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"210d3a477b5ed6b4f3195416c7d475ba7525996f","unresolved":false,"context_lines":[{"line_number":490,"context_line":"    @classmethod"},{"line_number":491,"context_line":"    def main(cls):"},{"line_number":492,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":493,"context_line":"            # TODO(gagehugo) Change this to CONF.token"},{"line_number":494,"context_line":"            CONF.fernet_tokens.key_repository,"},{"line_number":495,"context_line":"            CONF.fernet_tokens.max_active_keys,"},{"line_number":496,"context_line":"            \u0027fernet_tokens\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_4124e7c6","line":493,"range":{"start_line":493,"start_character":12,"end_line":493,"end_character":54},"updated":"2019-01-07 19:43:32.000000000","message":"This comment can be removed since it was decided to leave the conf settings in the current place under fernet_tokens for now.\n\nSame with the one below.","commit_id":"7f661a0d250faa90fcac98197a572301863d8029"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"6d37a162f8bc85ebf7e40184647352d0e1661f6f","unresolved":false,"context_lines":[{"line_number":490,"context_line":"    @classmethod"},{"line_number":491,"context_line":"    def main(cls):"},{"line_number":492,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":493,"context_line":"            # TODO(gagehugo) Change this to CONF.token"},{"line_number":494,"context_line":"            CONF.fernet_tokens.key_repository,"},{"line_number":495,"context_line":"            CONF.fernet_tokens.max_active_keys,"},{"line_number":496,"context_line":"            \u0027fernet_tokens\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_dca995df","line":493,"range":{"start_line":493,"start_character":12,"end_line":493,"end_character":54},"in_reply_to":"dfd5e7cf_4124e7c6","updated":"2019-01-08 09:24:41.000000000","message":"Done","commit_id":"7f661a0d250faa90fcac98197a572301863d8029"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"29d0d3eab8e93fbedfb1dc95a84a8adb2b67285c","unresolved":false,"context_lines":[{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    @classmethod"},{"line_number":491,"context_line":"    def main(cls):"},{"line_number":492,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":493,"context_line":"            # TODO(gagehugo) Change this to CONF.token"},{"line_number":494,"context_line":"            CONF.fernet_tokens.key_repository,"},{"line_number":495,"context_line":"            CONF.fernet_tokens.max_active_keys,"},{"line_number":496,"context_line":"            \u0027fernet_tokens\u0027"},{"line_number":497,"context_line":"        )"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        keystone_user_id, keystone_group_id \u003d cls.get_user_group()"},{"line_number":500,"context_line":"        futils.create_key_directory(keystone_user_id, keystone_group_id)"},{"line_number":501,"context_line":"        if futils.validate_key_repository(requires_write\u003dTrue):"},{"line_number":502,"context_line":"            futils.initialize_key_repository("},{"line_number":503,"context_line":"                keystone_user_id, keystone_group_id)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"class TokenRotate(BasePermissionsSetup):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_1d85f6ad","line":503,"range":{"start_line":492,"start_character":8,"end_line":503,"end_character":52},"updated":"2019-01-07 00:49:03.000000000","message":"Wouldn\u0027t you also want to do the same with this?","commit_id":"7f661a0d250faa90fcac98197a572301863d8029"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"210d3a477b5ed6b4f3195416c7d475ba7525996f","unresolved":false,"context_lines":[{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    @classmethod"},{"line_number":491,"context_line":"    def main(cls):"},{"line_number":492,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":493,"context_line":"            # TODO(gagehugo) Change this to CONF.token"},{"line_number":494,"context_line":"            CONF.fernet_tokens.key_repository,"},{"line_number":495,"context_line":"            CONF.fernet_tokens.max_active_keys,"},{"line_number":496,"context_line":"            \u0027fernet_tokens\u0027"},{"line_number":497,"context_line":"        )"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        keystone_user_id, keystone_group_id \u003d cls.get_user_group()"},{"line_number":500,"context_line":"        futils.create_key_directory(keystone_user_id, keystone_group_id)"},{"line_number":501,"context_line":"        if futils.validate_key_repository(requires_write\u003dTrue):"},{"line_number":502,"context_line":"            futils.initialize_key_repository("},{"line_number":503,"context_line":"                keystone_user_id, keystone_group_id)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"class TokenRotate(BasePermissionsSetup):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_7c7d126d","line":503,"range":{"start_line":492,"start_character":8,"end_line":503,"end_character":52},"in_reply_to":"dfd5e7cf_1d85f6ad","updated":"2019-01-07 19:43:32.000000000","message":"++","commit_id":"7f661a0d250faa90fcac98197a572301863d8029"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"6d37a162f8bc85ebf7e40184647352d0e1661f6f","unresolved":false,"context_lines":[{"line_number":489,"context_line":""},{"line_number":490,"context_line":"    @classmethod"},{"line_number":491,"context_line":"    def main(cls):"},{"line_number":492,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":493,"context_line":"            # TODO(gagehugo) Change this to CONF.token"},{"line_number":494,"context_line":"            CONF.fernet_tokens.key_repository,"},{"line_number":495,"context_line":"            CONF.fernet_tokens.max_active_keys,"},{"line_number":496,"context_line":"            \u0027fernet_tokens\u0027"},{"line_number":497,"context_line":"        )"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        keystone_user_id, keystone_group_id \u003d cls.get_user_group()"},{"line_number":500,"context_line":"        futils.create_key_directory(keystone_user_id, keystone_group_id)"},{"line_number":501,"context_line":"        if futils.validate_key_repository(requires_write\u003dTrue):"},{"line_number":502,"context_line":"            futils.initialize_key_repository("},{"line_number":503,"context_line":"                keystone_user_id, keystone_group_id)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"class TokenRotate(BasePermissionsSetup):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_7c974992","line":503,"range":{"start_line":492,"start_character":8,"end_line":503,"end_character":52},"in_reply_to":"dfd5e7cf_7c7d126d","updated":"2019-01-08 09:24:41.000000000","message":"Done","commit_id":"7f661a0d250faa90fcac98197a572301863d8029"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"29d0d3eab8e93fbedfb1dc95a84a8adb2b67285c","unresolved":false,"context_lines":[{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    @classmethod"},{"line_number":527,"context_line":"    def main(cls):"},{"line_number":528,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":529,"context_line":"            # TODO(gagehugo) Change this to CONF.token"},{"line_number":530,"context_line":"            CONF.fernet_tokens.key_repository,"},{"line_number":531,"context_line":"            CONF.fernet_tokens.max_active_keys,"},{"line_number":532,"context_line":"            \u0027fernet_tokens\u0027"},{"line_number":533,"context_line":"        )"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        keystone_user_id, keystone_group_id \u003d cls.get_user_group()"},{"line_number":536,"context_line":"        if futils.validate_key_repository(requires_write\u003dTrue):"},{"line_number":537,"context_line":"            futils.rotate_keys(keystone_user_id, keystone_group_id)"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"class ReceiptSetup(BasePermissionsSetup):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_bd914af4","line":537,"range":{"start_line":528,"start_character":8,"end_line":537,"end_character":67},"updated":"2019-01-07 00:49:03.000000000","message":"And this?","commit_id":"7f661a0d250faa90fcac98197a572301863d8029"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"6d37a162f8bc85ebf7e40184647352d0e1661f6f","unresolved":false,"context_lines":[{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    @classmethod"},{"line_number":527,"context_line":"    def main(cls):"},{"line_number":528,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":529,"context_line":"            # TODO(gagehugo) Change this to CONF.token"},{"line_number":530,"context_line":"            CONF.fernet_tokens.key_repository,"},{"line_number":531,"context_line":"            CONF.fernet_tokens.max_active_keys,"},{"line_number":532,"context_line":"            \u0027fernet_tokens\u0027"},{"line_number":533,"context_line":"        )"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        keystone_user_id, keystone_group_id \u003d cls.get_user_group()"},{"line_number":536,"context_line":"        if futils.validate_key_repository(requires_write\u003dTrue):"},{"line_number":537,"context_line":"            futils.rotate_keys(keystone_user_id, keystone_group_id)"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"class ReceiptSetup(BasePermissionsSetup):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_fc833955","line":537,"range":{"start_line":528,"start_character":8,"end_line":537,"end_character":67},"in_reply_to":"dfd5e7cf_bd914af4","updated":"2019-01-08 09:24:41.000000000","message":"Done","commit_id":"7f661a0d250faa90fcac98197a572301863d8029"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"2439e88837ec3f9f334d816bdeea15638a4809a7","unresolved":false,"context_lines":[{"line_number":387,"context_line":"    def initialize_fernet_token_receipt_repository("},{"line_number":388,"context_line":"            cls, keystone_user_id, keystone_group_id, config_group\u003dNone):"},{"line_number":389,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":390,"context_line":"            CONF.fernet_tokens.key_repository,"},{"line_number":391,"context_line":"            CONF.fernet_tokens.max_active_keys,"},{"line_number":392,"context_line":"            config_group"},{"line_number":393,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfdaf3ff_c6ef9be7","line":390,"range":{"start_line":390,"start_character":17,"end_line":390,"end_character":30},"updated":"2019-01-11 10:11:33.000000000","message":"The problem is that it\u0027s possible the user might have two different values configured for fernet_tokens or fernet_receipts, so this method will have to take config_group into account in order to use the right config values. For example see line 415 of the old change, it uses CONF.fernet_receipts.","commit_id":"9379f318e73454ef578040c3bd253c99c20d9986"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"0fa33f622ebff7081d2ebb4ea074b05b262a1294","unresolved":false,"context_lines":[{"line_number":387,"context_line":"    def initialize_fernet_token_receipt_repository("},{"line_number":388,"context_line":"            cls, keystone_user_id, keystone_group_id, config_group\u003dNone):"},{"line_number":389,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":390,"context_line":"            CONF.fernet_tokens.key_repository,"},{"line_number":391,"context_line":"            CONF.fernet_tokens.max_active_keys,"},{"line_number":392,"context_line":"            config_group"},{"line_number":393,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":6,"id":"bfdaf3ff_6c8566ad","line":390,"range":{"start_line":390,"start_character":17,"end_line":390,"end_character":30},"in_reply_to":"bfdaf3ff_c6ef9be7","updated":"2019-01-11 18:08:36.000000000","message":"Done","commit_id":"9379f318e73454ef578040c3bd253c99c20d9986"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"9321b62ff86cc17d1160bc9508d3289f8961ca42","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        return keystone_user_id, keystone_group_id"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    @staticmethod"},{"line_number":387,"context_line":"    def initialize_fernet_token_receipt_repository("},{"line_number":388,"context_line":"            cls, keystone_user_id, keystone_group_id, config_group\u003dNone):"},{"line_number":389,"context_line":"        futils \u003d fernet_utils.FernetUtils("}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_12f9214c","line":386,"range":{"start_line":386,"start_character":5,"end_line":386,"end_character":17},"updated":"2019-01-15 09:17:37.000000000","message":"You call the function at L471 in classmethod way. So either change \"staticmethod\" to \"classmethod\" here or channge \"cls\" to \"FernetRotate\" there.\n\nAnd the same problem in other places as well.","commit_id":"dd5f9cb6c1a6d3e910dff58eb75df5408b6faeb1"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"9321b62ff86cc17d1160bc9508d3289f8961ca42","unresolved":false,"context_lines":[{"line_number":387,"context_line":"    def initialize_fernet_token_receipt_repository("},{"line_number":388,"context_line":"            cls, keystone_user_id, keystone_group_id, config_group\u003dNone):"},{"line_number":389,"context_line":"        futils \u003d fernet_utils.FernetUtils("},{"line_number":390,"context_line":"            CONF.config_group.key_repository,"},{"line_number":391,"context_line":"            CONF.config_group.max_active_keys,"},{"line_number":392,"context_line":"            config_group"},{"line_number":393,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_92eaf1a9","line":390,"updated":"2019-01-15 09:17:37.000000000","message":"of cause this is a code error for CI failure.\nhttp://logs.openstack.org/64/627364/7/check/tempest-full/681f694/job-output.txt.gz#_2019-01-15_07_46_36_199239\n\nconfig_group here is a string, you should not call the CONF in this way. Try\n\n    conf_group \u003d getattr(CONF, config_group)\n\ninstead.","commit_id":"dd5f9cb6c1a6d3e910dff58eb75df5408b6faeb1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"539a9ec3b338563bab1844ffc0413f0aa7ab07fb","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        return keystone_user_id, keystone_group_id"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    @classmethod"},{"line_number":387,"context_line":"    def initialize_fernet_token_receipt_repository("},{"line_number":388,"context_line":"            cls, keystone_user_id, keystone_group_id, config_group\u003dNone):"},{"line_number":389,"context_line":"        conf_group \u003d getattr(CONF, config_group)"},{"line_number":390,"context_line":"        futils \u003d fernet_utils.FernetUtils("}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_44003968","line":387,"range":{"start_line":387,"start_character":26,"end_line":387,"end_character":39},"updated":"2019-01-15 21:02:14.000000000","message":"I\u0027m not sure how I\u0027m supposed to read this. Is this supposed to mean initialization for tokens *and* receipts? Since the underlying implementation doesn\u0027t really care too much about tokens or receipts, we could just remove this bit and keep the method names simpler.\n\n  def initialize_fernet_repository(...)","commit_id":"54eb620938d507cec9875795db814ede0a39bc5f"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"4e7822bbe2f45a715108e9c8c2036b74c7cfe382","unresolved":false,"context_lines":[{"line_number":384,"context_line":"        return keystone_user_id, keystone_group_id"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    @classmethod"},{"line_number":387,"context_line":"    def initialize_fernet_token_receipt_repository("},{"line_number":388,"context_line":"            cls, keystone_user_id, keystone_group_id, config_group\u003dNone):"},{"line_number":389,"context_line":"        conf_group \u003d getattr(CONF, config_group)"},{"line_number":390,"context_line":"        futils \u003d fernet_utils.FernetUtils("}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_c6ee69b3","line":387,"range":{"start_line":387,"start_character":26,"end_line":387,"end_character":39},"in_reply_to":"bfdaf3ff_44003968","updated":"2019-01-16 04:42:58.000000000","message":"Done","commit_id":"54eb620938d507cec9875795db814ede0a39bc5f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"539a9ec3b338563bab1844ffc0413f0aa7ab07fb","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                keystone_user_id, keystone_group_id)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    @classmethod"},{"line_number":402,"context_line":"    def rotate_fernet_token_receipt_repository("},{"line_number":403,"context_line":"            cls, keystone_user_id, keystone_group_id, config_group\u003dNone):"},{"line_number":404,"context_line":"        conf_group \u003d getattr(CONF, config_group)"},{"line_number":405,"context_line":"        futils \u003d fernet_utils.FernetUtils("}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_c4f3c99d","line":402,"range":{"start_line":402,"start_character":22,"end_line":402,"end_character":35},"updated":"2019-01-15 21:02:14.000000000","message":"Same comment here as above.","commit_id":"54eb620938d507cec9875795db814ede0a39bc5f"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"4e7822bbe2f45a715108e9c8c2036b74c7cfe382","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                keystone_user_id, keystone_group_id)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"    @classmethod"},{"line_number":402,"context_line":"    def rotate_fernet_token_receipt_repository("},{"line_number":403,"context_line":"            cls, keystone_user_id, keystone_group_id, config_group\u003dNone):"},{"line_number":404,"context_line":"        conf_group \u003d getattr(CONF, config_group)"},{"line_number":405,"context_line":"        futils \u003d fernet_utils.FernetUtils("}],"source_content_type":"text/x-python","patch_set":8,"id":"bfdaf3ff_2635f546","line":402,"range":{"start_line":402,"start_character":22,"end_line":402,"end_character":35},"in_reply_to":"bfdaf3ff_c4f3c99d","updated":"2019-01-16 04:42:58.000000000","message":"Done","commit_id":"54eb620938d507cec9875795db814ede0a39bc5f"}]}
