)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7049,"name":"Kai Qiang Wu(Kennan)","email":"wkq5325@gmail.com","username":"Kennan"},"change_message_id":"bc851a111987ce9091c054e6b16bfbb4ddb06553","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Code refactor for keystoneclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Code refactor for keystoneclient"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Iac20185f2cc89ac8d6fe7cf30b2362302614df77"},{"line_number":12,"context_line":"Closes-Bug: #1490073"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da20952f_76b38d4d","line":9,"updated":"2015-09-01 04:56:14.000000000","message":"git message should be detailed than just use same sentence as above, like\n\nrename keystoneclient to keystone etc.","commit_id":"497d5ccb1df1fdf3c9dd2876f57a4268a1eebff8"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"c6de4a2c5bd1b1c258f0564d9a8c0a932bf38132","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Code refactor for keystoneclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1.Rename magnum_keystone_client to keystone."},{"line_number":10,"context_line":"2.Code refactor for keystoneclient and Make some adjustments to"},{"line_number":11,"context_line":"it to make it cleaner."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Iac20185f2cc89ac8d6fe7cf30b2362302614df77"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"ba15a1d1_71348ffa","line":10,"updated":"2015-09-22 05:26:43.000000000","message":"Can you pls show more detail for what and why you refactored for this?","commit_id":"e29ad3538180016717ebdd3a117858fcad73df47"},{"author":{"_account_id":12053,"name":"Hua Wang","email":"wanghua.humble@gmail.com","username":"humble00"},"change_message_id":"f82d23544dd9f725eece3939f5296e1c8c23ee0f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Code refactor for keystoneclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1.Rename magnum_keystone_client to keystone."},{"line_number":10,"context_line":"2.Code refactor for keystoneclient and Make some adjustments to"},{"line_number":11,"context_line":"it to make it cleaner."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Iac20185f2cc89ac8d6fe7cf30b2362302614df77"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"ba15a1d1_acdc0947","line":10,"in_reply_to":"ba15a1d1_71348ffa","updated":"2015-09-22 09:39:20.000000000","message":"Previous keystoneclient can only create trust for admin, but we need to create trust for users who are not admin later.","commit_id":"e29ad3538180016717ebdd3a117858fcad73df47"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"5c118356eb7409e5768749f49c8dcaefa28b102f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Code refactor for keystoneclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1.Rename magnum_keystone_client to keystone."},{"line_number":10,"context_line":"2.Code refactor for keystoneclient and Make some adjustments to"},{"line_number":11,"context_line":"it to make it cleaner."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Iac20185f2cc89ac8d6fe7cf30b2362302614df77"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"9a1a9d01_9b11c606","line":10,"in_reply_to":"ba15a1d1_acdc0947","updated":"2015-09-30 10:10:38.000000000","message":"I suggest that you add those comments to your commit message to make it more clear","commit_id":"e29ad3538180016717ebdd3a117858fcad73df47"}],"etc/magnum/magnum.conf.sample":[{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"837343e813f2dd05751a864204749a4e1476cfde","unresolved":false,"context_lines":[{"line_number":8,"context_line":"# Default value is True. (boolean value)"},{"line_number":9,"context_line":"#enable_authentication \u003d true"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Subset of trustor roles to be delegated to magnum. (list value)"},{"line_number":12,"context_line":"#trusts_delegated_roles \u003d magnum_assembly_update"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"# Directory where the magnum python module is installed. (string"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"da20952f_906ad818","side":"PARENT","line":11,"updated":"2015-09-08 03:23:54.000000000","message":"remove only this 3line","commit_id":"7ed30d1989d2fdacea8d6b94afef50bd2fca1b57"},{"author":{"_account_id":12053,"name":"Hua Wang","email":"wanghua.humble@gmail.com","username":"humble00"},"change_message_id":"5a09b5400101be13b53cdce415abd07b262528f7","unresolved":false,"context_lines":[{"line_number":8,"context_line":"# Default value is True. (boolean value)"},{"line_number":9,"context_line":"#enable_authentication \u003d true"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Subset of trustor roles to be delegated to magnum. (list value)"},{"line_number":12,"context_line":"#trusts_delegated_roles \u003d magnum_assembly_update"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"# Directory where the magnum python module is installed. (string"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"da20952f_fa644e49","side":"PARENT","line":11,"in_reply_to":"da20952f_906ad818","updated":"2015-09-09 03:56:00.000000000","message":"I use \u0027tox -egenconfig\u0027 to generate this file. I think it is the right way.I","commit_id":"7ed30d1989d2fdacea8d6b94afef50bd2fca1b57"},{"author":{"_account_id":12053,"name":"Hua Wang","email":"wanghua.humble@gmail.com","username":"humble00"},"change_message_id":"5a09b5400101be13b53cdce415abd07b262528f7","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Directory where the magnum python module is installed. (string"},{"line_number":12,"context_line":"# value)"},{"line_number":13,"context_line":"#pybasedir \u003d /opt/stack/magnum/magnum"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Directory where magnum binaries are installed. (string value)"},{"line_number":16,"context_line":"#bindir \u003d $pybasedir/bin"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"da20952f_dac86a24","line":13,"updated":"2015-09-09 03:56:00.000000000","message":"Does it matter?","commit_id":"32f4bd30cd69c37c6237d792b91fe5afa8b42879"},{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"29542c9b2be6d4007fac7567507346dabd07cc1a","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Directory where the magnum python module is installed. (string"},{"line_number":12,"context_line":"# value)"},{"line_number":13,"context_line":"#pybasedir \u003d /opt/stack/magnum/magnum"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Directory where magnum binaries are installed. (string value)"},{"line_number":16,"context_line":"#bindir \u003d $pybasedir/bin"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"da20952f_1017a8a3","line":13,"updated":"2015-09-08 03:23:02.000000000","message":"this should be `/home/test/magnum/magnum`","commit_id":"32f4bd30cd69c37c6237d792b91fe5afa8b42879"},{"author":{"_account_id":8143,"name":"Egor Guz","email":"egor.guz@gmail.com","username":"eghobo"},"change_message_id":"7f4139975d84d8e88a35081ae8cd3741f3beac30","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Directory where the magnum python module is installed. (string"},{"line_number":12,"context_line":"# value)"},{"line_number":13,"context_line":"#pybasedir \u003d /opt/stack/magnum/magnum"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Directory where magnum binaries are installed. (string value)"},{"line_number":16,"context_line":"#bindir \u003d $pybasedir/bin"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"da20952f_1ac26234","line":13,"in_reply_to":"da20952f_1017a8a3","updated":"2015-09-08 06:14:42.000000000","message":"@Motohiro: could you elaborate why \u0027/home/test/\u0027? \u0027/opt/stack/\u0027 looks like right location.","commit_id":"32f4bd30cd69c37c6237d792b91fe5afa8b42879"},{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"a009b2cabb6381f77ff5e994718f358b7bd0a456","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Directory where the magnum python module is installed. (string"},{"line_number":12,"context_line":"# value)"},{"line_number":13,"context_line":"#pybasedir \u003d /opt/stack/magnum/magnum"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"# Directory where magnum binaries are installed. (string value)"},{"line_number":16,"context_line":"#bindir \u003d $pybasedir/bin"}],"source_content_type":"application/octet-stream","patch_set":11,"id":"da20952f_2c503e0a","line":13,"in_reply_to":"da20952f_1ac26234","updated":"2015-09-08 14:15:35.000000000","message":"This change is not related this patch.","commit_id":"32f4bd30cd69c37c6237d792b91fe5afa8b42879"},{"author":{"_account_id":7049,"name":"Kai Qiang Wu(Kennan)","email":"wkq5325@gmail.com","username":"Kennan"},"change_message_id":"c40e813412f10062682f667bcd8385c1b0b2faeb","unresolved":false,"context_lines":[{"line_number":233,"context_line":"# From magnum"},{"line_number":234,"context_line":"#"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"# The port for the Magnum API server. (unknown type)"},{"line_number":237,"context_line":"# Minimum value: 1"},{"line_number":238,"context_line":"# Maximum value: 65535"},{"line_number":239,"context_line":"#port \u003d 9511"}],"source_content_type":"application/octet-stream","patch_set":18,"id":"9a1a9d01_104e636f","line":236,"updated":"2015-09-28 06:10:41.000000000","message":"The unknown type issue still under review\n\nhttps://review.openstack.org/#/c/221394/","commit_id":"d52237d89a88f063bfafd77e6e1f885569f61254"}],"magnum/common/clients.py":[{"author":{"_account_id":9095,"name":"Murali Allada","email":"amuralis@hotmail.com","username":"murali.allada"},"change_message_id":"d748d955fde285d397ffd1b9389a327321ba1af6","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        if self._keystone:"},{"line_number":120,"context_line":"            return self._keystone"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self._keystone \u003d keystone.KeystoneClientV3(self.context)"},{"line_number":123,"context_line":"        return self._keystone"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _get_client_option(self, client, option):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_ea8193fc","line":122,"updated":"2015-09-02 16:10:06.000000000","message":"Here we could call the method (in magnum/common/keystone.py) which initializes the right version of keystone.\n\nself._keystone \u003d keystone.KeystoneClient(self.context)","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"2652ba3bf2a74b304c8eb67b5bc3057649769083","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        if self._keystone:"},{"line_number":120,"context_line":"            return self._keystone"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self._keystone \u003d keystone.KeystoneClientV3(self.context)"},{"line_number":123,"context_line":"        return self._keystone"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _get_client_option(self, client, option):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_406dce02","line":122,"in_reply_to":"da20952f_34226402","updated":"2015-09-03 15:36:52.000000000","message":"Personally, I have no problem for introducing a version-agnostic Keystone client, but the team needs to reach a consensus on this. Also, it should be addressed in a separated patch and it worth a dedicated bug or BP for that. This patch should focus on one thing which is the refactoring of client code for keystone trust support.","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"c13f6e439e3e6902e9453b35b2aa1698fa499cc4","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        if self._keystone:"},{"line_number":120,"context_line":"            return self._keystone"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self._keystone \u003d keystone.KeystoneClientV3(self.context)"},{"line_number":123,"context_line":"        return self._keystone"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _get_client_option(self, client, option):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_77ea0276","line":122,"in_reply_to":"da20952f_406dce02","updated":"2015-09-04 03:03:37.000000000","message":"+1 Hongbin","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":9095,"name":"Murali Allada","email":"amuralis@hotmail.com","username":"murali.allada"},"change_message_id":"a70dbc26282f6b1abe3b8d34875c04ed03ee6016","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        if self._keystone:"},{"line_number":120,"context_line":"            return self._keystone"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self._keystone \u003d keystone.KeystoneClientV3(self.context)"},{"line_number":123,"context_line":"        return self._keystone"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _get_client_option(self, client, option):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_b905db10","line":122,"in_reply_to":"da20952f_77ea0276","updated":"2015-09-04 14:20:05.000000000","message":"Sure. I can create a new blueprint for it.","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":9095,"name":"Murali Allada","email":"amuralis@hotmail.com","username":"murali.allada"},"change_message_id":"f4ea7f578e335549343f5cf3c04e6d5477b10992","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        if self._keystone:"},{"line_number":120,"context_line":"            return self._keystone"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self._keystone \u003d keystone.KeystoneClientV3(self.context)"},{"line_number":123,"context_line":"        return self._keystone"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _get_client_option(self, client, option):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_34226402","line":122,"in_reply_to":"da20952f_c446f27a","updated":"2015-09-03 14:28:45.000000000","message":"Hua,\n\nWe don\u0027t need to support keystone V2 upstream. I\u0027m suggesting that we support keystone V3 only, but abstract the client creation call here so that operators that don\u0027t run V3 can support a different version themselves.\n\nWe don\u0027t need to add support for other keystone versions upstream.","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"fff29fb724280ccbc226275df522f4f243b7f6b5","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        if self._keystone:"},{"line_number":120,"context_line":"            return self._keystone"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self._keystone \u003d keystone.KeystoneClientV3(self.context)"},{"line_number":123,"context_line":"        return self._keystone"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _get_client_option(self, client, option):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_70db361c","line":122,"in_reply_to":"da20952f_ea8193fc","updated":"2015-09-02 16:52:15.000000000","message":"+1. Lets work on the abstract API at this layer and keep the specifics to magnum/common/keystone.","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":12053,"name":"Hua Wang","email":"wanghua.humble@gmail.com","username":"humble00"},"change_message_id":"ff367ad49372e4bee35fcf841721365b9f265851","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        if self._keystone:"},{"line_number":120,"context_line":"            return self._keystone"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self._keystone \u003d keystone.KeystoneClientV3(self.context)"},{"line_number":123,"context_line":"        return self._keystone"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def _get_client_option(self, client, option):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_c446f27a","line":122,"in_reply_to":"da20952f_ea8193fc","updated":"2015-09-03 00:34:28.000000000","message":"I want to deprecate keystone v2, only support keystone v3.","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"3836150b77bdd5020d21246c82b02b5b4a6e745c","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def url_for(self, **kwargs):"},{"line_number":101,"context_line":"        return self.keystone().client.service_catalog.url_for(**kwargs)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def magnum_url(self):"},{"line_number":104,"context_line":"        endpoint_type \u003d self._get_client_option(\u0027magnum\u0027, \u0027endpoint_type\u0027)"},{"line_number":105,"context_line":"        region_name \u003d self._get_client_option(\u0027magnum\u0027, \u0027region_name\u0027)"},{"line_number":106,"context_line":"        return self.url_for(service_type\u003d\u0027container\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_11931702","side":"PARENT","line":103,"updated":"2015-09-08 14:14:12.000000000","message":"I added this to use later for implementing bp:secure-kubernetes\n\n* https://review.openstack.org/#/c/205926/\n\nPlease don\u0027t remove this.","commit_id":"7ed30d1989d2fdacea8d6b94afef50bd2fca1b57"},{"author":{"_account_id":12053,"name":"Hua Wang","email":"wanghua.humble@gmail.com","username":"humble00"},"change_message_id":"db821ec2e08148c8f4120e1563fa199c72d1a9c9","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def url_for(self, **kwargs):"},{"line_number":101,"context_line":"        return self.keystone().client.service_catalog.url_for(**kwargs)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def magnum_url(self):"},{"line_number":104,"context_line":"        endpoint_type \u003d self._get_client_option(\u0027magnum\u0027, \u0027endpoint_type\u0027)"},{"line_number":105,"context_line":"        region_name \u003d self._get_client_option(\u0027magnum\u0027, \u0027region_name\u0027)"},{"line_number":106,"context_line":"        return self.url_for(service_type\u003d\u0027container\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_94ab7975","side":"PARENT","line":103,"in_reply_to":"da20952f_11931702","updated":"2015-09-09 03:55:18.000000000","message":"Done","commit_id":"7ed30d1989d2fdacea8d6b94afef50bd2fca1b57"},{"author":{"_account_id":11650,"name":"Tom Cammann","email":"tom.cammann@hpe.com","username":"cammann"},"change_message_id":"a9f7b62a059484b031f8310691153a4a043ada21","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"magnum_client_opts \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_c5cd2032","side":"PARENT","line":28,"updated":"2015-09-17 15:20:25.000000000","message":"nit: unnecessary change","commit_id":"4381c685b3128f24e8030b15649497c267c5feaa"}],"magnum/common/keystone.py":[{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"803e02c50dc680c160ae7da23c4e7d9ac61e6375","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2020 - Rackspace Hosting."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_df42c5ad","line":1,"updated":"2015-08-31 17:14:45.000000000","message":"2020 ? Future :)","commit_id":"497d5ccb1df1fdf3c9dd2876f57a4268a1eebff8"},{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"b0e8b4e62c435416efa3a7ccb68300b377d30a26","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _get_admin_credentials(self):"},{"line_number":64,"context_line":"        credentials \u003d {"},{"line_number":65,"context_line":"            \u0027username\u0027: CONF.keystone_authtoken.admin_user,"},{"line_number":66,"context_line":"            \u0027password\u0027: CONF.keystone_authtoken.admin_password,"},{"line_number":67,"context_line":"            \u0027project_name\u0027: CONF.keystone_authtoken.admin_tenant_name"},{"line_number":68,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_5ca1cdf6","line":65,"updated":"2015-09-01 03:13:43.000000000","message":"I want to specify project_domain_id and user_domain_id. If it wasn\u0027t specified, it will be \u0027default\u0027.","commit_id":"497d5ccb1df1fdf3c9dd2876f57a4268a1eebff8"},{"author":{"_account_id":12053,"name":"Hua Wang","email":"wanghua.humble@gmail.com","username":"humble00"},"change_message_id":"52c0440ec6919f7978821b667347aa1a0a1e9b52","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _get_admin_credentials(self):"},{"line_number":64,"context_line":"        credentials \u003d {"},{"line_number":65,"context_line":"            \u0027username\u0027: CONF.keystone_authtoken.admin_user,"},{"line_number":66,"context_line":"            \u0027password\u0027: CONF.keystone_authtoken.admin_password,"},{"line_number":67,"context_line":"            \u0027project_name\u0027: CONF.keystone_authtoken.admin_tenant_name"},{"line_number":68,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_9235c9f8","line":65,"in_reply_to":"da20952f_5ca1cdf6","updated":"2015-09-06 01:20:20.000000000","message":"Keystone v3 client can do it for us.","commit_id":"497d5ccb1df1fdf3c9dd2876f57a4268a1eebff8"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"803e02c50dc680c160ae7da23c4e7d9ac61e6375","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    def create_trust(self, trustee_user, role_names, impersonation\u003dTrue):"},{"line_number":114,"context_line":"        trustor_user_id \u003d self.client.auth_ref.user_id"},{"line_number":115,"context_line":"        trustor_project_id \u003d self.client.auth_ref.project_id"},{"line_number":116,"context_line":"        trust \u003d self.client.trusts.create(trustor_user\u003dtrustor_user_id,"},{"line_number":117,"context_line":"                                          project\u003dtrustor_project_id,"},{"line_number":118,"context_line":"                                          trustee_user\u003dtrustee_user,"},{"line_number":119,"context_line":"                                          impersonation\u003dimpersonation,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_1f0b5d7e","line":116,"updated":"2015-08-31 17:14:45.000000000","message":"Should we raise an exception if this fails ?","commit_id":"497d5ccb1df1fdf3c9dd2876f57a4268a1eebff8"},{"author":{"_account_id":12053,"name":"Hua Wang","email":"wanghua.humble@gmail.com","username":"humble00"},"change_message_id":"52c0440ec6919f7978821b667347aa1a0a1e9b52","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    def create_trust(self, trustee_user, role_names, impersonation\u003dTrue):"},{"line_number":114,"context_line":"        trustor_user_id \u003d self.client.auth_ref.user_id"},{"line_number":115,"context_line":"        trustor_project_id \u003d self.client.auth_ref.project_id"},{"line_number":116,"context_line":"        trust \u003d self.client.trusts.create(trustor_user\u003dtrustor_user_id,"},{"line_number":117,"context_line":"                                          project\u003dtrustor_project_id,"},{"line_number":118,"context_line":"                                          trustee_user\u003dtrustee_user,"},{"line_number":119,"context_line":"                                          impersonation\u003dimpersonation,"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_0d22f8b9","line":116,"in_reply_to":"da20952f_1f0b5d7e","updated":"2015-09-06 01:20:20.000000000","message":"Keystone v3 client will raise an exception for us if this fails.","commit_id":"497d5ccb1df1fdf3c9dd2876f57a4268a1eebff8"},{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"1b2163036f6d43643cab00df2c89ba8444f5a2c8","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        return self.client.session"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @property"},{"line_number":49,"context_line":"    def admin_session(self):"},{"line_number":50,"context_line":"        return self.admin_client.session"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_2dfd7c6e","line":49,"updated":"2015-09-02 08:12:44.000000000","message":"This isn\u0027t needed, because self.client returns admin_client if is_admin.","commit_id":"d1b3221447310d754fd37b5e9d32f8c21f272e27"},{"author":{"_account_id":9095,"name":"Murali Allada","email":"amuralis@hotmail.com","username":"murali.allada"},"change_message_id":"d748d955fde285d397ffd1b9389a327321ba1af6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF.import_group(\u0027keystone_authtoken\u0027, \u0027keystonemiddleware.auth_token\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class KeystoneClientV3(object):"},{"line_number":28,"context_line":"    \"\"\"Keystone client wrapper so we can encapsulate logic in one place.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_eadc3348","line":25,"updated":"2015-09-02 16:10:06.000000000","message":"This patch would be more useful if we added support for a pluggable  keystone model.\n\nMaybe add some code like this. This will allow operators using keystone v2 to add support for it.\n\n\n\n\nAUTH_OPTS \u003d [\n    cfg.StrOpt(\u0027keystone_version\u0027,\n               default\u003d\u00273\u0027,\n               help\u003d\u0027The keystone version to use with Magnum\u0027),\n]\n\ncfg.CONF.register_opts(AUTH_OPTS)\n\n\nclass KeystoneClient(object):\n    \"\"\"Keystone client wrapper to initialize the right version of the client.\n\n       The version to use is specified in magnum.conf\n       \"\"\"\n\n    def __new__(self, context):\n        ks_version \u003d cfg.CONF.get(\u0027keystone_version\u0027)\n        if ks_version \u003d\u003d \u00273\u0027:\n            return KeystoneClientV3(context)\n        else:\n            msg \u003d _(\u0027Unsupported version of keystone: %s\u0027) % ks_version\n            LOG.error(msg)\n            raise exception.AuthorizationFailure(client\u003d\u0027keystone\u0027,\n                                                 message\u003dmsg)","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":12053,"name":"Hua Wang","email":"wanghua.humble@gmail.com","username":"humble00"},"change_message_id":"3a99cd28fab2ed1ee9665031ebbc1908bc132740","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF.import_group(\u0027keystone_authtoken\u0027, \u0027keystonemiddleware.auth_token\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class KeystoneClientV3(object):"},{"line_number":28,"context_line":"    \"\"\"Keystone client wrapper so we can encapsulate logic in one place.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_cbd53143","line":25,"in_reply_to":"da20952f_3a530f6d","updated":"2015-09-06 01:19:23.000000000","message":"We can add backward compatibility in another bp later.","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":15967,"name":"vikas choudhary","email":"choudharyvikas16@gmail.com","username":"vikaschoudhary16"},"change_message_id":"e6c02c8bdfbdd22761b59156f70ac4ad36da0dea","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF.import_group(\u0027keystone_authtoken\u0027, \u0027keystonemiddleware.auth_token\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class KeystoneClientV3(object):"},{"line_number":28,"context_line":"    \"\"\"Keystone client wrapper so we can encapsulate logic in one place.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_3a530f6d","line":25,"in_reply_to":"da20952f_a4e73eab","updated":"2015-09-04 04:07:09.000000000","message":"@Hua\n\nIt good to have backward compatibility. No doubt v3 is better than V2 but still some deployments may still want v2.","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":12053,"name":"Hua Wang","email":"wanghua.humble@gmail.com","username":"humble00"},"change_message_id":"ff367ad49372e4bee35fcf841721365b9f265851","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"CONF.import_group(\u0027keystone_authtoken\u0027, \u0027keystonemiddleware.auth_token\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class KeystoneClientV3(object):"},{"line_number":28,"context_line":"    \"\"\"Keystone client wrapper so we can encapsulate logic in one place.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_a4e73eab","line":25,"in_reply_to":"da20952f_eadc3348","updated":"2015-09-03 00:34:28.000000000","message":"Keystone v2 does not support trust. Is it necessary to support keystone v2? I think keystone v3 is better.","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e04e1e16ec4cb399397f97d3f2b8e8c69baeb4fa","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _get_ks_client(self):"},{"line_number":86,"context_line":"        kwargs \u003d {\u0027auth_url\u0027: self.auth_url}"},{"line_number":87,"context_line":"        if self.context.trust_id:"},{"line_number":88,"context_line":"            kwargs.update(self._get_admin_credentials())"},{"line_number":89,"context_line":"            kwargs[\u0027trust_id\u0027] \u003d self.conetext.trust_id"},{"line_number":90,"context_line":"            kwargs.pop(\u0027project_name\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_fb45f0b2","line":87,"updated":"2015-09-02 14:25:32.000000000","message":"Better to log a debug message if trust is used.","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e04e1e16ec4cb399397f97d3f2b8e8c69baeb4fa","unresolved":false,"context_lines":[{"line_number":90,"context_line":"            kwargs.pop(\u0027project_name\u0027)"},{"line_number":91,"context_line":"        elif self.context.auth_token_info:"},{"line_number":92,"context_line":"            kwargs[\u0027token\u0027] \u003d self.context.auth_token"},{"line_number":93,"context_line":"            if self._is_v2_valid(self.context.auth_token_info):"},{"line_number":94,"context_line":"                kwargs[\u0027auth_ref\u0027] \u003d self.context.auth_token_info[\u0027access\u0027]"},{"line_number":95,"context_line":"                kwargs[\u0027auth_ref\u0027][\u0027version\u0027] \u003d \u0027v2.0\u0027"},{"line_number":96,"context_line":"            elif self._is_v3_valid(self.context.auth_token_info):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_004b91b1","line":93,"updated":"2015-09-02 14:25:32.000000000","message":"Log a deprecation warning for v2 support is a plus.","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e04e1e16ec4cb399397f97d3f2b8e8c69baeb4fa","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                LOG.error(_LE(\u0027Unknown version in auth_token_info\u0027))"},{"line_number":101,"context_line":"                raise exception.AuthorizationFailure()"},{"line_number":102,"context_line":"        elif self.context.auth_token:"},{"line_number":103,"context_line":"            kwargs[\u0027token\u0027] \u003d self.context.auth_token"},{"line_number":104,"context_line":"        else:"},{"line_number":105,"context_line":"            LOG.error(_LE(\u0027Keystone v3 API conntection failed, no password \u0027"},{"line_number":106,"context_line":"                          \u0027trust or auth_token\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_9b3634b3","line":103,"updated":"2015-09-02 14:25:32.000000000","message":"The old file assign \u0027project_id\u0027 as well. Are you sure it is not necessary here?","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":12053,"name":"Hua Wang","email":"wanghua.humble@gmail.com","username":"humble00"},"change_message_id":"ff367ad49372e4bee35fcf841721365b9f265851","unresolved":false,"context_lines":[{"line_number":100,"context_line":"                LOG.error(_LE(\u0027Unknown version in auth_token_info\u0027))"},{"line_number":101,"context_line":"                raise exception.AuthorizationFailure()"},{"line_number":102,"context_line":"        elif self.context.auth_token:"},{"line_number":103,"context_line":"            kwargs[\u0027token\u0027] \u003d self.context.auth_token"},{"line_number":104,"context_line":"        else:"},{"line_number":105,"context_line":"            LOG.error(_LE(\u0027Keystone v3 API conntection failed, no password \u0027"},{"line_number":106,"context_line":"                          \u0027trust or auth_token\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_648926ca","line":103,"in_reply_to":"da20952f_9b3634b3","updated":"2015-09-03 00:34:28.000000000","message":"It is not necessary. The token info has project_id already.","commit_id":"a86fc1cceedb6e4e8db95926691454d0d283ac4e"},{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"07d694e7cc48792ae7caed1d295ca7f3509a5606","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        return self.admin_client.session"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @property"},{"line_number":53,"context_line":"    def client(self):"},{"line_number":54,"context_line":"        if not self._client:"},{"line_number":55,"context_line":"            if self.context.is_admin:"},{"line_number":56,"context_line":"                return self.admin_client"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_d794938d","line":53,"updated":"2015-09-09 04:14:30.000000000","message":"It\u0027s better to be below.\n\n    if self.context.is_admin:\n        return.self.admin_client\n    else:\n        if not self._client:\n            self._client \u003d self._get_ks_client()\n        return self._client\n\nor set admin_client to self._client","commit_id":"19630c40b76be6ac93f987d12259e013a7570797"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0ce86e154b7df2388892427a791f8f585fe8017f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            \u0027username\u0027: CONF.keystone_authtoken.admin_user,"},{"line_number":64,"context_line":"            \u0027password\u0027: CONF.keystone_authtoken.admin_password,"},{"line_number":65,"context_line":"            \u0027project_name\u0027: CONF.keystone_authtoken.admin_tenant_name"},{"line_number":66,"context_line":"        }"},{"line_number":67,"context_line":"        return credentials"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_78b8ea11","line":66,"updated":"2015-09-10 01:05:03.000000000","message":"please let\u0027s not continue this. Have a look at keystoneclients auth plugins and let\u0027s stop copying this everywhere.","commit_id":"19630c40b76be6ac93f987d12259e013a7570797"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0ce86e154b7df2388892427a791f8f585fe8017f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            LOG.debug(\u0027Trust_id %s is uesd to init a keystone client.\u0027 %"},{"line_number":89,"context_line":"                      self.context.trust_id)"},{"line_number":90,"context_line":"            kwargs.update(self._get_admin_credentials())"},{"line_number":91,"context_line":"            kwargs[\u0027trust_id\u0027] \u003d self.conetext.trust_id"},{"line_number":92,"context_line":"            kwargs.pop(\u0027project_name\u0027)"},{"line_number":93,"context_line":"        elif self.context.auth_token_info:"},{"line_number":94,"context_line":"            kwargs[\u0027token\u0027] \u003d self.context.auth_token"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_f8cb9aa2","line":91,"updated":"2015-09-10 01:05:03.000000000","message":"spelling mistake? No tests?","commit_id":"19630c40b76be6ac93f987d12259e013a7570797"},{"author":{"_account_id":11650,"name":"Tom Cammann","email":"tom.cammann@hpe.com","username":"cammann"},"change_message_id":"a9f7b62a059484b031f8310691153a4a043ada21","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    def _get_ks_client(self):"},{"line_number":86,"context_line":"        kwargs \u003d {\u0027auth_url\u0027: self.auth_url}"},{"line_number":87,"context_line":"        if self.context.trust_id:"},{"line_number":88,"context_line":"            LOG.debug(\u0027Trust_id %s is uesd to init a keystone client.\u0027 %"},{"line_number":89,"context_line":"                      self.context.trust_id)"},{"line_number":90,"context_line":"            kwargs.update(self._get_admin_credentials())"},{"line_number":91,"context_line":"            kwargs[\u0027trust_id\u0027] \u003d self.context.trust_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_e580648d","line":88,"updated":"2015-09-17 15:20:25.000000000","message":"Is this something we should be exposing in the logs?","commit_id":"8a4dbc9aea3eb36aa3abca29e8cfe1ca90afd066"},{"author":{"_account_id":11650,"name":"Tom Cammann","email":"tom.cammann@hpe.com","username":"cammann"},"change_message_id":"a9f7b62a059484b031f8310691153a4a043ada21","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        elif self.context.auth_token_info:"},{"line_number":94,"context_line":"            kwargs[\u0027token\u0027] \u003d self.context.auth_token"},{"line_number":95,"context_line":"            if self._is_v2_valid(self.context.auth_token_info):"},{"line_number":96,"context_line":"                LOG.debug(\u0027Keystone v2 is deprecated.\u0027)"},{"line_number":97,"context_line":"                kwargs[\u0027auth_ref\u0027] \u003d self.context.auth_token_info[\u0027access\u0027]"},{"line_number":98,"context_line":"                kwargs[\u0027auth_ref\u0027][\u0027version\u0027] \u003d \u0027v2.0\u0027"},{"line_number":99,"context_line":"            elif self._is_v3_valid(self.context.auth_token_info):"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba15a1d1_c5f4405c","line":96,"updated":"2015-09-17 15:20:25.000000000","message":"This is not a good debug message, either its a warning then it should be LOG.warn or deleted as it will be hidden in the debug output.","commit_id":"8a4dbc9aea3eb36aa3abca29e8cfe1ca90afd066"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"e15754a29b3b9df2f3e4e60f2a9826ad79278a20","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @property"},{"line_number":49,"context_line":"    def admin_session(self):"},{"line_number":50,"context_line":"        return self.admin_client.session"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @property"},{"line_number":53,"context_line":"    def client(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_000e8ae4","line":50,"updated":"2015-09-18 07:53:57.000000000","message":"please don\u0027t do this. \n\nThe session is a first class object, not something you steal from keystoneclient. I encourage you to use the session but you should create the session and the auth you want - this one is hacked up in weird compatibility modes that you don\u0027t want to reuse.","commit_id":"e29ad3538180016717ebdd3a117858fcad73df47"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"c6de4a2c5bd1b1c258f0564d9a8c0a932bf38132","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @property"},{"line_number":49,"context_line":"    def admin_session(self):"},{"line_number":50,"context_line":"        return self.admin_client.session"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @property"},{"line_number":53,"context_line":"    def client(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_d1255bc2","line":50,"in_reply_to":"ba15a1d1_000e8ae4","updated":"2015-09-22 05:26:43.000000000","message":"+1 to Jamie, @Hua Wang, can you please add more detail in your commit message for what and why you refactored? Thanks.","commit_id":"e29ad3538180016717ebdd3a117858fcad73df47"},{"author":{"_account_id":12053,"name":"Hua Wang","email":"wanghua.humble@gmail.com","username":"humble00"},"change_message_id":"77334fd2ce7380446c40c09ee31f66bf16c4924b","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @property"},{"line_number":49,"context_line":"    def admin_session(self):"},{"line_number":50,"context_line":"        return self.admin_client.session"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @property"},{"line_number":53,"context_line":"    def client(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_4dc0192b","line":50,"in_reply_to":"ba15a1d1_000e8ae4","updated":"2015-09-19 03:40:33.000000000","message":"Jamie, we need session, but there are two problems. keystone.token_auth can not be serialized by oslo.message, so we can not store keystone.token_auth in context and init a auth_plugin by it. I want to merge this patch first as many other bps depend on it. We can refactor it later.","commit_id":"e29ad3538180016717ebdd3a117858fcad73df47"},{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"af752903c891d329f8a098052c8b28e9cbf65fbf","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @property"},{"line_number":49,"context_line":"    def admin_session(self):"},{"line_number":50,"context_line":"        return self.admin_client.session"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @property"},{"line_number":53,"context_line":"    def client(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_0bdced10","line":50,"in_reply_to":"ba15a1d1_4dc0192b","updated":"2015-09-22 14:28:49.000000000","message":"Wang Hua, I think it is OK to merge this first, but it is helpful to record the information in a TODO comment, such as what is the problems, what need to be fixed, etc.","commit_id":"e29ad3538180016717ebdd3a117858fcad73df47"},{"author":{"_account_id":8143,"name":"Egor Guz","email":"egor.guz@gmail.com","username":"eghobo"},"change_message_id":"ee046ac1c0e3dc1d77861eb8fa6a9b26ef608d38","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @property"},{"line_number":49,"context_line":"    def admin_session(self):"},{"line_number":50,"context_line":"        return self.admin_client.session"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @property"},{"line_number":53,"context_line":"    def client(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba15a1d1_157395e8","line":50,"in_reply_to":"ba15a1d1_d1255bc2","updated":"2015-09-22 20:34:29.000000000","message":"@Jay, @Jamie: if this approach is bad, please suggest solution how to fix it?","commit_id":"e29ad3538180016717ebdd3a117858fcad73df47"},{"author":{"_account_id":12400,"name":"Dimitry Ushakov","email":"dimitry.ushakov@rackspace.com","username":"dimtruck"},"change_message_id":"1b231559562497621c9c33ee651e0b0251c5439c","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @staticmethod"},{"line_number":82,"context_line":"    def _is_v3_valid(auth_token_info):"},{"line_number":83,"context_line":"        return \u0027token\u0027 in auth_token_info"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _get_ks_client(self):"},{"line_number":86,"context_line":"        kwargs \u003d {\u0027auth_url\u0027: self.auth_url}"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_8da1b596","line":83,"updated":"2015-09-23 16:53:36.000000000","message":"This could be part of another patch, but I noticed in my testing that if project or catalog do not exist in auth_token_info, Magnum fails down the line (when it tries to get the service catalog to talk to nova or glance).  You CAN authenticate without a service catalog present.  I had a temporary patch here, if you\u0027d like to incorporate it: https://review.openstack.org/#/c/219508/4/magnum/common/magnum_keystoneclient.py","commit_id":"d52237d89a88f063bfafd77e6e1f885569f61254"}],"magnum/common/magnum_keystoneclient.py":[{"author":{"_account_id":11536,"name":"hongbin","email":"hongbin034@gmail.com","username":"hongbin"},"change_message_id":"e04e1e16ec4cb399397f97d3f2b8e8c69baeb4fa","unresolved":false,"context_lines":[{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"trust_opts \u003d ["},{"line_number":32,"context_line":"    cfg.ListOpt(\u0027trusts_delegated_roles\u0027,"},{"line_number":33,"context_line":"                default\u003d[\u0027magnum_assembly_update\u0027],"},{"line_number":34,"context_line":"                help\u003d_(\u0027Subset of trustor roles to be delegated to magnum.\u0027)),"},{"line_number":35,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_bbf2186e","side":"PARENT","line":32,"updated":"2015-09-02 14:25:32.000000000","message":"Need to re-generate the config sample since you removed a config","commit_id":"99f6ecf93c15e5b9edddd6a8b9b2834131510d70"},{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"c13f6e439e3e6902e9453b35b2aa1698fa499cc4","unresolved":false,"context_lines":[{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"trust_opts \u003d ["},{"line_number":32,"context_line":"    cfg.ListOpt(\u0027trusts_delegated_roles\u0027,"},{"line_number":33,"context_line":"                default\u003d[\u0027magnum_assembly_update\u0027],"},{"line_number":34,"context_line":"                help\u003d_(\u0027Subset of trustor roles to be delegated to magnum.\u0027)),"},{"line_number":35,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_1704e647","side":"PARENT","line":32,"in_reply_to":"da20952f_bbf2186e","updated":"2015-09-04 03:03:37.000000000","message":"+1","commit_id":"99f6ecf93c15e5b9edddd6a8b9b2834131510d70"}],"magnum/opts.py":[{"author":{"_account_id":12385,"name":"Motohiro/Yuanying Otsuka","email":"yuanying@fraction.jp","username":"yuanying"},"change_message_id":"2b9120ecf8ce95643e8dbb44cc5761e3add4ad78","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    return ["},{"line_number":37,"context_line":"        (\u0027DEFAULT\u0027,"},{"line_number":38,"context_line":"         itertools.chain(magnum.api.auth.AUTH_OPTS,"},{"line_number":39,"context_line":"                         magnum.common.magnum_keystoneclient.trust_opts,"},{"line_number":40,"context_line":"                         magnum.common.paths.PATH_OPTS,"},{"line_number":41,"context_line":"                         magnum.common.utils.UTILS_OPTS,"},{"line_number":42,"context_line":"                         magnum.common.rpc_service.periodic_opts,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_b0a83c8d","side":"PARENT","line":39,"updated":"2015-09-08 03:05:10.000000000","message":"Sorry please remove this configuration from etc/magnum/magnum.conf.example","commit_id":"7ed30d1989d2fdacea8d6b94afef50bd2fca1b57"}]}
