)]}'
{"specs/liberty/approved/check-destination-on-migrations.rst":[{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"1904721ca570a29a34f14a60ca3b2309428d1db2","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"The API for all migrations including a destination host will be modified to add"},{"line_number":54,"context_line":"an extra request body argument called ``check`` (accepting True or False) and"},{"line_number":55,"context_line":"the corresponding CLI methods will expose that ``check`` option."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3acd31a7_48e60816","line":55,"updated":"2015-05-05 22:42:51.000000000","message":"I think you should remove any ambiguity and explicitly mention what the behaviour should be be if the \"check\" option is not specified.","commit_id":"07723fd61a6c79cfb6b2f36042426fd47a868173"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7c6b8e75509316db13ee2278e1acb70837f40bc5","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"The API for all migrations including a destination host will be modified to add"},{"line_number":54,"context_line":"an extra request body argument called ``check`` (accepting True or False) and"},{"line_number":55,"context_line":"the corresponding CLI methods will expose that ``check`` option."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Alternatives"},{"line_number":58,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1aca2d91_72cef15b","line":55,"in_reply_to":"3acd31a7_48e60816","updated":"2015-05-06 08:27:43.000000000","message":"Fair point","commit_id":"07723fd61a6c79cfb6b2f36042426fd47a868173"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"567af072e1d186b8fd5920347d1477230a9b53f8","unresolved":false,"context_lines":[{"line_number":195,"context_line":"Dependencies"},{"line_number":196,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"None"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Testing"},{"line_number":201,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1aca2d91_55aabf1a","line":198,"updated":"2015-05-06 08:59:46.000000000","message":"Don\u0027t we need to know what the user requested in their scheduler hints when they booted the VM in the first place?\n\nI mean defaulting to checking, and allowing a --force-destination option for admin\u0027s to override might be an option here.","commit_id":"daa0b913a7685929265f026d51263e48e17470f2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4881db2567f4171b075c6706cc65b7c57e691f58","unresolved":false,"context_lines":[{"line_number":195,"context_line":"Dependencies"},{"line_number":196,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"None"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"Testing"},{"line_number":201,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1aca2d91_5fc53159","line":198,"in_reply_to":"1aca2d91_55aabf1a","updated":"2015-05-06 12:54:43.000000000","message":"I\u0027m considering baby steps here, where we know that it won\u0027t get all the details since the hints aren\u0027t persisted, then persist the hints to get a proper decision, then probably modify the logic to default the call to True (or opt it)\n\nI\u0027ll modify the dependencies section to explain that.","commit_id":"daa0b913a7685929265f026d51263e48e17470f2"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"647603d8569a9464f88caca418ef158754f2894f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The blueprint will accordingly expose a new Scheduler RPC API method called"},{"line_number":49,"context_line":"``check_my_destination()`` which will accept filter_properties and request_spec"},{"line_number":50,"context_line":"as regular arguments, plus the name of the compute node and will return True or"},{"line_number":51,"context_line":"False."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1aca2d91_fa3761e1","line":48,"updated":"2015-05-06 16:09:27.000000000","message":"I know we will move allocate ratio from scheduler to RT\nshould we make a compute call instead of scheduler call here?\nafter all, we already know the host itself","commit_id":"262654efcae085ee67fa6e85f49d8cf165f282d0"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"2c725ea1ef51cee916ff322ef0cc554ea1d23900","unresolved":false,"context_lines":[{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The blueprint will accordingly expose a new Scheduler RPC API method called"},{"line_number":49,"context_line":"``check_my_destination()`` which will accept filter_properties and request_spec"},{"line_number":50,"context_line":"as regular arguments, plus the name of the compute node and will return True or"},{"line_number":51,"context_line":"False."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1aca2d91_fdf51b83","line":48,"in_reply_to":"1aca2d91_7dd8eb53","updated":"2015-05-06 16:41:41.000000000","message":"oops, I thought about the memory stuff from the bug \n\nyes, you are right, it should be a scheduler function\nbut for now , how many things can we check if we don\u0027t have \nthe persistent request spec","commit_id":"262654efcae085ee67fa6e85f49d8cf165f282d0"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"f80079d509a795b93c936035a453a6cec80121e7","unresolved":false,"context_lines":[{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The blueprint will accordingly expose a new Scheduler RPC API method called"},{"line_number":49,"context_line":"``check_my_destination()`` which will accept filter_properties and request_spec"},{"line_number":50,"context_line":"as regular arguments, plus the name of the compute node and will return True or"},{"line_number":51,"context_line":"False."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1aca2d91_7dd8eb53","line":48,"in_reply_to":"1aca2d91_fa3761e1","updated":"2015-05-06 16:35:58.000000000","message":"Are you proposing a new \"would you be able to boot this?\" function for the compute manager?\n\nGiven the number of scheduler filters that might come into play (optionally depending on nova.conf) I don\u0027t think it would make sense to ask the compute node.  This is properly a scheduler function.","commit_id":"262654efcae085ee67fa6e85f49d8cf165f282d0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4378abfedf9e06afacff6f9578750a305999be91","unresolved":false,"context_lines":[{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The blueprint will accordingly expose a new Scheduler RPC API method called"},{"line_number":49,"context_line":"``check_my_destination()`` which will accept filter_properties and request_spec"},{"line_number":50,"context_line":"as regular arguments, plus the name of the compute node and will return True or"},{"line_number":51,"context_line":"False."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1aca2d91_1cc2fe85","line":48,"in_reply_to":"1aca2d91_fdf51b83","updated":"2015-05-07 08:58:19.000000000","message":"I\u0027m going to add all the bugs related to that problem, since you\u0027ll see that even if we\u0027re not persisting, it already fixes *a lot*\n\nI\u0027m in favor of a very explicit comment in the CLI explaining that the check can\u0027t yet validate the hints but can do other things.","commit_id":"262654efcae085ee67fa6e85f49d8cf165f282d0"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"abaa9b30379ca85b6678a85405d37da9bdaf1e73","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"If the check option is not provided, the default behaviour will not call the"},{"line_number":58,"context_line":"new scheduler method since we accept the new ``check`` body argument to be"},{"line_number":59,"context_line":"False as default."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1aca2d91_eed1f0fc","line":59,"updated":"2015-05-06 13:37:29.000000000","message":"I think we should validate the destination by default and have the unvalidated case as a less-safe override, but that\u0027s something on which reasonable people could disagree.","commit_id":"262654efcae085ee67fa6e85f49d8cf165f282d0"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d3243ab355ab7f6bf3162e841a6f1bcecd9f1830","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"If the check option is not provided, the default behaviour will not call the"},{"line_number":58,"context_line":"new scheduler method since we accept the new ``check`` body argument to be"},{"line_number":59,"context_line":"False as default."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1aca2d91_42bb15c5","line":59,"in_reply_to":"1aca2d91_eed1f0fc","updated":"2015-05-06 14:46:26.000000000","message":"Since it\u0027s not exactly checking all the filters as the hints are not persisted, I prefer to leave the operator call it explicitely for the first time","commit_id":"262654efcae085ee67fa6e85f49d8cf165f282d0"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"647603d8569a9464f88caca418ef158754f2894f","unresolved":false,"context_lines":[{"line_number":128,"context_line":"  }"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* The response data of both actions is not impacted by the change. As said"},{"line_number":132,"context_line":"  above, this spec is only providing a new behaviour returning a 400 error code"},{"line_number":133,"context_line":"  if the provided destination host is wrong."},{"line_number":134,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1aca2d91_d7fc8040","line":131,"updated":"2015-05-06 16:09:27.000000000","message":"s/is/are/","commit_id":"262654efcae085ee67fa6e85f49d8cf165f282d0"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"82e9015f7b05db81e44a302d9744c373f5ad7938","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"The blueprint will accordingly expose a new Scheduler RPC API method called"},{"line_number":49,"context_line":"``check_my_destination()`` which will accept filter_properties and request_spec"},{"line_number":50,"context_line":"as regular arguments, plus the name of the compute node and will return True or"},{"line_number":51,"context_line":"False."},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7ad8896b_2e1a6718","line":49,"updated":"2015-05-11 16:29:28.000000000","message":"I think that \u0027check_destination()\u0027 would be more consistent with \u0027select_destinations()\u0027.","commit_id":"239d6f72ae334a89315903065943d85f824946b2"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f8fbee3a9e867aa9c743f2cb1eb9a343cd6562a7","unresolved":false,"context_lines":[{"line_number":78,"context_line":"---------------"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The proposed change just updates the POST request body for the"},{"line_number":81,"context_line":"``os-migrateLive`` and ``evacuate`` actions to include the ``check`` boolean"},{"line_number":82,"context_line":"field defaulted to False if the request has a minimum version. If the migration"},{"line_number":83,"context_line":"is not valid, it would fail with an ``HTTPBadRequest`` error code, as if the"},{"line_number":84,"context_line":"migration was returning a ``NoValidHost``."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_84793232","line":81,"updated":"2015-06-12 10:42:58.000000000","message":"Should it not be: check_host","commit_id":"37facb57958bed859dafe304f382b46a83275230"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"89d2c6a5e476527b55c6bcb887483e8d2c6f7111","unresolved":false,"context_lines":[{"line_number":78,"context_line":"---------------"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The proposed change just updates the POST request body for the"},{"line_number":81,"context_line":"``os-migrateLive`` and ``evacuate`` actions to include the ``check`` boolean"},{"line_number":82,"context_line":"field defaulted to False if the request has a minimum version. If the migration"},{"line_number":83,"context_line":"is not valid, it would fail with an ``HTTPBadRequest`` error code, as if the"},{"line_number":84,"context_line":"migration was returning a ``NoValidHost``."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_c13cb731","line":81,"in_reply_to":"1af86dd1_84793232","updated":"2015-06-12 12:49:59.000000000","message":"Ack","commit_id":"37facb57958bed859dafe304f382b46a83275230"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f8fbee3a9e867aa9c743f2cb1eb9a343cd6562a7","unresolved":false,"context_lines":[{"line_number":81,"context_line":"``os-migrateLive`` and ``evacuate`` actions to include the ``check`` boolean"},{"line_number":82,"context_line":"field defaulted to False if the request has a minimum version. If the migration"},{"line_number":83,"context_line":"is not valid, it would fail with an ``HTTPBadRequest`` error code, as if the"},{"line_number":84,"context_line":"migration was returning a ``NoValidHost``."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* JSON schema definition for the body data of ``os-migrateLive``:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_a4954e41","line":84,"updated":"2015-06-12 10:42:58.000000000","message":"Can\u0027t we return a decent error messages, like \"invalid host supplied\"","commit_id":"37facb57958bed859dafe304f382b46a83275230"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"89d2c6a5e476527b55c6bcb887483e8d2c6f7111","unresolved":false,"context_lines":[{"line_number":81,"context_line":"``os-migrateLive`` and ``evacuate`` actions to include the ``check`` boolean"},{"line_number":82,"context_line":"field defaulted to False if the request has a minimum version. If the migration"},{"line_number":83,"context_line":"is not valid, it would fail with an ``HTTPBadRequest`` error code, as if the"},{"line_number":84,"context_line":"migration was returning a ``NoValidHost``."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* JSON schema definition for the body data of ``os-migrateLive``:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_0111afac","line":84,"in_reply_to":"1af86dd1_a4954e41","updated":"2015-06-12 12:49:59.000000000","message":"Agreed, amending it.","commit_id":"37facb57958bed859dafe304f382b46a83275230"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f8fbee3a9e867aa9c743f2cb1eb9a343cd6562a7","unresolved":false,"context_lines":[{"line_number":205,"context_line":"which don\u0027t look at the hints will at least return False if necessary (or take"},{"line_number":206,"context_line":"in account the allocation ratios logic). Once the hints will be persisted, it"},{"line_number":207,"context_line":"will be a quick win to add in the conductor logic the RequestSpec callback"},{"line_number":208,"context_line":"before calling the scheduler but it wouldn\u0027t change the behaviour."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"In order to make it clear for the user, the CLI command will explicitely"},{"line_number":211,"context_line":"mention in the help docstring that the check is not validating the hints since"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_24b6fedc","line":208,"updated":"2015-06-12 10:42:58.000000000","message":"This feels like the wrong call to me, given it seems are really close to persisting the requestspec?","commit_id":"37facb57958bed859dafe304f382b46a83275230"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"eb10bdb8482ac3b912d978d8673e02dc95a303d2","unresolved":false,"context_lines":[{"line_number":205,"context_line":"which don\u0027t look at the hints will at least return False if necessary (or take"},{"line_number":206,"context_line":"in account the allocation ratios logic). Once the hints will be persisted, it"},{"line_number":207,"context_line":"will be a quick win to add in the conductor logic the RequestSpec callback"},{"line_number":208,"context_line":"before calling the scheduler but it wouldn\u0027t change the behaviour."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"In order to make it clear for the user, the CLI command will explicitely"},{"line_number":211,"context_line":"mention in the help docstring that the check is not validating the hints since"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_84ced258","line":208,"in_reply_to":"1af86dd1_24b6fedc","updated":"2015-06-12 10:43:46.000000000","message":"To be clear, I don\u0027t plan on blocking on this one, just doesn\u0027t feel quite right.","commit_id":"37facb57958bed859dafe304f382b46a83275230"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"89d2c6a5e476527b55c6bcb887483e8d2c6f7111","unresolved":false,"context_lines":[{"line_number":205,"context_line":"which don\u0027t look at the hints will at least return False if necessary (or take"},{"line_number":206,"context_line":"in account the allocation ratios logic). Once the hints will be persisted, it"},{"line_number":207,"context_line":"will be a quick win to add in the conductor logic the RequestSpec callback"},{"line_number":208,"context_line":"before calling the scheduler but it wouldn\u0027t change the behaviour."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"In order to make it clear for the user, the CLI command will explicitely"},{"line_number":211,"context_line":"mention in the help docstring that the check is not validating the hints since"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_e1f8d37e","line":208,"in_reply_to":"1af86dd1_84ced258","updated":"2015-06-12 12:49:59.000000000","message":"Okay, my take is that I originally wanted to not depend on persisting the request spec, since it was like a quickwin for operators if they were not using sched hints.\n\nThat\u0027s reasonable to put that spec depending on persisting the reqspec, will amend it.","commit_id":"37facb57958bed859dafe304f382b46a83275230"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f8fbee3a9e867aa9c743f2cb1eb9a343cd6562a7","unresolved":false,"context_lines":[{"line_number":210,"context_line":"In order to make it clear for the user, the CLI command will explicitely"},{"line_number":211,"context_line":"mention in the help docstring that the check is not validating the hints since"},{"line_number":212,"context_line":"they are not persisted yet. Once the hints will be persisted, this help detail"},{"line_number":213,"context_line":"will be removed but that\u0027s not part of the scope of this spec."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_44ee9aed","line":213,"updated":"2015-06-12 10:42:58.000000000","message":"That seems odd... given its version specific. We should maybe document it, but I don\u0027t like the CLI saying \"this is broken\"","commit_id":"37facb57958bed859dafe304f382b46a83275230"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"89d2c6a5e476527b55c6bcb887483e8d2c6f7111","unresolved":false,"context_lines":[{"line_number":210,"context_line":"In order to make it clear for the user, the CLI command will explicitely"},{"line_number":211,"context_line":"mention in the help docstring that the check is not validating the hints since"},{"line_number":212,"context_line":"they are not persisted yet. Once the hints will be persisted, this help detail"},{"line_number":213,"context_line":"will be removed but that\u0027s not part of the scope of this spec."},{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_81efdfaf","line":213,"in_reply_to":"1af86dd1_44ee9aed","updated":"2015-06-12 12:49:59.000000000","message":"Nevermind, will point that spec depending on persisting ReqSpec","commit_id":"37facb57958bed859dafe304f382b46a83275230"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f8fbee3a9e867aa9c743f2cb1eb9a343cd6562a7","unresolved":false,"context_lines":[{"line_number":217,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"API samples will need to be updated and unittests will cover the behaviour but"},{"line_number":220,"context_line":"there is no need to further modify Tempest or the in-tree functional tests."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Documentation Impact"},{"line_number":223,"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":5,"id":"1af86dd1_a4a30e9e","line":220,"updated":"2015-06-12 10:42:58.000000000","message":"-1 we should have tempest tests for this right?","commit_id":"37facb57958bed859dafe304f382b46a83275230"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"89d2c6a5e476527b55c6bcb887483e8d2c6f7111","unresolved":false,"context_lines":[{"line_number":217,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"API samples will need to be updated and unittests will cover the behaviour but"},{"line_number":220,"context_line":"there is no need to further modify Tempest or the in-tree functional tests."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"Documentation Impact"},{"line_number":223,"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":5,"id":"1af86dd1_21994b6f","line":220,"in_reply_to":"1af86dd1_a4a30e9e","updated":"2015-06-12 12:49:59.000000000","message":"Fair, will amend","commit_id":"37facb57958bed859dafe304f382b46a83275230"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"078406966ef89309795effa6e8dc44875661ccf7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"----------"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"As an operator, I would like to make sure that my destination is correct before"},{"line_number":34,"context_line":"migrating."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_2dbb7574","line":34,"updated":"2015-06-12 16:24:23.000000000","message":"as pre wider comments, please spell this out better.\n\nit helps justify this choice, or pick an alternative.\n\ndo we have direct operator feedback we can reference here? or are we just worrying about things?","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"63209f0db06cec5cebe95f5d2582d040aee24ee2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"----------"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"As an operator, I would like to make sure that my destination is correct before"},{"line_number":34,"context_line":"migrating."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_9b6c009e","line":34,"in_reply_to":"1af86dd1_13b573cc","updated":"2015-06-15 10:37:20.000000000","message":"Yes - this section really should explain more. Only after understanding the whole use case was I able to fully realize the shortcomings of the proposal here.","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"7d37dcad2982c0bd52f5792915c6a8e3d9e1f052","unresolved":false,"context_lines":[{"line_number":31,"context_line":"----------"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"As an operator, I would like to make sure that my destination is correct before"},{"line_number":34,"context_line":"migrating."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_f0cbf270","line":34,"in_reply_to":"1af86dd1_2dbb7574","updated":"2015-06-12 16:43:04.000000000","message":"We implemented something like this for similar reasons...to enforce things like provider networks, dedicated CPUs, etc. when live-migrating or evacuating/rebuilding.","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"63209f0db06cec5cebe95f5d2582d040aee24ee2","unresolved":false,"context_lines":[{"line_number":31,"context_line":"----------"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"As an operator, I would like to make sure that my destination is correct before"},{"line_number":34,"context_line":"migrating."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_fbdaec77","line":34,"in_reply_to":"1af86dd1_f0cbf270","updated":"2015-06-15 10:37:20.000000000","message":"@Chris - it would be really nice to see some of that code, even though I appreciate the number of bugs you folks have filed even without the code. It is likely that we will want to fix the very same things in L","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ad48734986ec15c439c4907013107567fa067011","unresolved":false,"context_lines":[{"line_number":31,"context_line":"----------"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"As an operator, I would like to make sure that my destination is correct before"},{"line_number":34,"context_line":"migrating."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_13b573cc","line":34,"in_reply_to":"1af86dd1_f0cbf270","updated":"2015-06-12 20:08:17.000000000","message":"John, see the references, that\u0027s the bugs provided.\n\nI also have some internal bugs said by customers about that, I can try to see if I can upstream them.\n\nAnyway, will try to provide more details on that.","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"6d3c70c21d51afd681b56b932f93c7e6f620a780","unresolved":false,"context_lines":[{"line_number":31,"context_line":"----------"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"As an operator, I would like to make sure that my destination is correct before"},{"line_number":34,"context_line":"migrating."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_73dd9541","line":34,"in_reply_to":"fa32b979_fbdaec77","updated":"2015-06-15 15:23:19.000000000","message":"@Nikola: Our implementation is pretty simple...we just add all compute nodes other than the one we want to the \"ignored\" list, and then call select_destinations() as usual.  This causes the scheduler to only evaluate the one we care about, and to consume resources as usual.\n\nIt works okay on the smallish scale, but for large-scale I think you\u0027d want something more efficient than passing in a huge list of nodes to ignore.","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b855784e59fd56fc5aafcbf5eb2884a2b4b9d9c7","unresolved":false,"context_lines":[{"line_number":31,"context_line":"----------"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"As an operator, I would like to make sure that my destination is correct before"},{"line_number":34,"context_line":"migrating."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_f420b94b","line":34,"in_reply_to":"fa32b979_fbdaec77","updated":"2015-06-15 11:50:39.000000000","message":"After check the host, the resource usage may already changed in second request.\n\nWhy user need such way to check the destination? If the destination is not satisfied, the live-migrate api will return fault, then user also can know the destination isn\u0027t correct also.","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"852fe1d4d6978868696d8941c099e8ac5192bf85","unresolved":false,"context_lines":[{"line_number":48,"context_line":"The blueprint will accordingly expose a new Scheduler RPC API method called"},{"line_number":49,"context_line":"``check_destination()`` which will accept a RequestSpec object (see the"},{"line_number":50,"context_line":"Dependencies section for further details), plus the name of the compute node"},{"line_number":51,"context_line":"and will return True or False."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"The API for all migrations including a destination host will be modified to add"},{"line_number":54,"context_line":"an extra request body argument called ``check_host`` (accepting True or False)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_c7c4c241","line":51,"updated":"2015-06-12 15:34:30.000000000","message":"I don\u0027t like this approach at all.\n\n* It\u0027s completely unnecessary - this can be a filter that will only pass a single host and a way to pass a hint to select_destinations. There is no reason for a slightly different yet completely the same method to be added.\n\n* What happens to resoruces tracked internally in the scheduler - do we consume them or not? no clarity even on how to use this.\n\nEtc.","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ad48734986ec15c439c4907013107567fa067011","unresolved":false,"context_lines":[{"line_number":48,"context_line":"The blueprint will accordingly expose a new Scheduler RPC API method called"},{"line_number":49,"context_line":"``check_destination()`` which will accept a RequestSpec object (see the"},{"line_number":50,"context_line":"Dependencies section for further details), plus the name of the compute node"},{"line_number":51,"context_line":"and will return True or False."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"The API for all migrations including a destination host will be modified to add"},{"line_number":54,"context_line":"an extra request body argument called ``check_host`` (accepting True or False)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_c96a8c1a","line":51,"in_reply_to":"1af86dd1_b0c1fa30","updated":"2015-06-12 20:08:17.000000000","message":"Just to be clear, this blueprint targets the cases where a live migration or an evacuation is called with a destination host provided, and where the scheduler is not called.\n\nMy initial thought is to have a simple way to not call the compute node if we know that a filter will not be happy, without changing the current behaviour (ie. not consuming the resources on the scheduler, but just leave any claims done by the RT)\n\nThat said, I need to think more about the opportunity to call the scheduler anyway and consuming its resources but I would really think about leaving a separate method (check_destination() here), which means that consume_from_instance() would then be called (which is not currently written here)","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"7d37dcad2982c0bd52f5792915c6a8e3d9e1f052","unresolved":false,"context_lines":[{"line_number":48,"context_line":"The blueprint will accordingly expose a new Scheduler RPC API method called"},{"line_number":49,"context_line":"``check_destination()`` which will accept a RequestSpec object (see the"},{"line_number":50,"context_line":"Dependencies section for further details), plus the name of the compute node"},{"line_number":51,"context_line":"and will return True or False."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"The API for all migrations including a destination host will be modified to add"},{"line_number":54,"context_line":"an extra request body argument called ``check_host`` (accepting True or False)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_b0c1fa30","line":51,"in_reply_to":"1af86dd1_c7c4c241","updated":"2015-06-12 16:43:04.000000000","message":"The downside of using a filter (or passing in all other hosts in ignore_hosts) is that you then go through the effort of getting information about all the hosts only to throw away almost all of the information.\n\nI think we *should* consume the resources when doing this, but then I think we should be doing resource tracking more generally over migration/resize/evacuate/etc.","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"63209f0db06cec5cebe95f5d2582d040aee24ee2","unresolved":false,"context_lines":[{"line_number":48,"context_line":"The blueprint will accordingly expose a new Scheduler RPC API method called"},{"line_number":49,"context_line":"``check_destination()`` which will accept a RequestSpec object (see the"},{"line_number":50,"context_line":"Dependencies section for further details), plus the name of the compute node"},{"line_number":51,"context_line":"and will return True or False."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"The API for all migrations including a destination host will be modified to add"},{"line_number":54,"context_line":"an extra request body argument called ``check_host`` (accepting True or False)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_3b7374b3","line":51,"in_reply_to":"1af86dd1_c96a8c1a","updated":"2015-06-15 10:37:20.000000000","message":"So the problem we are trying to solve here is the following:\n\n* An admin wants a straightforward way to check if a target host is a viable target before actually issuing a migration request that is supposed to bypass filters.\n\nIMHO that\u0027s a bad way to design this interaction. I think a better way would be:\n\n* Give operators this kind of facility (it fits in a larger effort to provide operators with more info about the resources that we said we want the Scheduler to do).\n\n* Make force host still run through filters and reject invalid requests if the situation changed in the meantim. (this would mean remove all race conditions we know have with all 3 migration operations first, use claims and retries etc. see Chris\u0027s comments above)\n\nThat way operators can check the state of their cloud, but the cloud would still remain internally consistent.\n\nthe question then remains - what if the admin actually wants to migrate regardless of the policy set by filters. The problem with this is that some policies like NUMA/PCI devices cannot be meaningfully sidestepped without breaking instances, and we need to make that distinction clear. For example forcing an instance that breaks oversubscription is less bad than forcing an instance that breaks affinity and both of these are less bad than forcing an instance that is using a specific set of CPUs.\n\nThis BP does not answer any of the concerns above.","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ba7febe764fa3a5edf980f0ceba718addcf56f1e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"The blueprint will accordingly expose a new Scheduler RPC API method called"},{"line_number":49,"context_line":"``check_destination()`` which will accept a RequestSpec object (see the"},{"line_number":50,"context_line":"Dependencies section for further details), plus the name of the compute node"},{"line_number":51,"context_line":"and will return True or False."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"The API for all migrations including a destination host will be modified to add"},{"line_number":54,"context_line":"an extra request body argument called ``check_host`` (accepting True or False)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_cc3729af","line":51,"in_reply_to":"fa32b979_3b7374b3","updated":"2015-06-15 13:03:31.000000000","message":"Okay, got your thoughts, thanks very much for your feedback, helping me a lot for thinking about the problem : \n\n- Given the better problem description you mention, I think my proposal needs to have a narrower description which would be \"migrations are not constrained by the scheduler when specifying a destination host, while they should - at least for that specific destination\"\n\n- Providing a specific facility for knowing the cloud capacity should be managed in a separate spec IMHO. That\u0027s also been discussed during a Nova design session about operator errors, and it had been agreed on writing a backlog spec for at least discussing on the problem. I haven\u0027t seen yet the backlog spec, will inform you when I see it.\n\n- force_hosts is just an horrible hack (and UX, remember it\u0027s defined as an AZ flag, uh) which does half the job. My guts are just that it should be dropped and we should provide a very clear way to propose an optional destination host, exactly like we do with the live migration or evacuation. MHO is that it can\u0027t be done in the context of that spec, hence the new problem description rewriting I\u0027m going to clarify\n\n- in the context of only live migration and evacuation where a destination host is provided, we should call the scheduler anyway to run thru the filters *UNLESS* the operator wants to explicitely break that by using a \u0027force\u0027 flag. Given that the list of running filters is something deployment-specific, and given we\u0027re cloud-ish, we should just say \u0027eh, know what you do, because there are high chances to break something\u0027. That way, it should be clear that if the operators enables the NUMA filter and wants to migrate an instance by hand, he has to make sure that it will migrate it up to a destination host totally free or he will suffer pain (because of some existing allocations, like CPU pinning)","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"078406966ef89309795effa6e8dc44875661ccf7","unresolved":false,"context_lines":[{"line_number":204,"context_line":"Since scheduler hints are part of the request and are not persisted yet, we"},{"line_number":205,"context_line":"need to depend on persisting the RequestSpec object [1] before calling"},{"line_number":206,"context_line":"``select_destinations()`` so that a future migration would read that"},{"line_number":207,"context_line":"RequestSpec and provide it again thru ``check_destination``."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_4d6d9103","line":207,"updated":"2015-06-12 16:24:23.000000000","message":"Thanks for adding that.","commit_id":"f81c3337acffce390c992289e74c38fe03fa19ed"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"bc96444d95d45814d1e8e5a5569f9e008a58c2aa","unresolved":false,"context_lines":[{"line_number":55,"context_line":"As the contrary, some valid usecases for explicitely asking a destination even"},{"line_number":56,"context_line":"if we know that we will create bugs could be :"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"As an operator, I have a very loved instance that I really care of and I want"},{"line_number":59,"context_line":"to make sure that I can migrate it in case of any problem on the source host,"},{"line_number":60,"context_line":"the sooner being the better, and I honestly assume that it would probably bug"},{"line_number":61,"context_line":"other instances on that specific destination host but I honestly don\u0027t care,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_8126c266","line":58,"updated":"2015-06-15 16:28:38.000000000","message":"LOL \"loved\" instance. I think the scientific term is \"a pet\" :D","commit_id":"16a01734836fdd13c11129902130f683784527cb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b4fdce383199ffbf295bdb104f05966ede708d71","unresolved":false,"context_lines":[{"line_number":55,"context_line":"As the contrary, some valid usecases for explicitely asking a destination even"},{"line_number":56,"context_line":"if we know that we will create bugs could be :"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"As an operator, I have a very loved instance that I really care of and I want"},{"line_number":59,"context_line":"to make sure that I can migrate it in case of any problem on the source host,"},{"line_number":60,"context_line":"the sooner being the better, and I honestly assume that it would probably bug"},{"line_number":61,"context_line":"other instances on that specific destination host but I honestly don\u0027t care,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_ae97278f","line":58,"in_reply_to":"fa32b979_8126c266","updated":"2015-06-15 19:37:55.000000000","message":"Yeah, just wanted to avoid any discussion about pets for cloud computing ;-)","commit_id":"16a01734836fdd13c11129902130f683784527cb"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"bc96444d95d45814d1e8e5a5569f9e008a58c2aa","unresolved":false,"context_lines":[{"line_number":87,"context_line":"Note that this new field would nothing have in common with a migration object"},{"line_number":88,"context_line":"or an Instance.host field, since it would just be a reference to an equivalent"},{"line_number":89,"context_line":"scheduler hint saying \u0027I want to go there\u0027 (and not the ugly force_hosts"},{"line_number":90,"context_line":"information passed as an Availability Zone hack...)."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The idea behind that is that the Scheduler would check that field in the"},{"line_number":93,"context_line":"_schedule() method of FilterScheduler and would then just call the filters only"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_41275a12","line":90,"updated":"2015-06-15 16:28:38.000000000","message":"Might be good to explain this in a bit more detail (i.e. what are the exact changes needed for this) having backwards compat in mind.","commit_id":"16a01734836fdd13c11129902130f683784527cb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b4fdce383199ffbf295bdb104f05966ede708d71","unresolved":false,"context_lines":[{"line_number":87,"context_line":"Note that this new field would nothing have in common with a migration object"},{"line_number":88,"context_line":"or an Instance.host field, since it would just be a reference to an equivalent"},{"line_number":89,"context_line":"scheduler hint saying \u0027I want to go there\u0027 (and not the ugly force_hosts"},{"line_number":90,"context_line":"information passed as an Availability Zone hack...)."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The idea behind that is that the Scheduler would check that field in the"},{"line_number":93,"context_line":"_schedule() method of FilterScheduler and would then just call the filters only"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_0eebb3b1","line":90,"in_reply_to":"fa32b979_41275a12","updated":"2015-06-15 19:37:55.000000000","message":"Ack","commit_id":"16a01734836fdd13c11129902130f683784527cb"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"bc96444d95d45814d1e8e5a5569f9e008a58c2aa","unresolved":false,"context_lines":[{"line_number":108,"context_line":"action the fact that the migration has been forced so that the operator could"},{"line_number":109,"context_line":"potentially reschedule the instance later on if he wishes. For that, we propose"},{"line_number":110,"context_line":"to add two new possible actions, called ``FORCED_MIGRATE`` (when live-migrating"},{"line_number":111,"context_line":") and ``FORCED_REBUILD`` (when evacuating)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_f36c459e","line":111,"updated":"2015-06-15 16:28:38.000000000","message":"We would also need FORCED_ACTIVE so that there is an easy way to find all the instances and re-schedule them once the trouble clears up. this is exactly the kind of functionalitry Nova should provide to help with the \"pet\" use case but not turn into a virt manager","commit_id":"16a01734836fdd13c11129902130f683784527cb"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"396dc8ac2e0ae917422578ed408789d5d16e6c49","unresolved":false,"context_lines":[{"line_number":108,"context_line":"action the fact that the migration has been forced so that the operator could"},{"line_number":109,"context_line":"potentially reschedule the instance later on if he wishes. For that, we propose"},{"line_number":110,"context_line":"to add two new possible actions, called ``FORCED_MIGRATE`` (when live-migrating"},{"line_number":111,"context_line":") and ``FORCED_REBUILD`` (when evacuating)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_6f2119fb","line":111,"in_reply_to":"fa32b979_0e13b30e","updated":"2015-06-15 20:57:38.000000000","message":"Unless there are edge cases and querying \u0027last action\u0027 with the nova API is not too opaque for users, that might work.","commit_id":"16a01734836fdd13c11129902130f683784527cb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b4fdce383199ffbf295bdb104f05966ede708d71","unresolved":false,"context_lines":[{"line_number":108,"context_line":"action the fact that the migration has been forced so that the operator could"},{"line_number":109,"context_line":"potentially reschedule the instance later on if he wishes. For that, we propose"},{"line_number":110,"context_line":"to add two new possible actions, called ``FORCED_MIGRATE`` (when live-migrating"},{"line_number":111,"context_line":") and ``FORCED_REBUILD`` (when evacuating)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_0e13b30e","line":111,"in_reply_to":"fa32b979_f36c459e","updated":"2015-06-15 19:37:55.000000000","message":"Was thinking about adding it, but the problem is that the VM state should be said as ACTIVE for end-users, so I would mean that we would create different states for end-users vs. admins. What do you think about it? Wouldn\u0027t it be better to provide a way to add an API query for getting all the instances having the last action being the one ? If so, it would be a dependent BP.\n\nLet me try to ping some people for discussing about that.","commit_id":"16a01734836fdd13c11129902130f683784527cb"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"bc96444d95d45814d1e8e5a5569f9e008a58c2aa","unresolved":false,"context_lines":[{"line_number":130,"context_line":"``os-migrateLive`` and ``evacuate`` actions to include the"},{"line_number":131,"context_line":"``force_destination`` boolean field defaulted to False if the request has a"},{"line_number":132,"context_line":"minimum version. There wouldn\u0027t be any change in the return codes or the"},{"line_number":133,"context_line":"raised exceptions since this flag doesn\u0027t specifically modify the behaviour."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* JSON schema definition for the body data of ``os-migrateLive``:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_6c6e12cb","line":133,"updated":"2015-06-15 16:28:38.000000000","message":"If I understood the discussion that led to this spec, and the requirements around it - we would also want to have an API method that gives a list of possible destinations (with some more info) - or will this be a future BP?","commit_id":"16a01734836fdd13c11129902130f683784527cb"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"5d859ab9b40b6dd1421ccf8653ce81a154073bfd","unresolved":false,"context_lines":[{"line_number":130,"context_line":"``os-migrateLive`` and ``evacuate`` actions to include the"},{"line_number":131,"context_line":"``force_destination`` boolean field defaulted to False if the request has a"},{"line_number":132,"context_line":"minimum version. There wouldn\u0027t be any change in the return codes or the"},{"line_number":133,"context_line":"raised exceptions since this flag doesn\u0027t specifically modify the behaviour."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* JSON schema definition for the body data of ``os-migrateLive``:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_cc687ef8","line":133,"updated":"2015-06-15 16:42:43.000000000","message":"To minimize any uncertainty we should mention that the API microversion will be bumped.","commit_id":"16a01734836fdd13c11129902130f683784527cb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b4fdce383199ffbf295bdb104f05966ede708d71","unresolved":false,"context_lines":[{"line_number":130,"context_line":"``os-migrateLive`` and ``evacuate`` actions to include the"},{"line_number":131,"context_line":"``force_destination`` boolean field defaulted to False if the request has a"},{"line_number":132,"context_line":"minimum version. There wouldn\u0027t be any change in the return codes or the"},{"line_number":133,"context_line":"raised exceptions since this flag doesn\u0027t specifically modify the behaviour."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* JSON schema definition for the body data of ``os-migrateLive``:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_4ee1bbcf","line":133,"in_reply_to":"fa32b979_cc687ef8","updated":"2015-06-15 19:37:55.000000000","message":"@Nikola, yes it will be a separate BP, see L101 https://etherpad.openstack.org/p/YVR-nova-liberty-summit-action-items (I know, that\u0027s really short)\n\n@Chris, sure","commit_id":"16a01734836fdd13c11129902130f683784527cb"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bb49acc4623977d551b6574312f486405432dd99","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Only if the ``force_destination`` is provided and set to ``True``, the"},{"line_number":114,"context_line":"conductor will not call the new scheduler method. All other conditions will end"},{"line_number":115,"context_line":"up calling the scheduler."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"In order to keep track of those forced calls, we propose to log as an instance"},{"line_number":118,"context_line":"action the fact that the migration has been forced so that the operator could"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa32b979_0e06f71c","line":115,"updated":"2015-06-17 13:19:24.000000000","message":"Uh, I\u0027m unclear :\n- if force_dest is provided as True, it won\u0027t call the scheduler\n- if force_dest is provided as False (default), it will call the scheduler\n- if force_dest is not provided (if the request is asking for a previous version), it won\u0027t call the scheduler (see below at the REST API section for the rationale)","commit_id":"ac987f4cd0c91e8fd24fea93601622ba31dbf6a0"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"056f55be539352670151b82ad27fba9fcfd081e6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"memory allocation ratio (see the References section below)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"As an operator, I want to make sure that live-migrating an instance to a"},{"line_number":51,"context_line":"specific destination wouldn\u0027t break my existing instances running on that"},{"line_number":52,"context_line":"destination host because of some NUMA affinity that I missed."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_11061a1d","line":51,"updated":"2015-06-17 14:30:16.000000000","message":"well I am not sure we can break instances on the target host like that, but we can surely make them slower. Maybe fix in a follow up patch.","commit_id":"bad65b898c61363f45f9caa6419fc3a5f595d6bc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"72c816667fd85eddb9e820c19ce523c67444068d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"memory allocation ratio (see the References section below)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"As an operator, I want to make sure that live-migrating an instance to a"},{"line_number":51,"context_line":"specific destination wouldn\u0027t break my existing instances running on that"},{"line_number":52,"context_line":"destination host because of some NUMA affinity that I missed."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_b5d393d4","line":51,"in_reply_to":"fa32b979_11061a1d","updated":"2015-06-17 15:28:45.000000000","message":"Done","commit_id":"bad65b898c61363f45f9caa6419fc3a5f595d6bc"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"056f55be539352670151b82ad27fba9fcfd081e6","unresolved":false,"context_lines":[{"line_number":132,"context_line":"``FORCED_MIGRATE`` or ``FORCED_REBUILD`` just by calling the"},{"line_number":133,"context_line":"/os-instance-actions API resource for each instance, and we could also later"},{"line_number":134,"context_line":"add a new blueprint (out of that spec scope) for getting the list of instances"},{"line_number":135,"context_line":"having the last specific action set to something (here FORCED_something)."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Alternatives"},{"line_number":138,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_fd27c7b3","line":135,"updated":"2015-06-17 14:30:16.000000000","message":"I\u0027d like this solved too but no point in derailing this spec further over something we can obivously add later.","commit_id":"bad65b898c61363f45f9caa6419fc3a5f595d6bc"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"44a6209e1e8c1d96f149e0674912c27a2814a666","unresolved":false,"context_lines":[{"line_number":153,"context_line":"``os-migrateLive`` and ``evacuate`` actions to include the"},{"line_number":154,"context_line":"``force_destination`` boolean field defaulted to False if the request has a"},{"line_number":155,"context_line":"minimum version. There wouldn\u0027t be any change in the return codes or the"},{"line_number":156,"context_line":"raised exceptions since this flag doesn\u0027t specifically modify the behaviour."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Of course, since it\u0027s a new request body attribute, it will get a new API"},{"line_number":159,"context_line":"microversion, meaning that if the attribute is not provided, the scheduler"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_22898a75","line":156,"updated":"2015-06-17 14:18:36.000000000","message":"when host is null in live-migration or not specified in evacuate, and force_destination is True, there should return a error status code, right?","commit_id":"bad65b898c61363f45f9caa6419fc3a5f595d6bc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"72c816667fd85eddb9e820c19ce523c67444068d","unresolved":false,"context_lines":[{"line_number":153,"context_line":"``os-migrateLive`` and ``evacuate`` actions to include the"},{"line_number":154,"context_line":"``force_destination`` boolean field defaulted to False if the request has a"},{"line_number":155,"context_line":"minimum version. There wouldn\u0027t be any change in the return codes or the"},{"line_number":156,"context_line":"raised exceptions since this flag doesn\u0027t specifically modify the behaviour."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Of course, since it\u0027s a new request body attribute, it will get a new API"},{"line_number":159,"context_line":"microversion, meaning that if the attribute is not provided, the scheduler"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_d561773a","line":156,"in_reply_to":"fa32b979_22898a75","updated":"2015-06-17 15:28:45.000000000","message":"Good catch, will amend it","commit_id":"bad65b898c61363f45f9caa6419fc3a5f595d6bc"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Migrations (incl. evacuate, live but not cold migrate) allow the possibility to"},{"line_number":20,"context_line":"either specify a destination host or not. The former option totally bypasses"},{"line_number":21,"context_line":"the scheduler by calling the destination Compute RPC API directly."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_6a0299b6","line":19,"updated":"2015-06-19 16:51:33.000000000","message":"evacuate does not do migrations. It does complete rebuilds.","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Migrations (incl. evacuate, live but not cold migrate) allow the possibility to"},{"line_number":20,"context_line":"either specify a destination host or not. The former option totally bypasses"},{"line_number":21,"context_line":"the scheduler by calling the destination Compute RPC API directly."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_69dcc446","line":19,"in_reply_to":"fa32b979_6a0299b6","updated":"2015-06-22 08:46:40.000000000","message":"Okay, you\u0027re right, I knew, I was just trying to say \"instance movings\" but I\u0027ll try to rewrite it","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":21,"context_line":"the scheduler by calling the destination Compute RPC API directly."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Unfortunately, there are some cases when migrating a VM, it breaks the"},{"line_number":24,"context_line":"scheduler rules so it makes some further boot requests potentially broken due"},{"line_number":25,"context_line":"to some constraints not enforced when migrating (like allocation ratios)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"We should modify that logic to explicitely call the Scheduler any time a"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_375b9930","line":24,"updated":"2015-06-19 16:51:33.000000000","message":"s/so it makes some further boot requests potentially broken/so it potentially breaks future boot requests/","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":21,"context_line":"the scheduler by calling the destination Compute RPC API directly."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Unfortunately, there are some cases when migrating a VM, it breaks the"},{"line_number":24,"context_line":"scheduler rules so it makes some further boot requests potentially broken due"},{"line_number":25,"context_line":"to some constraints not enforced when migrating (like allocation ratios)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"We should modify that logic to explicitely call the Scheduler any time a"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_89e10801","line":24,"in_reply_to":"fa32b979_375b9930","updated":"2015-06-22 08:46:40.000000000","message":"Done","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":24,"context_line":"scheduler rules so it makes some further boot requests potentially broken due"},{"line_number":25,"context_line":"to some constraints not enforced when migrating (like allocation ratios)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"We should modify that logic to explicitely call the Scheduler any time a"},{"line_number":28,"context_line":"migration is requested (whether the destination host is provided or not) so"},{"line_number":29,"context_line":"that the Scheduler would verify the destination host thru all the enabled"},{"line_number":30,"context_line":"filters and if successful consume the instance usage from its internal"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_b75ec910","line":27,"updated":"2015-06-19 16:51:33.000000000","message":"s/explicitely/explicitly/","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":24,"context_line":"scheduler rules so it makes some further boot requests potentially broken due"},{"line_number":25,"context_line":"to some constraints not enforced when migrating (like allocation ratios)."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"We should modify that logic to explicitely call the Scheduler any time a"},{"line_number":28,"context_line":"migration is requested (whether the destination host is provided or not) so"},{"line_number":29,"context_line":"that the Scheduler would verify the destination host thru all the enabled"},{"line_number":30,"context_line":"filters and if successful consume the instance usage from its internal"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_49e4600c","line":27,"in_reply_to":"fa32b979_b75ec910","updated":"2015-06-22 08:46:40.000000000","message":"Done","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"That said, we also understand that there are usecases (see below) where an"},{"line_number":34,"context_line":"operator wants to migrate an instance manually and not call the scheduler, even"},{"line_number":35,"context_line":"if the operator knows that he explicitely break the scheduler rules (eg. a"},{"line_number":36,"context_line":"filter not passing, an affinity policy violated or an instance taking an"},{"line_number":37,"context_line":"already allocated pCPU in the context of CPU pinning)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_d7958d88","line":35,"updated":"2015-06-19 16:51:33.000000000","message":"s/explicitely/explicitly/\n\ns/break the/breaks/","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"That said, we also understand that there are usecases (see below) where an"},{"line_number":34,"context_line":"operator wants to migrate an instance manually and not call the scheduler, even"},{"line_number":35,"context_line":"if the operator knows that he explicitely break the scheduler rules (eg. a"},{"line_number":36,"context_line":"filter not passing, an affinity policy violated or an instance taking an"},{"line_number":37,"context_line":"already allocated pCPU in the context of CPU pinning)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_e9f0d4cb","line":35,"in_reply_to":"fa32b979_d7958d88","updated":"2015-06-22 08:46:40.000000000","message":"Done","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":34,"context_line":"operator wants to migrate an instance manually and not call the scheduler, even"},{"line_number":35,"context_line":"if the operator knows that he explicitely break the scheduler rules (eg. a"},{"line_number":36,"context_line":"filter not passing, an affinity policy violated or an instance taking an"},{"line_number":37,"context_line":"already allocated pCPU in the context of CPU pinning)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Use Cases"},{"line_number":40,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_17f21507","line":37,"updated":"2015-06-19 16:51:33.000000000","message":"I actually do NOT recognize this as a valid use case, and I never have considered this to be an appropriate behaviour to support. :(","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":34,"context_line":"operator wants to migrate an instance manually and not call the scheduler, even"},{"line_number":35,"context_line":"if the operator knows that he explicitely break the scheduler rules (eg. a"},{"line_number":36,"context_line":"filter not passing, an affinity policy violated or an instance taking an"},{"line_number":37,"context_line":"already allocated pCPU in the context of CPU pinning)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Use Cases"},{"line_number":40,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_89b828e7","line":37,"in_reply_to":"fa32b979_17f21507","updated":"2015-06-22 08:46:40.000000000","message":"See below","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"As an operator, I want to make sure that the destination host I\u0027m providing"},{"line_number":45,"context_line":"when live migrating a specific instance would be correct and wouldn\u0027t break"},{"line_number":46,"context_line":"my internal cloud because of any cryptic discrepancy between how I calculate"},{"line_number":47,"context_line":"the destination host capacity and how the scheduler is taking in account"},{"line_number":48,"context_line":"memory allocation ratio (see the References section below)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_17c9b5ac","line":46,"updated":"2015-06-19 16:51:33.000000000","message":"s/any cryptic discrepancy/a discrepancy/","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"As an operator, I want to make sure that the destination host I\u0027m providing"},{"line_number":45,"context_line":"when live migrating a specific instance would be correct and wouldn\u0027t break"},{"line_number":46,"context_line":"my internal cloud because of any cryptic discrepancy between how I calculate"},{"line_number":47,"context_line":"the destination host capacity and how the scheduler is taking in account"},{"line_number":48,"context_line":"memory allocation ratio (see the References section below)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_09ee58ec","line":46,"in_reply_to":"fa32b979_17c9b5ac","updated":"2015-06-22 08:46:40.000000000","message":"Done","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"As an operator, I want to make sure that live-migrating an instance to a"},{"line_number":51,"context_line":"specific destination wouldn\u0027t impact my existing instances running on that"},{"line_number":52,"context_line":"destination host because of some NUMA affinity that I missed."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"As the contrary, some valid usecases for explicitely asking a destination even"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_57365db5","line":52,"updated":"2015-06-19 16:51:33.000000000","message":"s/NUMA//\n\nAffinity isn\u0027t always related to NUMA...","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"As an operator, I want to make sure that live-migrating an instance to a"},{"line_number":51,"context_line":"specific destination wouldn\u0027t impact my existing instances running on that"},{"line_number":52,"context_line":"destination host because of some NUMA affinity that I missed."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"As the contrary, some valid usecases for explicitely asking a destination even"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_a9b96cee","line":52,"in_reply_to":"fa32b979_57365db5","updated":"2015-06-22 08:46:40.000000000","message":"Fair","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":62,"context_line":"because my very loved instance is far more important than the other instances"},{"line_number":63,"context_line":"running on that destination host. Having the Scheduler involved would mean that"},{"line_number":64,"context_line":"if I have no other choices than this destination host (capacity problem or"},{"line_number":65,"context_line":"whatever else), I couldn\u0027t because the Scheduler would refuse my request."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_9754e5ca","line":65,"updated":"2015-06-19 16:51:33.000000000","message":"This isn\u0027t a valid use case, IMHO.","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5391a2a96b1abce4e3e085c3db8e6e3ed1ca764e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"because my very loved instance is far more important than the other instances"},{"line_number":63,"context_line":"running on that destination host. Having the Scheduler involved would mean that"},{"line_number":64,"context_line":"if I have no other choices than this destination host (capacity problem or"},{"line_number":65,"context_line":"whatever else), I couldn\u0027t because the Scheduler would refuse my request."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_9feb05dc","line":65,"in_reply_to":"fa32b979_49922059","updated":"2015-06-24 10:40:46.000000000","message":"So here is the use case I care about:\n\n* a host is about to die (disk issue, or whatever) or needs some disruptive maintenance (like a hypervisor upgrade)\n* to limit impact, you need to move all the VMs to another host, regardless of if that will violate what the user requests, at least for a small amount of time while the maintenance happens.","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":62,"context_line":"because my very loved instance is far more important than the other instances"},{"line_number":63,"context_line":"running on that destination host. Having the Scheduler involved would mean that"},{"line_number":64,"context_line":"if I have no other choices than this destination host (capacity problem or"},{"line_number":65,"context_line":"whatever else), I couldn\u0027t because the Scheduler would refuse my request."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Project Priority"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_49922059","line":65,"in_reply_to":"fa32b979_9754e5ca","updated":"2015-06-22 08:46:40.000000000","message":"Why? We know that it\u0027s possible to have an operator migrating an instance (or evacuating, eh) by providing a destination.\n\nThere is also one (very ugly) way to provide a destination when booting (using the force_hosts AZ hint). So, removing this possibility from Nova would make sure that operators would then be very angry IMHO.\n\nWe know that OpenStack is a cloud system. That said, there are some ways to cheat with it *only if you\u0027re an operator* and that\u0027s why I want to keep that.","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":81,"context_line":"hints. Given that, we propose to amend the RequestSpec object to include a new"},{"line_number":82,"context_line":"field called ``requested_destination`` which would be a ComputeNode object (at"},{"line_number":83,"context_line":"least having the host and hypervisor fields set) and would be set by the"},{"line_number":84,"context_line":"conductor for each method (here live-migrate and evacuate) accepting an"},{"line_number":85,"context_line":"optional destination host."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Note that this new field would nothing have in common with a migration object"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_f7f531cb","line":84,"updated":"2015-06-19 16:51:33.000000000","message":"evacuate does not migrate (live or otherwise) any workloads. It rebuilds instances from their base images in Glance on a different host than the one being evacuated.","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":81,"context_line":"hints. Given that, we propose to amend the RequestSpec object to include a new"},{"line_number":82,"context_line":"field called ``requested_destination`` which would be a ComputeNode object (at"},{"line_number":83,"context_line":"least having the host and hypervisor fields set) and would be set by the"},{"line_number":84,"context_line":"conductor for each method (here live-migrate and evacuate) accepting an"},{"line_number":85,"context_line":"optional destination host."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Note that this new field would nothing have in common with a migration object"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_698124fb","line":84,"in_reply_to":"fa32b979_f7f531cb","updated":"2015-06-22 08:46:40.000000000","message":"I know, I know... \"Migration\" was just a way to say \u0027eh, I want to do something with my instance to make sure it won\u0027t be still in the source host\u0027.","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":87,"context_line":"Note that this new field would nothing have in common with a migration object"},{"line_number":88,"context_line":"or an Instance.host field, since it would just be a reference to an equivalent"},{"line_number":89,"context_line":"scheduler hint saying \u0027I want to go there\u0027 (and not the ugly force_hosts"},{"line_number":90,"context_line":"information passed as an Availability Zone hack...)."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The idea behind that is that the Scheduler would check that field in the"},{"line_number":93,"context_line":"_schedule() method of FilterScheduler and would then just call the filters only"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_f7e3f103","line":90,"updated":"2015-06-19 16:51:33.000000000","message":"I don\u0027t see this as any different than the ugly force_hosts scheduler hint... could you explain further how you think this is different?","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":87,"context_line":"Note that this new field would nothing have in common with a migration object"},{"line_number":88,"context_line":"or an Instance.host field, since it would just be a reference to an equivalent"},{"line_number":89,"context_line":"scheduler hint saying \u0027I want to go there\u0027 (and not the ugly force_hosts"},{"line_number":90,"context_line":"information passed as an Availability Zone hack...)."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"The idea behind that is that the Scheduler would check that field in the"},{"line_number":93,"context_line":"_schedule() method of FilterScheduler and would then just call the filters only"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_29ca3c50","line":90,"in_reply_to":"fa32b979_f7e3f103","updated":"2015-06-22 08:46:40.000000000","message":"Because the spec is just trying to fix evacuate/live-migrate because they is alrady a way to provide a destination host explicitely.\n\nforce_hosts is a different use-case, because that\u0027s not that explicit (that\u0027s an AZ hack) and because I think it deserves its own spec (because it\u0027s really bad)","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":97,"context_line":"providing the legacy ``request_spec`` and ``filter_properties`` to the old"},{"line_number":98,"context_line":"``select_destinations`` API method, we wouldn\u0027t pass the new"},{"line_number":99,"context_line":"``requested_destination`` field as a key for the request_spec."},{"line_number":100,"context_line":"On the other hand, if the conductor would be older than the scheduler, there"},{"line_number":101,"context_line":"would be no reason to call the scheduler for only one possible destination"},{"line_number":102,"context_line":"(since the code is not there, eh) so on the scheduler side, it just means that"},{"line_number":103,"context_line":"if the field is not an attribute of the RequestSpec object, we can continue and"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_1781b5fb","line":100,"updated":"2015-06-19 16:51:33.000000000","message":"We don\u0027t support a conductor being older than a scheduler. We only support a compute node being older than a conductor.","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":97,"context_line":"providing the legacy ``request_spec`` and ``filter_properties`` to the old"},{"line_number":98,"context_line":"``select_destinations`` API method, we wouldn\u0027t pass the new"},{"line_number":99,"context_line":"``requested_destination`` field as a key for the request_spec."},{"line_number":100,"context_line":"On the other hand, if the conductor would be older than the scheduler, there"},{"line_number":101,"context_line":"would be no reason to call the scheduler for only one possible destination"},{"line_number":102,"context_line":"(since the code is not there, eh) so on the scheduler side, it just means that"},{"line_number":103,"context_line":"if the field is not an attribute of the RequestSpec object, we can continue and"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_89eb48b0","line":100,"in_reply_to":"fa32b979_1781b5fb","updated":"2015-06-22 08:46:40.000000000","message":"Okay, I can drop that case.","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":104,"context_line":"call all the hosts anyway."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Since this BP also targets to provide a way for operators to bypass the"},{"line_number":108,"context_line":"Scheduler, we will amend the API for all migrations including a destination"},{"line_number":109,"context_line":"host by adding an extra request body argument called ``force_destination``"},{"line_number":110,"context_line":"(accepting True or False, defaulted to False) and the corresponding CLI methods"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_57b5fdcd","line":107,"updated":"2015-06-19 16:51:33.000000000","message":"s/targets to provide/provides/","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":104,"context_line":"call all the hosts anyway."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Since this BP also targets to provide a way for operators to bypass the"},{"line_number":108,"context_line":"Scheduler, we will amend the API for all migrations including a destination"},{"line_number":109,"context_line":"host by adding an extra request body argument called ``force_destination``"},{"line_number":110,"context_line":"(accepting True or False, defaulted to False) and the corresponding CLI methods"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_49cea05b","line":107,"in_reply_to":"fa32b979_57b5fdcd","updated":"2015-06-22 08:46:40.000000000","message":"Done","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b136b1702ec3ea848e90f1ef781e2e29c51f0a48","unresolved":false,"context_lines":[{"line_number":156,"context_line":"raised exceptions since this flag doesn\u0027t specifically modify the behaviour."},{"line_number":157,"context_line":"If the ``force_destination`` flag is set to True but no destination host is"},{"line_number":158,"context_line":"provided (either null in the migrate_live body or unset in the evacuate body),"},{"line_number":159,"context_line":"a decent HTTP400 response code would be sent."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Of course, since it\u0027s a new request body attribute, it will get a new API"},{"line_number":162,"context_line":"microversion, meaning that if the attribute is not provided, the scheduler"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_ff474d75","line":159,"updated":"2015-06-19 15:58:55.000000000","message":"\"decent\"? :)\n\nHow about \"an HTTP 400 response will be returned.\"","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e3689fb8be619b486a1de58b4f5c0036ed237c26","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"Lots of bugs are mentioning the caveat we described above. Below are the ones"},{"line_number":308,"context_line":"I identified and who will be closed once the spec implementation lands :"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"- https://bugs.launchpad.net/nova/+bug/1451831"},{"line_number":311,"context_line":"  Specifying a destination node with nova live_migration does not take into"},{"line_number":312,"context_line":"  account overcommit setting (ram_allocation_ratio)"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_378719d9","line":309,"updated":"2015-06-19 16:51:33.000000000","message":"None of the bugs below reference any need to be able to force a destination. I don\u0027t really understand what this spec is attempting to accomplish, to be honest. The request spec should be saved to the instance object, we all agree on that. When doing a live or cold migration of that instance in the future, that stored request spec should essentially be used to find an appropriate host. What am I missing here?","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"11151dd462191a6b9f808c0606d9aa178d613036","unresolved":false,"context_lines":[{"line_number":306,"context_line":""},{"line_number":307,"context_line":"Lots of bugs are mentioning the caveat we described above. Below are the ones"},{"line_number":308,"context_line":"I identified and who will be closed once the spec implementation lands :"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"- https://bugs.launchpad.net/nova/+bug/1451831"},{"line_number":311,"context_line":"  Specifying a destination node with nova live_migration does not take into"},{"line_number":312,"context_line":"  account overcommit setting (ram_allocation_ratio)"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa32b979_02bb8d0f","line":309,"in_reply_to":"fa32b979_378719d9","updated":"2015-06-22 08:46:40.000000000","message":"You actually focused on the implementation proposal (using the RequestSpec field) and not on the problem description.\nThe main problem that we have is when the operator provides a destination host, then the scheduler is not called and then it\u0027s not checking for example the CPU/RAM allocation ratios or doesn\u0027t check the affinity filters, which creates some bugs really difficult to explain.\n\nHere, I\u0027m trying to say \"let\u0027s call the scheduler anyway, even if the operator provides a dest host - unless the operator explicitely asks for forcing\"\n\nLet\u0027s try to discuss on IRC if you can, okay ?","commit_id":"4d7fb8a8d1dd23f166e4c9840383d8f8ac4d6491"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"cc067f9c0d4b86b89ed3addb1729a73b79c3f814","unresolved":false,"context_lines":[{"line_number":21,"context_line":"calling the destination Compute RPC API directly."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Unfortunately, there are some cases when migrating a VM, it breaks the"},{"line_number":24,"context_line":"scheduler rules so it so it potentially breaks future boot requests due"},{"line_number":25,"context_line":"to some constraints not enforced when migrating/evacuating (like allocation"},{"line_number":26,"context_line":"ratios)."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"fa32b979_1e612505","line":24,"range":{"start_line":24,"start_character":16,"end_line":24,"end_character":27},"updated":"2015-06-24 16:54:37.000000000","message":"double \"so it\"","commit_id":"9ee1993135d76c8d1f8556c94dc33aaf40375f03"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a599d3f95203d6f8485f03623164680c6ecfab6b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"corresponding instance from the user creating the VM including the scheduler"},{"line_number":74,"context_line":"hints. Given that, we propose to amend the RequestSpec object to include a new"},{"line_number":75,"context_line":"field called ``requested_destination`` which would be a ComputeNode object (at"},{"line_number":76,"context_line":"least having the host and hypervisor fields set) and would be set by the"},{"line_number":77,"context_line":"conductor for each method (here live-migrate and evacuate) accepting an"},{"line_number":78,"context_line":"optional destination host."},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_66ea5fae","line":76,"updated":"2015-07-01 14:52:01.000000000","message":"s/hypervisor/hypervisor_hostname/","commit_id":"9ee1993135d76c8d1f8556c94dc33aaf40375f03"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a599d3f95203d6f8485f03623164680c6ecfab6b","unresolved":false,"context_lines":[{"line_number":74,"context_line":"hints. Given that, we propose to amend the RequestSpec object to include a new"},{"line_number":75,"context_line":"field called ``requested_destination`` which would be a ComputeNode object (at"},{"line_number":76,"context_line":"least having the host and hypervisor fields set) and would be set by the"},{"line_number":77,"context_line":"conductor for each method (here live-migrate and evacuate) accepting an"},{"line_number":78,"context_line":"optional destination host."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Note that this new field would nothing have in common with a migration object"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ba3cc151_46fcfb71","line":77,"updated":"2015-07-01 14:52:01.000000000","message":"s/evacuate/rebuild_instance/","commit_id":"9ee1993135d76c8d1f8556c94dc33aaf40375f03"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"cc067f9c0d4b86b89ed3addb1729a73b79c3f814","unresolved":false,"context_lines":[{"line_number":175,"context_line":"  }"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* JSON schema definition for the body data of ``evacuate``:"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"::"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"fa32b979_c40a0ad2","line":178,"updated":"2015-06-24 16:54:37.000000000","message":"Just wondering, should this affect host-evacuate and host-evacuate-live as well? Or are they the same?","commit_id":"9ee1993135d76c8d1f8556c94dc33aaf40375f03"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"dcf4e8c89e695eff8b425c94bdbcd353da308e7d","unresolved":false,"context_lines":[{"line_number":175,"context_line":"  }"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* JSON schema definition for the body data of ``evacuate``:"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"::"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"fa32b979_d60ab9d1","line":178,"in_reply_to":"fa32b979_c40a0ad2","updated":"2015-06-24 20:40:55.000000000","message":"host-evacuate is just a CLI wrapper for calling evacuate API for each instance from the host so it will be done too.\nhost-evacuate-live is also a CLI wrapper calling live-migrate for each instance, so impacted as well.","commit_id":"9ee1993135d76c8d1f8556c94dc33aaf40375f03"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"97e89d1c007d9b09c19e7ad083d30a16dfb438d8","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                  \u0027block_migration\u0027: parameter_types.boolean,"},{"line_number":165,"context_line":"                  \u0027disk_over_commit\u0027: parameter_types.boolean,"},{"line_number":166,"context_line":"                  \u0027host\u0027: host,"},{"line_number":167,"context_line":"                  \u0027force_destination\u0027: parameter_types.boolean"},{"line_number":168,"context_line":"              },"},{"line_number":169,"context_line":"              \u0027required\u0027: [\u0027block_migration\u0027, \u0027disk_over_commit\u0027, \u0027host\u0027],"},{"line_number":170,"context_line":"              \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba3cc151_9f479a76","line":167,"updated":"2015-07-01 18:34:40.000000000","message":"or just \"force\"","commit_id":"2b19efbe76f4e4c4580f706f4034c56c91f8fef6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"97e89d1c007d9b09c19e7ad083d30a16dfb438d8","unresolved":false,"context_lines":[{"line_number":186,"context_line":"              \u0027type\u0027: \u0027object\u0027,"},{"line_number":187,"context_line":"              \u0027properties\u0027: {"},{"line_number":188,"context_line":"                  \u0027host\u0027: parameter_types.hostname,"},{"line_number":189,"context_line":"                  \u0027force_destination\u0027: parameter_types.boolean,"},{"line_number":190,"context_line":"                  \u0027onSharedStorage\u0027: parameter_types.boolean,"},{"line_number":191,"context_line":"                  \u0027adminPass\u0027: parameter_types.admin_password,"},{"line_number":192,"context_line":"              },"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba3cc151_ff56e628","line":189,"updated":"2015-07-01 18:34:40.000000000","message":"\"force\"","commit_id":"2b19efbe76f4e4c4580f706f4034c56c91f8fef6"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"97e89d1c007d9b09c19e7ad083d30a16dfb438d8","unresolved":false,"context_lines":[{"line_number":217,"context_line":"Other end user impact"},{"line_number":218,"context_line":"---------------------"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"Python-novaclient will accept a ``force_destination`` option for the following"},{"line_number":221,"context_line":"methods :"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":" - evacuate"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ba3cc151_1f54ea1e","line":220,"updated":"2015-07-01 18:34:40.000000000","message":"\"force\" :)","commit_id":"2b19efbe76f4e4c4580f706f4034c56c91f8fef6"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c96a1ee8acc3459c449676c41e771cee2aadea17","unresolved":false,"context_lines":[{"line_number":56,"context_line":"Project Priority"},{"line_number":57,"context_line":"-----------------"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Seriously considering that problem as part of the scheduler improvement for"},{"line_number":60,"context_line":"Liberty already considered as a priority, given all the bugs related to it"},{"line_number":61,"context_line":"(again, see below the references)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba3cc151_339d1ebc","line":61,"range":{"start_line":59,"start_character":0,"end_line":61,"end_character":33},"updated":"2015-07-09 14:25:45.000000000","message":"This should just be \"scheduler\" right? No need to defend it, if that\u0027s what we\u0027re claiming it\u0027s covered under. That said, this feels like a scheduler-unrelated pure feature add to me, so I\u0027m not sure I\u0027d say it\u0027s  covered by that priority, but I shan\u0027t argue I guess.","commit_id":"07cef966420fb9dcc28efb7d15b5cc5bb5090d08"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c96a1ee8acc3459c449676c41e771cee2aadea17","unresolved":false,"context_lines":[{"line_number":140,"context_line":"  be asked to verify that the requested target compute node is actually able to"},{"line_number":141,"context_line":"  accommodate  the request, including honouring all previously-used scheduler"},{"line_number":142,"context_line":"  hints. If the scheduler determines the request cannot be accommodated by the"},{"line_number":143,"context_line":"  requested target host node, a 409 Conflict shall be returned to the user."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"- If a host parameter is supplied in the request body, a new --force parameter"},{"line_number":146,"context_line":"  may also be supplied in the request body. If present, the scheduler shall"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba3cc151_3865fd1c","line":143,"range":{"start_line":143,"start_character":2,"end_line":143,"end_character":75},"updated":"2015-07-09 14:25:45.000000000","message":"So this is a blocking call to the scheduler from API? That seems less than ideal..","commit_id":"07cef966420fb9dcc28efb7d15b5cc5bb5090d08"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"db3182de225b78bf685732f6cb6a8b3df9b9bde2","unresolved":false,"context_lines":[{"line_number":140,"context_line":"  be asked to verify that the requested target compute node is actually able to"},{"line_number":141,"context_line":"  accommodate  the request, including honouring all previously-used scheduler"},{"line_number":142,"context_line":"  hints. If the scheduler determines the request cannot be accommodated by the"},{"line_number":143,"context_line":"  requested target host node, a 409 Conflict shall be returned to the user."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"- If a host parameter is supplied in the request body, a new --force parameter"},{"line_number":146,"context_line":"  may also be supplied in the request body. If present, the scheduler shall"}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba3cc151_99a3eb42","line":143,"range":{"start_line":143,"start_character":2,"end_line":143,"end_character":75},"in_reply_to":"ba3cc151_3865fd1c","updated":"2015-07-09 15:02:58.000000000","message":"See below - was unclear.\n\nIn the work items (L261), I mentioned the conductor as calling the scheduler","commit_id":"07cef966420fb9dcc28efb7d15b5cc5bb5090d08"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c96a1ee8acc3459c449676c41e771cee2aadea17","unresolved":false,"context_lines":[{"line_number":231,"context_line":"A new RPC call will be done by default when migrating or evacuating"},{"line_number":232,"context_line":"but it shouldn\u0027t really impact the performance since it\u0027s the normal behaviour"},{"line_number":233,"context_line":"for a general migration."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Other deployer impact"},{"line_number":236,"context_line":"---------------------"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba3cc151_b33ccec8","line":234,"updated":"2015-07-09 14:25:45.000000000","message":"These calls now block on an RPC to the scheduler. That\u0027s a significant performance impact, no?","commit_id":"07cef966420fb9dcc28efb7d15b5cc5bb5090d08"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6d41cd6e86fe0289f3dbb640d77a7f970f0e3c4a","unresolved":false,"context_lines":[{"line_number":231,"context_line":"A new RPC call will be done by default when migrating or evacuating"},{"line_number":232,"context_line":"but it shouldn\u0027t really impact the performance since it\u0027s the normal behaviour"},{"line_number":233,"context_line":"for a general migration."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Other deployer impact"},{"line_number":236,"context_line":"---------------------"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba3cc151_ee57ccfe","line":234,"in_reply_to":"ba3cc151_99f52b52","updated":"2015-07-09 15:19:11.000000000","message":"Yeah, but it\u0027s API-\u003eConductor-\u003eScheduler all in blocking calls, right? That\u0027s even more uncool for API, I think.\n\nBasically, if we\u0027re going to be able to return Conflict to the user, we have to block on the call and I think doing that is undesirable.","commit_id":"07cef966420fb9dcc28efb7d15b5cc5bb5090d08"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"db3182de225b78bf685732f6cb6a8b3df9b9bde2","unresolved":false,"context_lines":[{"line_number":231,"context_line":"A new RPC call will be done by default when migrating or evacuating"},{"line_number":232,"context_line":"but it shouldn\u0027t really impact the performance since it\u0027s the normal behaviour"},{"line_number":233,"context_line":"for a general migration."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Other deployer impact"},{"line_number":236,"context_line":"---------------------"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"ba3cc151_99f52b52","line":234,"in_reply_to":"ba3cc151_b33ccec8","updated":"2015-07-09 15:02:58.000000000","message":"Uh, I was unclear - that\u0027s the conductor which will call the scheduler, not the API","commit_id":"07cef966420fb9dcc28efb7d15b5cc5bb5090d08"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"73f240fee35010936dda5f04877d433f945b884f","unresolved":false,"context_lines":[{"line_number":231,"context_line":"A new RPC call will be done by default when migrating or evacuating"},{"line_number":232,"context_line":"but it shouldn\u0027t really impact the performance since it\u0027s the normal behaviour"},{"line_number":233,"context_line":"for a general migration."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"Other deployer impact"},{"line_number":236,"context_line":"---------------------"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"9a41bdd9_03629cad","line":234,"in_reply_to":"ba3cc151_ee57ccfe","updated":"2015-07-13 18:44:07.000000000","message":"I initially read it as blocking, too, but thought that that was the goal: to let the user know (sort of) right away if the requested destination was possible, rather than having to poll the status for failure.","commit_id":"07cef966420fb9dcc28efb7d15b5cc5bb5090d08"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"78b456728999eb22ade786c0600b8c407d7a6811","unresolved":false,"context_lines":[{"line_number":69,"context_line":"That way, we will be able to get the original RequestSpec from the"},{"line_number":70,"context_line":"corresponding instance from the user creating the VM including the scheduler"},{"line_number":71,"context_line":"hints. Given that, we propose to amend the RequestSpec object to include a new"},{"line_number":72,"context_line":"field called ``requested_destination`` which would be a ComputeNode object (at"},{"line_number":73,"context_line":"least having the host and hypervisor_hostname fields set) and would be set by"},{"line_number":74,"context_line":"the conductor for each method (here live-migrate and rebuild_instance"},{"line_number":75,"context_line":"respectively) accepting an optional destination host."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3a50d1a3_08a8218b","line":72,"updated":"2015-07-28 16:30:35.000000000","message":"Making this a list seems like a trivial extension which could be very useful later on; with the scheduler picking the best fit (highest weighted node).","commit_id":"d76f35e7348f3d4f4914d81e1381b689b6fa9350"},{"author":{"_account_id":6804,"name":"bruce-benjamin","email":"bruce.benjamin@jhuapl.edu","username":"bruce-benjamin"},"change_message_id":"19477f102fcd2c9389cbe0d872125a94df60b09e","unresolved":false,"context_lines":[{"line_number":74,"context_line":"the conductor for each method (here live-migrate and rebuild_instance"},{"line_number":75,"context_line":"respectively) accepting an optional destination host."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Note that this new field would nothing have in common with a migration object"},{"line_number":78,"context_line":"or an Instance.host field, since it would just be a reference to an equivalent"},{"line_number":79,"context_line":"scheduler hint saying \u0027I want to go there\u0027 (and not the ugly force_hosts"},{"line_number":80,"context_line":"information passed as an Availability Zone hack...)."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3a50d1a3_839932c6","line":77,"updated":"2015-07-23 15:38:50.000000000","message":"s/nothing have/have nothing/","commit_id":"d76f35e7348f3d4f4914d81e1381b689b6fa9350"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3f4fee17c3c10bd7bab9ab31c47aab5dcae2d68c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"``FORCED_MIGRATE`` or ``FORCED_REBUILD`` just by calling the"},{"line_number":117,"context_line":"/os-instance-actions API resource for each instance, and we could also later"},{"line_number":118,"context_line":"add a new blueprint (out of that spec scope) for getting the list of instances"},{"line_number":119,"context_line":"having the last specific action set to something (here FORCED_something)."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Alternatives"},{"line_number":122,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3a50d1a3_fde9eab7","line":119,"updated":"2015-07-23 20:49:51.000000000","message":"This feels a bit long, but there is useful context here, so lets keep it.","commit_id":"d76f35e7348f3d4f4914d81e1381b689b6fa9350"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"78b456728999eb22ade786c0600b8c407d7a6811","unresolved":false,"context_lines":[{"line_number":152,"context_line":"- If a host parameter is supplied in the request body, a new --force parameter"},{"line_number":153,"context_line":"  may also be supplied in the request body. If present, the scheduler shall"},{"line_number":154,"context_line":"  **not** be consulted to determine if the target compute node can be"},{"line_number":155,"context_line":"  accommodated, and no 409 Conflict would be returned to the user."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"- If --force parameter is supplied in the request body but the host parameter"},{"line_number":158,"context_line":"  is either null (for live-migrate) or not provided (for evacuate), then an"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3a50d1a3_48bb89e5","line":155,"updated":"2015-07-28 16:30:35.000000000","message":"It feels like the scheduler should still be notified so that it can update its hoststate?","commit_id":"d76f35e7348f3d4f4914d81e1381b689b6fa9350"}]}
