)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0b29fa76ac1cbcfa983a266b81a973416e4aa349","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Allow loading session objects from CLI and oslo.config. We will want CLI"},{"line_number":10,"context_line":"for shell and conf for auth_token."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I1e83280b2f76f16041ed8d5ed598db70210112bd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3ae8d1ca_ebf0bdcb","line":11,"updated":"2014-05-27 04:54:45.000000000","message":"link the blueprint here","commit_id":"f2c9a5912bb4e121564d840b5a31a6bd8a97b878"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ef94794ae0d3f5912977ecec93d3f4116133e629","unresolved":false,"context_lines":[{"line_number":11,"context_line":"objects for inter-service communication."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: This is the first step in standardizing all the config"},{"line_number":14,"context_line":"options across projects. There are no changes to keystoneclient in this"},{"line_number":15,"context_line":"review."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Implements: blueprint standard-client-params"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1ae5cdf2_9c29189e","line":14,"updated":"2014-06-24 05:12:47.000000000","message":"suggest saying \u0027there are no changes to keystoneclient\u0027s runtime code\u0027? it doesn\u0027t sound correct to say there are no changes to keystoneclient with a patchset for keystoneclient (it just so happens session etc is in the ksc repo)","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"bfc1b958cce6b90c899d80a1c3ec71e1a9d41494","unresolved":false,"context_lines":[{"line_number":11,"context_line":"objects for inter-service communication."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"DocImpact: This is the first step in standardizing all the config"},{"line_number":14,"context_line":"options across projects. There are no changes to keystoneclient in this"},{"line_number":15,"context_line":"review."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Implements: blueprint standard-client-params"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1ae5cdf2_7ff4e754","line":14,"in_reply_to":"1ae5cdf2_9c29189e","updated":"2014-06-26 00:15:51.000000000","message":"Done","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"}],"keystoneclient/session.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"353fdbc223544d46f17efb66655854708480322b","unresolved":false,"context_lines":[{"line_number":460,"context_line":"        if not cfg:"},{"line_number":461,"context_line":"            raise ImportError(\u0027oslo.config is not available\u0027)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        opts \u003d [cfg.StrOpt(\u0027cafile\u0027,"},{"line_number":464,"context_line":"                           deprecated_opts\u003ddeprecated_opts.get(\u0027cafile\u0027),"},{"line_number":465,"context_line":"                           help\u003d\u0027PEM encoded Certificate Authority to use \u0027"},{"line_number":466,"context_line":"                                \u0027when verifying HTTPs connections.\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_8c9c216c","line":463,"updated":"2014-06-11 14:53:34.000000000","message":"Registering the options here will hide them from the config example generator. We can work around that using the \"libraries\" option to the generator, which tells it to load option definitions from setuptools entry points [1]. To make that work, the options need to be available in a separate function that can be called to return just the data describing the options (the function doesn\u0027t modify a ConfigObj instance).\n\nFor keystoneclient, since the caller of register_conf_options() gets to declare the group (and may do so multiple times with different groups for clients to different services), we need a second level of indirection. The application (nova, heat, whatever) needs to be able to ask keystoneclient for a list of options, and then attach the group name(s) before returning the whole thing. So, the entry point would be part of the application, but keystoneclient needs a public function to return this list of option definitions.\n\nI\u0027m not sure I\u0027ve explained that clearly, so hit me up on IRC if you want to chat more.\n\n1. http://git.openstack.org/cgit/openstack/oslo-incubator/tree/openstack/common/config/generator.py#n103","commit_id":"df7edb09c258c34dd51345fcd60fa74c414a5733"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"1cc2623fbe310c99f3810a9280bd23b42c1b9969","unresolved":false,"context_lines":[{"line_number":460,"context_line":"        if not cfg:"},{"line_number":461,"context_line":"            raise ImportError(\u0027oslo.config is not available\u0027)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        opts \u003d [cfg.StrOpt(\u0027cafile\u0027,"},{"line_number":464,"context_line":"                           deprecated_opts\u003ddeprecated_opts.get(\u0027cafile\u0027),"},{"line_number":465,"context_line":"                           help\u003d\u0027PEM encoded Certificate Authority to use \u0027"},{"line_number":466,"context_line":"                                \u0027when verifying HTTPs connections.\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_98d1a8fd","line":463,"in_reply_to":"1ae5cdf2_8c9c216c","updated":"2014-06-12 02:11:17.000000000","message":"That\u0027s annoying, i was thinking that by just calling register_conf_options somewhere globally it would be available to the generator.\n\nI was discussing with morgan on irc - does it matter if the libraries function that is called also does the registration of the options or should they be two separate things? \n\nFor example if i make register_conf_options return the opts list could a consumer such as heat make a function that did: \n\n    def register_client_options(): \n        keystone_opts \u003dSession.register_conf_options(CONF, \u0027keystone\u0027)\n        cinder_opts \u003d Session.register_conf_options(CONF, \u0027cinder\u0027) \n        ...\n\n        return [(\u0027keystone\u0027, keystone_opts), (\u0027cinder\u0027, cinder_opts), ...]\n\nand then use register_client_options both as the generator entry point AND as there own helper function (and ignore the return?\n\nOr do listing for the example generator and registering for runtime need to be two distinct operations?","commit_id":"df7edb09c258c34dd51345fcd60fa74c414a5733"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"cf612e937760659b3ea610b4d05fb86f37f9cdf7","unresolved":false,"context_lines":[{"line_number":460,"context_line":"        if not cfg:"},{"line_number":461,"context_line":"            raise ImportError(\u0027oslo.config is not available\u0027)"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        opts \u003d [cfg.StrOpt(\u0027cafile\u0027,"},{"line_number":464,"context_line":"                           deprecated_opts\u003ddeprecated_opts.get(\u0027cafile\u0027),"},{"line_number":465,"context_line":"                           help\u003d\u0027PEM encoded Certificate Authority to use \u0027"},{"line_number":466,"context_line":"                                \u0027when verifying HTTPs connections.\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ae5cdf2_2d4102a9","line":463,"in_reply_to":"1ae5cdf2_98d1a8fd","updated":"2014-06-13 12:39:38.000000000","message":"What you propose would work technically, but it\u0027s better if the function that returns the options for the config generator doesn\u0027t have any side-effects and just returns data.","commit_id":"df7edb09c258c34dd51345fcd60fa74c414a5733"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"092406c2907f17215d49695c6c018cb96c2fa184","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        \"\"\"Handles constructing a session from the older HTTPClient args as"},{"line_number":351,"context_line":"        well as the new request style arguments."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        *DEPRECATED*: This function is purely for bridging the gap between"},{"line_number":354,"context_line":"        older client arguments and the session arguments that they relate to."},{"line_number":355,"context_line":"        It is not intended to be used as a generic Session Factory."},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_0fee1aed","line":353,"updated":"2014-06-12 16:30:36.000000000","message":"why deprecated as this bridge is very useful? In fact, for the legacy stuff, this method is preferred.","commit_id":"0d8416e414b9abfaf3b79fb7fa5dafd8c1c7b895"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"9e1c4fedf0891894775658054e3297aa9720ccb6","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        \"\"\"Handles constructing a session from the older HTTPClient args as"},{"line_number":351,"context_line":"        well as the new request style arguments."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        *DEPRECATED*: This function is purely for bridging the gap between"},{"line_number":354,"context_line":"        older client arguments and the session arguments that they relate to."},{"line_number":355,"context_line":"        It is not intended to be used as a generic Session Factory."},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_6527b5ca","line":353,"in_reply_to":"1ae5cdf2_0fee1aed","updated":"2014-06-12 23:12:43.000000000","message":"Yea this has come up in other reviews. I was trying to communicate that it wasn\u0027t preferred in general but i think it should be \u0027revived\u0027","commit_id":"0d8416e414b9abfaf3b79fb7fa5dafd8c1c7b895"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"092406c2907f17215d49695c6c018cb96c2fa184","unresolved":false,"context_lines":[{"line_number":371,"context_line":"        return cls._make(**params)"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    @classmethod"},{"line_number":374,"context_line":"    def _make(cls, insecure\u003dFalse, verify\u003dNone, cacert\u003dNone, cert\u003dNone,"},{"line_number":375,"context_line":"              key\u003dNone, **kwargs):"},{"line_number":376,"context_line":"        \"\"\"Create a session with individual certificate parameters."},{"line_number":377,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_0f737a4e","line":374,"updated":"2014-06-12 16:30:36.000000000","message":"not sure why the extra _make() method is necessary. I like the previous version better.","commit_id":"0d8416e414b9abfaf3b79fb7fa5dafd8c1c7b895"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"9e1c4fedf0891894775658054e3297aa9720ccb6","unresolved":false,"context_lines":[{"line_number":371,"context_line":"        return cls._make(**params)"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    @classmethod"},{"line_number":374,"context_line":"    def _make(cls, insecure\u003dFalse, verify\u003dNone, cacert\u003dNone, cert\u003dNone,"},{"line_number":375,"context_line":"              key\u003dNone, **kwargs):"},{"line_number":376,"context_line":"        \"\"\"Create a session with individual certificate parameters."},{"line_number":377,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_0537d1ff","line":374,"in_reply_to":"1ae5cdf2_0f737a4e","updated":"2014-06-12 23:12:43.000000000","message":"construct is destructive - it takes a kwargs dict and pops from it so that people users can know what has been removed.\n\n_make is essentially the same thing,, but it uses **kwargs because i needed a bit more flexability to pass additional things outside of that list in construct.","commit_id":"0d8416e414b9abfaf3b79fb7fa5dafd8c1c7b895"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"092406c2907f17215d49695c6c018cb96c2fa184","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        if not cfg:"},{"line_number":465,"context_line":"            raise ImportError(\u0027oslo.config is not available\u0027)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        return [cfg.StrOpt(\u0027cafile\u0027,"},{"line_number":468,"context_line":"                           deprecated_opts\u003ddeprecated_opts.get(\u0027cafile\u0027),"},{"line_number":469,"context_line":"                           help\u003d\u0027PEM encoded Certificate Authority to use \u0027"},{"line_number":470,"context_line":"                                \u0027when verifying HTTPs connections.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_ef23ae02","line":467,"updated":"2014-06-12 16:30:36.000000000","message":"shouldn\u0027t we be making these backward compatible?\n\n--os-cacerts\n--os-cert\n--os-key\n\netc","commit_id":"0d8416e414b9abfaf3b79fb7fa5dafd8c1c7b895"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"9e1c4fedf0891894775658054e3297aa9720ccb6","unresolved":false,"context_lines":[{"line_number":464,"context_line":"        if not cfg:"},{"line_number":465,"context_line":"            raise ImportError(\u0027oslo.config is not available\u0027)"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"        return [cfg.StrOpt(\u0027cafile\u0027,"},{"line_number":468,"context_line":"                           deprecated_opts\u003ddeprecated_opts.get(\u0027cafile\u0027),"},{"line_number":469,"context_line":"                           help\u003d\u0027PEM encoded Certificate Authority to use \u0027"},{"line_number":470,"context_line":"                                \u0027when verifying HTTPs connections.\u0027),"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_25112d5d","line":467,"in_reply_to":"1ae5cdf2_ef23ae02","updated":"2014-06-12 23:12:43.000000000","message":"This review is about CONF, the options i\u0027ve got here are compatible with auth_token. \n\nCLI related things go here: https://review.openstack.org/#/c/95678/\n\nI am not aware of any client that uses oslo.config for there CLI","commit_id":"0d8416e414b9abfaf3b79fb7fa5dafd8c1c7b895"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c0233b2bfc466ea5ccfd6845f0bbc3dc653672c6","unresolved":false,"context_lines":[{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        *DEPRECATED*: This function is purely for bridging the gap between"},{"line_number":354,"context_line":"        older client arguments and the session arguments that they relate to."},{"line_number":355,"context_line":"        It is not intended to be used as a generic Session Factory."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        This function purposefully modifies the input kwargs dictionary so that"},{"line_number":358,"context_line":"        the remaining kwargs dict can be reused and passed on to other"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_d68ee126","line":355,"updated":"2014-06-17 23:13:24.000000000","message":"I thought you are going to undeprecate this, no?","commit_id":"17cd5d029718deddb8fc80b9bc7bdb57bb6dd4c7"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"85d6740ab93d6b9ac6232edc7889724b257500be","unresolved":false,"context_lines":[{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        *DEPRECATED*: This function is purely for bridging the gap between"},{"line_number":354,"context_line":"        older client arguments and the session arguments that they relate to."},{"line_number":355,"context_line":"        It is not intended to be used as a generic Session Factory."},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        This function purposefully modifies the input kwargs dictionary so that"},{"line_number":358,"context_line":"        the remaining kwargs dict can be reused and passed on to other"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_b6f6b55b","line":355,"in_reply_to":"1ae5cdf2_d68ee126","updated":"2014-06-17 23:15:41.000000000","message":"part of https://review.openstack.org/#/c/74599/7","commit_id":"17cd5d029718deddb8fc80b9bc7bdb57bb6dd4c7"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"c0233b2bfc466ea5ccfd6845f0bbc3dc653672c6","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                cfg.StrOpt(\u0027cert_file\u0027,"},{"line_number":472,"context_line":"                           deprecated_opts\u003ddeprecated_opts.get(\u0027cert_file\u0027),"},{"line_number":473,"context_line":"                           help\u003d\u0027PEM encoded client certificate cert file\u0027),"},{"line_number":474,"context_line":"                cfg.StrOpt(\u0027key_file\u0027,"},{"line_number":475,"context_line":"                           deprecated_opts\u003ddeprecated_opts.get(\u0027key_file\u0027),"},{"line_number":476,"context_line":"                           help\u003d\u0027PEM encoded client certificate key file\u0027),"},{"line_number":477,"context_line":"                cfg.BoolOpt(\u0027insecure\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_f67bddf1","line":474,"updated":"2014-06-17 23:13:24.000000000","message":"consumers for these conf options are going be like auth_token middleware right. In that case, why name them differently? Why not align them with auth_token middleware?\n\nhttps://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/middleware/auth_token.py#L262","commit_id":"17cd5d029718deddb8fc80b9bc7bdb57bb6dd4c7"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"85d6740ab93d6b9ac6232edc7889724b257500be","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                cfg.StrOpt(\u0027cert_file\u0027,"},{"line_number":472,"context_line":"                           deprecated_opts\u003ddeprecated_opts.get(\u0027cert_file\u0027),"},{"line_number":473,"context_line":"                           help\u003d\u0027PEM encoded client certificate cert file\u0027),"},{"line_number":474,"context_line":"                cfg.StrOpt(\u0027key_file\u0027,"},{"line_number":475,"context_line":"                           deprecated_opts\u003ddeprecated_opts.get(\u0027key_file\u0027),"},{"line_number":476,"context_line":"                           help\u003d\u0027PEM encoded client certificate key file\u0027),"},{"line_number":477,"context_line":"                cfg.BoolOpt(\u0027insecure\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_76834da9","line":474,"in_reply_to":"1ae5cdf2_f67bddf1","updated":"2014-06-17 23:15:41.000000000","message":"because heat does them this way, and it was decided on the ML that way was cleaner. I can provide deprecations for auth_token.","commit_id":"17cd5d029718deddb8fc80b9bc7bdb57bb6dd4c7"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ef94794ae0d3f5912977ecec93d3f4116133e629","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        :param dict deprecated_opts: Deprecated options that should be included"},{"line_number":458,"context_line":"             in the definition of new options. This should be a dictionary from"},{"line_number":459,"context_line":"             the name of the new option to a list of oslo.DeprecatedOpts that"},{"line_number":460,"context_line":"             correspond to the new option. (optional)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        :returns: A list of oslo.config options."},{"line_number":463,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_d701bb05","line":460,"updated":"2014-06-24 05:12:47.000000000","message":"Suggest an example here of what the dict structure should be. you might want to also be specific about the keys / options that are accepted.","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"bfc1b958cce6b90c899d80a1c3ec71e1a9d41494","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        :param dict deprecated_opts: Deprecated options that should be included"},{"line_number":458,"context_line":"             in the definition of new options. This should be a dictionary from"},{"line_number":459,"context_line":"             the name of the new option to a list of oslo.DeprecatedOpts that"},{"line_number":460,"context_line":"             correspond to the new option. (optional)"},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"        :returns: A list of oslo.config options."},{"line_number":463,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_fa50332e","line":460,"in_reply_to":"1ae5cdf2_d701bb05","updated":"2014-06-26 00:15:51.000000000","message":"Done","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ef94794ae0d3f5912977ecec93d3f4116133e629","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        :param dict deprecated_opts: Deprecated options that should be included"},{"line_number":493,"context_line":"             in the definition of new options. This should be a dictionary from"},{"line_number":494,"context_line":"             the name of the new option to a list of oslo.DeprecatedOpts that"},{"line_number":495,"context_line":"             correspond to the new option. (optional)"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        :returns: The list of options that was registered."},{"line_number":498,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_5734cbde","line":495,"updated":"2014-06-24 05:12:47.000000000","message":"Same comment as above, example here will save trial-error on developer front","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"bfc1b958cce6b90c899d80a1c3ec71e1a9d41494","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        :param dict deprecated_opts: Deprecated options that should be included"},{"line_number":493,"context_line":"             in the definition of new options. This should be a dictionary from"},{"line_number":494,"context_line":"             the name of the new option to a list of oslo.DeprecatedOpts that"},{"line_number":495,"context_line":"             correspond to the new option. (optional)"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        :returns: The list of options that was registered."},{"line_number":498,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_3a329b0f","line":495,"in_reply_to":"1ae5cdf2_5734cbde","updated":"2014-06-26 00:15:51.000000000","message":"Done","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ef94794ae0d3f5912977ecec93d3f4116133e629","unresolved":false,"context_lines":[{"line_number":495,"context_line":"             correspond to the new option. (optional)"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        :returns: The list of options that was registered."},{"line_number":498,"context_line":"        \"\"\""},{"line_number":499,"context_line":"        opts \u003d cls.get_conf_options(deprecated_opts\u003ddeprecated_opts)"},{"line_number":500,"context_line":"        conf.register_group(cfg.OptGroup(group))"},{"line_number":501,"context_line":"        conf.register_opts(opts, group\u003dgroup)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_f71dd763","line":498,"updated":"2014-06-24 05:12:47.000000000","message":"You might want the same ifcheck as line 465 here.","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"bfc1b958cce6b90c899d80a1c3ec71e1a9d41494","unresolved":false,"context_lines":[{"line_number":495,"context_line":"             correspond to the new option. (optional)"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"        :returns: The list of options that was registered."},{"line_number":498,"context_line":"        \"\"\""},{"line_number":499,"context_line":"        opts \u003d cls.get_conf_options(deprecated_opts\u003ddeprecated_opts)"},{"line_number":500,"context_line":"        conf.register_group(cfg.OptGroup(group))"},{"line_number":501,"context_line":"        conf.register_opts(opts, group\u003dgroup)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_ba1dcb79","line":498,"in_reply_to":"1ae5cdf2_f71dd763","updated":"2014-06-26 00:15:51.000000000","message":"The check at line 465 will get triggered by the first call here.","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2b2dd09e66435d1714edd838b4ff272b4cc5a20","unresolved":false,"context_lines":[{"line_number":373,"context_line":"        \"\"\"Create a session with individual certificate parameters."},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"        Some parameters used to create a session don\u0027t lend themselves to be"},{"line_number":376,"context_line":"        loading from config/CLI etc. Create a session by converting those"},{"line_number":377,"context_line":"        parameters into session __init__ parameters."},{"line_number":378,"context_line":"        \"\"\""},{"line_number":379,"context_line":"        if verify is None:"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_ac230d04","line":376,"updated":"2014-07-01 16:24:04.000000000","message":"change \"loading\" to \"loaded\"","commit_id":"53b1d62c9f63864a2c6c4323c4c86fe1bc7aed7b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2b2dd09e66435d1714edd838b4ff272b4cc5a20","unresolved":false,"context_lines":[{"line_number":529,"context_line":"        \"\"\"Create a session object from an oslo.config object."},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        As oslo.config options can be registered multiple times this function"},{"line_number":532,"context_line":"        will also handle registering the options."},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        :returns: A new session object."},{"line_number":535,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_0f9cebbf","line":532,"updated":"2014-07-01 16:24:04.000000000","message":"what does this mean? This function doesn\u0027t register the options.","commit_id":"53b1d62c9f63864a2c6c4323c4c86fe1bc7aed7b"}],"keystoneclient/tests/test_session.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ef94794ae0d3f5912977ecec93d3f4116133e629","unresolved":false,"context_lines":[{"line_number":9,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import httpretty"},{"line_number":14,"context_line":"import mock"},{"line_number":15,"context_line":"import requests"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_d7761ba3","line":12,"updated":"2014-06-24 05:12:47.000000000","message":"Revert whitespace change unless it is required to pass pep8. whitespace change should probably be separate cleanup","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"bfc1b958cce6b90c899d80a1c3ec71e1a9d41494","unresolved":false,"context_lines":[{"line_number":9,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import httpretty"},{"line_number":14,"context_line":"import mock"},{"line_number":15,"context_line":"import requests"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_fa2753c5","line":12,"in_reply_to":"1ae5cdf2_d7761ba3","updated":"2014-06-26 00:15:51.000000000","message":"Done","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ef94794ae0d3f5912977ecec93d3f4116133e629","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        self.config(cafile\u003dcafile)"},{"line_number":553,"context_line":"        s \u003d self.get_session()"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        self.assertEqual(cafile, s.verify)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_d79d3bbd","line":555,"updated":"2014-06-24 05:12:47.000000000","message":"suggest a test for handling deprecated opts.","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"bfc1b958cce6b90c899d80a1c3ec71e1a9d41494","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        self.config(cafile\u003dcafile)"},{"line_number":553,"context_line":"        s \u003d self.get_session()"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        self.assertEqual(cafile, s.verify)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_1a16bf58","line":555,"in_reply_to":"1ae5cdf2_d79d3bbd","updated":"2014-06-26 00:15:51.000000000","message":"Done","commit_id":"5c6d27fa65dc5c5f203991a12e81a0c59b168d5a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b2b2dd09e66435d1714edd838b4ff272b4cc5a20","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        depr \u003d dict([(n, [new_deprecated()]) for n in opt_names])"},{"line_number":658,"context_line":"        opts \u003d client_session.Session.get_conf_options(deprecated_opts\u003ddepr)"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        self.assertEqual(len(opt_names), len(opts))"},{"line_number":661,"context_line":"        for opt in opts:"},{"line_number":662,"context_line":"            self.assertIn(depr[opt.name][0], opt.deprecated_opts)"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_8ff9dbca","line":660,"updated":"2014-07-01 16:24:04.000000000","message":"use testtools.matchers.HasLength so we can get a better message if it fails","commit_id":"53b1d62c9f63864a2c6c4323c4c86fe1bc7aed7b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e8e8b168d00b8005447ecd61dd3122d77af13de1","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        depr \u003d dict([(n, [new_deprecated()]) for n in opt_names])"},{"line_number":659,"context_line":"        opts \u003d client_session.Session.get_conf_options(deprecated_opts\u003ddepr)"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"        self.assertThat(opt_names, matchers.HasLength(len(opts)))"},{"line_number":662,"context_line":"        for opt in opts:"},{"line_number":663,"context_line":"            self.assertIn(depr[opt.name][0], opt.deprecated_opts)"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_d28feb21","line":661,"updated":"2014-07-01 22:40:24.000000000","message":"seems like it would have been opts, matchers.HasLength(len(opt_names))","commit_id":"fe0c2f926ab1cb73589d72136f8dae0516c9f884"}]}
