)]}'
{"specs/mitaka/oslo-config-db.rst":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"59c2cf6f89553206704da0091d5b55b22303bcea","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/oslo.config/+spec/oslo-config-db"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Currently oslo.config is tightly bound to the plain text config files. Rather"},{"line_number":8,"context_line":"generating config files with Configuration Management Systems (CMS) it would be"},{"line_number":9,"context_line":"convenient to get configurations directly from Configuration Management"},{"line_number":10,"context_line":"Databases (CMDB) like ZooKeeper, Consul, ETCD, you name it."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a8ffd7b_42e79740","line":7,"updated":"2015-11-25 11:43:26.000000000","message":"nit: \"rather than generating config files with a Configuration Management System (CMS, EG Puppet) we should simply retrieve the config directly from a Configuration Management Database (CMDB, EG ZooKeeper).\"","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"59c2cf6f89553206704da0091d5b55b22303bcea","unresolved":false,"context_lines":[{"line_number":24,"context_line":"file is stored via Namespace._add_parsed_config_file private interface. Data is"},{"line_number":25,"context_line":"normalized when accessed using configuration schema."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"This flow allows to use any CMDB that could return set of parameters to"},{"line_number":28,"context_line":"register to with the same interface. So deployer could specify connection"},{"line_number":29,"context_line":"parameters in CLI instead of generating and specifying config file."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a8ffd7b_e287abd5","line":27,"updated":"2015-11-25 11:43:26.000000000","message":"\"This interface could be used to retrieve parameters from a CMDB instead. To achieve this, a new CLI option ``--config-db`` will be introduced (similar to ``--config-file``). The value will be a connection string which includes the driver to use (EG ZooKeeper) and sufficient details to make the connection (EG host + port).\"","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"513fc37726084afdcd29290f9a4680daa8e7eb92","unresolved":false,"context_lines":[{"line_number":28,"context_line":"register to with the same interface. So deployer could specify connection"},{"line_number":29,"context_line":"parameters in CLI instead of generating and specifying config file."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"To achieve this, new CLI option ``--config_db\u003d`` is introduced. CMDB drivers"},{"line_number":32,"context_line":"could be installed as a plugins and discovered via stevedore."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da85f559_157ddd6d","line":31,"updated":"2015-11-10 16:34:36.000000000","message":"Should be ``--config-db\u003d``—avoid underscore in the command line option.","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0121089d93e7d7f7881e5faae9401b8fa3d37a0a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"register to with the same interface. So deployer could specify connection"},{"line_number":29,"context_line":"parameters in CLI instead of generating and specifying config file."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"To achieve this, new CLI option ``--config_db\u003d`` is introduced. CMDB drivers"},{"line_number":32,"context_line":"could be installed as a plugins and discovered via stevedore."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_f7b732f3","line":31,"in_reply_to":"da85f559_157ddd6d","updated":"2015-11-17 11:52:51.000000000","message":"This is typo, thanks","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"e81bcd3e793ffa54810bc27e8ceeeca771f04d06","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"There is `another proposal \u003chttps://review.openstack.org/130047\u003e`_ that"},{"line_number":38,"context_line":"introduces proxy interface to config options. However, it doesn\u0027t provide any"},{"line_number":39,"context_line":"mechanisms to specify CMDB source."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Impact on Existing APIs"},{"line_number":42,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_c1c7e210","line":39,"updated":"2015-11-17 02:15:29.000000000","message":"Right, the proxy of reading configs was IMHO step 0, step 1 after step 0 was to then add CMDB sources of various kinds, let\u0027s see how this spec goes though (something like step 0 I think will still need to occur, just because the majority of the code that I wrote for the proxy stuff was refactoring oslo.config into something that could read from alternate sources and not directly related to any specific CMDB solution/impl). The landscape may have changed by now (but I don\u0027t think it has).","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"2078fc409c40e3b4b3945c2d8d928980d1e07e10","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"There is `another proposal \u003chttps://review.openstack.org/130047\u003e`_ that"},{"line_number":38,"context_line":"introduces proxy interface to config options. However, it doesn\u0027t provide any"},{"line_number":39,"context_line":"mechanisms to specify CMDB source."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Impact on Existing APIs"},{"line_number":42,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_b3e1899c","line":39,"in_reply_to":"ba8a016a_02395641","updated":"2015-11-18 07:58:30.000000000","message":"You are more than welcome to merge it into this one if u so desire to. I give it to u ;)","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0121089d93e7d7f7881e5faae9401b8fa3d37a0a","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"There is `another proposal \u003chttps://review.openstack.org/130047\u003e`_ that"},{"line_number":38,"context_line":"introduces proxy interface to config options. However, it doesn\u0027t provide any"},{"line_number":39,"context_line":"mechanisms to specify CMDB source."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Impact on Existing APIs"},{"line_number":42,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_02395641","line":39,"in_reply_to":"ba8a016a_c1c7e210","updated":"2015-11-17 11:52:51.000000000","message":"I think we need to revise your bp and put it as a prereq, or just merge it to one spec.","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":11650,"name":"Tom Cammann","email":"tom.cammann@hpe.com","username":"cammann"},"change_message_id":"acad88c7b70019cfac494e28ccb2500bd0b1ac1f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Impact on Existing APIs"},{"line_number":42,"context_line":"-----------------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"There is no API changes in PoC."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Security impact"},{"line_number":47,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_11b554cf","line":44,"updated":"2015-11-20 16:37:20.000000000","message":"Beyond PoC we shouldn\u0027t have any API changes either","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"59c2cf6f89553206704da0091d5b55b22303bcea","unresolved":false,"context_lines":[{"line_number":41,"context_line":"Impact on Existing APIs"},{"line_number":42,"context_line":"-----------------------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"There is no API changes in PoC."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Security impact"},{"line_number":47,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a8ffd7b_303b869e","line":44,"in_reply_to":"ba8a016a_11b554cf","updated":"2015-11-25 11:43:26.000000000","message":"So, \"None\"","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"59c2cf6f89553206704da0091d5b55b22303bcea","unresolved":false,"context_lines":[{"line_number":46,"context_line":"Security impact"},{"line_number":47,"context_line":"---------------"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"* CLI option may contains with sensitive information (like CMDB credentials)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"* Connection options and returned values must be properly sanitized."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a8ffd7b_70510ed8","line":49,"updated":"2015-11-25 11:43:26.000000000","message":"\"may contain sensitive\"","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"513fc37726084afdcd29290f9a4680daa8e7eb92","unresolved":false,"context_lines":[{"line_number":53,"context_line":"Performance Impact"},{"line_number":54,"context_line":"------------------"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"None."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Configuration Impact"},{"line_number":59,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da85f559_9556add0","line":56,"updated":"2015-11-10 16:34:36.000000000","message":"Could probably be fleshed out some.  I expect there would be a variable on-start performance degradation, but once the configuration has been read, there should be no further performance impact.","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0121089d93e7d7f7881e5faae9401b8fa3d37a0a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"Performance Impact"},{"line_number":54,"context_line":"------------------"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"None."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Configuration Impact"},{"line_number":59,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_3764da47","line":56,"in_reply_to":"da85f559_9556add0","updated":"2015-11-17 11:52:51.000000000","message":"I\u0027ll elaborate it for next revision, thank you","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":11650,"name":"Tom Cammann","email":"tom.cammann@hpe.com","username":"cammann"},"change_message_id":"acad88c7b70019cfac494e28ccb2500bd0b1ac1f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"next format:"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    --config_db\u003ddriver://connection_string"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Where the driver is used to choose corresponding plugin via stevedore and"},{"line_number":67,"context_line":"connection_string is passed to plugin constructor."},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_31641848","line":65,"updated":"2015-11-20 16:37:20.000000000","message":"Maybe I\u0027m being dense but where will the credential be passed for the cmdb? It\u0027s never ideal to pass those on the command line.","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"59e92909401a74ba5cf8747c12b0474979e64840","unresolved":false,"context_lines":[{"line_number":62,"context_line":"next format:"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    --config_db\u003ddriver://connection_string"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Where the driver is used to choose corresponding plugin via stevedore and"},{"line_number":67,"context_line":"connection_string is passed to plugin constructor."},{"line_number":68,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_1cdc8b17","line":65,"in_reply_to":"ba8a016a_31641848","updated":"2015-11-20 16:49:34.000000000","message":"Done","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"f05d48a3bf0ba54927e8bc180b5126dd4ac39081","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    --config_db\u003ddriver://connection_string"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Where the driver is used to choose corresponding plugin via stevedore and"},{"line_number":67,"context_line":"connection_string is passed to plugin constructor."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Developer Impact"},{"line_number":70,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_d5000aad","line":67,"updated":"2015-11-16 20:09:34.000000000","message":"Can you give some suggestions for the types of plugins this might support? I\u0027m surprised to see anything other than fetching a config file via HTTP/S and then parsing it, instead of reading it from the local filesystem.","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"427d11406ba869f086dfc66dd3ce6b87cf679991","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    --config_db\u003ddriver://connection_string"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Where the driver is used to choose corresponding plugin via stevedore and"},{"line_number":67,"context_line":"connection_string is passed to plugin constructor."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Developer Impact"},{"line_number":70,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_e69006ef","line":67,"in_reply_to":"ba8a016a_d5000aad","updated":"2015-11-16 21:26:39.000000000","message":"I would envision this being used to enable fetching configuration values from something like etcd.","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0121089d93e7d7f7881e5faae9401b8fa3d37a0a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    --config_db\u003ddriver://connection_string"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Where the driver is used to choose corresponding plugin via stevedore and"},{"line_number":67,"context_line":"connection_string is passed to plugin constructor."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Developer Impact"},{"line_number":70,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_e2f3f208","line":67,"in_reply_to":"ba8a016a_e17ea6e3","updated":"2015-11-17 11:52:51.000000000","message":"Application reloading on config changing is a really tricky part, because if you want to change more than one parameter, services would be restarted many times. I\u0027m still in progress elaborating it.","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"2078fc409c40e3b4b3945c2d8d928980d1e07e10","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    --config_db\u003ddriver://connection_string"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Where the driver is used to choose corresponding plugin via stevedore and"},{"line_number":67,"context_line":"connection_string is passed to plugin constructor."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Developer Impact"},{"line_number":70,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_b3a66951","line":67,"in_reply_to":"ba8a016a_e2f3f208","updated":"2015-11-18 07:58:30.000000000","message":"Ok, maybe email/respond to the following since its related to all of this:\n\nhttp://lists.openstack.org/pipermail/openstack-dev/2015-November/thread.html#78400\n\nPerhaps get in touch with Marian Horban  (who is interested in this area as well)...","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"e81bcd3e793ffa54810bc27e8ceeeca771f04d06","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    --config_db\u003ddriver://connection_string"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Where the driver is used to choose corresponding plugin via stevedore and"},{"line_number":67,"context_line":"connection_string is passed to plugin constructor."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Developer Impact"},{"line_number":70,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_e17ea6e3","line":67,"in_reply_to":"ba8a016a_e69006ef","updated":"2015-11-17 02:15:29.000000000","message":"So IMHO the interesting part about fetching configuration isn\u0027t this reading part, it\u0027s more of what happens when the remote side (cmdb) changes and then what happens to the apps, do they reinitialize themselves automagically? Something else","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"59c2cf6f89553206704da0091d5b55b22303bcea","unresolved":false,"context_lines":[{"line_number":86,"context_line":"throwing it out there to see who picks it up?"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"If more than one person is working on the implementation, please designate the"},{"line_number":89,"context_line":"primary author and contact."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Primary assignee:"},{"line_number":92,"context_line":"  yottatsa"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a8ffd7b_300946de","line":89,"updated":"2015-11-25 11:43:26.000000000","message":"delete these 2 template paras","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"f05d48a3bf0ba54927e8bc180b5126dd4ac39081","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* Implement config-db CLI handler."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"* Implement PoC ZooKeeper and Consul drivers."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Incubation"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_b5f1c6cf","line":104,"updated":"2015-11-16 20:09:34.000000000","message":"Can you elaborate on how the config concepts in oslo.config would map to those tools instead? I\u0027m sure there is a mapping, but it would be good to have that sort of detail here to understand how you see this working.","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0121089d93e7d7f7881e5faae9401b8fa3d37a0a","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* Implement config-db CLI handler."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"* Implement PoC ZooKeeper and Consul drivers."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Incubation"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_a273aa7f","line":104,"in_reply_to":"ba8a016a_8109da2e","updated":"2015-11-17 11:52:51.000000000","message":"I\u0027ve done a PoC which is supporting ZK and Consul as a plugins https://review.openstack.org/243182 . In this PoC, data is stored in config option per key manner, e.g: \n\n--config-db\u003dconsul://consulhost/openstack would read all keys from /openstack namespace in Cosul and apply openstack/default/debug key as a DEFAULT/debug option.\n\nActually, I bet that Option Value Interpolation http://docs.openstack.org/developer/oslo.config/cfg.html#option-value-interpolation is working out-of-the-box for config-db and you could specify something like\n\nconnection \u003d mysql://$service:pass@127.0.0.1/$service?read_timeout\u003d60\n\nin your global config-db namespace and override it with\n\nservice \u003d nova\n\nin your service-specific config-db namespace.","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"2078fc409c40e3b4b3945c2d8d928980d1e07e10","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* Implement config-db CLI handler."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"* Implement PoC ZooKeeper and Consul drivers."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Incubation"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_93824593","line":104,"in_reply_to":"ba8a016a_a273aa7f","updated":"2015-11-18 07:58:30.000000000","message":"Cool","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"11b7944e19a932fb0e411a40d6f021697b7409b2","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"* Implement config-db CLI handler."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"* Implement PoC ZooKeeper and Consul drivers."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Incubation"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_8109da2e","line":104,"in_reply_to":"ba8a016a_b5f1c6cf","updated":"2015-11-17 01:52:19.000000000","message":"+1 I\u0027d like to know to :)","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":11650,"name":"Tom Cammann","email":"tom.cammann@hpe.com","username":"cammann"},"change_message_id":"acad88c7b70019cfac494e28ccb2500bd0b1ac1f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"Adoption"},{"line_number":112,"context_line":"--------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Which applications would like to share the modules? We usually prefer"},{"line_number":115,"context_line":"at least 2 applications, but if too many applications share the"},{"line_number":116,"context_line":"incubated version graduation becomes more difficult."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_319f38b6","line":114,"updated":"2015-11-20 16:37:20.000000000","message":"Please update or remove these sections with the boilerplate text.","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"59e92909401a74ba5cf8747c12b0474979e64840","unresolved":false,"context_lines":[{"line_number":111,"context_line":"Adoption"},{"line_number":112,"context_line":"--------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Which applications would like to share the modules? We usually prefer"},{"line_number":115,"context_line":"at least 2 applications, but if too many applications share the"},{"line_number":116,"context_line":"incubated version graduation becomes more difficult."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_dce5a3dc","line":114,"in_reply_to":"ba8a016a_319f38b6","updated":"2015-11-20 16:49:34.000000000","message":"Done","commit_id":"1b3a11f336f1729e81f4b8026be54c3f31369993"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"0cdef9e42a608799efc4430887f722959f98562b","unresolved":false,"context_lines":[{"line_number":8,"context_line":"files. Instead generating configuration files with Configuration Management"},{"line_number":9,"context_line":"Systems (CMS) it would be convenient to get configurations directly from the"},{"line_number":10,"context_line":"Configuration Management Databases (CMDB) or from central configuration"},{"line_number":11,"context_line":"storage like ETCD, ZooKeeper, Consul and others."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Problem description"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_fabc47dd","line":11,"updated":"2015-11-30 10:40:54.000000000","message":"nit: English is a bit funky, see comment on PS#1","commit_id":"26a6dbc1a6b0b68172a701361e4623255be7043c"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"9b46db70c6462e1454868ca137dd2f9090117d6f","unresolved":false,"context_lines":[{"line_number":8,"context_line":"files. Instead generating configuration files with Configuration Management"},{"line_number":9,"context_line":"Systems (CMS) it would be convenient to get configurations directly from the"},{"line_number":10,"context_line":"Configuration Management Databases (CMDB) or from central configuration"},{"line_number":11,"context_line":"storage like ETCD, ZooKeeper, Consul and others."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Problem description"},{"line_number":14,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_9c54c954","line":11,"in_reply_to":"9a8ffd7b_fabc47dd","updated":"2015-12-01 14:41:31.000000000","message":"Done","commit_id":"26a6dbc1a6b0b68172a701361e4623255be7043c"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"0cdef9e42a608799efc4430887f722959f98562b","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The existing implementation of ``oslo.config`` does not support an option to"},{"line_number":17,"context_line":"store OpenStack configuration in remote or local back ends except ``INI``"},{"line_number":18,"context_line":"files in a local file system."},{"line_number":19,"context_line":"The management of configuration files in large OpenStack deployments is a very"},{"line_number":20,"context_line":"complicated process as it requires changes across multiple nodes and multiple"},{"line_number":21,"context_line":"services."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_7ad13722","line":18,"updated":"2015-11-30 10:40:54.000000000","message":"blank lines between paragraphs please","commit_id":"26a6dbc1a6b0b68172a701361e4623255be7043c"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"9b46db70c6462e1454868ca137dd2f9090117d6f","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The existing implementation of ``oslo.config`` does not support an option to"},{"line_number":17,"context_line":"store OpenStack configuration in remote or local back ends except ``INI``"},{"line_number":18,"context_line":"files in a local file system."},{"line_number":19,"context_line":"The management of configuration files in large OpenStack deployments is a very"},{"line_number":20,"context_line":"complicated process as it requires changes across multiple nodes and multiple"},{"line_number":21,"context_line":"services."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_5c4e61c2","line":18,"in_reply_to":"9a8ffd7b_7ad13722","updated":"2015-12-01 14:41:31.000000000","message":"Done","commit_id":"26a6dbc1a6b0b68172a701361e4623255be7043c"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"0cdef9e42a608799efc4430887f722959f98562b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"services."},{"line_number":22,"context_line":"A centralized configuration management is a highly desired feature as it"},{"line_number":23,"context_line":"allows having a single point of control of all the configuration parameters"},{"line_number":24,"context_line":"for OpenStack components."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Proposed change"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_3a9e4f63","line":24,"updated":"2015-11-30 10:40:54.000000000","message":"This last para doesn\u0027t help make the case for retrieval from a CMDB over using a CMS.","commit_id":"26a6dbc1a6b0b68172a701361e4623255be7043c"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"9b46db70c6462e1454868ca137dd2f9090117d6f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"services."},{"line_number":22,"context_line":"A centralized configuration management is a highly desired feature as it"},{"line_number":23,"context_line":"allows having a single point of control of all the configuration parameters"},{"line_number":24,"context_line":"for OpenStack components."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Proposed change"},{"line_number":27,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a8ffd7b_bcd66dc1","line":24,"in_reply_to":"9a8ffd7b_3a9e4f63","updated":"2015-12-01 14:41:31.000000000","message":"I\u0027ll re-write it.","commit_id":"26a6dbc1a6b0b68172a701361e4623255be7043c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfe470d3cbd5c25d9cfc8fd0b9e9c953a3da252c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"https://blueprints.launchpad.net/oslo.config/+spec/oslo-config-db"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Currently, oslo.config is tightly bound to the plain text configuration"},{"line_number":8,"context_line":"files. Rather than generating configuration files with a Configuration"},{"line_number":9,"context_line":"Management Systems (CMS) we should simply retrieve the config directly from a"},{"line_number":10,"context_line":"Configuration Management Database (CMDB) or from central configuration storage"},{"line_number":11,"context_line":"like ZooKeeper, Consul, ETCD and others."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa69d971_eab603f8","line":8,"range":{"start_line":8,"start_character":7,"end_line":8,"end_character":18},"updated":"2016-01-05 15:40:06.000000000","message":"We need to continue to support reading configuration files.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9e18fb4241c89dff27071f9d5a252315f1c44a05","unresolved":false,"context_lines":[{"line_number":5,"context_line":"https://blueprints.launchpad.net/oslo.config/+spec/oslo-config-db"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Currently, oslo.config is tightly bound to the plain text configuration"},{"line_number":8,"context_line":"files. Rather than generating configuration files with a Configuration"},{"line_number":9,"context_line":"Management Systems (CMS) we should simply retrieve the config directly from a"},{"line_number":10,"context_line":"Configuration Management Database (CMDB) or from central configuration storage"},{"line_number":11,"context_line":"like ZooKeeper, Consul, ETCD and others."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_fbdd6c42","line":8,"range":{"start_line":8,"start_character":7,"end_line":8,"end_character":18},"in_reply_to":"fa69d971_eab603f8","updated":"2017-04-07 15:11:46.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"cd90407bb1ca843185e425d18bc5646c45afbe59","unresolved":false,"context_lines":[{"line_number":22,"context_line":"The management of configuration files in large OpenStack deployments is a very"},{"line_number":23,"context_line":"complicated process as it requires changes across multiple nodes and multiple"},{"line_number":24,"context_line":"services. Further work is required to effectively deliver configurations to the"},{"line_number":25,"context_line":"containers."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Proposed change"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_62bb48e6","line":25,"updated":"2015-12-02 11:45:25.000000000","message":"not sure where \u0027containers\u0027 sprung from? Maybe best to stick to \u0027hosts\u0027.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9e18fb4241c89dff27071f9d5a252315f1c44a05","unresolved":false,"context_lines":[{"line_number":22,"context_line":"The management of configuration files in large OpenStack deployments is a very"},{"line_number":23,"context_line":"complicated process as it requires changes across multiple nodes and multiple"},{"line_number":24,"context_line":"services. Further work is required to effectively deliver configurations to the"},{"line_number":25,"context_line":"containers."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Proposed change"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_5bec58f2","line":25,"in_reply_to":"1a7b0d38_f710beaa","updated":"2017-04-07 15:11:46.000000000","message":"I removed the last block for now. Let me know if more details need to be added but I think it\u0027s fine now.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"f1ad413d31c7e289b3121ff85c3d4bba656d44ca","unresolved":false,"context_lines":[{"line_number":22,"context_line":"The management of configuration files in large OpenStack deployments is a very"},{"line_number":23,"context_line":"complicated process as it requires changes across multiple nodes and multiple"},{"line_number":24,"context_line":"services. Further work is required to effectively deliver configurations to the"},{"line_number":25,"context_line":"containers."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Proposed change"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a7b0d38_f710beaa","line":25,"in_reply_to":"3a7e1126_f32bff31","updated":"2015-12-23 01:03:02.000000000","message":"If container deployments is a real justification for needing this, you just need to explain that more clearly.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":14168,"name":"Alexandr Nevenchannyy","email":"anevenchannyy@mirantis.com","username":"anevenchannyy"},"change_message_id":"c7f1d9227ede3043ba8a2884cf5eeafda0f0a0da","unresolved":false,"context_lines":[{"line_number":22,"context_line":"The management of configuration files in large OpenStack deployments is a very"},{"line_number":23,"context_line":"complicated process as it requires changes across multiple nodes and multiple"},{"line_number":24,"context_line":"services. Further work is required to effectively deliver configurations to the"},{"line_number":25,"context_line":"containers."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Proposed change"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_ae48375d","line":25,"in_reply_to":"9a8ffd7b_62bb48e6","updated":"2015-12-02 12:55:11.000000000","message":"Maybe: OpenStack services ? This is true for containers and for standart deployments","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0e2788bf91aac28034966f58b4ba3ae4ec9e7206","unresolved":false,"context_lines":[{"line_number":22,"context_line":"The management of configuration files in large OpenStack deployments is a very"},{"line_number":23,"context_line":"complicated process as it requires changes across multiple nodes and multiple"},{"line_number":24,"context_line":"services. Further work is required to effectively deliver configurations to the"},{"line_number":25,"context_line":"containers."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Proposed change"},{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_f32bff31","line":25,"in_reply_to":"9a8ffd7b_62bb48e6","updated":"2015-12-17 00:59:38.000000000","message":"Various CMSes (like puppet) is effectively solving the problem of delivering configs to hosts, not to containers.\n\nTo simplify the BP, I\u0027ll remove this.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfe470d3cbd5c25d9cfc8fd0b9e9c953a3da252c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"We propose refactoring ``oslo_config.cfg.ConfigOpts`` to split it to a base"},{"line_number":31,"context_line":"class and implementation. This will allow deployers to use any configuration"},{"line_number":32,"context_line":"driver by implementing required interface and specifying which implementation"},{"line_number":33,"context_line":"to use."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Host-specific configurations should be handled by the implementation, if it"},{"line_number":36,"context_line":"needed for particular deployment."}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa69d971_8acc276b","line":33,"updated":"2016-01-05 15:40:06.000000000","message":"How is the deployer going to specify which implementation to use? In a config file?","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9e18fb4241c89dff27071f9d5a252315f1c44a05","unresolved":false,"context_lines":[{"line_number":30,"context_line":"We propose refactoring ``oslo_config.cfg.ConfigOpts`` to split it to a base"},{"line_number":31,"context_line":"class and implementation. This will allow deployers to use any configuration"},{"line_number":32,"context_line":"driver by implementing required interface and specifying which implementation"},{"line_number":33,"context_line":"to use."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Host-specific configurations should be handled by the implementation, if it"},{"line_number":36,"context_line":"needed for particular deployment."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_7bacbc33","line":33,"in_reply_to":"fa69d971_8acc276b","updated":"2017-04-07 15:11:46.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfe470d3cbd5c25d9cfc8fd0b9e9c953a3da252c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"driver by implementing required interface and specifying which implementation"},{"line_number":33,"context_line":"to use."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Host-specific configurations should be handled by the implementation, if it"},{"line_number":36,"context_line":"needed for particular deployment."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"When initializing, oslo.config instantiates a file-based ConfigOpts driver"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa69d971_aa256b09","line":35,"range":{"start_line":35,"start_character":73,"end_line":35,"end_character":75},"updated":"2016-01-05 15:40:06.000000000","message":"change \"it\" to \"it is\"","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9e18fb4241c89dff27071f9d5a252315f1c44a05","unresolved":false,"context_lines":[{"line_number":32,"context_line":"driver by implementing required interface and specifying which implementation"},{"line_number":33,"context_line":"to use."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Host-specific configurations should be handled by the implementation, if it"},{"line_number":36,"context_line":"needed for particular deployment."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"When initializing, oslo.config instantiates a file-based ConfigOpts driver"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_bbd124fe","line":35,"range":{"start_line":35,"start_character":73,"end_line":35,"end_character":75},"in_reply_to":"fa69d971_aa256b09","updated":"2017-04-07 15:11:46.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"cd90407bb1ca843185e425d18bc5646c45afbe59","unresolved":false,"context_lines":[{"line_number":33,"context_line":"to use."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Host-specific configurations should be handled by the implementation, if it"},{"line_number":36,"context_line":"needed for particular deployment."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"When initializing, oslo.config instantiates a file-based ConfigOpts driver"},{"line_number":39,"context_line":"and registers an option that defines the overall implementation. It uses a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_02959c85","line":36,"updated":"2015-12-02 11:45:25.000000000","message":"-1: I\u0027d like more detail on this","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0e2788bf91aac28034966f58b4ba3ae4ec9e7206","unresolved":false,"context_lines":[{"line_number":33,"context_line":"to use."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Host-specific configurations should be handled by the implementation, if it"},{"line_number":36,"context_line":"needed for particular deployment."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"When initializing, oslo.config instantiates a file-based ConfigOpts driver"},{"line_number":39,"context_line":"and registers an option that defines the overall implementation. It uses a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_3320a7f7","line":36,"in_reply_to":"9a8ffd7b_02959c85","updated":"2015-12-17 00:59:38.000000000","message":"I\u0027d elaborate it.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ecc4aff9ba9ada73a71db0c8df1782f9afe97e40","unresolved":false,"context_lines":[{"line_number":38,"context_line":"When initializing, oslo.config instantiates a file-based ConfigOpts driver"},{"line_number":39,"context_line":"and registers an option that defines the overall implementation. It uses a"},{"line_number":40,"context_line":"project name ``oslo`` and a program name ``config`` to determine where the"},{"line_number":41,"context_line":"default configuration files are stored. Then, chosen ConfigOpts implementation"},{"line_number":42,"context_line":"will be instantiated and assigned to a global ``CONF`` variable, and initial"},{"line_number":43,"context_line":"ConfigOpts instance will be passed to the constructor."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_7450125f","line":41,"updated":"2015-12-04 21:20:03.000000000","message":"Why wouldn\u0027t it use the same information it is given describing the application being run (nova, neutron, etc.)? Why always oslo and config?\n\nPresumably each copy of a service needs to have some sort of unique identifier attached to it, and multiple services can run on the same host, so each copy of a service may need to read a separate configuration file. If you don\u0027t uniquely identify each service copy, you won\u0027t be able to do things like vary the configuration by hypervisor type in a heterogenous cluster.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"f1ad413d31c7e289b3121ff85c3d4bba656d44ca","unresolved":false,"context_lines":[{"line_number":38,"context_line":"When initializing, oslo.config instantiates a file-based ConfigOpts driver"},{"line_number":39,"context_line":"and registers an option that defines the overall implementation. It uses a"},{"line_number":40,"context_line":"project name ``oslo`` and a program name ``config`` to determine where the"},{"line_number":41,"context_line":"default configuration files are stored. Then, chosen ConfigOpts implementation"},{"line_number":42,"context_line":"will be instantiated and assigned to a global ``CONF`` variable, and initial"},{"line_number":43,"context_line":"ConfigOpts instance will be passed to the constructor."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a7b0d38_b26564e2","line":41,"in_reply_to":"3a7e1126_73262f18","updated":"2015-12-23 01:03:02.000000000","message":"Can you address how each service instance will know its unique identifier so it can fetch its own options without overlapping with other instances of the same type of service?","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0e2788bf91aac28034966f58b4ba3ae4ec9e7206","unresolved":false,"context_lines":[{"line_number":38,"context_line":"When initializing, oslo.config instantiates a file-based ConfigOpts driver"},{"line_number":39,"context_line":"and registers an option that defines the overall implementation. It uses a"},{"line_number":40,"context_line":"project name ``oslo`` and a program name ``config`` to determine where the"},{"line_number":41,"context_line":"default configuration files are stored. Then, chosen ConfigOpts implementation"},{"line_number":42,"context_line":"will be instantiated and assigned to a global ``CONF`` variable, and initial"},{"line_number":43,"context_line":"ConfigOpts instance will be passed to the constructor."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_73262f18","line":41,"in_reply_to":"7a740942_7450125f","updated":"2015-12-17 00:59:38.000000000","message":"I offer to use this data because of two points:\n\n1. We\u0027re reading settings for oslo.config, not for e.g. nova.\n\n2. In case if we use app name, e.g. nova, default config file would be /etc/nova/nova.conf. In that case, deployer will have to modify upstream config instead of putting another one.\n\nAfter implementation will be chosen with oslo.config settings file, the CONF singleton will be initialized and it will be called as usual with nova as an app name.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfe470d3cbd5c25d9cfc8fd0b9e9c953a3da252c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"will be instantiated and assigned to a global ``CONF`` variable, and initial"},{"line_number":43,"context_line":"ConfigOpts instance will be passed to the constructor."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Although many CMDB provide notifications on changing  configuration points and"},{"line_number":46,"context_line":"this can be used for application reloading or configuration updating, now this"},{"line_number":47,"context_line":"functionality is out of scope."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa69d971_0a62773e","line":45,"range":{"start_line":45,"start_character":14,"end_line":45,"end_character":18},"updated":"2016-01-05 15:40:06.000000000","message":"change \"CMDB\" to \"CMDBs\"","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfe470d3cbd5c25d9cfc8fd0b9e9c953a3da252c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"will be instantiated and assigned to a global ``CONF`` variable, and initial"},{"line_number":43,"context_line":"ConfigOpts instance will be passed to the constructor."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Although many CMDB provide notifications on changing  configuration points and"},{"line_number":46,"context_line":"this can be used for application reloading or configuration updating, now this"},{"line_number":47,"context_line":"functionality is out of scope."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa69d971_2a673b4e","line":45,"range":{"start_line":45,"start_character":52,"end_line":45,"end_character":54},"updated":"2016-01-05 15:40:06.000000000","message":"remove extra space.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9e18fb4241c89dff27071f9d5a252315f1c44a05","unresolved":false,"context_lines":[{"line_number":42,"context_line":"will be instantiated and assigned to a global ``CONF`` variable, and initial"},{"line_number":43,"context_line":"ConfigOpts instance will be passed to the constructor."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Although many CMDB provide notifications on changing  configuration points and"},{"line_number":46,"context_line":"this can be used for application reloading or configuration updating, now this"},{"line_number":47,"context_line":"functionality is out of scope."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_7e36eae8","line":45,"range":{"start_line":45,"start_character":14,"end_line":45,"end_character":18},"in_reply_to":"fa69d971_0a62773e","updated":"2017-04-07 15:11:46.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9e18fb4241c89dff27071f9d5a252315f1c44a05","unresolved":false,"context_lines":[{"line_number":42,"context_line":"will be instantiated and assigned to a global ``CONF`` variable, and initial"},{"line_number":43,"context_line":"ConfigOpts instance will be passed to the constructor."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Although many CMDB provide notifications on changing  configuration points and"},{"line_number":46,"context_line":"this can be used for application reloading or configuration updating, now this"},{"line_number":47,"context_line":"functionality is out of scope."},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_3e4e226f","line":45,"range":{"start_line":45,"start_character":52,"end_line":45,"end_character":54},"in_reply_to":"fa69d971_2a673b4e","updated":"2017-04-07 15:11:46.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"cd90407bb1ca843185e425d18bc5646c45afbe59","unresolved":false,"context_lines":[{"line_number":43,"context_line":"ConfigOpts instance will be passed to the constructor."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Although many CMDB provide notifications on changing  configuration points and"},{"line_number":46,"context_line":"this can be used for application reloading or configuration updating, now this"},{"line_number":47,"context_line":"functionality is out of scope."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Implementation details"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_420ba424","line":46,"updated":"2015-12-02 11:45:25.000000000","message":"femtonits: double space on line above and L52, s/now/for now/","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0e2788bf91aac28034966f58b4ba3ae4ec9e7206","unresolved":false,"context_lines":[{"line_number":43,"context_line":"ConfigOpts instance will be passed to the constructor."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Although many CMDB provide notifications on changing  configuration points and"},{"line_number":46,"context_line":"this can be used for application reloading or configuration updating, now this"},{"line_number":47,"context_line":"functionality is out of scope."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Implementation details"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_33774704","line":46,"in_reply_to":"9a8ffd7b_420ba424","updated":"2015-12-17 00:59:38.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"cd90407bb1ca843185e425d18bc5646c45afbe59","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Although many CMDB provide notifications on changing  configuration points and"},{"line_number":46,"context_line":"this can be used for application reloading or configuration updating, now this"},{"line_number":47,"context_line":"functionality is out of scope."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Implementation details"},{"line_number":50,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_82bc2cbc","line":47,"updated":"2015-12-02 11:45:25.000000000","message":"-1: There\u0027s already a reload_config_files method and I\u0027m writing a similar one. CMDB backends should respect these methods in the initial implementation, otherwise switching backend will not be transparent to services.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"a5daf95bdc5ff5312755b57a8d0dadaea0e8dd95","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Although many CMDB provide notifications on changing  configuration points and"},{"line_number":46,"context_line":"this can be used for application reloading or configuration updating, now this"},{"line_number":47,"context_line":"functionality is out of scope."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Implementation details"},{"line_number":50,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da0c15f0_bbd74fec","line":47,"in_reply_to":"3a7e1126_7354ef53","updated":"2016-03-26 11:04:04.000000000","message":"And please put it in the scope of the spec, that is important and cannot be postponed, as Alexis noted.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0e2788bf91aac28034966f58b4ba3ae4ec9e7206","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Although many CMDB provide notifications on changing  configuration points and"},{"line_number":46,"context_line":"this can be used for application reloading or configuration updating, now this"},{"line_number":47,"context_line":"functionality is out of scope."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Implementation details"},{"line_number":50,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_134fab93","line":47,"in_reply_to":"7a740942_d49546e4","updated":"2015-12-17 00:59:38.000000000","message":"First of all, many of CMDB\u0027s allows to track changes in options, so hook to update a mutable option could be called exactly when option is changed.\n\nSecondly, remote driver could get data in any manned suitable for provider. E.g. Consul allows you to fetch a directory recursively at once. It\u0027s implementation details.\n\nI\u0027ll elaborate it.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0e2788bf91aac28034966f58b4ba3ae4ec9e7206","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Although many CMDB provide notifications on changing  configuration points and"},{"line_number":46,"context_line":"this can be used for application reloading or configuration updating, now this"},{"line_number":47,"context_line":"functionality is out of scope."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Implementation details"},{"line_number":50,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_7354ef53","line":47,"in_reply_to":"9a8ffd7b_82bc2cbc","updated":"2015-12-17 00:59:38.000000000","message":"Accepted. I\u0027d elaborate it","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ecc4aff9ba9ada73a71db0c8df1782f9afe97e40","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Although many CMDB provide notifications on changing  configuration points and"},{"line_number":46,"context_line":"this can be used for application reloading or configuration updating, now this"},{"line_number":47,"context_line":"functionality is out of scope."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Implementation details"},{"line_number":50,"context_line":"----------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_d49546e4","line":47,"in_reply_to":"9a8ffd7b_82bc2cbc","updated":"2015-12-04 21:20:03.000000000","message":"I agree, and having the data in a CMDB complicates this. A file driver would just reread the whole file. A driver talking to a remote system, accessing one config setting at a time, would either need to re-fetch all of its existing options (or at least the mutable ones) or it would need to track whether any given option had been re-read since it was told to reload and then on the next access reload that one option. The brute-force way is probably simpler to get right.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"cd90407bb1ca843185e425d18bc5646c45afbe59","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Сurrent implementation that is designed on one class should be  refactored to"},{"line_number":53,"context_line":"BaseConfigOpts class that provides Options Registry. Call and ``find_file``"},{"line_number":54,"context_line":"methods should be an abstract and implemented in driver::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    class BaseConfigOpts(collections.Mapping):"},{"line_number":57,"context_line":"        \"\"\"Base Config Options class which provides Options Registry.\"\"\""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_c21474ea","line":54,"updated":"2015-12-02 11:45:25.000000000","message":"English:\n\n\"The current implementation which is designed as a single concrete class should be refactored into an abstract BaseConfigOpts class. This will provide the options registry. The ``__call__`` and ``find_file`` methods should be stubbed and implemented in each driver::\"","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0e2788bf91aac28034966f58b4ba3ae4ec9e7206","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Сurrent implementation that is designed on one class should be  refactored to"},{"line_number":53,"context_line":"BaseConfigOpts class that provides Options Registry. Call and ``find_file``"},{"line_number":54,"context_line":"methods should be an abstract and implemented in driver::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    class BaseConfigOpts(collections.Mapping):"},{"line_number":57,"context_line":"        \"\"\"Base Config Options class which provides Options Registry.\"\"\""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_16047913","line":54,"in_reply_to":"9a8ffd7b_c21474ea","updated":"2015-12-17 00:59:38.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfe470d3cbd5c25d9cfc8fd0b9e9c953a3da252c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"BaseConfigOpts class that provides Options Registry. Call and ``find_file``"},{"line_number":54,"context_line":"methods should be an abstract and implemented in driver::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    class BaseConfigOpts(collections.Mapping):"},{"line_number":57,"context_line":"        \"\"\"Base Config Options class which provides Options Registry.\"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        def __init__(self, driver_options):"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa69d971_6a8e93d1","line":56,"updated":"2016-01-05 15:40:06.000000000","message":"is this going to use abstract base class? https://docs.python.org/2/library/abc.html","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9e18fb4241c89dff27071f9d5a252315f1c44a05","unresolved":false,"context_lines":[{"line_number":53,"context_line":"BaseConfigOpts class that provides Options Registry. Call and ``find_file``"},{"line_number":54,"context_line":"methods should be an abstract and implemented in driver::"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    class BaseConfigOpts(collections.Mapping):"},{"line_number":57,"context_line":"        \"\"\"Base Config Options class which provides Options Registry.\"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        def __init__(self, driver_options):"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_feb67afa","line":56,"in_reply_to":"fa69d971_6a8e93d1","updated":"2017-04-07 15:11:46.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfe470d3cbd5c25d9cfc8fd0b9e9c953a3da252c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            \"\"\"Look up an option value and perform string substitution.\"\"\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        def __getitem__(self, key):"},{"line_number":66,"context_line":"            \"\"\"Look up an option value and perform string substitution.\"\"\""},{"line_number":67,"context_line":"        def __contains__(self, key):"},{"line_number":68,"context_line":"            \"\"\"Return True if key is the name of a registered opt or group.\"\"\""},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa69d971_6a53f339","line":66,"updated":"2016-01-05 15:40:06.000000000","message":"Do all of the drivers really have to reimplement all of these methods? Seems like all the driver should need to implement is how to get value. reset, clear, register_opt don\u0027t seem like you\u0027d do anything different for an etcd driver than you\u0027d do for a file driver.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9e18fb4241c89dff27071f9d5a252315f1c44a05","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            \"\"\"Look up an option value and perform string substitution.\"\"\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        def __getitem__(self, key):"},{"line_number":66,"context_line":"            \"\"\"Look up an option value and perform string substitution.\"\"\""},{"line_number":67,"context_line":"        def __contains__(self, key):"},{"line_number":68,"context_line":"            \"\"\"Return True if key is the name of a registered opt or group.\"\"\""},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_1ec0fe4f","line":66,"in_reply_to":"fa69d971_6a53f339","updated":"2017-04-07 15:11:46.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"a5daf95bdc5ff5312755b57a8d0dadaea0e8dd95","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        def clear(self):"},{"line_number":80,"context_line":"            \"\"\"Clear the state of the object to before it was called. \"\"\""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        def register_opt(self, opt, group\u003dNone, cli\u003dFalse):"},{"line_number":83,"context_line":"            \"\"\"Register an option schema.\"\"\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        def register_opts(self, opts, group\u003dNone):"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da0c15f0_1bc8fb21","line":82,"updated":"2016-03-26 11:04:04.000000000","message":"As you\u0027re adding a distributed component, which is CMDB connected via unreliable - by definition, unreliable it is - network, please cover and describe failure modes for all of the operations as well. How would you detect a failure? By a timeout perhaps? Retrying of failed ops? Shall be covered in the spec.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9e18fb4241c89dff27071f9d5a252315f1c44a05","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        def clear(self):"},{"line_number":80,"context_line":"            \"\"\"Clear the state of the object to before it was called. \"\"\""},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        def register_opt(self, opt, group\u003dNone, cli\u003dFalse):"},{"line_number":83,"context_line":"            \"\"\"Register an option schema.\"\"\""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        def register_opts(self, opts, group\u003dNone):"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_deb976e9","line":82,"in_reply_to":"da0c15f0_1bc8fb21","updated":"2017-04-07 15:11:46.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ecc4aff9ba9ada73a71db0c8df1782f9afe97e40","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            \"\"\"Print the help message for the current program.\"\"\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    class FileConfigOpts(BaseConfigOpts):"},{"line_number":132,"context_line":"        \"\"\"File-Based Config Reader class.\"\"\""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        def find_file(self, name):"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_b470badd","line":131,"updated":"2015-12-04 21:20:03.000000000","message":"It looks like this means the application will have to make some sort of decision about whether to instantiate a FileConfigOpts instance or some other type. That makes it the application developer\u0027s job to know something that we have specifically designed oslo.config to hide from them. If we\u0027re going to have drivers implementing different means of accessing config options, all of that needs to be completely hidden behind the existing ConfigOpts class so that applications don\u0027t have to be rewritten to take advantage of the new feature.\n\nMaybe I\u0027m misunderstanding your intent in describing this as refactoring, though. Could you explain what looks at the config_driver option to decide how to load configuration options?","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"f1ad413d31c7e289b3121ff85c3d4bba656d44ca","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            \"\"\"Print the help message for the current program.\"\"\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    class FileConfigOpts(BaseConfigOpts):"},{"line_number":132,"context_line":"        \"\"\"File-Based Config Reader class.\"\"\""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        def find_file(self, name):"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a7b0d38_57fc323e","line":131,"in_reply_to":"3a7e1126_364bb55b","updated":"2015-12-23 01:03:02.000000000","message":"OK, we want to implement all of this so the application doesn\u0027t need to be changed at all -- that\u0027s one of the main goals of Oslo libraries, to provide an abstraction that the application can ignore.\n\nConfigOpts already uses options to get the filename to load. We can deprecate that option in favor of a URL, and ConfigOpts can set up an appropriate internal driver based on the URL scheme. That will involve creating some new classes that we can hide inside of the oslo.config library, and for which applications don\u0027t need to be aware at all. Those classes shouldn\u0027t be subclasses of ConfigOpt, they should be a completely new thing that ConfigOpt will use.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0e2788bf91aac28034966f58b4ba3ae4ec9e7206","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            \"\"\"Print the help message for the current program.\"\"\""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    class FileConfigOpts(BaseConfigOpts):"},{"line_number":132,"context_line":"        \"\"\"File-Based Config Reader class.\"\"\""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        def find_file(self, name):"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_364bb55b","line":131,"in_reply_to":"7a740942_b470badd","updated":"2015-12-17 00:59:38.000000000","message":"That what I\u0027m talking about to read a config with project name ``oslo`` and a program name ``config``. In this config operator/provider specifies the implementation, that could be oslo.config.conf.FileConfigOpts or e.g. acme.config.super.Driver.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfe470d3cbd5c25d9cfc8fd0b9e9c953a3da252c","unresolved":false,"context_lines":[{"line_number":160,"context_line":"Security impact"},{"line_number":161,"context_line":"---------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Performance Impact"},{"line_number":166,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa69d971_65180476","line":163,"updated":"2016-01-05 15:40:06.000000000","message":"There\u0027s really no security impact to this?","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9e18fb4241c89dff27071f9d5a252315f1c44a05","unresolved":false,"context_lines":[{"line_number":160,"context_line":"Security impact"},{"line_number":161,"context_line":"---------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Performance Impact"},{"line_number":166,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_1ee11ed1","line":163,"in_reply_to":"fa69d971_65180476","updated":"2017-04-07 15:11:46.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ecc4aff9ba9ada73a71db0c8df1782f9afe97e40","unresolved":false,"context_lines":[{"line_number":166,"context_line":"------------------"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"On-start performance degradation or even start-up failures may occur if the"},{"line_number":169,"context_line":"configuration driver does not finish with the configuration retrieval."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"In most cases central CMDB service does not become a single point of failure,"},{"line_number":172,"context_line":"because many of them is designed as a clusterware. It\u0027s up to deployer to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_f750840c","line":169,"updated":"2015-12-04 21:20:03.000000000","message":"The performance impact may spread across the runtime of the application. Configuration options can be registered dynamically at any point in the life of the app. The file parser loads the whole file at once, but the CMDB driver may not be able to do that if it has to ask for one option at a time because at startup we do not know the names of the options. If an application registers an option and then tries to use it, the app is going to have to talk to the CMDB right then to get the value.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0e2788bf91aac28034966f58b4ba3ae4ec9e7206","unresolved":false,"context_lines":[{"line_number":166,"context_line":"------------------"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"On-start performance degradation or even start-up failures may occur if the"},{"line_number":169,"context_line":"configuration driver does not finish with the configuration retrieval."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"In most cases central CMDB service does not become a single point of failure,"},{"line_number":172,"context_line":"because many of them is designed as a clusterware. It\u0027s up to deployer to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_16879962","line":169,"in_reply_to":"7a740942_f750840c","updated":"2015-12-17 00:59:38.000000000","message":"Current implementation of oslo.config engine is required to provide all the config data at once, even if this is unregistered.\n\nSo data from CMDB should be loaded in the same manner.\n\nI\u0027ll specify it in Prop. changes.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"cd90407bb1ca843185e425d18bc5646c45afbe59","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"In most cases central CMDB service does not become a single point of failure,"},{"line_number":172,"context_line":"because many of them is designed as a clusterware. It\u0027s up to deployer to"},{"line_number":173,"context_line":"choose reliable software for implementing their CMDB interface."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Configuration Impact"},{"line_number":176,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a8ffd7b_a269308e","line":173,"updated":"2015-12-02 11:45:25.000000000","message":"Works for me. English:\n\n\"The deployer is responsible for the reliability of the CMDB, that is, preventing it from becoming a single-point-of-failure. A clustered CMDB service is recommended.\"","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0e2788bf91aac28034966f58b4ba3ae4ec9e7206","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"In most cases central CMDB service does not become a single point of failure,"},{"line_number":172,"context_line":"because many of them is designed as a clusterware. It\u0027s up to deployer to"},{"line_number":173,"context_line":"choose reliable software for implementing their CMDB interface."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Configuration Impact"},{"line_number":176,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_56c52159","line":173,"in_reply_to":"7a740942_b70c3c3c","updated":"2015-12-17 00:59:38.000000000","message":"Logging is a really good corner case, I\u0027ll elaborate it.\n\nOther is a just another requirement. There is always tradeoff between manageabiliy and reliability. If your logging is set up to remote syslog and you lose your /etc partition\u0027s drive (I hope not ever), you\u0027ll run into same situation. It\u0027s all up to provider/operator.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ecc4aff9ba9ada73a71db0c8df1782f9afe97e40","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"In most cases central CMDB service does not become a single point of failure,"},{"line_number":172,"context_line":"because many of them is designed as a clusterware. It\u0027s up to deployer to"},{"line_number":173,"context_line":"choose reliable software for implementing their CMDB interface."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Configuration Impact"},{"line_number":176,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_b70c3c3c","line":173,"in_reply_to":"9a8ffd7b_a269308e","updated":"2015-12-04 21:20:03.000000000","message":"The point of failure isn\u0027t the CMDB being down, it\u0027s the service node not being able to see it. There are a lot of reasons that might happen (firewalls, VLANs, etc.). So you\u0027re now inserting a step in the startup process that requires every single openstack service to be able to contact another central remote service before it can do anything. We have a similar case now with RabbitMQ, so this is just *another* case, it\u0027s not a completely new issue, but because config is the lowest possible level we need to have significantly more detail about how changing from a simple file-based system to something that has to hit the network is going to affect the systems.\n\nFor example, the config files tell the service where to set up logging. What happens if the service can\u0027t see the CMDB? How does it report that failure without knowing how to configure logging?","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"ecc4aff9ba9ada73a71db0c8df1782f9afe97e40","unresolved":false,"context_lines":[{"line_number":187,"context_line":"Developer Impact"},{"line_number":188,"context_line":"----------------"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"None"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Testing Impact"},{"line_number":193,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a740942_77ab34d7","line":190,"updated":"2015-12-04 21:20:03.000000000","message":"See the performance impact comments above. This will introduce new I/O interrupts at points that were not I/O bound previously, potentially changing the concurrency characteristics of applications.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":11708,"name":"Atsuko Ito","email":"me@yottatsa.name","username":"yottatsa"},"change_message_id":"0e2788bf91aac28034966f58b4ba3ae4ec9e7206","unresolved":false,"context_lines":[{"line_number":187,"context_line":"Developer Impact"},{"line_number":188,"context_line":"----------------"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"None"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Testing Impact"},{"line_number":193,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_9692a956","line":190,"in_reply_to":"7a740942_77ab34d7","updated":"2015-12-17 00:59:38.000000000","message":"No, oslo.config requires to deliver config structure at once.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"f1ad413d31c7e289b3121ff85c3d4bba656d44ca","unresolved":false,"context_lines":[{"line_number":192,"context_line":"Testing Impact"},{"line_number":193,"context_line":"--------------"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Requires unit tests for configuration driver chooser."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Implementation"},{"line_number":198,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1a7b0d38_975e1a44","line":195,"updated":"2015-12-23 01:03:02.000000000","message":"As with other driver-based aspects, we will also want at least functional tests, and probably a full devstack-gate job, for each CMDB driver we support.","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"9e18fb4241c89dff27071f9d5a252315f1c44a05","unresolved":false,"context_lines":[{"line_number":192,"context_line":"Testing Impact"},{"line_number":193,"context_line":"--------------"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Requires unit tests for configuration driver chooser."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Implementation"},{"line_number":198,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_31009301","line":195,"in_reply_to":"1a7b0d38_975e1a44","updated":"2017-04-07 15:11:46.000000000","message":"Done","commit_id":"c42d8906144bc9f5e7e5759deec97c31f5b610e3"}],"specs/queens/oslo-config-db.rst":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"fd0785a23a948d7d0b7c9a6d6fddcd41bda6cdb3","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Operators will be able to run a service which reads configuration from CMDB with"},{"line_number":37,"context_line":"the following method::"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    /usr/bin/python2 /usr/bin/heat-engine  --etcd-server http://10.0.0.1/openstack/heat"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":".. TODO: address how each service instance will know its unique identifier so it"},{"line_number":42,"context_line":".. can fetch its own options without overlapping with other instances of the same"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bff0334d_0603100f","line":39,"updated":"2017-04-07 17:54:15.000000000","message":"We will want the back end service type to be built into the URL, instead of requiring the addition of a new option for each one.","commit_id":"53852735d01398418035b50def5b01f5dc11fbd3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"fd0785a23a948d7d0b7c9a6d6fddcd41bda6cdb3","unresolved":false,"context_lines":[{"line_number":42,"context_line":".. can fetch its own options without overlapping with other instances of the same"},{"line_number":43,"context_line":".. type of service:"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"When initializing, oslo.config instantiates a file-based ConfigOpts driver"},{"line_number":46,"context_line":"and registers an option that defines the overall implementation. It uses a"},{"line_number":47,"context_line":"project name ``oslo`` and a program name ``config`` to determine where the"},{"line_number":48,"context_line":"default configuration files are stored. Then, chosen ConfigOpts implementation"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bff0334d_a63c64c8","line":45,"updated":"2017-04-07 17:54:15.000000000","message":"I don\u0027t understand this paragraph. Are the \"project\" and \"program\" names the arguments to ConfigOpts? If so, I think the original author didn\u0027t understand what those do.","commit_id":"53852735d01398418035b50def5b01f5dc11fbd3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"fd0785a23a948d7d0b7c9a6d6fddcd41bda6cdb3","unresolved":false,"context_lines":[{"line_number":55,"context_line":"this can be used for application reloading or configuration updating."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Implementation details"},{"line_number":58,"context_line":"----------------------"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The current implementation which is designed as a single concrete class should be"},{"line_number":61,"context_line":"refactored into an abstract BaseConfigOpts class. This will provide the options"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bff0334d_067af086","line":58,"updated":"2017-04-07 17:54:15.000000000","message":"The proposed implementation requires the deployer to know which class to tell oslo.config to use. Instead, we should have ConfigOpts look at a configuration option and use a driver to load a class to pull options from that source.","commit_id":"53852735d01398418035b50def5b01f5dc11fbd3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"fd0785a23a948d7d0b7c9a6d6fddcd41bda6cdb3","unresolved":false,"context_lines":[{"line_number":204,"context_line":"with a default class ``oslo_config.cfg.ConfigOpts``. The configuration file"},{"line_number":205,"context_line":"should be located using::"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    find_config_files(project\u003d\u0027oslo\u0027, prog\u003d\u0027config\u0027)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"The oslo.config file will be provided only with a file-based ConfigOpts"},{"line_number":210,"context_line":"reference implementation."}],"source_content_type":"text/x-rst","patch_set":5,"id":"bff0334d_86aa80cf","line":207,"updated":"2017-04-07 17:54:15.000000000","message":"This will only ever find the same configuration file. The project and prog arguments need to be unique for each service.","commit_id":"53852735d01398418035b50def5b01f5dc11fbd3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"fd0785a23a948d7d0b7c9a6d6fddcd41bda6cdb3","unresolved":false,"context_lines":[{"line_number":212,"context_line":"Developer Impact"},{"line_number":213,"context_line":"----------------"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":".. TODO"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Testing Impact"},{"line_number":218,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bff0334d_6692dca0","line":215,"updated":"2017-04-07 17:54:15.000000000","message":"If this has any developer impact, we\u0027ve failed in the new design.","commit_id":"53852735d01398418035b50def5b01f5dc11fbd3"}]}
