)]}'
{"specs/kilo/approved/dynamic-server-groups.rst":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4ae112e481132150a64b0e163ff9d1749b87237","unresolved":false,"context_lines":[{"line_number":55,"context_line":"adding a validation check before adding the VM to the server group to compare"},{"line_number":56,"context_line":"the host of the VM in question with the hosts of the other VMs in the server"},{"line_number":57,"context_line":"group, and ensure that the policy would not be violated by adding the VM in"},{"line_number":58,"context_line":"question."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"In addition to this check, the API to add a VM to a server group will need to"},{"line_number":61,"context_line":"ensure that servers could not be added in parallel to the same group that could"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aa7fdbe_46724f4a","line":58,"updated":"2014-10-21 19:26:03.000000000","message":"Can you describe this special care? How will you handle the race conditions between checking and adding the instance to the new group? How will you handle ensuring that instances that are currently being scheduled (and thus not yet placed) will not violate their policies between adding the existing instance to the group, making the scheduling decision, and actually placing the instance on the host?","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"478eff707a9f278a8bb3fc16eeaae7785616e43d","unresolved":false,"context_lines":[{"line_number":55,"context_line":"adding a validation check before adding the VM to the server group to compare"},{"line_number":56,"context_line":"the host of the VM in question with the hosts of the other VMs in the server"},{"line_number":57,"context_line":"group, and ensure that the policy would not be violated by adding the VM in"},{"line_number":58,"context_line":"question."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"In addition to this check, the API to add a VM to a server group will need to"},{"line_number":61,"context_line":"ensure that servers could not be added in parallel to the same group that could"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8c0949_893aa3cb","line":58,"in_reply_to":"9aa7fdbe_46724f4a","updated":"2014-10-31 19:29:39.000000000","message":"Done","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"51247d0c72bc280675b026ebff56ac6bfe1b1776","unresolved":false,"context_lines":[{"line_number":66,"context_line":"the policy would be violated."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To avoid the previously mentioned race conditions, the appropriate locking"},{"line_number":69,"context_line":"mechanisms will be used (e.g., database locking or some other construct)."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"When adding a VM from a server group, validation will need to be performed on"},{"line_number":72,"context_line":"the server_group_members quota value. The addition of that VM into the server"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aa7fdbe_66891326","line":69,"updated":"2014-10-21 19:08:02.000000000","message":"I think going into very explicit detail about how this would be solved is a requirement for the spec.","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4ae112e481132150a64b0e163ff9d1749b87237","unresolved":false,"context_lines":[{"line_number":66,"context_line":"the policy would be violated."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To avoid the previously mentioned race conditions, the appropriate locking"},{"line_number":69,"context_line":"mechanisms will be used (e.g., database locking or some other construct)."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"When adding a VM from a server group, validation will need to be performed on"},{"line_number":72,"context_line":"the server_group_members quota value. The addition of that VM into the server"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aa7fdbe_46c08f2a","line":69,"updated":"2014-10-21 19:26:03.000000000","message":"Since this is a really important thing to get right, and is one of the biggest things preventing this from being a trivial amount of work, I think it\u0027s imperative that you describe the planned strategy here in detail and not just punt it to the implementation phase.","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"478eff707a9f278a8bb3fc16eeaae7785616e43d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"the policy would be violated."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To avoid the previously mentioned race conditions, the appropriate locking"},{"line_number":69,"context_line":"mechanisms will be used (e.g., database locking or some other construct)."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"When adding a VM from a server group, validation will need to be performed on"},{"line_number":72,"context_line":"the server_group_members quota value. The addition of that VM into the server"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8c0949_094eb36f","line":69,"in_reply_to":"9aa7fdbe_46c08f2a","updated":"2014-10-31 19:29:39.000000000","message":"Done","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"478eff707a9f278a8bb3fc16eeaae7785616e43d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"the policy would be violated."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"To avoid the previously mentioned race conditions, the appropriate locking"},{"line_number":69,"context_line":"mechanisms will be used (e.g., database locking or some other construct)."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"When adding a VM from a server group, validation will need to be performed on"},{"line_number":72,"context_line":"the server_group_members quota value. The addition of that VM into the server"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8c0949_c934abe0","line":69,"in_reply_to":"9aa7fdbe_66891326","updated":"2014-10-31 19:29:39.000000000","message":"Done","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4ae112e481132150a64b0e163ff9d1749b87237","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Alternatives"},{"line_number":80,"context_line":"------------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"None"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Data model impact"},{"line_number":85,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aa7fdbe_c6eb9fae","line":82,"updated":"2014-10-21 19:26:03.000000000","message":"I think you should list an alternative here of retaining the existing behavior where instances are only ever added to a group at boot time.","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"478eff707a9f278a8bb3fc16eeaae7785616e43d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Alternatives"},{"line_number":80,"context_line":"------------"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"None"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Data model impact"},{"line_number":85,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8c0949_29536f18","line":82,"in_reply_to":"9aa7fdbe_c6eb9fae","updated":"2014-10-31 19:29:39.000000000","message":"Done","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4ae112e481132150a64b0e163ff9d1749b87237","unresolved":false,"context_lines":[{"line_number":107,"context_line":"          would violate a policy of the server group, exceed the server group"},{"line_number":108,"context_line":"          members quota value, or if a required parameter is missing from the"},{"line_number":109,"context_line":"          request."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    * 404 - not found::"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"          This response code will be returned if the server group or server"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aa7fdbe_6613d3b8","line":110,"updated":"2014-10-21 19:26:03.000000000","message":"If we\u0027re using locking to prevent policy violation, presumably that lock needs to live long enough to cover scheduling decisions and other long-running tasks. That means either we cause the API worker to block here, or we need a result code here that implies that the operation can\u0027t be performed right now, but might succeed later, right?","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"478eff707a9f278a8bb3fc16eeaae7785616e43d","unresolved":false,"context_lines":[{"line_number":107,"context_line":"          would violate a policy of the server group, exceed the server group"},{"line_number":108,"context_line":"          members quota value, or if a required parameter is missing from the"},{"line_number":109,"context_line":"          request."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    * 404 - not found::"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"          This response code will be returned if the server group or server"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8c0949_0975d397","line":110,"in_reply_to":"9aa7fdbe_6613d3b8","updated":"2014-10-31 19:29:39.000000000","message":"Done","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4ae112e481132150a64b0e163ff9d1749b87237","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"  As mentioned in the Proposed Change section above, locking will need to be"},{"line_number":259,"context_line":"  added to adding a server to a server group. The lock would be on the server"},{"line_number":260,"context_line":"  group, using either the uuid or name of the server group. This would prevent"},{"line_number":261,"context_line":"  race conditions where two servers could be added to the same server group,"},{"line_number":262,"context_line":"  but violate the policy of affinity or anti-affinity."},{"line_number":263,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aa7fdbe_66611339","line":260,"updated":"2014-10-21 19:26:03.000000000","message":"I think it would need to be by uuid","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"478eff707a9f278a8bb3fc16eeaae7785616e43d","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"  As mentioned in the Proposed Change section above, locking will need to be"},{"line_number":259,"context_line":"  added to adding a server to a server group. The lock would be on the server"},{"line_number":260,"context_line":"  group, using either the uuid or name of the server group. This would prevent"},{"line_number":261,"context_line":"  race conditions where two servers could be added to the same server group,"},{"line_number":262,"context_line":"  but violate the policy of affinity or anti-affinity."},{"line_number":263,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8c0949_297a8f88","line":260,"in_reply_to":"9aa7fdbe_66611339","updated":"2014-10-31 19:29:39.000000000","message":"Done","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4ae112e481132150a64b0e163ff9d1749b87237","unresolved":false,"context_lines":[{"line_number":259,"context_line":"  added to adding a server to a server group. The lock would be on the server"},{"line_number":260,"context_line":"  group, using either the uuid or name of the server group. This would prevent"},{"line_number":261,"context_line":"  race conditions where two servers could be added to the same server group,"},{"line_number":262,"context_line":"  but violate the policy of affinity or anti-affinity."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Other deployer impact"},{"line_number":265,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9aa7fdbe_86cb571d","line":262,"updated":"2014-10-21 19:26:03.000000000","message":"Since this lock will need to be distributed across things like the scheduler, the api nodes, and perhaps even the compute nodes, I think it\u0027s important to explain the locking mechanism, as well as how the implementation will avoid becoming a bottleneck for those services.","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"478eff707a9f278a8bb3fc16eeaae7785616e43d","unresolved":false,"context_lines":[{"line_number":259,"context_line":"  added to adding a server to a server group. The lock would be on the server"},{"line_number":260,"context_line":"  group, using either the uuid or name of the server group. This would prevent"},{"line_number":261,"context_line":"  race conditions where two servers could be added to the same server group,"},{"line_number":262,"context_line":"  but violate the policy of affinity or anti-affinity."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Other deployer impact"},{"line_number":265,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8c0949_496fdbc5","line":262,"in_reply_to":"9aa7fdbe_86cb571d","updated":"2014-10-31 19:29:39.000000000","message":"Done","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4ae112e481132150a64b0e163ff9d1749b87237","unresolved":false,"context_lines":[{"line_number":303,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Testing will follow suit in terms of unit test best practices for the other"},{"line_number":306,"context_line":"API testing. Complete code coverage can be achieved via unit tests."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"Documentation Impact"},{"line_number":309,"context_line":"\u003d\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":1,"id":"9aa7fdbe_c6ec7f92","line":306,"updated":"2014-10-21 19:26:03.000000000","message":"I feel rather strongly that something like this should have tempest tests. With our single-node test environments, testing at least anti-affinity should be easy, AFAIK.","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":7221,"name":"Jennifer Mulsow","email":"jmulsow@us.ibm.com","username":"jmulsow"},"change_message_id":"478eff707a9f278a8bb3fc16eeaae7785616e43d","unresolved":false,"context_lines":[{"line_number":303,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Testing will follow suit in terms of unit test best practices for the other"},{"line_number":306,"context_line":"API testing. Complete code coverage can be achieved via unit tests."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"Documentation Impact"},{"line_number":309,"context_line":"\u003d\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":1,"id":"7a8c0949_69749799","line":306,"in_reply_to":"9aa7fdbe_c6ec7f92","updated":"2014-10-31 19:29:39.000000000","message":"Done","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a4ae112e481132150a64b0e163ff9d1749b87237","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9aa7fdbe_c6a39f4d","line":327,"updated":"2014-10-21 19:26:03.000000000","message":"I think you\u0027ll want references to the actual mailing list archives for the major threads we\u0027ve had about this topic in the past. Also, references to previous work to add the server groups in the first place, and probably to the reviews where this functionality was originally being added, and was later dropped for all the reasons that make this a complicated issue.","commit_id":"4035c57ef28ca83016d89d1b33a5223db1e62538"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bab9b4c29fc64684a3b994d7d6db983607f9d223","unresolved":false,"context_lines":[{"line_number":99,"context_line":"  any of the following actions are being performed on any instances in the"},{"line_number":100,"context_line":"  server group: deploy, live migration, cold migration, and resize. This will"},{"line_number":101,"context_line":"  be checked in the \"add server to a server group API\", and a 409 HTTP error"},{"line_number":102,"context_line":"  code will be returned with a message explaining this to the user."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"  This check will prevent a timing window where the server group policy can be"},{"line_number":105,"context_line":"  violated due to an ongoing operation that places an instance on a new host"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a890539_0f7e3719","line":102,"updated":"2014-11-14 23:05:54.000000000","message":"Can you detail how you\u0027re going to do this? Presumably you need to atomically check the vm_state/task_state of all instances in a group and add the membership.","commit_id":"c3993dd23d6a37eb2d4bd0e59c7fac92516413ae"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bab9b4c29fc64684a3b994d7d6db983607f9d223","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"  This will prevent race conditions where simultaneous calls to the \"add a"},{"line_number":142,"context_line":"  server to a server group API\" could add multiple instances with conflicting"},{"line_number":143,"context_line":"  hosts to the server group\u0027s policy."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"Mechanism 4::"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a890539_afa8c38d","line":143,"updated":"2014-11-14 23:05:54.000000000","message":"I don\u0027t get how this works. There are generally *lots* of API nodes, none of which share a common filesystem.","commit_id":"c3993dd23d6a37eb2d4bd0e59c7fac92516413ae"}]}
