)]}'
{"specs/rocky/approved/optional-placement-database.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f88591c15a0951546a377b411043cb1e6cba09a6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Optional Placement Database"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Include the URL of your launchpad blueprint:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"https://blueprints.launchpad.net/nova/+spec/optional-placement-database"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_344280ac","line":11,"range":{"start_line":10,"start_character":0,"end_line":11,"end_character":44},"updated":"2018-03-15 13:54:37.000000000","message":"nit: I\u0027m guessing this line should be dropped","commit_id":"563385c0337484591f0dd20b60d904d7c36e9352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f88591c15a0951546a377b411043cb1e6cba09a6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"makes doing so more complicated now is that the connection to the placement"},{"line_number":35,"context_line":"database is configured using the ``[api_database]/connection`` configuration"},{"line_number":36,"context_line":"setting, so isolating placement database configuration is not easy. There are"},{"line_number":37,"context_line":"many ways around this problem (see the alternatives below) but using a distinct"},{"line_number":38,"context_line":"configuration option is explicit and translates well into a future when the"},{"line_number":39,"context_line":"same configuration setting can be used (limiting changes to the name of a file,"},{"line_number":40,"context_line":"rather than the name of a configuration setting)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_546ff429","line":37,"range":{"start_line":37,"start_character":39,"end_line":37,"end_character":51},"updated":"2018-03-15 13:54:37.000000000","message":"nit: cross-reference would help","commit_id":"563385c0337484591f0dd20b60d904d7c36e9352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f88591c15a0951546a377b411043cb1e6cba09a6","unresolved":false,"context_lines":[{"line_number":107,"context_line":"lay the foundation for a cleaner configuration, nor the isolation of the"},{"line_number":108,"context_line":"database configuration mentioned above."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":".. _database connection work in progress: https://review.openstack.org/#/c/362766/"},{"line_number":111,"context_line":".. _isolation work in progress: https://review.openstack.org/#/c/541435/"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Data model impact"},{"line_number":114,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_b4a0d043","line":111,"range":{"start_line":110,"start_character":0,"end_line":111,"end_character":72},"updated":"2018-03-15 13:54:37.000000000","message":"nit: odd that you leave these here, rather than at the bottom of the doc/their respective sections","commit_id":"563385c0337484591f0dd20b60d904d7c36e9352"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"360c66ed8cde1474dea983c41b6883192f58f686","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"This spec explicitly does not provide definite guidance for how a deployer"},{"line_number":160,"context_line":"would upgrade from a placement-within-nova deployment to a"},{"line_number":161,"context_line":"placement-not-in-nova deployment. It is laying groundwork for that."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Developer impact"},{"line_number":164,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_3502993e","line":161,"updated":"2018-03-14 17:25:28.000000000","message":"This is the part that\u0027s not clear to me. Given that nearly all deployments are using the current API database for placement, if they set this new config option to point to a new database, what will happen to anything already in the old DB? I guess I don\u0027t see one can happen without the other.","commit_id":"563385c0337484591f0dd20b60d904d7c36e9352"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"a912917c014edeb8e5f830ac8b8fc9dadb06d301","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"This spec explicitly does not provide definite guidance for how a deployer"},{"line_number":160,"context_line":"would upgrade from a placement-within-nova deployment to a"},{"line_number":161,"context_line":"placement-not-in-nova deployment. It is laying groundwork for that."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Developer impact"},{"line_number":164,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_503e3b8b","line":161,"in_reply_to":"df7087c5_30114753","updated":"2018-03-14 17:45:40.000000000","message":"\"One\": new config option with potentially a new DB\n\"Other\": how to migrate to the new DB\n\nMy concern is that if an operator sees this new thing and sets it, something else has to happen to move the existing data to the new DB. But if that will come later, then it isn\u0027t a problem.","commit_id":"563385c0337484591f0dd20b60d904d7c36e9352"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"21e4df1d908029afa7d596111f6bba4058217450","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"This spec explicitly does not provide definite guidance for how a deployer"},{"line_number":160,"context_line":"would upgrade from a placement-within-nova deployment to a"},{"line_number":161,"context_line":"placement-not-in-nova deployment. It is laying groundwork for that."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Developer impact"},{"line_number":164,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_30114753","line":161,"in_reply_to":"df7087c5_3502993e","updated":"2018-03-14 17:35:34.000000000","message":"Which \"one\" and \"other\" do you mean here?\n\nAnyway, trying to guess on what you mean: if this config option is present, then a deployer has the option of:\n\n* shutting down the world\n* creating a new database, selecting the placement table from old database into new database\n* setting [placement_database]/connectin to new database\n* turning on the world\n\nAnd they can order that a bit different too if they want: they can set the new config to nova_api and run like that for a while, and then shut down the world, copy, reconfigure that one thing, restart the world.\n\nA variety of things.\n\nThe point, however, is that by having this we\u0027re making things like that (and other things) possible, without blocking ourselves in.\n\nI am already using the code proposed here to run an independent placement for experiments on what needs to happen for extraction. Sometimes with its own database, sometimes using nova_api.\n\nthe config setting makes that easy\n\nThat\u0027s all the proposed change is really about, but the spec is necessary so that people can have a chance to talk about things. If we want to we can use it as a way to hash out the migration and upgrading possibilities, but I\u0027d rather have something in place to easily do concrete experiments and use _that_ to form a plan.","commit_id":"563385c0337484591f0dd20b60d904d7c36e9352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f88591c15a0951546a377b411043cb1e6cba09a6","unresolved":false,"context_lines":[{"line_number":174,"context_line":"precursor to that."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"If this configuration change is merged in Rocky but placement is not extracted"},{"line_number":177,"context_line":"in the `S` cycle, then there will be no upgrade concerns. Existing"},{"line_number":178,"context_line":"configurations will continue to work."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_34a5a047","line":177,"range":{"start_line":177,"start_character":7,"end_line":177,"end_character":10},"updated":"2018-03-15 13:54:37.000000000","message":"*S*","commit_id":"563385c0337484591f0dd20b60d904d7c36e9352"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f88591c15a0951546a377b411043cb1e6cba09a6","unresolved":false,"context_lines":[{"line_number":195,"context_line":"This work has started in `database connection work in progress`_ and"},{"line_number":196,"context_line":"`isolation work in progress`_."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"* Create the [placement_database] configuration group."},{"line_number":199,"context_line":"* Document that group."},{"line_number":200,"context_line":"* Update test fixtures to reflect the new placement database session."},{"line_number":201,"context_line":"* Update unit and functional tests to use the new session."}],"source_content_type":"text/x-rst","patch_set":2,"id":"df7087c5_f46888f5","line":198,"range":{"start_line":198,"start_character":13,"end_line":198,"end_character":33},"updated":"2018-03-15 13:54:37.000000000","message":"``[placement_database]``","commit_id":"563385c0337484591f0dd20b60d904d7c36e9352"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"615eade026100fd8f3cb2b5b560975aeed3fc724","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Similarly, we\u0027d like to provide opportunities for packagers to lay the"},{"line_number":47,"context_line":"groundwork for migrations where data management has a clearly identifiable"},{"line_number":48,"context_line":"entry point."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_bb1adac2","line":48,"updated":"2018-04-04 10:39:16.000000000","message":"Seriously, I am still sad we didn\u0027t get this merged the first time around. Lets do it.\n\nI would even be tempted by a backport of this one, for folks that are yet to upgrade. But I suspect that is just me.","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"419e0f3a77147d52b87935cd045c53359a6da09b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"Use Cases"},{"line_number":52,"context_line":"---------"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"As a deployer, I want to configure my new placement service to save data to its"},{"line_number":55,"context_line":"own database because I know that in the future I will be able to use it"},{"line_number":56,"context_line":"separately."},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df7087c5_bcee4db2","line":54,"updated":"2018-03-16 21:10:20.000000000","message":"Another value to help speed up adoption of placement service in other projects like ONAP, neutron? etc.","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1869107e0c1513a6cf0e0174214568c4824a44c6","unresolved":false,"context_lines":[{"line_number":78,"context_line":"the same fashion (and with the same options) as the existing ``api_database``"},{"line_number":79,"context_line":"group. If ``[placement_database]/connection`` is set, then its value is used"},{"line_number":80,"context_line":"for an independent connection to the described database. If it is not set, the"},{"line_number":81,"context_line":"connection string from ``[api_database]/connection`` is used, but it is"},{"line_number":82,"context_line":"identified as a separate SQLAlchemy session."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"This has the advantage of being reusable once placement is extracted. The same"},{"line_number":85,"context_line":"configuration group and names can continue to be used in the future."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_61c67a19","line":82,"range":{"start_line":81,"start_character":62,"end_line":82,"end_character":44},"updated":"2018-04-09 14:40:16.000000000","message":"That means a separate thread pool for the same database and thus twice the number of connections to the api_db for people that don\u0027t separate it out, right? Probably worth noting that, maybe in deployer impact or something.","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1c3e41bd92acb57009cd5e46f0ec80c78aae6009","unresolved":false,"context_lines":[{"line_number":78,"context_line":"the same fashion (and with the same options) as the existing ``api_database``"},{"line_number":79,"context_line":"group. If ``[placement_database]/connection`` is set, then its value is used"},{"line_number":80,"context_line":"for an independent connection to the described database. If it is not set, the"},{"line_number":81,"context_line":"connection string from ``[api_database]/connection`` is used, but it is"},{"line_number":82,"context_line":"identified as a separate SQLAlchemy session."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"This has the advantage of being reusable once placement is extracted. The same"},{"line_number":85,"context_line":"configuration group and names can continue to be used in the future."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_dd6ccdd1","line":82,"range":{"start_line":81,"start_character":62,"end_line":82,"end_character":44},"in_reply_to":"bf659307_61c67a19","updated":"2018-04-11 11:37:38.000000000","message":"That\u0027s already true: In a deployment, placement is a separate process. We\u0027re not increasing the number of connections to the database server, we\u0027re just giving the option for two things:\n\n* in code for that connection to be identified differently\n* in config for that connection to be pointing to some other database (and even database server)","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1869107e0c1513a6cf0e0174214568c4824a44c6","unresolved":false,"context_lines":[{"line_number":103,"context_line":"The primary alternative here is to do nothing other than document the way that"},{"line_number":104,"context_line":"deployers can run the placement service with its own configuration file; one"},{"line_number":105,"context_line":"that sets the API database connection to whatever database the deployer would"},{"line_number":106,"context_line":"like to use for placement. This is definitely a workable solution but does not"},{"line_number":107,"context_line":"lay the foundation for a cleaner configuration, nor the isolation of the"},{"line_number":108,"context_line":"database configuration mentioned above."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Data model impact"},{"line_number":111,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_0183feaa","line":108,"range":{"start_line":106,"start_character":27,"end_line":108,"end_character":39},"updated":"2018-04-09 14:40:16.000000000","message":"TBH, I\u0027m not entirely sure that I see the proposed change here doing that much to grease the wheels of the separation. Having a separate session right now is pretty meaningless to the operator, and having a different config file with a different database string ends up with the same actual effect (although it avoids the unintended effect I mentioned above re: thread pools).","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1c3e41bd92acb57009cd5e46f0ec80c78aae6009","unresolved":false,"context_lines":[{"line_number":103,"context_line":"The primary alternative here is to do nothing other than document the way that"},{"line_number":104,"context_line":"deployers can run the placement service with its own configuration file; one"},{"line_number":105,"context_line":"that sets the API database connection to whatever database the deployer would"},{"line_number":106,"context_line":"like to use for placement. This is definitely a workable solution but does not"},{"line_number":107,"context_line":"lay the foundation for a cleaner configuration, nor the isolation of the"},{"line_number":108,"context_line":"database configuration mentioned above."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Data model impact"},{"line_number":111,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_fdf431f3","line":108,"range":{"start_line":106,"start_character":27,"end_line":108,"end_character":39},"in_reply_to":"bf659307_0183feaa","updated":"2018-04-11 11:37:38.000000000","message":"Think of it as a cognitive aid. In my experiments, it\u0027s been very useful as such. In those experiments, I\u0027m already running placement as a separate service so the nova names for the database stuff are not useful.\n\nWe\u0027ve had people who have been asking \"can I have a different database for placement\" since before we first mooted this patch more than a year ago.\n\nYou\u0027re absolutely right that the alternative can work but it doesn\u0027t provide the code and config clarity benefits that make the process of working toward extraction easier. At least for the people I\u0027ve been talking to. It\u0027s probably different for you, Dan, because you\u0027re coming from an established and extremely well informed angle and don\u0027t need the mental assist.","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1869107e0c1513a6cf0e0174214568c4824a44c6","unresolved":false,"context_lines":[{"line_number":125,"context_line":"---------------"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"If a new database is used, then deployments will need to adapt any security"},{"line_number":128,"context_line":"measures to be aware of it."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Notifications impact"},{"line_number":131,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_a191f2f3","line":128,"updated":"2018-04-09 14:40:16.000000000","message":"This means nothing to me, FWIW :)","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1c3e41bd92acb57009cd5e46f0ec80c78aae6009","unresolved":false,"context_lines":[{"line_number":125,"context_line":"---------------"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"If a new database is used, then deployments will need to adapt any security"},{"line_number":128,"context_line":"measures to be aware of it."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Notifications impact"},{"line_number":131,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_9dc6559a","line":128,"in_reply_to":"bf659307_a191f2f3","updated":"2018-04-11 11:37:38.000000000","message":"I can make this more explicit, but basically, I was meaning, for example, that if people are using postgres they might need to change the pg_hba.conf file to reflect the new database.\n\nShould I make things more explicit, or perhaps more general?","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1869107e0c1513a6cf0e0174214568c4824a44c6","unresolved":false,"context_lines":[{"line_number":135,"context_line":"Other end user impact"},{"line_number":136,"context_line":"---------------------"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Database management in placement should be invisible to end users of placement."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Performance Impact"},{"line_number":141,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_61bd1a67","line":138,"updated":"2018-04-09 14:40:16.000000000","message":"I think this means \"None\" :)","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1c3e41bd92acb57009cd5e46f0ec80c78aae6009","unresolved":false,"context_lines":[{"line_number":135,"context_line":"Other end user impact"},{"line_number":136,"context_line":"---------------------"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Database management in placement should be invisible to end users of placement."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Performance Impact"},{"line_number":141,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_bd48f92c","line":138,"in_reply_to":"bf659307_61bd1a67","updated":"2018-04-11 11:37:38.000000000","message":"Explicit is nice, yeah? Especially when we want to rub in the fact that the placement db (that it even uses one) is an implementation detail that should never matter externally.","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1869107e0c1513a6cf0e0174214568c4824a44c6","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"Using a separate database increases options for managing scaling and"},{"line_number":144,"context_line":"performance. Presumably separating placement and nova API activity into"},{"line_number":145,"context_line":"different database servers could be useful."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"Other deployer impact"},{"line_number":148,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_01ac5e33","line":145,"updated":"2018-04-09 14:40:16.000000000","message":"That\u0027s true, but unrelated to the point of this spec, which is just internal reorganization.","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"1c3e41bd92acb57009cd5e46f0ec80c78aae6009","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"Using a separate database increases options for managing scaling and"},{"line_number":144,"context_line":"performance. Presumably separating placement and nova API activity into"},{"line_number":145,"context_line":"different database servers could be useful."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"Other deployer impact"},{"line_number":148,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf659307_3d34e992","line":145,"in_reply_to":"bf659307_01ac5e33","updated":"2018-04-11 11:37:38.000000000","message":"I\u0027ve been using a separate placement database in my performance testing (cherry picking the code that is described by the spec) for months.\n\nIt may seem like these are extraneous details, but all this stuff adds up to why the work has been done, and what else is left to do. I wasn\u0027t originally going to write any spec for this stuff, but Matt asked nicely for one to exist, so I thought best to make it as high resolution as possible so people can get the whole picture.\n\nThis stuff may not be flavorsome for you, Dan, but other people find it useful/informative and I _really_ like it when other people\u0027s specs help to make me more informed so I want to return the favor when I write a spec.","commit_id":"1be1f4125677e35a5d63a423857429bdacc0b2d8"}]}
