)]}'
{"doc/source/reference/defining.rst":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"41d94e2a7227ce27cf8cce24e9e6f7a246f81380","unresolved":false,"context_lines":[{"line_number":2,"context_line":" Defining Options"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Configuration options may be set on the command line, in the environment,"},{"line_number":6,"context_line":"or in config files. Options are processed in that order."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"The schema for each option is defined using the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_3cd32ad5","line":5,"range":{"start_line":5,"start_character":54,"end_line":5,"end_character":72},"updated":"2018-10-16 15:04:05.000000000","message":"Could we link this to the environment driver docs? Currently I don\u0027t think it\u0027s obvious that the environment values come from a separate driver, and since that\u0027s where the variable name scheme is documented it\u0027s important information for anyone wanting to use this functionality.","commit_id":"be2a5f006466f8103ebac7c9a14fbce33823af61"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"614fd78d6e1536765f94af0a24e32746fa5dd54d","unresolved":false,"context_lines":[{"line_number":2,"context_line":" Defining Options"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Configuration options may be set on the command line, in the environment,"},{"line_number":6,"context_line":"or in config files. Options are processed in that order."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"The schema for each option is defined using the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_baee3788","line":5,"range":{"start_line":5,"start_character":54,"end_line":5,"end_character":72},"in_reply_to":"3f79a3b5_3cd32ad5","updated":"2018-10-17 19:50:20.000000000","message":"Done","commit_id":"be2a5f006466f8103ebac7c9a14fbce33823af61"}],"oslo_config/cfg.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"8539094e84370ee822ab5393483a64fc710c7ece","unresolved":false,"context_lines":[{"line_number":2585,"context_line":"    def _load_environment_driver(self):"},{"line_number":2586,"context_line":"        group_name \u003d \u0027environment\u0027"},{"line_number":2587,"context_line":"        if not self._ext_mgr:"},{"line_number":2588,"context_line":"            self._ext_mgr \u003d stevedore.ExtensionManager("},{"line_number":2589,"context_line":"                \"oslo.config.driver\","},{"line_number":2590,"context_line":"                invoke_on_load\u003dTrue)"},{"line_number":2591,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_dc3528f9","line":2588,"updated":"2018-08-06 14:36:30.000000000","message":"Since we\u0027re hard-coding this for now anyway, why not just import the driver class and instantiate it directly?","commit_id":"95566274c136e5005e5ee6085ac6549279138851"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"faf6ba400addc638d02c670cf04c1061c7d2eff0","unresolved":false,"context_lines":[{"line_number":2585,"context_line":"    def _load_environment_driver(self):"},{"line_number":2586,"context_line":"        group_name \u003d \u0027environment\u0027"},{"line_number":2587,"context_line":"        if not self._ext_mgr:"},{"line_number":2588,"context_line":"            self._ext_mgr \u003d stevedore.ExtensionManager("},{"line_number":2589,"context_line":"                \"oslo.config.driver\","},{"line_number":2590,"context_line":"                invoke_on_load\u003dTrue)"},{"line_number":2591,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b7e88516","line":2588,"in_reply_to":"3f79a3b5_1c040017","updated":"2018-08-06 14:48:55.000000000","message":"Ah, I thought it was classified as hacky because we have to load it as a special case.","commit_id":"95566274c136e5005e5ee6085ac6549279138851"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"dd6c27b2813ca034c52daf135aec41664272d6d9","unresolved":false,"context_lines":[{"line_number":2585,"context_line":"    def _load_environment_driver(self):"},{"line_number":2586,"context_line":"        group_name \u003d \u0027environment\u0027"},{"line_number":2587,"context_line":"        if not self._ext_mgr:"},{"line_number":2588,"context_line":"            self._ext_mgr \u003d stevedore.ExtensionManager("},{"line_number":2589,"context_line":"                \"oslo.config.driver\","},{"line_number":2590,"context_line":"                invoke_on_load\u003dTrue)"},{"line_number":2591,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_1c040017","line":2588,"in_reply_to":"3f79a3b5_dc3528f9","updated":"2018-08-06 14:41:20.000000000","message":"That\u0027s why it says FIXME. I was doing cut and paste thingies before to load the driver.","commit_id":"95566274c136e5005e5ee6085ac6549279138851"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"427d3d049f1dc7b5c01705893a4fcef39d4508d1","unresolved":false,"context_lines":[{"line_number":3123,"context_line":"        group_name \u003d group.name if group else None"},{"line_number":3124,"context_line":"        key \u003d (group_name, name)"},{"line_number":3125,"context_line":""},{"line_number":3126,"context_line":"        # try environment driver first"},{"line_number":3127,"context_line":"        val \u003d self._env_driver.get(group_name, name, opt)"},{"line_number":3128,"context_line":"        if val[0] !\u003d sources._NoValue:"},{"line_number":3129,"context_line":"            result \u003d (convert(val[0]), val[1])"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_dd31365a","line":3126,"updated":"2018-07-27 17:30:54.000000000","message":"To make this second, I think what we\u0027d have to do is move it below the block that does opt._get_from_namespace, and change that block so it doesn\u0027t return immediately if it finds a value.  Then we\u0027d look at the location and return the value only if it was set from the cli.  If not, then we do the lookup from this driver.  Finally, if there was a value set and we didn\u0027t get a value from the new driver then we return the previously retrieved value.\n\nMaybe pseudo-code would be easier since there are a lot of ifs in that explanation. :-)\n\nval, alt_loc \u003d opt._get_from_namespace(...)\nif val and alt_loc \u003d\u003d Locations.cli:\n    return (val, alt_loc)\nenv_val \u003d self._env_driver.get(...)\nif env_val:\n    return env_val\nelif val:\n    return (val, alt_loc)\n...other driver lookups...\n\nI _think_ that logic is sound, but let me know if you see any problems with it.","commit_id":"95566274c136e5005e5ee6085ac6549279138851"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"7e4974570e57f8808ea9e810f7c102dbf06c44cb","unresolved":false,"context_lines":[{"line_number":3123,"context_line":"        group_name \u003d group.name if group else None"},{"line_number":3124,"context_line":"        key \u003d (group_name, name)"},{"line_number":3125,"context_line":""},{"line_number":3126,"context_line":"        # try environment driver first"},{"line_number":3127,"context_line":"        val \u003d self._env_driver.get(group_name, name, opt)"},{"line_number":3128,"context_line":"        if val[0] !\u003d sources._NoValue:"},{"line_number":3129,"context_line":"            result \u003d (convert(val[0]), val[1])"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f7c97a3_b3afcb2b","line":3126,"in_reply_to":"5f7c97a3_dd31365a","updated":"2018-07-27 19:41:26.000000000","message":"Ah yeah, that makes sense and seems worth trying. I\u0027ll give that a go when I come back round to this.","commit_id":"95566274c136e5005e5ee6085ac6549279138851"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"0f4d6106c0b546a4b1f60bb1ffdd29ea11a442b8","unresolved":false,"context_lines":[{"line_number":509,"context_line":"from oslo_config import iniparser"},{"line_number":510,"context_line":"from oslo_config import sources"},{"line_number":511,"context_line":"from oslo_config import types"},{"line_number":512,"context_line":"from oslo_config.sources import _environment"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"import stevedore"},{"line_number":515,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0d57db04","line":512,"range":{"start_line":512,"start_character":0,"end_line":512,"end_character":44},"updated":"2018-08-07 11:31:04.000000000","message":"it looks like this is causing a circular dependency in python2.7 tests.","commit_id":"35be8ad101422a64fb288aadee46877edb87c9ad"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6cd98c352cd04b04970064e2c00ec3070829bb76","unresolved":false,"context_lines":[{"line_number":509,"context_line":"from oslo_config import iniparser"},{"line_number":510,"context_line":"from oslo_config import sources"},{"line_number":511,"context_line":"from oslo_config import types"},{"line_number":512,"context_line":"from oslo_config.sources import _environment"},{"line_number":513,"context_line":""},{"line_number":514,"context_line":"import stevedore"},{"line_number":515,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ed913f54","line":512,"range":{"start_line":512,"start_character":0,"end_line":512,"end_character":44},"in_reply_to":"3f79a3b5_0d57db04","updated":"2018-08-07 12:03:40.000000000","message":"Yeah, I\u0027ll do some adjustments","commit_id":"35be8ad101422a64fb288aadee46877edb87c9ad"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"bbd810e79df3858d9162ecd509569a453c206f41","unresolved":false,"context_lines":[{"line_number":3134,"context_line":"                # If there was a KeyError looking at config files or command"},{"line_number":3135,"context_line":"                # line, retry the env_val."},{"line_number":3136,"context_line":"                if env_val[0] !\u003d sources._NoValue:"},{"line_number":3137,"context_line":"                    return (convert(env_val[0]), env_val[1])"},{"line_number":3138,"context_line":"            except ValueError as ve:"},{"line_number":3139,"context_line":"                raise ConfigFileValueError("},{"line_number":3140,"context_line":"                    \"Value for option %s is not valid: %s\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_629a7f14","line":3137,"range":{"start_line":3137,"start_character":28,"end_line":3137,"end_character":35},"updated":"2018-08-24 22:12:25.000000000","message":"If this convert call fails, I don\u0027t believe it will trigger the ValueError handler below.  Which might be fine since we don\u0027t want to raise a ConfigFileValueError for an env var.  Maybe we need a new exception and another exception handler here?\n\nOh, actually the same problem sort of exists for the env var convert above too.  If that gets a bad value it will raise a ConfigFileValueError, which is misleading.  Maybe a small helper function would be good.  It could do the conversion and exception handling for env vars.","commit_id":"76feffbbbe36a6a3ab3aba96a225080e1db14ea0"}],"oslo_config/sources/_environment.py":[{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"0f4d6106c0b546a4b1f60bb1ffdd29ea11a442b8","unresolved":false,"context_lines":[{"line_number":14,"context_line":"-----------"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The **environment** backend driver provides a method of accessing"},{"line_number":17,"context_line":"configuration data in environment variables. It is available by default"},{"line_number":18,"context_line":"and requires no additional configuration to use."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_aac24d32","line":17,"range":{"start_line":17,"start_character":51,"end_line":17,"end_character":60},"updated":"2018-08-07 11:31:04.000000000","message":"enabled?","commit_id":"35be8ad101422a64fb288aadee46877edb87c9ad"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6cd98c352cd04b04970064e2c00ec3070829bb76","unresolved":false,"context_lines":[{"line_number":14,"context_line":"-----------"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The **environment** backend driver provides a method of accessing"},{"line_number":17,"context_line":"configuration data in environment variables. It is available by default"},{"line_number":18,"context_line":"and requires no additional configuration to use."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0d003b67","line":17,"range":{"start_line":17,"start_character":51,"end_line":17,"end_character":60},"in_reply_to":"3f79a3b5_aac24d32","updated":"2018-08-07 12:03:40.000000000","message":"Yes, that\u0027s probably a holdover from an earlier version","commit_id":"35be8ad101422a64fb288aadee46877edb87c9ad"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"0f4d6106c0b546a4b1f60bb1ffdd29ea11a442b8","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The **environment** backend driver provides a method of accessing"},{"line_number":17,"context_line":"configuration data in environment variables. It is available by default"},{"line_number":18,"context_line":"and requires no additional configuration to use."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Environment variables are checked for any configuration data. The variable"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6ac3d5ee","line":18,"range":{"start_line":18,"start_character":4,"end_line":18,"end_character":47},"updated":"2018-08-07 11:31:04.000000000","message":"Enabling this feature by default wouldn\u0027t make it easier to have malicious configuration injected during runtime?\n\nMaybe having a group like:\n\nconfig_source \u003d environment_source\n\n[environment_source]\ndriver \u003d environment\n\nWith a config group explicitly declared we can also add behaviour to it in the future.","commit_id":"35be8ad101422a64fb288aadee46877edb87c9ad"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6cd98c352cd04b04970064e2c00ec3070829bb76","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The **environment** backend driver provides a method of accessing"},{"line_number":17,"context_line":"configuration data in environment variables. It is available by default"},{"line_number":18,"context_line":"and requires no additional configuration to use."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Environment variables are checked for any configuration data. The variable"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_cdd003fb","line":18,"range":{"start_line":18,"start_character":4,"end_line":18,"end_character":47},"in_reply_to":"3f79a3b5_6ac3d5ee","updated":"2018-08-07 12:03:40.000000000","message":"The goal here is to be able to have no conf file at all, in some situations, thus the enabled by default.\n\nI\u0027m not clear on the security implications, but presumably if one is able to inject environment variables into the runtime environment of a process then one also has the ability to manage other aspects of its config or cause other kinds of damage?\n\nSee the original review of the associated spec: https://review.openstack.org/#/c/576860/","commit_id":"35be8ad101422a64fb288aadee46877edb87c9ad"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"0f4d6106c0b546a4b1f60bb1ffdd29ea11a442b8","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    @staticmethod"},{"line_number":73,"context_line":"    def _make_name(group_name, option_name):"},{"line_number":74,"context_line":"        group_name \u003d group_name or \u0027DEFAULT\u0027"},{"line_number":75,"context_line":"        return \u0027OS_{}__{}\u0027.format(group_name.upper(), option_name.upper())"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def get(self, group_name, option_name, opt):"},{"line_number":78,"context_line":"        env_name \u003d self._make_name(group_name, option_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4a1a997d","line":75,"range":{"start_line":75,"start_character":16,"end_line":75,"end_character":19},"updated":"2018-08-07 11:31:04.000000000","message":"what about prefix__group__name? What does the prefix OS stands for? Do we have a need to reuse it somewhere else and maybe extract the prefix to a variable?","commit_id":"35be8ad101422a64fb288aadee46877edb87c9ad"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6cd98c352cd04b04970064e2c00ec3070829bb76","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    @staticmethod"},{"line_number":73,"context_line":"    def _make_name(group_name, option_name):"},{"line_number":74,"context_line":"        group_name \u003d group_name or \u0027DEFAULT\u0027"},{"line_number":75,"context_line":"        return \u0027OS_{}__{}\u0027.format(group_name.upper(), option_name.upper())"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def get(self, group_name, option_name, opt):"},{"line_number":78,"context_line":"        env_name \u003d self._make_name(group_name, option_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ed3b7f35","line":75,"range":{"start_line":75,"start_character":16,"end_line":75,"end_character":19},"in_reply_to":"3f79a3b5_4a1a997d","updated":"2018-08-07 12:03:40.000000000","message":"The rationale for the naming scheme is in the spec and the discussion on it.\n\nThe OS namespace (OpenStack) is to align with existing environment variables in the openstack context. And we don\u0027t want the scheme to be configurable because we want it to be consistent, learnable, and translatable by humans and computers both.","commit_id":"35be8ad101422a64fb288aadee46877edb87c9ad"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"f8ecc07b5ba5cb1b4cffdfaf015b5bd548f967fc","unresolved":false,"context_lines":[{"line_number":57,"context_line":"# EnvironmentConfigurationSource is loaded by default, but we keep it"},{"line_number":58,"context_line":"# here in case we choose to change that behavior in the future."},{"line_number":59,"context_line":"class EnvironmentConfigurationSourceDriver(sources.ConfigurationSourceDriver):"},{"line_number":60,"context_line":"    \"\"\"A backend driver for environment variables.\"\"\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def list_options_for_discovery(self):"},{"line_number":63,"context_line":"        \"\"\"There are no options for this driver.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_e255a851","line":60,"range":{"start_line":60,"start_character":4,"end_line":60,"end_character":53},"updated":"2018-08-08 16:02:23.000000000","message":"Chris,\n\nYou can put here the information you need to be printed in the sample config generator. Right now it is printing like this:\n\n---\n\n[sample_environment_source]\n# Example of using a environment source\n#\n# environment: A backend driver for environment variables.\n\n#\n# From oslo.config\n#\n\n# The name of the driver that can load this configuration source.\n# (string value)\n#driver \u003d environment\n\n---\n\nSo maybe you could explain that the sample config group is generated automatically but it is not necessary to be in a config file and explain how the env names are generated.","commit_id":"76feffbbbe36a6a3ab3aba96a225080e1db14ea0"}],"oslo_config/tests/test_sources.py":[{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"0f4d6106c0b546a4b1f60bb1ffdd29ea11a442b8","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import requests_mock"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestEnvironmentConfigurationSource(base.BaseTestCase):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def setUp(self):"},{"line_number":30,"context_line":"        super(TestEnvironmentConfigurationSource, self).setUp()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2a9e3d56","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":60},"updated":"2018-08-07 11:31:04.000000000","message":"could you move this test class after TestProcessingSources and TestLoading to keep the generic tests in the begin of the file, and then the specific drivers tests after them?","commit_id":"35be8ad101422a64fb288aadee46877edb87c9ad"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6cd98c352cd04b04970064e2c00ec3070829bb76","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import requests_mock"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class TestEnvironmentConfigurationSource(base.BaseTestCase):"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def setUp(self):"},{"line_number":30,"context_line":"        super(TestEnvironmentConfigurationSource, self).setUp()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4d7953fa","line":27,"range":{"start_line":27,"start_character":0,"end_line":27,"end_character":60},"in_reply_to":"3f79a3b5_2a9e3d56","updated":"2018-08-07 12:03:40.000000000","message":"Sure, I\u0027m habitually alphabetic","commit_id":"35be8ad101422a64fb288aadee46877edb87c9ad"}],"setup.cfg":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"6cd98c352cd04b04970064e2c00ec3070829bb76","unresolved":false,"context_lines":[{"line_number":33,"context_line":"oslo.config.opts \u003d"},{"line_number":34,"context_line":"    oslo.config \u003d oslo_config._list_opts:list_opts"},{"line_number":35,"context_line":"oslo.config.driver \u003d"},{"line_number":36,"context_line":"    environment \u003d oslo_config.sources._environment:EnvironmentConfigurationSourceDriver"},{"line_number":37,"context_line":"    remote_file \u003d oslo_config.sources._uri:URIConfigurationSourceDriver"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"[wheel]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":2,"id":"3f79a3b5_ed005f37","line":36,"updated":"2018-08-07 12:03:40.000000000","message":"This can go away if we are going to require it","commit_id":"35be8ad101422a64fb288aadee46877edb87c9ad"},{"author":{"_account_id":27954,"name":"Moisés Guimarães de Medeiros","email":"guimaraes@pm.me","username":"moguimar"},"change_message_id":"4820bc820ac313e2d26e2b27eb820bc2f2bbf1df","unresolved":false,"context_lines":[{"line_number":33,"context_line":"oslo.config.opts \u003d"},{"line_number":34,"context_line":"    oslo.config \u003d oslo_config._list_opts:list_opts"},{"line_number":35,"context_line":"oslo.config.driver \u003d"},{"line_number":36,"context_line":"    environment \u003d oslo_config.sources._environment:EnvironmentConfigurationSourceDriver"},{"line_number":37,"context_line":"    remote_file \u003d oslo_config.sources._uri:URIConfigurationSourceDriver"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"[wheel]"}],"source_content_type":"text/x-ttcn-cfg","patch_set":3,"id":"3f79a3b5_3a88951d","line":36,"range":{"start_line":36,"start_character":4,"end_line":36,"end_character":87},"updated":"2018-08-09 09:58:30.000000000","message":"Actually, by removing this line, the environment driver won\u0027t be exposed in the sample generator and if someone try to declare a configuration_source with \"driver\u003denvironment\" a source instance won\u0027t be created for it.\n\nThis would drop the following item from the working items listed on the spec:\n\n* Update the sample configuration generator to include the variable names.\n\nThen I suppose that the best place in the documentation to talk about the env names would be right after where the command line options are also explained, empathizing that they also takes precedence over values set on config files and extra config sources, but the env values don\u0027t beat the command line precedence.","commit_id":"76feffbbbe36a6a3ab3aba96a225080e1db14ea0"}]}
