)]}'
{"specs/rocky/config-from-environment.rst":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c5fdf73c02309a0ab10ef3056143926e13329902","unresolved":false,"context_lines":[{"line_number":58,"context_line":"for ``oslo.config`` that looks to the running environment for variables that"},{"line_number":59,"context_line":"match expected names for registered configuration settings. The source will be"},{"line_number":60,"context_line":"available by default, coming second in the stack, after individual command line"},{"line_number":61,"context_line":"overrides, but before any files or other sources."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"The ``ConfigurationSource`` will translate config option names to candidate"},{"line_number":64,"context_line":"variable names. If those variables are set in the local environment (a member"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_fb2bf02f","line":61,"updated":"2018-06-20 15:48:26.000000000","message":"Unfortunately the CLI and file data is mingled together right now, so placing environment variables 2nd may be more challenging than having it be 3rd, where we could just insert it into the list of drivers. I want us to get to the point where we can separate the CLI parsing and file reading into their own drivers, but did not have the bandwidth to do that this cycle.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"28474056b26935ad5a4cd15fde47638683f956cc","unresolved":false,"context_lines":[{"line_number":58,"context_line":"for ``oslo.config`` that looks to the running environment for variables that"},{"line_number":59,"context_line":"match expected names for registered configuration settings. The source will be"},{"line_number":60,"context_line":"available by default, coming second in the stack, after individual command line"},{"line_number":61,"context_line":"overrides, but before any files or other sources."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"The ``ConfigurationSource`` will translate config option names to candidate"},{"line_number":64,"context_line":"variable names. If those variables are set in the local environment (a member"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_4ee900e1","line":61,"in_reply_to":"5f7c97a3_5bf6a45f","updated":"2018-06-20 16:23:02.000000000","message":"Placing it first will make it a special case, but if we implement it as a driver the case shouldn\u0027t be complicated so we could probably take it that way.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"fb2fc58ad2e093317449fe8de40c26c23f0fa99e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"for ``oslo.config`` that looks to the running environment for variables that"},{"line_number":59,"context_line":"match expected names for registered configuration settings. The source will be"},{"line_number":60,"context_line":"available by default, coming second in the stack, after individual command line"},{"line_number":61,"context_line":"overrides, but before any files or other sources."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"The ``ConfigurationSource`` will translate config option names to candidate"},{"line_number":64,"context_line":"variable names. If those variables are set in the local environment (a member"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_5bf6a45f","line":61,"in_reply_to":"5f7c97a3_fb2bf02f","updated":"2018-06-20 16:00:28.000000000","message":"If that\u0027s the case, then env should be first, not 3rd. 3rd would violate the rules that the bug (that I should link to this spec) tries to provide: https://bugs.launchpad.net/oslo-incubator/+bug/1196368\n\nenv should always override files\n\nI\u0027m not fully in agreement with the bug rules. I can\u0027t agree if env or command line should come first. Mostly I think that only one should be used, and in my use cases I\u0027d end up preferring env.\n\nIs 1st an option? Are you saying that splitting cli and files is impossible or merely non-trivial?","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c5fdf73c02309a0ab10ef3056143926e13329902","unresolved":false,"context_lines":[{"line_number":76,"context_line":"   #. Prefix each variable with ``OS_``"},{"line_number":77,"context_line":"   #. Followed by the group: ``DEFAULT``"},{"line_number":78,"context_line":"   #. Separated from the name by a double-under ``__`` (to allow unders in the"},{"line_number":79,"context_line":"      group)"},{"line_number":80,"context_line":"   #. Followed by the name, resulting in something like:"},{"line_number":81,"context_line":"      ``OS_PLACEMENT_DATABASE__CONNECTION``"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_1bd4ac1e","line":79,"updated":"2018-06-20 15:48:26.000000000","message":"Do you think the dunder is strictly necessary? I\u0027m having trouble coming up with an example of the name being more confusing with a single underscore there.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"392eb2572ad2c0a240f448121fa28bce9c59baf9","unresolved":false,"context_lines":[{"line_number":76,"context_line":"   #. Prefix each variable with ``OS_``"},{"line_number":77,"context_line":"   #. Followed by the group: ``DEFAULT``"},{"line_number":78,"context_line":"   #. Separated from the name by a double-under ``__`` (to allow unders in the"},{"line_number":79,"context_line":"      group)"},{"line_number":80,"context_line":"   #. Followed by the name, resulting in something like:"},{"line_number":81,"context_line":"      ``OS_PLACEMENT_DATABASE__CONNECTION``"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_9b1d1c79","line":79,"in_reply_to":"5f7c97a3_1bd4ac1e","updated":"2018-06-20 16:06:18.000000000","message":"An existing example? Dunno about that.  Here\u0027s a contrived example:\n\n [placement]\n database_connection \u003d foo\n\n [placement_database]\n connection \u003d bar\n\nThe dunder seems like a cheap way to close that gap, improbable though it might be.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"fb2fc58ad2e093317449fe8de40c26c23f0fa99e","unresolved":false,"context_lines":[{"line_number":76,"context_line":"   #. Prefix each variable with ``OS_``"},{"line_number":77,"context_line":"   #. Followed by the group: ``DEFAULT``"},{"line_number":78,"context_line":"   #. Separated from the name by a double-under ``__`` (to allow unders in the"},{"line_number":79,"context_line":"      group)"},{"line_number":80,"context_line":"   #. Followed by the name, resulting in something like:"},{"line_number":81,"context_line":"      ``OS_PLACEMENT_DATABASE__CONNECTION``"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_db9f1400","line":79,"in_reply_to":"5f7c97a3_1bd4ac1e","updated":"2018-06-20 16:00:28.000000000","message":"I was trying to make it so the translation between env and option name are bi-directional. Reading either can allow a computer or a human to identify (without any other context) the other. Since group names can include _ there needs to be a group separator.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"28474056b26935ad5a4cd15fde47638683f956cc","unresolved":false,"context_lines":[{"line_number":76,"context_line":"   #. Prefix each variable with ``OS_``"},{"line_number":77,"context_line":"   #. Followed by the group: ``DEFAULT``"},{"line_number":78,"context_line":"   #. Separated from the name by a double-under ``__`` (to allow unders in the"},{"line_number":79,"context_line":"      group)"},{"line_number":80,"context_line":"   #. Followed by the name, resulting in something like:"},{"line_number":81,"context_line":"      ``OS_PLACEMENT_DATABASE__CONNECTION``"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_0ebd48d6","line":79,"in_reply_to":"5f7c97a3_9b1d1c79","updated":"2018-06-20 16:23:02.000000000","message":"OK, yeah, it\u0027s probably necessary then. When you spin a new draft of this, having the example will keep me from asking again in a few months when I forget why I said OK today. :-)","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cdb1571c6da8ac8706d7955186d88ae9cfb2b8c1","unresolved":false,"context_lines":[{"line_number":73,"context_line":"   and highly unlikely to collide with variable names that might otherwise be"},{"line_number":74,"context_line":"   used. A strawman proposal is as follows:"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"   #. Prefix each variable with ``OS_``"},{"line_number":77,"context_line":"   #. Followed by the group: ``DEFAULT``"},{"line_number":78,"context_line":"   #. Separated from the name by a double-under ``__`` (to allow unders in the"},{"line_number":79,"context_line":"      group)"},{"line_number":80,"context_line":"   #. Followed by the name, resulting in something like:"},{"line_number":81,"context_line":"      ``OS_PLACEMENT_DATABASE__CONNECTION``"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"   This will result in quite long names in some cases, but that\u0027s likely going"},{"line_number":84,"context_line":"   to be the case with any solution that satisfies both requirements."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_1896f2f0","line":81,"range":{"start_line":76,"start_character":0,"end_line":81,"end_character":43},"updated":"2018-06-20 15:24:03.000000000","message":"++","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cdb1571c6da8ac8706d7955186d88ae9cfb2b8c1","unresolved":false,"context_lines":[{"line_number":87,"context_line":"   the other hand, are strings. We either need to establish a way of coercing"},{"line_number":88,"context_line":"   string-based representations of non-string types to the desired type"},{"line_number":89,"context_line":"   (`keystonemiddleware`_ has some code that does some of this) or we perhaps"},{"line_number":90,"context_line":"   initially only support ``StrOpt``."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_184d9298","line":90,"range":{"start_line":90,"start_character":28,"end_line":90,"end_character":34},"updated":"2018-06-20 15:24:03.000000000","message":"I think it would be easy enough initially to support strings, numerics, and booleans (the latter via strutils.bool_from_string?).  Agree dicts and lists and stuff get complicated and should be deferred until we need \u0027em.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c5fdf73c02309a0ab10ef3056143926e13329902","unresolved":false,"context_lines":[{"line_number":87,"context_line":"   the other hand, are strings. We either need to establish a way of coercing"},{"line_number":88,"context_line":"   string-based representations of non-string types to the desired type"},{"line_number":89,"context_line":"   (`keystonemiddleware`_ has some code that does some of this) or we perhaps"},{"line_number":90,"context_line":"   initially only support ``StrOpt``."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_7b7b6028","line":90,"range":{"start_line":90,"start_character":28,"end_line":90,"end_character":34},"in_reply_to":"5f7c97a3_184d9298","updated":"2018-06-20 15:48:26.000000000","message":"Opt instances already have types for converting from the strings we read in files, so this isn\u0027t an issue. It\u0027s already handled by ConfigOpts as it accesses values from the drivers. The issue I was trying to point out had to do with complex types like dicts, and there the trouble is going to be properly escaping the syntax to stuff it into an environment variable. But that may just be another reason to not use those types of options.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"392eb2572ad2c0a240f448121fa28bce9c59baf9","unresolved":false,"context_lines":[{"line_number":87,"context_line":"   the other hand, are strings. We either need to establish a way of coercing"},{"line_number":88,"context_line":"   string-based representations of non-string types to the desired type"},{"line_number":89,"context_line":"   (`keystonemiddleware`_ has some code that does some of this) or we perhaps"},{"line_number":90,"context_line":"   initially only support ``StrOpt``."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_ae1f7459","line":90,"range":{"start_line":90,"start_character":28,"end_line":90,"end_character":34},"in_reply_to":"5f7c97a3_7b7b6028","updated":"2018-06-20 16:06:18.000000000","message":"\u003e But that may just be another\n \u003e reason to not use those types of options.\n\nThis.\n\nThe rules for escaping this stuff in the conf file are pretty confusing, but maybe it\u0027s just because I don\u0027t understand it.  I\u0027m pretty familiar with how to escape stuff in shell... and it could get real ugly with dicts combining single and double quotes, double-escapes, etc.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"28474056b26935ad5a4cd15fde47638683f956cc","unresolved":false,"context_lines":[{"line_number":87,"context_line":"   the other hand, are strings. We either need to establish a way of coercing"},{"line_number":88,"context_line":"   string-based representations of non-string types to the desired type"},{"line_number":89,"context_line":"   (`keystonemiddleware`_ has some code that does some of this) or we perhaps"},{"line_number":90,"context_line":"   initially only support ``StrOpt``."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_4ec26055","line":90,"range":{"start_line":90,"start_character":28,"end_line":90,"end_character":34},"in_reply_to":"5f7c97a3_ae1f7459","updated":"2018-06-20 16:23:02.000000000","message":"I don\u0027t know how widely those types of options are used, or whether someone would want to use an environment variable to set them. The value of an environment variable has a size limit, right? So maybe we can just ignore the problem until it actually comes up.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cdb1571c6da8ac8706d7955186d88ae9cfb2b8c1","unresolved":false,"context_lines":[{"line_number":96,"context_line":"This is not something that has to be done in ``oslo.config``. Individual"},{"line_number":97,"context_line":"services could manage their own environment checking, but that\u0027s not really"},{"line_number":98,"context_line":"in keeping with the oslo principles nor the consistency goals of OpenStack."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Impact on Existing APIs"},{"line_number":101,"context_line":"-----------------------"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_fbfc500d","line":99,"updated":"2018-06-20 15:24:03.000000000","message":"Worth mentioning the alternative where you specify the name of an env var in the Opt setup.  That has some significant merits, including only enabling this when you need it and allowing shorter / more intuitive variable names.  The major drawback I guess is that then you *have* to enable it explicitly and it\u0027d be tough to anticipate every option on which it could be needed.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c5fdf73c02309a0ab10ef3056143926e13329902","unresolved":false,"context_lines":[{"line_number":96,"context_line":"This is not something that has to be done in ``oslo.config``. Individual"},{"line_number":97,"context_line":"services could manage their own environment checking, but that\u0027s not really"},{"line_number":98,"context_line":"in keeping with the oslo principles nor the consistency goals of OpenStack."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Impact on Existing APIs"},{"line_number":101,"context_line":"-----------------------"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_7bce005c","line":99,"in_reply_to":"5f7c97a3_3be4083c","updated":"2018-06-20 15:48:26.000000000","message":"We should do something to provide a transition path for those cases where we already have some options with environment variables. Perhaps we can add an envvar parameter to Opt and use that as the name if it is set, or construct the name using the rules above if it is not set? That way we don\u0027t end up with 2 environment variables controlling the same configuration option.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"28474056b26935ad5a4cd15fde47638683f956cc","unresolved":false,"context_lines":[{"line_number":96,"context_line":"This is not something that has to be done in ``oslo.config``. Individual"},{"line_number":97,"context_line":"services could manage their own environment checking, but that\u0027s not really"},{"line_number":98,"context_line":"in keeping with the oslo principles nor the consistency goals of OpenStack."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Impact on Existing APIs"},{"line_number":101,"context_line":"-----------------------"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_ae96943d","line":99,"in_reply_to":"5f7c97a3_7b74c0d0","updated":"2018-06-20 16:23:02.000000000","message":"Defaults are looked at last, yes.\n\nAnd yes, I was talking about adding an envvar argument to Opt() to override any automatically generated variable name. I\u0027m reconsidering that, though. It may lead application developers to trying to choose variable names instead of letting them be constructed automatically. So it may be better to suggest deprecating those variable names that are explicitly used to set defaults.\n\nYeah, I think I\u0027ve convinced myself that\u0027s actually a bad idea.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"fb2fc58ad2e093317449fe8de40c26c23f0fa99e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"This is not something that has to be done in ``oslo.config``. Individual"},{"line_number":97,"context_line":"services could manage their own environment checking, but that\u0027s not really"},{"line_number":98,"context_line":"in keeping with the oslo principles nor the consistency goals of OpenStack."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Impact on Existing APIs"},{"line_number":101,"context_line":"-----------------------"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_1b64ac20","line":99,"in_reply_to":"5f7c97a3_7bce005c","updated":"2018-06-20 16:00:28.000000000","message":"For \"cases where we already have some options with env variables\" do you mean where someone has set default \u003d os.environ(\u0027something\u0027)?\n\nSince defaults are looked at last (that\u0027s right, yes?) there\u0027s some complexity here.\n\n(Always the way. I thought I was onto a quick hack and boom :) )","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"392eb2572ad2c0a240f448121fa28bce9c59baf9","unresolved":false,"context_lines":[{"line_number":96,"context_line":"This is not something that has to be done in ``oslo.config``. Individual"},{"line_number":97,"context_line":"services could manage their own environment checking, but that\u0027s not really"},{"line_number":98,"context_line":"in keeping with the oslo principles nor the consistency goals of OpenStack."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Impact on Existing APIs"},{"line_number":101,"context_line":"-----------------------"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_7b74c0d0","line":99,"in_reply_to":"5f7c97a3_7bce005c","updated":"2018-06-20 16:06:18.000000000","message":"Yeah, Chris, I wasn\u0027t talking about using the default\u003dgetenv thing, I was talking about the from_env\u003d\u003cenv var name\u003e thing, which I think is what Doug is referring to as well.  And I agree with Doug, that would be a nice addition.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b3fa72f9e51a8f1dc2646eac7dd0c0b3385e9fd2","unresolved":false,"context_lines":[{"line_number":96,"context_line":"This is not something that has to be done in ``oslo.config``. Individual"},{"line_number":97,"context_line":"services could manage their own environment checking, but that\u0027s not really"},{"line_number":98,"context_line":"in keeping with the oslo principles nor the consistency goals of OpenStack."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Impact on Existing APIs"},{"line_number":101,"context_line":"-----------------------"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_3be4083c","line":99,"in_reply_to":"5f7c97a3_fbfc500d","updated":"2018-06-20 15:32:30.000000000","message":"I intentionally left that out because it doesn\u0027t actually have the behavior that anyone would expect: If you use the env var in Opt setup, then it only gets used if the value is not set in config, it doesn\u0027t override config. This is sufficiently not in line with how things ought to work that I thought it best to just leave it out.\n\nCan/will mention it anyway with those caveats.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c5fdf73c02309a0ab10ef3056143926e13329902","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"* Implement the new ``ConfigurationSource`` driver."},{"line_number":156,"context_line":"* Integrate it as a default driver."},{"line_number":157,"context_line":"* Update documentation."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Incubation"},{"line_number":160,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_3bd8881c","line":157,"updated":"2018-06-20 15:48:26.000000000","message":"* Update the sample configuration generator to include the variable names.\n* Update the documentation generator to include the variable names.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c5fdf73c02309a0ab10ef3056143926e13329902","unresolved":false,"context_lines":[{"line_number":164,"context_line":"Documentation Impact"},{"line_number":165,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"..TODO(cdent): How broad should this get."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Dependencies"},{"line_number":170,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_7bf7e08d","line":167,"updated":"2018-06-20 15:48:26.000000000","message":"Explaining that each configuration option can be overridden by an environment variable would be good. And we need to include the rules for coming up with the variable name, even though we are going to include the variables in the sample generator output.","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cdb1571c6da8ac8706d7955186d88ae9cfb2b8c1","unresolved":false,"context_lines":[{"line_number":184,"context_line":"  Unported License."},{"line_number":185,"context_line":"  http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":".. _drivers: http://specs.openstack.org/openstack/oslo-specs/specs/queens/oslo-config-drivers.html"},{"line_number":188,"context_line":".. _keystonemiddleware: http://git.openstack.org/cgit/openstack/keystonemiddleware/tree/keystonemiddleware/_common/config.py"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_5b15443c","line":188,"range":{"start_line":187,"start_character":0,"end_line":188,"end_character":124},"updated":"2018-06-20 15:24:03.000000000","message":"move these to L178 and call \u0027em out","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b3fa72f9e51a8f1dc2646eac7dd0c0b3385e9fd2","unresolved":false,"context_lines":[{"line_number":184,"context_line":"  Unported License."},{"line_number":185,"context_line":"  http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":".. _drivers: http://specs.openstack.org/openstack/oslo-specs/specs/queens/oslo-config-drivers.html"},{"line_number":188,"context_line":".. _keystonemiddleware: http://git.openstack.org/cgit/openstack/keystonemiddleware/tree/keystonemiddleware/_common/config.py"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_3b8f2876","line":188,"range":{"start_line":187,"start_character":0,"end_line":188,"end_character":124},"in_reply_to":"5f7c97a3_5b15443c","updated":"2018-06-20 15:32:30.000000000","message":"why you gotta hate on hypertext!? :)","commit_id":"839b730083f6c66438b40914f39d21d9b83022f2"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"1989d9c34a0569196173de4e7fc13e80c69f57be","unresolved":false,"context_lines":[{"line_number":90,"context_line":"#. Individual options in a ``ConfigOpts`` have types. Environment variables, on"},{"line_number":91,"context_line":"   the other hand, are strings. We either need to establish a way of coercing"},{"line_number":92,"context_line":"   string-based representations of non-string types to the desired type"},{"line_number":93,"context_line":"   (`keystonemiddleware`_ has some code that does some of this) or we perhaps"},{"line_number":94,"context_line":"   initially only support ``StrOpt``."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Here is a contrived example that describes two options which have similar names"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_aac1b750","line":93,"range":{"start_line":93,"start_character":3,"end_line":93,"end_character":63},"updated":"2018-07-02 18:08:58.000000000","message":"Note that this is just making use of the built-in ability of each type to coerce a value.  This code lives in each type\u0027s __call__ method.  For example: https://github.com/openstack/oslo.config/blob/df0a57438f5e7927d3f323295365c6b4e6950e71/oslo_config/types.py#L239","commit_id":"81484e359122059cf6dd983e442e98745cdcc207"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"40885b10ec8ff6e640eddda1ac084161b86c00e5","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Another way to do this would be to add another parameter to ``Opt`` named"},{"line_number":123,"context_line":"``envvar``. If set, the value would be used to override the automatically"},{"line_number":124,"context_line":"generated environment variable name (as described above). This is considered"},{"line_number":125,"context_line":"undesirable as it made lead to published inconsistencies in variable naming."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Impact on Existing APIs"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_338c1b7f","line":125,"range":{"start_line":125,"start_character":18,"end_line":125,"end_character":22},"updated":"2018-06-21 13:14:20.000000000","message":"s/made/may/","commit_id":"81484e359122059cf6dd983e442e98745cdcc207"}]}
