| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2017-08-31 | |||
| 12:44:58 | mriedem | yeah that's pretty straight forward | |
| 12:45:21 | gibi | mriedem: btw is there a doc about the possible migration status values? I found both error and failed in the code | |
| 12:45:22 | mriedem | odd that we don't pass the migration record over rpc from api to conductor, but that would be a separate cleanup | |
| 12:45:32 | mriedem | i don't think there is really | |
| 12:46:08 | mriedem | i think takashi was cataloging some of that for his blueprint to list more than just in-progress live migrations out of the api | |
| 12:46:14 | mriedem | so he was defining what 'in-progress' meant | |
| 12:46:36 | gibi | mriedem: cool I fully support documenting the possible statuses | |
| 12:46:52 | mriedem | some of it is in here https://specs.openstack.org/openstack/nova-specs/specs/pike/approved/list-show-all-server-migration-types.html#proposed-change | |
| 12:46:53 | bauzas | mriedem: when you say "asking to evacuate to the same host", do you imply using the force flag or not ? | |
| 12:47:05 | mriedem | bauzas: sure | |
| 12:47:24 | mriedem | if force=False, you'd get NoValidHost | |
| 12:47:28 | mriedem | because of the ComputeFilter | |
| 12:47:34 | bauzas | correct | |
| 12:47:35 | mriedem | but if force=True, you'd bypass the scheduler | |
| 12:47:39 | mriedem | and fail the rpc cast to compute | |
| 12:47:45 | bauzas | but that's your fault | |
| 12:47:52 | bauzas | you *forced* | |
| 12:48:30 | mriedem | it just seems weird that we don't have that one line validation check in the api code | |
| 12:48:39 | mriedem | if host and host == instance.host: raise 400 | |
| 12:48:44 | bauzas | that said, I think there is a call made by the API verifying if the destination is alive before we call the conductor | |
| 12:48:54 | mriedem | bauzas: yes there is | |
| 12:48:54 | bauzas | for evacuate I mean | |
| 12:48:56 | mriedem | and that can pass | |
| 12:49:03 | mriedem | and you can call conductor on the same host as instance.host | |
| 12:49:13 | bauzas | wait | |
| 12:49:25 | bauzas | ah, nevremind | |
| 12:49:29 | mriedem | and eventually either it fails with NoValidHost and the instance state is reset (best case scenario), or we bypass the scheduler and rpc fails, and your instance is stuck in 'rebuilding' state | |
| 12:49:36 | bauzas | the API check is verifying the *source* | |
| 12:49:40 | mriedem | correct | |
| 12:50:06 | mriedem | you will fail either way, but a straight 400 is better than weird undefined failures once we've cast to compute | |
| 12:50:09 | mriedem | s/compute/conductor/ | |
| 12:50:28 | bauzas | well, when I wrote the original Newton spec about force flags and so on, I made it clear that if people are using 'force', they have to be super-cautious | |
| 12:50:40 | bauzas | that's what we said to them | |
| 12:50:53 | mriedem | how many operators do you think have read that spec? | |
| 12:50:58 | bauzas | the real problem was that pre-Newton, we weren't clear whether we were enforcing rules | |
| 12:51:18 | bauzas | I think I translated that in the API docs | |
| 12:51:26 | bauzas | but I could be missing that | |
| 12:51:27 | mriedem | "Force an evacuation by not verifying the provided destination host by the scheduler." | |
| 12:51:27 | mriedem | this is the description of the force parameter in the api ref | |
| 12:51:37 | mriedem | ^ is not, "holy shit, don't do this" | |
| 12:51:52 | mriedem | we should put a warning in there probably | |
| 12:52:36 | mriedem | also, | |
| 12:52:37 | bauzas | mriedem: I didn't wanted to be pedantic when I said about the spec, I just try to explain that I saw there was by that time I wrote the spec, a pretty clear consensus that if operators are providing destinations, they *have to* make sure it's an acceptable one | |
| 12:53:05 | bauzas | because it's anti-cloud | |
| 12:53:15 | bauzas | you specify a destination, fair enough | |
| 12:53:20 | mriedem | with https://review.openstack.org/#/c/499399/ now, we should probably seriously consider splitting the rebuild_instance conductor method / rpc api into rebuild_instance and evacuate_instance | |
| 12:53:26 | bauzas | but then, make sure it's a good one | |
| 12:53:30 | mriedem | because the if/else logic in there is getting pretty hairy | |
| 12:53:34 | sdague | efried: yeh, I don't know | |
| 12:54:21 | efried | sdague Just something I noticed while I was in the neighborhood; and you're git blamed on that comment :) | |
| 12:54:31 | bauzas | mriedem: there is a side concern to me: you can specify a destination but we don't tell whether it's case-sensitive or not | |
| 12:54:56 | bauzas | mriedem: and somewhere, it breaks | |
| 12:55:32 | mriedem | you'd get NoValidHost i'd thikn | |
| 12:55:37 | mriedem | since we'd filter out all hosts | |
| 12:55:43 | mriedem | since the ComputeNode.host doesn't match | |
| 12:56:01 | bauzas | there is a bug | |
| 12:56:07 | bauzas | wait, finding it | |
| 12:56:18 | mriedem | lemme guess, case insensitivity in mysql? | |
| 12:57:15 | bauzas | https://bugs.launchpad.net/nova/+bug/1709260 | |
| 12:57:17 | openstack | Launchpad bug 1709260 in OpenStack Compute (nova) "Addition of host to host-aggregate should be case -sensitive" [Low,In progress] - Assigned to Rajesh Tailor (ratailor) | |
| 12:57:29 | bauzas | it seems that DNS is case-insentive | |
| 12:57:38 | bauzas | case-insensitive | |
| 12:57:54 | bauzas | so in theory, we should accept to migrate to foo or FOO | |
| 12:58:04 | bauzas | but yeah, I guess it's because mysql | |
| 12:58:42 | bauzas | ratailor: around ? | |
| 12:58:50 | ratailor | bauzas, yep | |
| 12:58:56 | bauzas | ratailor: I feel I badly triaged your bug | |
| 12:59:12 | bauzas | ratailor: since DNS is case-insensitive, hostnames should be too | |
| 12:59:45 | ratailor | bauzas, I reproduced it, and found that mysql doesn't support case-sensitivity by-default. So I had to change the collation on related tables. | |
| 12:59:50 | ratailor | bauzas, which seems to work. | |
| 13:00:26 | mriedem | you know what is case sensitive by default (i think)? | |
| 13:00:29 | mriedem | POSTGRESQL! | |
| 13:01:23 | ratailor | I was discussing it with alex_xu some days ago and he mentioned that mysql is case-insensitive by-default. | |
| 13:01:23 | mriedem | sort of https://stackoverflow.com/questions/21796446/postgres-case-sensitivity | |
| 13:01:24 | bauzas | ratailor: tbh, I just feel that we should allow HoStNaME1 as a possible value for a host to be added in an aggregate | |
| 13:01:25 | mriedem | depends on quotes | |
| 13:01:39 | bauzas | ratailor: and rather fix the filter | |
| 13:01:44 | mriedem | ratailor: yeah, the mysql case issue is a known one | |
| 13:01:48 | bauzas | yup | |
| 13:01:48 | mriedem | that breaks several things | |
| 13:02:05 | ratailor | mriedem, the host-aggregate metadata keys as well, | |
| 13:02:10 | bauzas | ratailor: I'll rephrase your bug report if you agree | |
| 13:02:12 | mriedem | ratailor: https://specs.openstack.org/openstack/nova-specs/specs/newton/approved/lowercase-metadata-keys.html | |
| 13:02:23 | ratailor | bauzas, no problem. | |
| 13:02:52 | bauzas | mriedem: well, hostnames can be FQDNs | |
| 13:03:04 | bauzas | mriedem: if so, those have to be case-insensitive | |
| 13:04:03 | openstackgerrit | Matt Riedemann proposed openstack/nova master: Create allocations against forced dest host during evacuate https://review.openstack.org/499399 | |
| 13:05:32 | ratailor | bauzas, I don't understand you mentioning HoStNaME1 as possible value for host to add in aggregate. | |
| 13:05:34 | bauzas | mriedem: about your point above with providing the same host for the target and source, if we accept to verify that by the API, we also need to add this to the live-migration one | |
| 13:06:02 | ratailor | with flavor matching metadata as host-aggregate metadata comes, this | |
| 13:06:02 | ratailor | as "COMPUTE0.example.com". And after that if instance creation request | |
| 13:06:02 | ratailor | HostNotFound error, that host is successfully added to host-aggregate | |
| 13:06:02 | ratailor | "COMPUTE0.example.com" (in capital case), then instead of throwing | |
| 13:06:02 | ratailor | and user tries to add this host to host-aggregate but by-mistake types | |
| 13:06:02 | ratailor | bauzas, As of now, if hostname is set as "compute0.example.com" (in lower case) | |
| 13:06:04 | ratailor | host is not filtered by scheduler, since there is no host with hostname | |
| 13:06:06 | ratailor | COMPUTE0.example.com, as added in host-aggregate | |
| 13:09:11 | bauzas | ratailor: I got the problem | |
| 13:09:43 | ratailor | bauzas, cool, | |
| 13:09:46 | bauzas | ratailor: what I feel is that we somehow should still accept COMPUTE0 as a possible value for the host to be added in the aggregate | |